From 058f98a63658dc1a2579826ba167fd61bed1e21f Mon Sep 17 00:00:00 2001 From: sanine Date: Fri, 4 Mar 2022 10:47:15 -0600 Subject: add assimp submodule --- .../scripts/StepImporter/CppGenerator.py | 304 + .../scripts/StepImporter/ExpressReader.py | 123 + .../scripts/StepImporter/IFCReaderGen.cpp.template | 78 + .../scripts/StepImporter/IFCReaderGen.h.template | 91 + .../StepImporter/StepReaderGen.cpp.template | 78 + .../scripts/StepImporter/StepReaderGen.h.template | 90 + .../scripts/StepImporter/extract_step_token.py | 64 + .../scripts/StepImporter/genentitylist.sh | 3 + .../scripts/StepImporter/ifc_entitylist.txt | 111 + .../StepImporter/part403ts_wg3n2635mim_lf.exp | 16378 +++++++++++++++++++ .../scripts/StepImporter/schema_ap203e2_mim_lf.exp | 16378 +++++++++++++++++++ .../scripts/StepImporter/schema_ifc2x3.exp | 9571 +++++++++++ .../scripts/StepImporter/step_entitylist.txt | 1015 ++ 13 files changed, 44284 insertions(+) create mode 100644 src/mesh/assimp-master/scripts/StepImporter/CppGenerator.py create mode 100644 src/mesh/assimp-master/scripts/StepImporter/ExpressReader.py create mode 100644 src/mesh/assimp-master/scripts/StepImporter/IFCReaderGen.cpp.template create mode 100644 src/mesh/assimp-master/scripts/StepImporter/IFCReaderGen.h.template create mode 100644 src/mesh/assimp-master/scripts/StepImporter/StepReaderGen.cpp.template create mode 100644 src/mesh/assimp-master/scripts/StepImporter/StepReaderGen.h.template create mode 100644 src/mesh/assimp-master/scripts/StepImporter/extract_step_token.py create mode 100644 src/mesh/assimp-master/scripts/StepImporter/genentitylist.sh create mode 100644 src/mesh/assimp-master/scripts/StepImporter/ifc_entitylist.txt create mode 100644 src/mesh/assimp-master/scripts/StepImporter/part403ts_wg3n2635mim_lf.exp create mode 100644 src/mesh/assimp-master/scripts/StepImporter/schema_ap203e2_mim_lf.exp create mode 100644 src/mesh/assimp-master/scripts/StepImporter/schema_ifc2x3.exp create mode 100644 src/mesh/assimp-master/scripts/StepImporter/step_entitylist.txt (limited to 'src/mesh/assimp-master/scripts/StepImporter') diff --git a/src/mesh/assimp-master/scripts/StepImporter/CppGenerator.py b/src/mesh/assimp-master/scripts/StepImporter/CppGenerator.py new file mode 100644 index 0000000..b6c8ed5 --- /dev/null +++ b/src/mesh/assimp-master/scripts/StepImporter/CppGenerator.py @@ -0,0 +1,304 @@ +#!/usr/bin/env python3 +# -*- Coding: UTF-8 -*- + +# --------------------------------------------------------------------------- +# Open Asset Import Library (ASSIMP) +# --------------------------------------------------------------------------- +# +# Copyright (c) 2006-2020, ASSIMP Development Team +# +# All rights reserved. +# +# Redistribution and use of this software in source and binary forms, +# with or without modification, are permitted provided that the following +# conditions are met: +# +# * Redistributions of source code must retain the above +# copyright notice, this list of conditions and the +# following disclaimer. +# +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the +# following disclaimer in the documentation and/or other +# materials provided with the distribution. +# +# * Neither the name of the ASSIMP team, nor the names of its +# contributors may be used to endorse or promote products +# derived from this software without specific prior +# written permission of the ASSIMP Development Team. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# --------------------------------------------------------------------------- + +"""Generate the C++ glue code needed to map EXPRESS to C++""" + +import sys, os, re + +if sys.version_info < (3, 0): + print("must use python 3.0 or greater") + sys.exit(-2) + +use_ifc_template = False + +input_step_template_h = 'StepReaderGen.h.template' +input_step_template_cpp = 'StepReaderGen.cpp.template' +input_ifc_template_h = 'IFCReaderGen.h.template' +input_ifc_template_cpp = 'IFCReaderGen.cpp.template' + +cpp_keywords = "class" + +output_file_h = "" +output_file_cpp = "" +if (use_ifc_template ): + input_template_h = input_ifc_template_h + input_template_cpp = input_ifc_template_cpp + output_file_h = os.path.join('..','..','code','IFCReaderGen.h') + output_file_cpp = os.path.join('..','..','code','IFCReaderGen.cpp') +else: + input_template_h = input_step_template_h + input_template_cpp = input_step_template_cpp + output_file_h = os.path.join('..','..','code/Importer/StepFile','StepReaderGen.h') + output_file_cpp = os.path.join('..','..','code/Importer/StepFile','StepReaderGen.cpp') + +template_entity_predef = '\tstruct {entity};\n' +template_entity_predef_ni = '\ttypedef NotImplemented {entity}; // (not currently used by Assimp)\n' +template_entity = r""" + + // C++ wrapper for {entity} + struct {entity} : {parent} ObjectHelper<{entity},{argcnt}> {{ {entity}() : Object("{entity}") {{}} +{fields} + }};""" + +template_entity_ni = '' + +template_type = r""" + // C++ wrapper type for {type} + typedef {real_type} {type};""" + +template_stub_decl = '\tDECL_CONV_STUB({type});\n' +template_schema = '\t\tSchemaEntry("{normalized_name}",&STEP::ObjectHelper<{type},{argcnt}>::Construct )\n' +template_schema_type = '\t\tSchemaEntry("{normalized_name}",nullptr )\n' +template_converter = r""" +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill<{type}>(const DB& db, const LIST& params, {type}* in) +{{ +{contents} +}}""" + +template_converter_prologue_a = '\tsize_t base = GenericFill(db,params,static_cast<{parent}*>(in));\n' +template_converter_prologue_b = '\tsize_t base = 0;\n' +template_converter_check_argcnt = '\tif (params.GetSize() < {max_arg}) {{ throw STEP::TypeError("expected {max_arg} arguments to {name}"); }}' +template_converter_code_per_field = r""" do {{ // convert the '{fieldname}' argument + std::shared_ptr arg = params[base++];{handle_unset}{convert} + }} while(0); +""" +template_allow_optional = r""" + if (dynamic_cast(&*arg)) break;""" +template_allow_derived = r""" + if (dynamic_cast(&*arg)) {{ in->ObjectHelper::aux_is_derived[{argnum}]=true; break; }}""" +template_convert_single = r""" + try {{ GenericConvert( in->{name}, arg, db ); break; }} + catch (const TypeError& t) {{ throw TypeError(t.what() + std::string(" - expected argument {argnum} to {classname} to be a `{full_type}`")); }}""" + +template_converter_omitted = '// this data structure is not used yet, so there is no code generated to fill its members\n' +template_converter_epilogue = '\treturn base;' + +import ExpressReader + +def get_list_bounds(collection_spec): + start,end = [(int(n) if n!='?' else 0) for n in re.findall(r'(\d+|\?)',collection_spec)] + return start,end + +def get_cpp_type(field,schema): + isobjref = field.type in schema.entities + base = field.type + if isobjref: + base = 'Lazy< '+(base if base in schema.whitelist else 'NotImplemented')+' >' + if field.collection: + start,end = get_list_bounds(field.collection) + base = 'ListOf< {0}, {1}, {2} >'.format(base,start,end) + if not isobjref: + base += '::Out' + if field.optional: + base = 'Maybe< '+base+' >' + + return base + +def generate_fields(entity,schema): + fields = [] + for e in entity.members: + fields.append('\t\t{type} {name};'.format(type=get_cpp_type(e,schema),name=e.name)) + return '\n'.join(fields) + +def handle_unset_args(field,entity,schema,argnum): + n = '' + # if someone derives from this class, check for derived fields. + if any(entity.name==e.parent for e in schema.entities.values()): + n += template_allow_derived.format(type=entity.name,argcnt=len(entity.members),argnum=argnum) + + if not field.optional: + return n+'' + return n+template_allow_optional.format() + +def get_single_conversion(field,schema,argnum=0,classname='?'): + name = field.name + return template_convert_single.format(name=name,argnum=argnum,classname=classname,full_type=field.fullspec) + +def count_args_up(entity,schema): + return len(entity.members) + (count_args_up(schema.entities[entity.parent],schema) if entity.parent else 0) + +def resolve_base_type(base,schema): + if base in ('INTEGER','REAL','STRING','ENUMERATION','BOOLEAN','NUMBER', 'SELECT','LOGICAL'): + return base + if base in schema.types: + return resolve_base_type(schema.types[base].equals,schema) + print(base) + return None + +def gen_type_struct(typen,schema): + base = resolve_base_type(typen.equals,schema) + if not base: + return '' + + if typen.aggregate: + start,end = get_list_bounds(typen.aggregate) + base = 'ListOf< {0}, {1}, {2} >'.format(base,start,end) + + return template_type.format(type=typen.name,real_type=base) + +def gen_converter(entity,schema): + max_arg = count_args_up(entity,schema) + arg_idx = arg_idx_ofs = max_arg - len(entity.members) + + code = template_converter_prologue_a.format(parent=entity.parent) if entity.parent else template_converter_prologue_b + if entity.name in schema.blacklist_partial: + return code+template_converter_omitted+template_converter_epilogue; + + if max_arg > 0: + code +=template_converter_check_argcnt.format(max_arg=max_arg,name=entity.name) + + for field in entity.members: + code += template_converter_code_per_field.format(fieldname=field.name, + handle_unset=handle_unset_args(field,entity,schema,arg_idx-arg_idx_ofs), + convert=get_single_conversion(field,schema,arg_idx,entity.name)) + + arg_idx += 1 + return code+template_converter_epilogue + +def get_base_classes(e,schema): + def addit(e,out): + if e.parent: + out.append(e.parent) + addit(schema.entities[e.parent],out) + res = [] + addit(e,res) + return list(reversed(res)) + +def get_derived(e,schema): + def get_deriv(e,out): # bit slow, but doesn't matter here + s = [ee for ee in schema.entities.values() if ee.parent == e.name] + for sel in s: + out.append(sel.name) + get_deriv(sel,out) + res = [] + get_deriv(e,res) + return res + +def get_hierarchy(e,schema): + return get_derived(e, schema)+[e.name]+get_base_classes(e,schema) + +def sort_entity_list(schema): + deps = [] + entities = schema.entities + for e in entities.values(): + deps += get_base_classes(e,schema)+[e.name] + + checked = [] + for e in deps: + if e not in checked: + checked.append(e) + return [entities[e] for e in checked] + +def work(filename): + schema = ExpressReader.read(filename,silent=True) + entities, stub_decls, schema_table, converters, typedefs, predefs = '','',[],'','','' + + entitylist = 'ifc_entitylist.txt' + if not use_ifc_template: + entitylist = 'step_entitylist.txt' + whitelist = [] + with open(entitylist, 'rt') as inp: + whitelist = [n.strip() for n in inp.read().split('\n') if n[:1]!='#' and n.strip()] + + schema.whitelist = set() + schema.blacklist_partial = set() + for ename in whitelist: + try: + e = schema.entities[ename] + except KeyError: + # type, not entity + continue + for base in [e.name]+get_base_classes(e,schema): + schema.whitelist.add(base) + for base in get_derived(e,schema): + schema.blacklist_partial.add(base) + + schema.blacklist_partial -= schema.whitelist + schema.whitelist |= schema.blacklist_partial + + # Generate list with reserved keywords from c++ + cpp_types = cpp_keywords.split(',') + + # uncomment this to disable automatic code reduction based on whitelisting all used entities + # (blacklisted entities are those who are in the whitelist and may be instanced, but will + # only be accessed through a pointer to a base-class. + #schema.whitelist = set(schema.entities.keys()) + #schema.blacklist_partial = set() + for ntype in schema.types.values(): + typedefs += gen_type_struct(ntype,schema) + schema_table.append(template_schema_type.format(normalized_name=ntype.name.lower())) + + sorted_entities = sort_entity_list(schema) + for entity in sorted_entities: + parent = entity.parent+',' if entity.parent else '' + + if ( entity.name in cpp_types ): + entity.name = entity.name + "_t" + print( "renaming " + entity.name) + if entity.name in schema.whitelist: + converters += template_converter.format(type=entity.name,contents=gen_converter(entity,schema)) + schema_table.append(template_schema.format(type=entity.name,normalized_name=entity.name.lower(),argcnt=len(entity.members))) + entities += template_entity.format(entity=entity.name,argcnt=len(entity.members),parent=parent,fields=generate_fields(entity,schema)) + predefs += template_entity_predef.format(entity=entity.name) + stub_decls += template_stub_decl.format(type=entity.name) + else: + entities += template_entity_ni.format(entity=entity.name) + predefs += template_entity_predef_ni.format(entity=entity.name) + schema_table.append(template_schema.format(type="NotImplemented",normalized_name=entity.name.lower(),argcnt=0)) + + schema_table = ','.join(schema_table) + + with open(input_template_h,'rt') as inp: + with open(output_file_h,'wt') as outp: + # can't use format() here since the C++ code templates contain single, unescaped curly brackets + outp.write(inp.read().replace('{predefs}',predefs).replace('{types}',typedefs).replace('{entities}',entities).replace('{converter-decl}',stub_decls)) + + with open(input_template_cpp,'rt') as inp: + with open(output_file_cpp,'wt') as outp: + outp.write(inp.read().replace('{schema-static-table}',schema_table).replace('{converter-impl}',converters)) + + # Finished without error, so return 0 + return 0 + +if __name__ == "__main__": + sys.exit(work(sys.argv[1] if len(sys.argv)>1 else 'schema.exp')) diff --git a/src/mesh/assimp-master/scripts/StepImporter/ExpressReader.py b/src/mesh/assimp-master/scripts/StepImporter/ExpressReader.py new file mode 100644 index 0000000..9cb3b72 --- /dev/null +++ b/src/mesh/assimp-master/scripts/StepImporter/ExpressReader.py @@ -0,0 +1,123 @@ +#!/usr/bin/env python3 +# -*- Coding: UTF-8 -*- + +# --------------------------------------------------------------------------- +# Open Asset Import Library (ASSIMP) +# --------------------------------------------------------------------------- +# +# Copyright (c) 2006-2020, ASSIMP Development Team +# +# All rights reserved. +# +# Redistribution and use of this software in source and binary forms, +# with or without modification, are permitted provided that the following +# conditions are met: +# +# * Redistributions of source code must retain the above +# copyright notice, this list of conditions and the +# following disclaimer. +# +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the +# following disclaimer in the documentation and/or other +# materials provided with the distribution. +# +# * Neither the name of the ASSIMP team, nor the names of its +# contributors may be used to endorse or promote products +# derived from this software without specific prior +# written permission of the ASSIMP Development Team. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# --------------------------------------------------------------------------- + +"""Parse an EXPRESS file and extract basic information on all +entities and data types contained""" + +import sys +import re +from collections import OrderedDict + +re_match_entity = re.compile(r""" +ENTITY\s+(\w+)\s* # 'ENTITY foo' +.*? # skip SUPERTYPE-of +(?:SUBTYPE\s+OF\s+\((\w+)\))?; # 'SUBTYPE OF (bar);' or simply ';' +(.*?) # 'a : atype;' (0 or more lines like this) +(?:(?:INVERSE|UNIQUE|WHERE)\s*$.*?)? # skip the INVERSE, UNIQUE, WHERE clauses and everything behind +END_ENTITY; +""",re.VERBOSE|re.DOTALL|re.MULTILINE) + +re_match_type = re.compile(r""" +TYPE\s+(\w+?)\s*=\s*((?:LIST|SET)\s*\[\d+:[\d?]+\]\s*OF)?(?:\s*UNIQUE)?\s*(\w+) # TYPE foo = LIST[1:2] of blub +(?:(?<=ENUMERATION)\s*OF\s*\((.*?)\))? +.*? # skip the WHERE clause +END_TYPE; +""",re.VERBOSE|re.DOTALL) + +re_match_field = re.compile(r""" +\s+(\w+?)\s*:\s*(OPTIONAL)?\s*((?:LIST|SET)\s*\[\d+:[\d?]+\]\s*OF)?(?:\s*UNIQUE)?\s*(\w+?); +""",re.VERBOSE|re.DOTALL) + + +class Schema: + def __init__(self): + self.entities = OrderedDict() + self.types = OrderedDict() + +class Entity: + def __init__(self,name,parent,members): + self.name = name + self.parent = parent + self.members = members + +class Field: + def __init__(self,name,type,optional,collection): + self.name = name + self.type = type + self.optional = optional + self.collection = collection + self.fullspec = (self.collection+' ' if self.collection else '') + self.type + +class Type: + def __init__(self,name,aggregate,equals,enums): + self.name = name + self.aggregate = aggregate + self.equals = equals + self.enums = enums + + +def read(filename, silent=False): + schema = Schema() + print( "Try to read EXPRESS schema file" + filename) + with open(filename,'rt') as inp: + contents = inp.read() + types = re.findall(re_match_type,contents) + for name,aggregate,equals,enums in types: + schema.types[name] = Type(name,aggregate,equals,enums) + + entities = re.findall(re_match_entity,contents) + for name,parent,fields_raw in entities: + print('process entity {0}, parent is {1}'.format(name,parent)) if not silent else None + fields = re.findall(re_match_field,fields_raw) + members = [Field(name,type,opt,coll) for name, opt, coll, type in fields] + print(' got {0} fields'.format(len(members))) if not silent else None + + schema.entities[name] = Entity(name,parent,members) + return schema + +if __name__ == "__main__": + sys.exit(read(sys.argv[1] if len(sys.argv)>1 else 'schema.exp')) + + + + + diff --git a/src/mesh/assimp-master/scripts/StepImporter/IFCReaderGen.cpp.template b/src/mesh/assimp-master/scripts/StepImporter/IFCReaderGen.cpp.template new file mode 100644 index 0000000..de1063d --- /dev/null +++ b/src/mesh/assimp-master/scripts/StepImporter/IFCReaderGen.cpp.template @@ -0,0 +1,78 @@ +/* +Open Asset Import Library (ASSIMP) +---------------------------------------------------------------------- + +Copyright (c) 2006-2020, ASSIMP Development Team +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the ASSIMP team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the ASSIMP Development Team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** MACHINE-GENERATED by scripts/ICFImporter/CppGenerator.py */ + +#ifndef ASSIMP_BUILD_NO_IFC_IMPORTER + +#include "IFCReaderGen.h" + +namespace Assimp { +using namespace IFC; + +namespace { + + typedef EXPRESS::ConversionSchema::SchemaEntry SchemaEntry; + const SchemaEntry schema_raw[] = { +{schema-static-table} + }; +} + +// ----------------------------------------------------------------------------------------------------------- +void IFC::GetSchema(EXPRESS::ConversionSchema& out) +{ + out = EXPRESS::ConversionSchema(schema_raw); +} + +namespace STEP { + +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const STEP::DB& db, const LIST& params, NotImplemented* in) +{ + return 0; +} + + +{converter-impl} + +} // ! STEP +} // ! Assimp + +#endif diff --git a/src/mesh/assimp-master/scripts/StepImporter/IFCReaderGen.h.template b/src/mesh/assimp-master/scripts/StepImporter/IFCReaderGen.h.template new file mode 100644 index 0000000..2cad154 --- /dev/null +++ b/src/mesh/assimp-master/scripts/StepImporter/IFCReaderGen.h.template @@ -0,0 +1,91 @@ +/* +Open Asset Import Library (ASSIMP) +---------------------------------------------------------------------- + +Copyright (c) 2006-2020, ASSIMP Development Team +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the ASSIMP team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the ASSIMP Development Team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** MACHINE-GENERATED by scripts/ICFImporter/CppGenerator.py */ + +#ifndef INCLUDED_IFC_READER_GEN_H +#define INCLUDED_IFC_READER_GEN_H + +#include "STEPFile.h" + +namespace Assimp { +namespace IFC { + using namespace STEP; + using namespace STEP::EXPRESS; + + + struct NotImplemented : public ObjectHelper { + + }; + + + // ****************************************************************************** + // IFC Custom data types + // ****************************************************************************** + +{types} + + + // ****************************************************************************** + // IFC Entities + // ****************************************************************************** + +{predefs} +{entities} + + void GetSchema(EXPRESS::ConversionSchema& out); + +} //! IFC +namespace STEP { + + // ****************************************************************************** + // Converter stubs + // ****************************************************************************** + +#define DECL_CONV_STUB(type) template <> size_t GenericFill(const STEP::DB& db, const EXPRESS::LIST& params, IFC::type* in) + +{converter-decl} + +#undef DECL_CONV_STUB + +} //! STEP +} //! Assimp + +#endif // INCLUDED_IFC_READER_GEN_H diff --git a/src/mesh/assimp-master/scripts/StepImporter/StepReaderGen.cpp.template b/src/mesh/assimp-master/scripts/StepImporter/StepReaderGen.cpp.template new file mode 100644 index 0000000..5bb9bb9 --- /dev/null +++ b/src/mesh/assimp-master/scripts/StepImporter/StepReaderGen.cpp.template @@ -0,0 +1,78 @@ +/* +Open Asset Import Library (ASSIMP) +---------------------------------------------------------------------- + +Copyright (c) 2006-2020, ASSIMP Development Team +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the ASSIMP team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the ASSIMP Development Team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** MACHINE-GENERATED by scripts/ICFImporter/CppGenerator.py */ + +#ifndef ASSIMP_BUILD_NO_STEP_IMPORTER + +#include "code/Importer/StepFile/StepReaderGen.h" + +namespace Assimp { +using namespace StepFile; + +namespace { + + typedef EXPRESS::ConversionSchema::SchemaEntry SchemaEntry; + const SchemaEntry schema_raw[] = { +{schema-static-table} + }; +} + +// ----------------------------------------------------------------------------------------------------------- +void StepFile::GetSchema(EXPRESS::ConversionSchema& out) +{ + out = EXPRESS::ConversionSchema(schema_raw); +} + +namespace STEP { + +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const STEP::DB& db, const LIST& params, NotImplemented* in) +{ + return 0u; +} + + +{converter-impl} + +} // ! STEP +} // ! Assimp + +#endif diff --git a/src/mesh/assimp-master/scripts/StepImporter/StepReaderGen.h.template b/src/mesh/assimp-master/scripts/StepImporter/StepReaderGen.h.template new file mode 100644 index 0000000..51ba550 --- /dev/null +++ b/src/mesh/assimp-master/scripts/StepImporter/StepReaderGen.h.template @@ -0,0 +1,90 @@ +/* +Open Asset Import Library (ASSIMP) +---------------------------------------------------------------------- + +Copyright (c) 2006-2020, ASSIMP Development Team +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the ASSIMP team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the ASSIMP Development Team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** MACHINE-GENERATED by scripts/ICFImporter/CppGenerator.py */ + +#ifndef INCLUDED_STEPFILE_READER_GEN_H +#define INCLUDED_STEPFILE_READER_GEN_H + +#include "code/STEPFile.h" + +namespace Assimp { +namespace StepFile { + +using namespace STEP; +using namespace STEP::EXPRESS; + +struct NotImplemented : public ObjectHelper { + +}; + +// ****************************************************************************** +// StepFile Custom data types +// ****************************************************************************** + +{types} + +// ****************************************************************************** +// StepFile Entities +// ****************************************************************************** + +{predefs} +{entities} + + void GetSchema(EXPRESS::ConversionSchema& out); + +} //! StepFile + +namespace STEP { + +// ****************************************************************************** +// Converter stubs +// ****************************************************************************** + +#define DECL_CONV_STUB(type) template <> size_t GenericFill(const STEP::DB& db, const EXPRESS::LIST& params, IFC::type* in) + +{converter-decl} + +#undef DECL_CONV_STUB + +} //! STEP +} //! Assimp + +#endif // INCLUDED_STEPFILE_READER_GEN_H diff --git a/src/mesh/assimp-master/scripts/StepImporter/extract_step_token.py b/src/mesh/assimp-master/scripts/StepImporter/extract_step_token.py new file mode 100644 index 0000000..106cf58 --- /dev/null +++ b/src/mesh/assimp-master/scripts/StepImporter/extract_step_token.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python3 +# -*- Coding: UTF-8 -*- + +# --------------------------------------------------------------------------- +# Open Asset Import Library (ASSIMP) +# --------------------------------------------------------------------------- +# +# Copyright (c) 2006-2020, ASSIMP Development Team +# +# All rights reserved. +# +# Redistribution and use of this software in source and binary forms, +# with or without modification, are permitted provided that the following +# conditions are met: +# +# * Redistributions of source code must retain the above +# copyright notice, this list of conditions and the +# following disclaimer. +# +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the +# following disclaimer in the documentation and/or other +# materials provided with the distribution. +# +# * Neither the name of the ASSIMP team, nor the names of its +# contributors may be used to endorse or promote products +# derived from this software without specific prior +# written permission of the ASSIMP Development Team. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# --------------------------------------------------------------------------- + +import sys + +Entity_token = "ENTITY" +Type_token = "TYPE" +token = [] +file = open(sys.argv[1]) +output = open("step_entitylist.txt", "a") +lines = file.readlines() +for line in lines: + pos = line.find(Entity_token) + if pos != -1: + token = line.split(" ") + if len(token) > 1: + name = token[1] + print( "Writing entity " + name) + output.write(name) + +output.close() +file.close() + + + diff --git a/src/mesh/assimp-master/scripts/StepImporter/genentitylist.sh b/src/mesh/assimp-master/scripts/StepImporter/genentitylist.sh new file mode 100644 index 0000000..e51959d --- /dev/null +++ b/src/mesh/assimp-master/scripts/StepImporter/genentitylist.sh @@ -0,0 +1,3 @@ +#!/bin/sh +cd ../../code +grep -E 'Ifc([A-Z][a-z]*)+' -o IFCLoader.cpp IFCGeometry.cpp IFCCurve.cpp IFCProfile.cpp IFCMaterial.cpp | uniq | sed s/.*:// > ../scripts/IFCImporter/output.txt diff --git a/src/mesh/assimp-master/scripts/StepImporter/ifc_entitylist.txt b/src/mesh/assimp-master/scripts/StepImporter/ifc_entitylist.txt new file mode 100644 index 0000000..14b05ca --- /dev/null +++ b/src/mesh/assimp-master/scripts/StepImporter/ifc_entitylist.txt @@ -0,0 +1,111 @@ +# ============================================================================== +# List of IFC structures needed by Assimp +# ============================================================================== +# use genentitylist.sh to update this list + +# This machine-generated list is not complete, it lacks many intermediate +# classes in the inheritance hierarchy. Those are magically augmented by the +# code generator. Also, the names of all used entities need to be present +# in the source code for this to work. + +IfcAnnotation +IfcArbitraryClosedProfileDef +IfcArbitraryOpenProfileDef +IfcArbitraryProfileDefWithVoids +IfcAxis1Placement +IfcAxis2Placement +IfcAxis2Placement2D +IfcAxis2Placement3D +IfcBooleanClippingResult +IfcBooleanResult +IfcBoundedCurve +IfcBoundingBox +IfcBSplineCurve +IfcBuilding +IfcCartesianPoint +IfcCartesianTransformationOperator +IfcCartesianTransformationOperator3D +IfcCartesianTransformationOperator3DnonUniform +IfcCircle +IfcCircleHollowProfileDef +IfcCircleProfileDef +IfcClosedShell +IfcColourOrFactor +IfcColourRgb +IfcCompositeCurve +IfcCompositeCurveSegment +IfcConic +IfcConnectedFaceSet +IfcConversionBasedUnit +IfcCurve +IfcDirection +IfcDoor +IfcEllipse +IfcExtrudedAreaSolid +IfcFace +IfcFaceBasedSurfaceModel +IfcFaceBound +IfcFaceOuterBound +IfcFeatureElementSubtraction +IfcGeometricRepresentationContext +IfcGeometricRepresentationItem +IfcHalfSpaceSolid +IfcLine +IfcLocalPlacement +IfcManifoldSolidBrep +IfcMappedItem +IfcMeasureWithUnit +IfcNamedUnit +IfcObjectDefinition +IfcObjectPlacement +IfcOpeningElement +IfcParameterizedProfileDef +IfcPlane +IfcPolygonalBoundedHalfSpace +IfcPolyline +IfcPolyLoop +IfcPresentationStyleAssignment +IfcPresentationStyleSelect +IfcProduct +IfcProductRepresentation +IfcProfileDef +IfcProject +IfcRectangleProfileDef +IfcRelAggregates +IfcRelContainedInSpatialStructure +IfcRelFillsElement +IfcRelVoidsElement +IfcRepresentation +IfcRepresentationContext +IfcRepresentationItem +IfcRepresentationMap +IfcRevolvedAreaSolid +IfcShell +IfcShellBasedSurfaceModel +IfcSite +IfcSIUnit +IfcSomething +IfcSpace +IfcSpatialStructureElement +IfcSpatialStructureElements +IfcStyledItem +IfcSurfaceStyle +IfcSurfaceStyleElementSelect +IfcSurfaceStyleRendering +IfcSurfaceStyleShading +IfcSurfaceStyleWithTextures +IfcSweptAreaSolid +IfcSweptDiskSolid +IfcTopologicalRepresentationItem +IfcTrimmedCurve +IfcUnit +IfcUnitAssignment +IfcVector +IfcIShapeProfileDef +IfcPropertyListValue +IfcRelDefinesByProperties +IfcPropertySet +IfcPropertySingleValue +IfcProperty +IfcComplexProperty +IfcElementQuantity diff --git a/src/mesh/assimp-master/scripts/StepImporter/part403ts_wg3n2635mim_lf.exp b/src/mesh/assimp-master/scripts/StepImporter/part403ts_wg3n2635mim_lf.exp new file mode 100644 index 0000000..7935304 --- /dev/null +++ b/src/mesh/assimp-master/scripts/StepImporter/part403ts_wg3n2635mim_lf.exp @@ -0,0 +1,16378 @@ +(* + $Id: mim_lf.exp,v 1.43 2009/09/10 20:08:09 darla Exp $ + ISO TC184/SC4/WG3 N2635 - ISO/TS 10303-403 AP203 configuration controlled 3d design of mechanical parts and assemblies - EXPRESS MIM Long form + Supersedes ISO TC184/SC4/WG3 N2464 +*) + +SCHEMA Ap203_configuration_controlled_3d_design_of_mechanical_parts_and_assemblies_mim_lf; + + +CONSTANT + deprecated_constructed_data_types : SET [0:?] OF STRING := ['approved_item', + 'certified_item', + 'change_request_item', + 'contracted_item', + 'cc_classified_item', + 'date_time_item', + 'cc_person_organization_item', + 'cc_specified_item', + 'start_request_item', + 'work_item']; + + + deprecated_entity_data_types : SET [0:?] OF STRING := ['cc_design_approval', + 'cc_design_certification', + 'cc_design_contract', + 'cc_design_date_and_time_assignment', + 'cc_design_person_and_organization_assignment', + 'cc_design_security_classification', + 'cc_design_specification_reference', + 'change', + 'change_request', + 'design_context', + 'design_make_from_relationship', + 'mechanical_context', + 'start_request', + 'start_work', + 'supplied_part_relationship']; + + + deprecated_interfaced_data_types : SET [0:?] OF STRING := ['document_with_class', + 'ordinal_date', + 'product_definition_formation_with_specified_source', + 'week_of_year_and_day_date']; + + + dummy_gri : geometric_representation_item := representation_item('')|| + geometric_representation_item(); + + + dummy_tri : topological_representation_item := representation_item('')|| + topological_representation_item(); + + + pre_defined_picture_representation_types : SET [0:?] OF STRING := [ 'JPEG', 'PNG', 'TIFF', 'BMP', 'GIF']; + + + +END_CONSTANT; + +TYPE absorbed_dose_measure = REAL; +END_TYPE; + +TYPE acceleration_measure = REAL; +END_TYPE; + +TYPE action_items = SELECT ( + action_directive, + certification_item, + characterized_object, + classification_item, + configuration_effectivity, + document_reference_item, + identification_item, + organization, + person_and_organization, + product_definition, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + requirement_assigned_item); +END_TYPE; + +TYPE action_method_items = SELECT ( + product, + product_definition_formation); +END_TYPE; + +TYPE action_request_item = SELECT ( + product_definition, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + property_definition, + versioned_action_request); +END_TYPE; + +TYPE ahead_or_behind = ENUMERATION OF ( + ahead, + exact, + behind ); +END_TYPE; + +TYPE amount_of_substance_measure = REAL; +END_TYPE; + +TYPE angle_direction_reference_select = SELECT ( + direction, + curve, + point_path); +END_TYPE; + +TYPE angle_direction_reference_with_a2p3d_select = SELECT ( + angle_direction_reference_select, + axis2_placement_3d); +END_TYPE; + +TYPE angle_relator = ENUMERATION OF ( + equal, + large, + small ); +END_TYPE; + +TYPE annotation_plane_element = SELECT ( + draughting_callout, + styled_item); +END_TYPE; + +TYPE annotation_representation_select = SELECT ( + presentation_area, + presentation_view, + symbol_representation); +END_TYPE; + +TYPE annotation_symbol_occurrence_item = SELECT ( + annotation_symbol, + defined_symbol); +END_TYPE; + +TYPE annotation_text_occurrence_item = SELECT ( + text_literal, + annotation_text, + annotation_text_character, + composite_text); +END_TYPE; + +TYPE approval_item = SELECT ( + action, + action_directive, + alternate_product_relationship, + applied_action_assignment, + applied_usage_right, + assembly_component_usage_substitute, + certification, + configuration_effectivity, + configuration_item, + contract, + date, + directed_action, + document, + document_file, + effectivity, + executed_action, + general_property_relationship, + group, + group_relationship, + information_usage_right, + product, + product_definition, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + representation, + requirement_assignment, + security_classification, + shape_aspect_relationship, + versioned_action_request); +END_TYPE; + +TYPE approved_item = SELECT ( + certification, + change, + change_request, + configuration_effectivity, + configuration_item, + contract, + product, + security_classification, + start_request, + start_work); +END_TYPE; + +TYPE area_measure = REAL; +END_TYPE; + +TYPE area_or_view = SELECT ( + presentation_area, + presentation_view); +END_TYPE; + +TYPE attribute_classification_item = SELECT ( + action_directive, + action_method, + action_property, + action_property_representation, + action_relationship, + action_request_solution, + action_request_status, + alternate_product_relationship, + applied_action_assignment, + applied_action_request_assignment, + applied_approval_assignment, + applied_certification_assignment, + applied_document_reference, + applied_document_usage_constraint_assignment, + applied_effectivity_assignment, + applied_event_occurrence_assignment, + applied_external_identification_assignment, + applied_identification_assignment, + applied_organization_assignment, + applied_organizational_project_assignment, + applied_person_and_organization_assignment, + approval, + approval_person_organization, + approval_relationship, + approval_status, + certification, + context_dependent_unit, + contract, + date_and_time_assignment, + date_assignment, + derived_unit, + descriptive_representation_item, + document_file, + document_relationship, + effectivity, + event_occurrence_relationship, + executed_action, + general_property, + general_property_relationship, + group, + group_relationship, + information_right, + information_usage_right, + language, + measure_representation_item, + measure_with_unit, + named_unit, + organization_relationship, + organizational_address, + organizational_project_relationship, + person_and_organization, + person_and_organization_address, + product, + product_category, + product_concept, + product_concept_context, + product_definition, + product_definition_context, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + property_definition, + property_definition_relationship, + property_definition_representation, + representation, + representation_context, + representation_item, + security_classification, + time_interval_relationship, + uncertainty_measure_with_unit, + usage_association, + versioned_action_request); +END_TYPE; + +TYPE attribute_language_item = SELECT ( + alternate_product_relationship, + application_context, + applied_certification_assignment, + applied_document_reference, + applied_document_usage_constraint_assignment, + applied_external_identification_assignment, + applied_identification_assignment, + applied_organizational_project_assignment, + applied_security_classification_assignment, + approval, + approval_relationship, + approval_status, + assembly_component_usage_substitute, + attribute_value_assignment, + certification, + certification_type, + configuration_design, + configuration_item, + contract, + date_role, + date_time_role, + descriptive_representation_item, + document_relationship, + document_usage_role, + effectivity, + effectivity_relationship, + event_occurrence, + external_source, + general_property, + general_property_relationship, + geometric_representation_item, + geometric_tolerance, + identification_role, + information_right, + information_usage_right, + make_from_usage_option, + mapped_item, + multi_language_attribute_assignment, + object_role, + organization_relationship, + organization_role, + organizational_project, + organizational_project_relationship, + organizational_project_role, + person_and_organization, + person_and_organization_role, + product, + product_concept, + product_concept_relationship, + product_definition, + product_definition_context, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + product_definition_shape, + product_related_product_category, + property_definition, + representation, + security_classification, + security_classification_assignment, + shape_aspect, + shape_aspect_relationship, + shape_representation, + time_interval_role, + topological_representation_item, + uncertainty_measure_with_unit, + uncertainty_qualifier, + usage_association); +END_TYPE; + +TYPE attribute_type = SELECT ( + label, + text); +END_TYPE; + +TYPE axis2_placement = SELECT ( + axis2_placement_2d, + axis2_placement_3d); +END_TYPE; + +TYPE b_spline_curve_form = ENUMERATION OF ( + polyline_form, + circular_arc, + elliptic_arc, + parabolic_arc, + hyperbolic_arc, + unspecified ); +END_TYPE; + +TYPE b_spline_surface_form = ENUMERATION OF ( + plane_surf, + cylindrical_surf, + conical_surf, + spherical_surf, + toroidal_surf, + surf_of_revolution, + ruled_surf, + generalised_cone, + quadric_surf, + surf_of_linear_extrusion, + unspecified ); +END_TYPE; + +TYPE base_solid_select = SELECT ( + solid_model, + csg_primitive, + boolean_result); +WHERE + WR1 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRIMITIVE_2D' IN TYPEOF(SELF)); +END_TYPE; + +TYPE blend_end_condition_select = SELECT ( + point_on_curve, + edge_curve, + vertex); +END_TYPE; + +TYPE blend_radius_variation_type = ENUMERATION OF ( + linear_blend, + cubic_blend, + unspecified_blend ); +END_TYPE; + +TYPE boolean_operand = SELECT ( + solid_model, + half_space_solid, + csg_primitive, + boolean_result); +END_TYPE; + +TYPE boolean_operator = ENUMERATION OF ( + union, + intersection, + difference ); +END_TYPE; + +TYPE box_characteristic_select = SELECT ( + box_height, + box_width, + box_slant_angle, + box_rotate_angle); +END_TYPE; + +TYPE box_height = positive_ratio_measure; +END_TYPE; + +TYPE box_rotate_angle = plane_angle_measure; +END_TYPE; + +TYPE box_slant_angle = plane_angle_measure; +END_TYPE; + +TYPE box_width = positive_ratio_measure; +END_TYPE; + +TYPE camera_model_d3_multi_clipping_interection_select = SELECT ( + camera_model_d3_multi_clipping_union, + plane); +END_TYPE; + +TYPE camera_model_d3_multi_clipping_union_select = SELECT ( + camera_model_d3_multi_clipping_intersection, + plane); +END_TYPE; + +TYPE capacitance_measure = REAL; +END_TYPE; + +TYPE category_usage_item = SELECT ( + product_class); +END_TYPE; + +TYPE cc_classified_item = SELECT ( + assembly_component_usage, + product_definition_formation); +END_TYPE; + +TYPE cc_person_organization_item = SELECT ( + change, + change_request, + configuration_item, + contract, + product, + product_definition, + product_definition_formation, + security_classification, + start_request, + start_work); +END_TYPE; + +TYPE cc_specified_item = SELECT ( + product_definition, + shape_aspect); +END_TYPE; + +TYPE celsius_temperature_measure = REAL; +END_TYPE; + +TYPE central_or_parallel = ENUMERATION OF ( + central, + parallel ); +END_TYPE; + +TYPE certification_item = SELECT ( + alternate_product_relationship, + make_from_usage_option, + product_definition_formation, + product_definition_formation_relationship); +END_TYPE; + +TYPE certified_item = SELECT ( + supplied_part_relationship); +END_TYPE; + +TYPE change_request_item = SELECT ( + product_definition_formation); +END_TYPE; + +TYPE character_spacing_select = SELECT ( + length_measure, + ratio_measure, + measure_with_unit, + descriptive_measure); +END_TYPE; + +TYPE character_style_select = SELECT ( + character_glyph_style_stroke, + character_glyph_style_outline, + text_style_for_defined_font); +END_TYPE; + +TYPE characterized_action_definition = SELECT ( + action, + action_method, + action_method_relationship, + action_relationship); +END_TYPE; + +TYPE characterized_definition = SELECT ( + characterized_object, + characterized_product_definition, + shape_definition); +END_TYPE; + +TYPE characterized_material_property = SELECT ( + material_property_representation, + product_material_composition_relationship); +END_TYPE; + +TYPE characterized_product_composition_value = SELECT ( + measure_with_unit); +END_TYPE; + +TYPE characterized_product_definition = SELECT ( + product_definition, + product_definition_relationship); +END_TYPE; + +TYPE class_usage_effectivity_context_item = SELECT ( + product_definition); +END_TYPE; + +TYPE classification_item = SELECT ( + action, + action_directive, + action_method, + action_property, + action_relationship, + action_request_solution, + action_request_status, + address, + alternate_product_relationship, + applied_action_assignment, + applied_action_request_assignment, + applied_approval_assignment, + applied_certification_assignment, + applied_contract_assignment, + applied_date_and_time_assignment, + applied_date_assignment, + applied_document_reference, + applied_document_usage_constraint_assignment, + applied_effectivity_assignment, + applied_event_occurrence_assignment, + applied_external_identification_assignment, + applied_identification_assignment, + applied_organization_assignment, + applied_organizational_project_assignment, + applied_person_and_organization_assignment, + applied_security_classification_assignment, + approval, + approval_person_organization, + approval_relationship, + approval_status, + assembly_component_usage_substitute, + calendar_date, + certification, + characterized_class, + characterized_object, + class, + classified_item, + configuration_item, + context_dependent_unit, + contract, + conversion_based_unit, + date_and_time, + date_and_time_assignment, + date_assignment, + derived_unit, + descriptive_representation_item, + directed_action, + document_file, + document_relationship, + effectivity, + event_occurrence, + executed_action, + general_property, + general_property_relationship, + group, + identification_assignment, + information_right, + information_usage_right, + language, + measure_representation_item, + measure_with_unit, + multi_language_attribute_assignment, + named_unit, + organization, + organization_relationship, + organizational_address, + organizational_project, + organizational_project_relationship, + person, + person_and_organization_address, + product, + product_concept, + product_definition, + product_definition_context, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + property_definition, + property_definition_representation, + representation, + representation_context, + representation_item, + security_classification, + uncertainty_measure_with_unit, + usage_association, + versioned_action_request); +END_TYPE; + +TYPE classified_item = SELECT ( + product, + product_definition, + product_definition_formation); +END_TYPE; + +TYPE compound_item_definition = SELECT ( + list_representation_item, + set_representation_item); +END_TYPE; + +TYPE conductance_measure = REAL; +END_TYPE; + +TYPE configuration_design_item = SELECT ( + product_definition, + product_definition_formation); +END_TYPE; + +TYPE configured_effectivity_context_item = SELECT ( + product_concept_feature_association); +END_TYPE; + +TYPE configured_effectivity_item = SELECT ( + product_definition); +END_TYPE; + +TYPE constructive_geometry_representation_or_shape_represenation = SELECT ( + constructive_geometry_representation, + shape_representation); +END_TYPE; + +TYPE context_dependent_measure = REAL; +END_TYPE; + +TYPE contract_item = SELECT ( + action_directive, + alternate_product_relationship, + directed_action, + executed_action, + information_usage_right, + organization, + person_and_organization, + product, + product_definition_formation); +END_TYPE; + +TYPE contracted_item = SELECT ( + product_definition_formation); +END_TYPE; + +TYPE count_measure = NUMBER; +END_TYPE; + +TYPE csg_primitive = SELECT ( + sphere, + block, + right_angular_wedge, + torus, + right_circular_cone, + right_circular_cylinder); +END_TYPE; + +TYPE csg_select = SELECT ( + boolean_result, + csg_primitive); +END_TYPE; + +TYPE curve_font_or_scaled_curve_font_select = SELECT ( + curve_style_font_select, + curve_style_font_and_scaling); +END_TYPE; + +TYPE curve_on_surface = SELECT ( + pcurve, + surface_curve, + composite_curve_on_surface); +END_TYPE; + +TYPE curve_or_annotation_curve_occurrence = SELECT ( + curve, + annotation_curve_occurrence); +END_TYPE; + +TYPE curve_or_render = SELECT ( + curve_style, + curve_style_rendering); +END_TYPE; + +TYPE curve_style_font_select = SELECT ( + curve_style_font, + pre_defined_curve_font, + externally_defined_curve_font); +END_TYPE; + +TYPE date_and_time_item = SELECT ( + action, + action_directive, + applied_action_assignment, + applied_organization_assignment, + applied_person_and_organization_assignment, + applied_security_classification_assignment, + approval_person_organization, + certification, + contract, + directed_action, + document, + document_file, + event_occurrence, + executed_action, + information_usage_right, + organizational_project, + product_definition, + product_definition_formation, + product_definition_relationship, + rule_action, + security_classification, + versioned_action_request); +END_TYPE; + +TYPE date_item = SELECT ( + action, + action_directive, + applied_action_assignment, + applied_organization_assignment, + applied_person_and_organization_assignment, + applied_security_classification_assignment, + approval_person_organization, + certification, + contract, + directed_action, + document, + document_file, + event_occurrence, + executed_action, + information_usage_right, + organizational_project, + product_definition, + product_definition_formation, + product_definition_relationship, + security_classification, + versioned_action_request); +END_TYPE; + +TYPE date_time_item = SELECT ( + approval_person_organization, + certification, + change, + change_request, + contract, + product_definition, + security_classification, + start_request, + start_work); +END_TYPE; + +TYPE date_time_or_event_occurrence = SELECT ( + date_time_select, + event_occurrence); +END_TYPE; + +TYPE date_time_select = SELECT ( + date, + date_and_time, + local_time); +END_TYPE; + +TYPE day_in_month_number = INTEGER; +WHERE + WR1 : {1 <= SELF <= 31}; +END_TYPE; + +TYPE day_in_week_number = INTEGER; +WHERE + WR1 : { 1 <= SELF <= 7 }; +END_TYPE; + +TYPE day_in_year_number = INTEGER; +WHERE + WR1 : {1 <= SELF <= 366}; +END_TYPE; + +TYPE defined_symbol_select = SELECT ( + pre_defined_symbol, + externally_defined_symbol); +END_TYPE; + +TYPE derived_property_select = SELECT ( + property_definition, + action_property); +END_TYPE; + +TYPE description_attribute_select = SELECT ( + action_request_solution, + application_context, + approval_role, + configuration_design, + date_role, + date_time_role, + context_dependent_shape_representation, + effectivity, + external_source, + organization_role, + person_and_organization_role, + person_and_organization, + property_definition_representation, + representation); +END_TYPE; + +TYPE descriptive_measure = STRING; +END_TYPE; + +TYPE dimension_count = INTEGER; +WHERE + WR1 : SELF > 0; +END_TYPE; + +TYPE dimension_extent_usage = ENUMERATION OF ( + origin, + target ); +END_TYPE; + +TYPE dimensional_characteristic = SELECT ( + dimensional_location, + dimensional_size); +END_TYPE; + +TYPE direction_count_select = SELECT ( + u_direction_count, + v_direction_count); +END_TYPE; + +TYPE document_identifier_assigned_item = SELECT ( + document); +END_TYPE; + +TYPE document_reference_item = SELECT ( + action_method, + applied_external_identification_assignment, + assembly_component_usage, + characterized_class, + characterized_object, + configuration_item, + descriptive_representation_item, + dimensional_size, + executed_action, + externally_defined_dimension_definition, + externally_defined_item, + group, + group_relationship, + information_right, + information_usage_right, + material_designation, + measure_representation_item, + product, + product_category, + product_definition, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + property_definition, + representation, + representation_item, + rule_set, + shape_aspect, + shape_aspect_relationship, + usage_association, + versioned_action_request); +END_TYPE; + +TYPE dose_equivalent_measure = REAL; +END_TYPE; + +TYPE draughting_callout_element = SELECT ( + annotation_text_occurrence, + annotation_symbol_occurrence, + annotation_curve_occurrence); +END_TYPE; + +TYPE draughting_model_item_association_select = SELECT ( + annotation_occurrence, + draughting_callout); +END_TYPE; + +TYPE draughting_model_item_select = SELECT ( + mapped_item, + styled_item, + axis2_placement, + camera_model, + draughting_callout); +END_TYPE; + +TYPE draughting_titled_item = SELECT ( + drawing_revision, + drawing_sheet_revision); +END_TYPE; + +TYPE effectivity_item = SELECT ( + assembly_component_usage_substitute, + product, + product_definition, + product_definition_formation, + product_definition_relationship, + product_definition_substitute); +END_TYPE; + +TYPE electric_charge_measure = REAL; +END_TYPE; + +TYPE electric_current_measure = REAL; +END_TYPE; + +TYPE electric_potential_measure = REAL; +END_TYPE; + +TYPE energy_measure = REAL; +END_TYPE; + +TYPE event_occurrence_item = SELECT ( + organizational_project); +END_TYPE; + +TYPE external_identification_item = SELECT ( + action_relationship, + action_request_status, + applied_organization_assignment, + applied_person_and_organization_assignment, + approval, + approval_status, + date_and_time_assignment, + date_assignment, + document_file, + external_source, + externally_defined_class, + externally_defined_context_dependent_unit, + externally_defined_conversion_based_unit, + externally_defined_general_property, + externally_defined_picture_representation_item, + externally_defined_representation_item, + organizational_address, + product_definition, + security_classification, + trimmed_curve, + versioned_action_request); +END_TYPE; + +TYPE fill_area_style_tile_shape_select = SELECT ( + fill_area_style_tile_curve_with_style, + fill_area_style_tile_coloured_region, + fill_area_style_tile_symbol_with_style, + pre_defined_tile, + externally_defined_tile); +END_TYPE; + +TYPE fill_style_select = SELECT ( + fill_area_style_colour, + externally_defined_tile_style, + fill_area_style_tiles, + externally_defined_hatch_style, + fill_area_style_hatching); +END_TYPE; + +TYPE font_select = SELECT ( + pre_defined_text_font, + externally_defined_text_font, + text_font); +END_TYPE; + +TYPE force_measure = REAL; +END_TYPE; + +TYPE founded_item_select = SELECT ( + founded_item, + representation_item); +END_TYPE; + +TYPE frequency_measure = REAL; +END_TYPE; + +TYPE generalized_surface_select = SELECT ( + surface, + face_surface, + surfaced_open_shell); +END_TYPE; + +TYPE geometric_item_specific_usage_select = SELECT ( + shape_aspect, + shape_aspect_relationship); +END_TYPE; + +TYPE geometric_set_select = SELECT ( + point, + curve, + surface); +END_TYPE; + +TYPE groupable_item = SELECT ( + geometric_representation_item, + group_relationship, + mapped_item, + package_product_concept_feature, + product_concept_feature, + product_definition, + product_definition_formation, + property_definition_representation, + representation, + representation_item, + representation_relationship_with_transformation, + shape_aspect, + shape_aspect_relationship, + shape_representation_relationship, + styled_item, + topological_representation_item); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GROUP' IN TYPEOF(SELF)); +END_TYPE; + +TYPE hour_in_day = INTEGER; +WHERE + WR1 : { 0 <= SELF < 24 }; +END_TYPE; + +TYPE id_attribute_select = SELECT ( + action, + address, + product_category, + property_definition, + shape_aspect, + shape_aspect_relationship, + application_context, + group, + organizational_project, + representation); +END_TYPE; + +TYPE identification_item = SELECT ( + approval_status, + characterized_class, + class, + configuration_item, + contract, + dimensional_size, + document_file, + general_property, + group, + group_relationship, + information_right, + information_usage_right, + material_designation, + organization, + person_and_organization, + product, + product_category, + product_class, + product_concept, + product_concept_feature, + product_definition, + product_definition_formation, + product_identification, + representation, + rule_set, + security_classification, + security_classification_level, + shape_aspect_relationship, + shape_representation, + usage_association); +END_TYPE; + +TYPE identifier = STRING; +END_TYPE; + +TYPE illuminance_measure = REAL; +END_TYPE; + +TYPE inductance_measure = REAL; +END_TYPE; + +TYPE instance_usage_context_select = SELECT ( + product_definition_relationship, + product_definition_usage); +END_TYPE; + +TYPE invisibility_context = SELECT ( + draughting_model, + presentation_representation, + presentation_set); +END_TYPE; + +TYPE invisible_item = SELECT ( + draughting_callout, + presentation_layer_assignment, + representation, + styled_item); +END_TYPE; + +TYPE ir_usage_item = action_items; +WHERE + wr1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONFIGURATION_EFFECTIVITY' IN TYPEOF(SELF)); +END_TYPE; + +TYPE knot_type = ENUMERATION OF ( + uniform_knots, + quasi_uniform_knots, + piecewise_bezier_knots, + unspecified ); +END_TYPE; + +TYPE label = STRING; +END_TYPE; + +TYPE layered_item = SELECT ( + presentation_representation, + representation_item); +END_TYPE; + +TYPE length_measure = REAL; +END_TYPE; + +TYPE limit_condition = ENUMERATION OF ( + maximum_material_condition, + least_material_condition, + regardless_of_feature_size ); +END_TYPE; + +TYPE list_of_reversible_topology_item = LIST [0:?] OF reversible_topology_item; +END_TYPE; + +TYPE list_representation_item = LIST [1:?] OF representation_item; +END_TYPE; + +TYPE luminous_flux_measure = REAL; +END_TYPE; + +TYPE luminous_intensity_measure = REAL; +END_TYPE; + +TYPE magnetic_flux_density_measure = REAL; +END_TYPE; + +TYPE magnetic_flux_measure = REAL; +END_TYPE; + +TYPE marker_select = SELECT ( + marker_type, + pre_defined_marker); +END_TYPE; + +TYPE marker_type = ENUMERATION OF ( + dot, + x, + plus, + asterisk, + ring, + square, + triangle ); +END_TYPE; + +TYPE mass_measure = REAL; +END_TYPE; + +TYPE measure_value = SELECT ( + absorbed_dose_measure, + dose_equivalent_measure, + radioactivity_measure, + acceleration_measure, + amount_of_substance_measure, + area_measure, + celsius_temperature_measure, + context_dependent_measure, + count_measure, + descriptive_measure, + capacitance_measure, + electric_charge_measure, + conductance_measure, + electric_current_measure, + electric_potential_measure, + energy_measure, + magnetic_flux_density_measure, + force_measure, + frequency_measure, + illuminance_measure, + inductance_measure, + length_measure, + luminous_flux_measure, + luminous_intensity_measure, + magnetic_flux_measure, + mass_measure, + numeric_measure, + non_negative_length_measure, + parameter_value, + plane_angle_measure, + positive_length_measure, + positive_plane_angle_measure, + positive_ratio_measure, + power_measure, + pressure_measure, + ratio_measure, + resistance_measure, + solid_angle_measure, + thermodynamic_temperature_measure, + time_measure, + velocity_measure, + volume_measure); +END_TYPE; + +TYPE mechanical_design_and_draughting_relationship_select = SELECT ( + draughting_model, + mechanical_design_geometric_presentation_representation, + mechanical_design_presentation_representation_with_draughting, + mechanical_design_shaded_presentation_representation, + shape_representation); +END_TYPE; + +TYPE mechanical_design_geometric_presentation_area_items = SELECT ( + axis2_placement, + mapped_item); +END_TYPE; + +TYPE mechanical_design_geometric_presentation_representation_items = SELECT ( + axis2_placement, + camera_model_d3, + mapped_item, + styled_item); +END_TYPE; + +TYPE message = STRING; +END_TYPE; + +TYPE minute_in_hour = INTEGER; +WHERE + WR1 : { 0 <= SELF <= 59 }; +END_TYPE; + +TYPE month_in_year_number = INTEGER; +WHERE + WR1 : { 1 <= SELF <= 12 }; +END_TYPE; + +TYPE multi_language_attribute_item = SELECT ( + alternate_product_relationship, + application_context, + applied_certification_assignment, + applied_document_reference, + applied_document_usage_constraint_assignment, + applied_external_identification_assignment, + applied_identification_assignment, + applied_organizational_project_assignment, + approval, + approval_relationship, + approval_status, + assembly_component_usage_substitute, + attribute_value_assignment, + certification, + certification_type, + colour, + configuration_design, + configuration_item, + contract, + date_role, + date_time_role, + descriptive_representation_item, + document_relationship, + document_usage_role, + effectivity, + effectivity_relationship, + event_occurrence, + external_source, + general_property, + general_property_relationship, + geometric_representation_item, + geometric_tolerance, + identification_role, + information_right, + information_usage_right, + make_from_usage_option, + mapped_item, + object_role, + organization_relationship, + organization_role, + organizational_project, + organizational_project_relationship, + organizational_project_role, + person_and_organization, + person_and_organization_role, + product, + product_concept, + product_concept_relationship, + product_definition, + product_definition_context, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + product_definition_shape, + product_related_product_category, + property_definition, + representation, + representation_relationship, + security_classification, + security_classification_assignment, + shape_aspect, + shape_aspect_relationship, + shape_representation, + time_interval_role, + topological_representation_item, + uncertainty_measure_with_unit, + usage_association); +END_TYPE; + +TYPE name_attribute_select = SELECT ( + action_request_solution, + address, + configuration_design, + context_dependent_shape_representation, + derived_unit, + effectivity, + person_and_organization, + product_definition, + product_definition_substitute, + property_definition_representation); +END_TYPE; + +TYPE name_item = SELECT ( + assembly_component_usage, + external_class_library, + group, + group_relationship, + product, + product_definition); +END_TYPE; + +TYPE non_negative_length_measure = length_measure; +WHERE + WR1 : SELF >= 0.0; +END_TYPE; + +TYPE nonnegative_integer = INTEGER; +WHERE + nonnegativity : SELF >= 0; +END_TYPE; + +TYPE null_style = ENUMERATION OF ( + null ); +END_TYPE; + +TYPE numeric_measure = NUMBER; +END_TYPE; + +TYPE organization_item = SELECT ( + action, + action_directive, + alternate_product_relationship, + applied_action_assignment, + applied_classification_assignment, + applied_identification_assignment, + applied_security_classification_assignment, + approval, + assembly_component_usage_substitute, + certification, + class, + configuration_item, + contract, + document_file, + executed_action, + general_property, + information_usage_right, + organizational_project, + product, + product_definition, + product_definition_formation, + product_definition_formation_relationship, + property_definition, + rule_action, + security_classification, + shape_representation, + versioned_action_request); +END_TYPE; + +TYPE orientation_basis_select = SELECT ( + axis2_placement_3d, + min_and_major_ply_orientation_basis); +END_TYPE; + +TYPE parameter_value = REAL; +END_TYPE; + +TYPE pcurve_or_surface = SELECT ( + pcurve, + surface); +END_TYPE; + +TYPE person_and_organization_item = SELECT ( + action, + action_directive, + alternate_product_relationship, + applied_action_assignment, + applied_classification_assignment, + applied_identification_assignment, + applied_security_classification_assignment, + approval, + assembly_component_usage_substitute, + certification, + configuration_item, + contract, + document_file, + executed_action, + general_property, + information_usage_right, + organizational_project, + person_and_organization, + product, + product_definition, + product_definition_formation, + product_definition_formation_relationship, + property_definition, + rule_action, + security_classification, + shape_representation, + versioned_action_request); +END_TYPE; + +TYPE person_organization_select = SELECT ( + person, + organization, + person_and_organization); +END_TYPE; + +TYPE picture_representation_item_select = SELECT ( + styled_item, + planar_box, + axis2_placement_2d); +END_TYPE; + +TYPE plane_angle_measure = REAL; +END_TYPE; + +TYPE plane_or_planar_box = SELECT ( + plane, + planar_box); +END_TYPE; + +TYPE point_and_vector_member = SELECT ( + point, + direction); +END_TYPE; + +TYPE point_and_vector_members = LIST [2:3] OF point_and_vector_member; +END_TYPE; + +TYPE point_path_members = LIST [1:?] OF point_and_vector; +END_TYPE; + +TYPE positive_integer = nonnegative_integer; +WHERE + positivity : SELF > 0; +END_TYPE; + +TYPE positive_length_measure = non_negative_length_measure; +WHERE + WR1 : SELF > 0.0; +END_TYPE; + +TYPE positive_plane_angle_measure = plane_angle_measure; +WHERE + WR1 : SELF > 0.0; +END_TYPE; + +TYPE positive_ratio_measure = ratio_measure; +WHERE + WR1 : SELF > 0.0; +END_TYPE; + +TYPE power_measure = REAL; +END_TYPE; + +TYPE preferred_surface_curve_representation = ENUMERATION OF ( + curve_3d, + pcurve_s1, + pcurve_s2 ); +END_TYPE; + +TYPE presentable_text = STRING; +WHERE + WR1 : control_characters_free(SELF); +END_TYPE; + +TYPE presentation_representation_select = SELECT ( + presentation_representation, + presentation_set); +END_TYPE; + +TYPE presentation_size_assignment_select = SELECT ( + presentation_view, + presentation_area, + area_in_set); +END_TYPE; + +TYPE presentation_style_select = SELECT ( + point_style, + curve_style, + surface_style_usage, + symbol_style, + fill_area_style, + text_style, + null_style); +END_TYPE; + +TYPE presented_item_select = SELECT ( + action, + action_method, + action_relationship, + product_concept, + product_concept_feature, + product_concept_feature_category, + product_definition, + product_definition_formation, + product_definition_relationship); +END_TYPE; + +TYPE pressure_measure = REAL; +END_TYPE; + +TYPE product_definition_or_assembly_relationship = SELECT ( + assembly_component_usage, + product_definition); +END_TYPE; + +TYPE product_definition_or_breakdown_element_usage = SELECT ( + product_definition, + product_definition_usage); +END_TYPE; + +TYPE product_definition_or_product_definition_relationship = SELECT ( + product_definition, + product_definition_usage); +END_TYPE; + +TYPE product_or_formation_or_definition = SELECT ( + product, + product_definition_formation, + product_definition); +END_TYPE; + +TYPE project_item = SELECT ( + executed_action, + product_concept); +END_TYPE; + +TYPE radioactivity_measure = REAL; +END_TYPE; + +TYPE ratio_measure = REAL; +END_TYPE; + +TYPE rendering_properties_select = SELECT ( + surface_style_reflectance_ambient, + surface_style_transparent); +END_TYPE; + +TYPE represented_definition = SELECT ( + general_property, + property_definition, + property_definition_relationship, + shape_aspect, + shape_aspect_relationship); +END_TYPE; + +TYPE requirement_assigned_item = SELECT ( + configuration_item, + descriptive_representation_item, + product, + product_class, + product_definition, + product_definition_formation, + product_definition_relationship, + representation, + shape_aspect); +END_TYPE; + +TYPE requirement_satisfaction_item = SELECT ( + requirement_assigned_item); +END_TYPE; + +TYPE requirement_source_item = SELECT ( + characterized_object, + group, + group_relationship, + product, + product_definition, + product_definition_formation, + product_definition_relationship, + shape_aspect); +END_TYPE; + +TYPE resistance_measure = REAL; +END_TYPE; + +TYPE reversible_topology = SELECT ( + reversible_topology_item, + list_of_reversible_topology_item, + set_of_reversible_topology_item); +END_TYPE; + +TYPE reversible_topology_item = SELECT ( + edge, + path, + face, + face_bound, + closed_shell, + open_shell); +END_TYPE; + +TYPE role_select = SELECT ( + action_assignment, + action_request_assignment, + approval_assignment, + approval_date_time, + certification_assignment, + contract_assignment, + document_reference, + effectivity_assignment, + group_assignment, + name_assignment, + security_classification_assignment); +END_TYPE; + +TYPE rule_superseded_item = SELECT ( + product_definition_formation); +END_TYPE; + +TYPE second_in_minute = REAL; +WHERE + WR1 : { 0 <= SELF <= 60.0 }; +END_TYPE; + +TYPE security_classification_item = SELECT ( + assembly_component_usage, + document, + document_file, + make_from_usage_option, + product, + product_definition, + product_definition_formation, + product_definition_usage); +END_TYPE; + +TYPE set_of_reversible_topology_item = SET [0:?] OF reversible_topology_item; +END_TYPE; + +TYPE set_representation_item = SET [1:?] OF representation_item; +END_TYPE; + +TYPE shading_curve_method = ENUMERATION OF ( + constant_colour, + linear_colour ); +END_TYPE; + +TYPE shading_surface_method = ENUMERATION OF ( + constant_shading, + colour_shading, + dot_shading, + normal_shading ); +END_TYPE; + +TYPE shape_definition = SELECT ( + product_definition_shape, + shape_aspect, + shape_aspect_relationship); +END_TYPE; + +TYPE shell = SELECT ( + vertex_shell, + wire_shell, + open_shell, + closed_shell); +END_TYPE; + +TYPE si_prefix = ENUMERATION OF ( + exa, + peta, + tera, + giga, + mega, + kilo, + hecto, + deca, + deci, + centi, + milli, + micro, + nano, + pico, + femto, + atto ); +END_TYPE; + +TYPE si_unit_name = ENUMERATION OF ( + metre, + gram, + second, + ampere, + kelvin, + mole, + candela, + radian, + steradian, + hertz, + newton, + pascal, + joule, + watt, + coulomb, + volt, + farad, + ohm, + siemens, + weber, + tesla, + henry, + degree_Celsius, + lumen, + lux, + becquerel, + gray, + sievert ); +END_TYPE; + +TYPE size_select = SELECT ( + positive_length_measure, + measure_with_unit, + descriptive_measure); +END_TYPE; + +TYPE sketch_basis_select = SELECT ( + curve_bounded_surface, + face_surface); +END_TYPE; + +TYPE solid_angle_measure = REAL; +END_TYPE; + +TYPE source = ENUMERATION OF ( + made, + bought, + not_known ); +END_TYPE; + +TYPE source_item = SELECT ( + identifier, + message); +END_TYPE; + +TYPE start_request_item = SELECT ( + product_definition_formation); +END_TYPE; + +TYPE string_representation_item_select = SELECT ( + descriptive_representation_item, + included_text_block, + structured_text_composition); +END_TYPE; + +TYPE style_context_select = SELECT ( + group, + presentation_layer_assignment, + presentation_set, + representation, + representation_item, + representation_relationship); +END_TYPE; + +TYPE surface_side = ENUMERATION OF ( + positive, + negative, + both ); +END_TYPE; + +TYPE surface_side_style_select = SELECT ( + surface_side_style, + pre_defined_surface_side_style); +END_TYPE; + +TYPE surface_style_element_select = SELECT ( + surface_style_fill_area, + surface_style_boundary, + surface_style_silhouette, + surface_style_segmentation_curve, + surface_style_control_grid, + surface_style_parameter_line, + surface_style_rendering); +END_TYPE; + +TYPE symbol_style_select = SELECT ( + symbol_colour); +END_TYPE; + +TYPE text = STRING; +END_TYPE; + +TYPE text_alignment = label; +END_TYPE; + +TYPE text_delineation = label; +END_TYPE; + +TYPE text_or_character = SELECT ( + annotation_text, + annotation_text_character, + composite_text, + text_literal); +END_TYPE; + +TYPE text_path = ENUMERATION OF ( + left, + right, + up, + down ); +END_TYPE; + +TYPE text_string_representation_item = SELECT ( + text_literal, + annotation_text, + annotation_text_character, + composite_text, + axis2_placement); +END_TYPE; + +TYPE thermodynamic_temperature_measure = REAL; +END_TYPE; + +TYPE time_interval_item = SELECT ( + action, + time_interval_based_effectivity); +END_TYPE; + +TYPE time_measure = REAL; +END_TYPE; + +TYPE tolerance_method_definition = SELECT ( + tolerance_value, + limits_and_fits); +END_TYPE; + +TYPE transformation = SELECT ( + item_defined_transformation, + functionally_defined_transformation); +END_TYPE; + +TYPE transition_code = ENUMERATION OF ( + discontinuous, + continuous, + cont_same_gradient, + cont_same_gradient_same_curvature ); +END_TYPE; + +TYPE trim_condition_select = SELECT ( + length_measure, + plane_angle_measure, + generalized_surface_select, + solid_model); +END_TYPE; + +TYPE trim_intent = ENUMERATION OF ( + blind, + offset, + through_all, + unspecified, + up_to_next ); +END_TYPE; + +TYPE trimming_preference = ENUMERATION OF ( + cartesian, + parameter, + unspecified ); +END_TYPE; + +TYPE trimming_select = SELECT ( + cartesian_point, + parameter_value); +END_TYPE; + +TYPE u_direction_count = INTEGER; +WHERE + WR1 : SELF > 1; +END_TYPE; + +TYPE unit = SELECT ( + derived_unit, + named_unit); +END_TYPE; + +TYPE v_direction_count = INTEGER; +WHERE + WR1 : SELF > 1; +END_TYPE; + +TYPE value_qualifier = SELECT ( + precision_qualifier, + type_qualifier, + uncertainty_qualifier); +END_TYPE; + +TYPE vector_or_direction = SELECT ( + vector, + direction); +END_TYPE; + +TYPE velocity_measure = REAL; +END_TYPE; + +TYPE volume_measure = REAL; +END_TYPE; + +TYPE week_in_year_number = INTEGER; +WHERE + WR1 : { 1 <= SELF <= 53 }; +END_TYPE; + +TYPE work_item = SELECT ( + product_definition_formation); +END_TYPE; + +TYPE year_number = INTEGER; +END_TYPE; + +ENTITY absorbed_dose_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ABSORBED_DOSE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY absorbed_dose_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.gray); +END_ENTITY; + + +ENTITY abstract_variable + SUBTYPE OF (property_definition, property_definition_representation, representation, representation_item); +END_ENTITY; + + +ENTITY acceleration_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ACCELERATION_UNIT' IN TYPEOF (SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY acceleration_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = + dimensional_exponents ( 1.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0 ); +END_ENTITY; + + +ENTITY action; + name : label; + description : OPTIONAL text; + chosen_method : action_method; +DERIVE + id : identifier := get_id_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY action_assignment + ABSTRACT SUPERTYPE; + assigned_action : action; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY action_directive; + name : label; + description : OPTIONAL text; + analysis : text; + comment : text; + requests : SET [1:?] OF versioned_action_request; +END_ENTITY; + + +ENTITY action_method; + name : label; + description : OPTIONAL text; + consequence : text; + purpose : text; +END_ENTITY; + + +ENTITY action_method_assignment + ABSTRACT SUPERTYPE; + assigned_action_method : action_method; + role : action_method_role; +END_ENTITY; + + +ENTITY action_method_relationship; + name : label; + description : OPTIONAL text; + relating_method : action_method; + related_method : action_method; +END_ENTITY; + + +ENTITY action_method_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY action_property; + name : label; + description : text; + definition : characterized_action_definition; +END_ENTITY; + + +ENTITY action_property_representation; + name : label; + description : text; + property : action_property; + representation : representation; +END_ENTITY; + + +ENTITY action_relationship; + name : label; + description : OPTIONAL text; + relating_action : action; + related_action : action; +END_ENTITY; + + +ENTITY action_request_assignment + ABSTRACT SUPERTYPE; + assigned_action_request : versioned_action_request; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY action_request_solution; + method : action_method; + request : versioned_action_request; +DERIVE + description : text := get_description_value(SELF); + name : label := get_name_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY action_request_status; + status : label; + assigned_request : versioned_action_request; +END_ENTITY; + + +ENTITY action_status; + status : label; + assigned_action : executed_action; +END_ENTITY; + + +ENTITY address; + internal_location : OPTIONAL label; + street_number : OPTIONAL label; + street : OPTIONAL label; + postal_box : OPTIONAL label; + town : OPTIONAL label; + region : OPTIONAL label; + postal_code : OPTIONAL label; + country : OPTIONAL label; + facsimile_number : OPTIONAL label; + telephone_number : OPTIONAL label; + electronic_mail_address : OPTIONAL label; + telex_number : OPTIONAL label; +DERIVE + name : label := get_name_value(SELF); + url : identifier := get_id_value(SELF); +WHERE + WR1 : EXISTS(internal_location) OR EXISTS(street_number) OR EXISTS(street) OR EXISTS(postal_box) OR EXISTS(town) OR EXISTS(region) OR EXISTS(postal_code) OR EXISTS(country) OR EXISTS(facsimile_number) OR EXISTS(telephone_number) OR EXISTS(electronic_mail_address) OR EXISTS(telex_number); +END_ENTITY; + + +ENTITY advanced_brep_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF ( +QUERY ( it <* SELF.items| NOT ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACETED_BREP', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D' ] * TYPEOF (it)) = 1) )) = 0; + WR2 : SIZEOF ( +QUERY ( it <* SELF.items| ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' ] * TYPEOF (it)) = 1) )) > 0; + WR3 : SIZEOF ( +QUERY ( msb <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( csh <* msb_shells(msb)| NOT ( SIZEOF ( +QUERY ( fcs <* csh\connected_face_set.cfs_faces| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fcs)) )) = 0) )) = 0) )) = 0; + WR4 : SIZEOF ( +QUERY ( msb <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF (it)) )| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF (msb\manifold_solid_brep.outer)) )) = 0; + WR5 : SIZEOF ( +QUERY ( brv <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BREP_WITH_VOIDS' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( csh <* brv\brep_with_voids.voids| csh\oriented_closed_shell.orientation )) = 0) )) = 0; + WR6 : SIZEOF ( +QUERY ( mi <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_BREP_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0; +END_ENTITY; + + +ENTITY advanced_face + SUBTYPE OF (face_surface); +WHERE + WR1 : SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELEMENTARY_SURFACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_SURFACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_SURFACE' ] * TYPEOF (face_geometry)) = 1; + WR2 : SIZEOF ( +QUERY ( elp_fbnds <* +QUERY ( bnds <* bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF ( +QUERY ( oe <* elp_fbnds.bound\path.edge_list| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN TYPEOF (oe\oriented_edge.edge_element)) )) = 0) )) = 0; + WR3 : SIZEOF ( +QUERY ( elp_fbnds <* +QUERY ( bnds <* bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF ( +QUERY ( oe <* elp_fbnds.bound\path.edge_list| NOT ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' ] * TYPEOF (oe.edge_element\edge_curve.edge_geometry)) = 1) )) = 0) )) = 0; + WR4 : SIZEOF ( +QUERY ( elp_fbnds <* +QUERY ( bnds <* bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF ( +QUERY ( oe <* elp_fbnds.bound\path.edge_list| NOT ((('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (oe\edge.edge_start)) AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF (oe\edge.edge_start\vertex_point.vertex_geometry))) AND (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (oe\edge.edge_end)) AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF (oe\edge.edge_end\vertex_point.vertex_geometry)))) )) = 0) )) = 0; + WR5 : SIZEOF ( +QUERY ( elp_fbnds <* +QUERY ( bnds <* bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_PATH' IN TYPEOF (elp_fbnds.bound)) )) = 0; + WR6 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_SURFACE' IN TYPEOF (face_geometry)) OR ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' ] * TYPEOF (face_geometry\swept_surface.swept_curve)) = 1); + WR7 : SIZEOF ( +QUERY ( vlp_fbnds <* +QUERY ( bnds <* bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) )| NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex)) AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF (vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex\vertex_point.vertex_geometry))) )) = 0; + WR8 : SIZEOF ( +QUERY ( bnd <* bounds| NOT ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' ] * TYPEOF (bnd.bound)) = 1) )) = 0; + WR9 : SIZEOF ( +QUERY ( elp_fbnds <* +QUERY ( bnds <* bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF ( +QUERY ( oe <* elp_fbnds.bound\path.edge_list| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN TYPEOF (oe\oriented_edge.edge_element\edge_curve.edge_geometry)) AND NOT ( SIZEOF ( +QUERY ( sc_ag <* oe.edge_element\edge_curve.edge_geometry\surface_curve.associated_geometry| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF (sc_ag)) )) = 0) )) = 0) )) = 0; + WR10 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_SURFACE' IN TYPEOF (face_geometry)) OR (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF (face_geometry\swept_surface.swept_curve)) OR ( SIZEOF (face_geometry\swept_surface.swept_curve\polyline.points) >= 3))) AND ( SIZEOF ( +QUERY ( elp_fbnds <* +QUERY ( bnds <* bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF ( +QUERY ( oe <* elp_fbnds.bound\path.edge_list| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF (oe\oriented_edge.edge_element\edge_curve.edge_geometry)) AND NOT ( SIZEOF (oe\oriented_edge.edge_element\edge_curve.edge_geometry\polyline.points) >= 3) )) = 0) )) = 0); +END_ENTITY; + + +ENTITY alternate_product_relationship; + name : label; + definition : OPTIONAL text; + alternate : product; + base : product; + basis : text; +UNIQUE + UR1 : alternate, base; +WHERE + WR1 : alternate :<>: base; +END_ENTITY; + + +ENTITY amount_of_substance_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AMOUNT_OF_SUBSTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY amount_of_substance_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 1.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY angle_direction_reference + SUBTYPE OF (representation_item_relationship, geometric_representation_item); + SELF\representation_item_relationship.related_representation_item : angle_direction_reference_select; + SELF\representation_item_relationship.relating_representation_item : orientation_basis_select; +WHERE + WR1 : ((('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_PATH' IN TYPEOF(related_representation_item)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MIN_AND_MAJOR_PLY_ORIENTATION_BASIS' IN TYPEOF(relating_representation_item))) + OR + (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_PATH' IN TYPEOF(related_representation_item)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF(relating_representation_item)))); +END_ENTITY; + + +ENTITY angular_dimension + SUBTYPE OF (dimension_curve_directed_callout); +END_ENTITY; + + +ENTITY angular_location + SUBTYPE OF (dimensional_location); + angle_selection : angle_relator; +END_ENTITY; + + +ENTITY angular_size + SUBTYPE OF (dimensional_size); + angle_selection : angle_relator; +END_ENTITY; + + +ENTITY angularity_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) < 3; +END_ENTITY; + + +ENTITY annotation_curve_occurrence + SUBTYPE OF (annotation_occurrence); + SELF\styled_item.item : curve; +END_ENTITY; + + +ENTITY annotation_fill_area + SUBTYPE OF (geometric_representation_item); + boundaries : SET [1:?] OF curve; +WHERE + WR1 : (SELF\geometric_representation_item.dim = 3) OR (SIZEOF (QUERY (curve <* SELF.boundaries | + NOT ( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCLE' IN TYPEOF (curve)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELLIPSE' IN TYPEOF (curve)) OR + ( ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' IN TYPEOF (curve)) + AND (curve\b_spline_curve.closed_curve = TRUE) ) OR + ( ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE' IN TYPEOF (curve)) + AND (curve\composite_curve.closed_curve = TRUE) ) OR + ( ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF (curve)) + AND (curve\polyline.points[LOINDEX(curve\polyline.points)] = + curve\polyline.points[HIINDEX(curve\polyline.points)]) ) + ) )) = 0); +END_ENTITY; + + +ENTITY annotation_fill_area_occurrence + SUBTYPE OF (annotation_occurrence); + fill_style_target : point; + SELF\styled_item.item : annotation_fill_area; +END_ENTITY; + + +ENTITY annotation_occurrence + SUPERTYPE OF (ONEOF (annotation_curve_occurrence, annotation_fill_area_occurrence, annotation_text_occurrence, annotation_symbol_occurrence)) + SUBTYPE OF (styled_item); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN + TYPEOF (SELF); + WR2 : SIZEOF (QUERY (reps <* using_representations(SELF) | + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_REPRESENTATION_SELECT' IN TYPEOF(reps)))) = 0; +END_ENTITY; + + +ENTITY annotation_occurrence_associativity + SUBTYPE OF (annotation_occurrence_relationship); +WHERE + WR1 : SIZEOF (TYPEOF (SELF.related_annotation_occurrence) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_CURVE']) = 1; +END_ENTITY; + + +ENTITY annotation_occurrence_relationship; + name : label; + description : text; + relating_annotation_occurrence : annotation_occurrence; + related_annotation_occurrence : annotation_occurrence; +END_ENTITY; + + +ENTITY annotation_plane + SUBTYPE OF (annotation_occurrence, geometric_representation_item); + elements : OPTIONAL SET [1:?] OF annotation_plane_element; + SELF\styled_item.item : plane_or_planar_box; +WHERE + WR1 : SELF\geometric_representation_item.dim = 3; + WR2 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PLANAR_BOX' IN TYPEOF(SELF\styled_item.item)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'AXIS2_PLACEMENT_3D' IN TYPEOF(SELF\styled_item.item\planar_box.placement)); + WR3 : (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PLANAR_BOX' IN TYPEOF(SELF\styled_item.item)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'CURVE_STYLE' IN TYPEOF(SELF\styled_item.styles[1]\presentation_style_assignment.styles[1]))) OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PLANE' IN TYPEOF(SELF\styled_item.item)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'FILL_AREA_STYLE' IN TYPEOF(SELF\styled_item.styles[1]\presentation_style_assignment.styles[1]))); + WR4 : (SIZEOF(SELF\styled_item.styles) = 1) AND + (SIZEOF(SELF\styled_item.styles[1]\presentation_style_assignment.styles) = 1); +END_ENTITY; + + +ENTITY annotation_subfigure_occurrence + SUBTYPE OF (annotation_symbol_occurrence); +WHERE + WR1 : SIZEOF (QUERY (sty <* SELF.styles | + NOT (SIZEOF (sty.styles) = 1) + )) = 0; + WR2 : SIZEOF (QUERY (sty <* SELF.styles | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NULL_STYLE' + IN TYPEOF (sty.styles[1])) ))=0; + WR3 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL' + IN TYPEOF (SELF.item)); + WR4 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_SUBFIGURE_REPRESENTATION' + IN TYPEOF + (SELF.item\mapped_item.mapping_source.mapped_representation)); +END_ENTITY; + + +ENTITY annotation_symbol + SUBTYPE OF (mapped_item); + SELF\mapped_item.mapping_source : symbol_representation_map; + SELF\mapped_item.mapping_target : symbol_target; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN + TYPEOF (SELF); +END_ENTITY; + + +ENTITY annotation_symbol_occurrence + SUBTYPE OF (annotation_occurrence); + SELF\styled_item.item : annotation_symbol_occurrence_item; +END_ENTITY; + + +ENTITY annotation_text + SUBTYPE OF (mapped_item); + SELF\mapped_item.mapping_target : axis2_placement; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_STRING_REPRESENTATION' IN + TYPEOF( SELF\mapped_item.mapping_source.mapped_representation); + WR2 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN + TYPEOF( SELF); +END_ENTITY; + + +ENTITY annotation_text_character + SUBTYPE OF (mapped_item); + alignment : text_alignment; + SELF\mapped_item.mapping_target : axis2_placement; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CHARACTER_GLYPH_SYMBOL' IN + TYPEOF (SELF\mapped_item.mapping_source.mapped_representation); + WR2 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN + TYPEOF (SELF); +END_ENTITY; + + +ENTITY annotation_text_occurrence + SUBTYPE OF (annotation_occurrence); + SELF\styled_item.item : annotation_text_occurrence_item; +END_ENTITY; + + +ENTITY apex + SUBTYPE OF (derived_shape_aspect); +END_ENTITY; + + +ENTITY application_context; + application : label; +DERIVE + description : text := get_description_value(SELF); + id : identifier := get_id_value(SELF); +INVERSE + context_elements: SET [1:?] OF application_context_element FOR frame_of_reference; +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY application_context_element + SUPERTYPE OF (ONEOF (product_concept_context, product_context, product_definition_context)); + name : label; + frame_of_reference : application_context; +END_ENTITY; + + +ENTITY application_protocol_definition; + status : label; + application_interpreted_model_schema_name : label; + application_protocol_year : year_number; + application : application_context; +END_ENTITY; + + +ENTITY applied_action_assignment + SUBTYPE OF (action_assignment); + items : SET [1:?] OF action_items; +END_ENTITY; + + +ENTITY applied_action_method_assignment + SUBTYPE OF (action_method_assignment); + items : SET [1:?] OF action_method_items; +END_ENTITY; + + +ENTITY applied_action_request_assignment + SUBTYPE OF (action_request_assignment); + items : SET [1:?] OF action_request_item; +END_ENTITY; + + +ENTITY applied_approval_assignment + SUBTYPE OF (approval_assignment); + items : SET [1:?] OF approval_item; +END_ENTITY; + + +ENTITY applied_attribute_classification_assignment + SUBTYPE OF (attribute_classification_assignment); + items : SET [1:?] OF attribute_classification_item; + SELF\attribute_classification_assignment.assigned_class : class; +END_ENTITY; + + +ENTITY applied_certification_assignment + SUBTYPE OF (certification_assignment); + items : SET [1:?] OF certification_item; +END_ENTITY; + + +ENTITY applied_classification_assignment + SUBTYPE OF (classification_assignment); + items : SET [1:?] OF classification_item; +END_ENTITY; + + +ENTITY applied_contract_assignment + SUBTYPE OF (contract_assignment); + items : SET [1:?] OF contract_item; +END_ENTITY; + + +ENTITY applied_date_and_time_assignment + SUBTYPE OF (date_and_time_assignment); + items : SET [1:?] OF date_and_time_item; +END_ENTITY; + + +ENTITY applied_date_assignment + SUBTYPE OF (date_assignment); + items : SET [1:?] OF date_item; +END_ENTITY; + + +ENTITY applied_document_reference + SUBTYPE OF (document_reference); + items : SET [1:?] OF document_reference_item; +END_ENTITY; + + +ENTITY applied_document_usage_constraint_assignment + SUBTYPE OF (document_usage_constraint_assignment); + items : SET [1:?] OF document_reference_item; +END_ENTITY; + + +ENTITY applied_effectivity_assignment + SUBTYPE OF (effectivity_assignment); + items : SET [1:?] OF effectivity_item; +END_ENTITY; + + +ENTITY applied_event_occurrence_assignment + SUBTYPE OF (event_occurrence_assignment); + items : SET [1:?] OF event_occurrence_item; +END_ENTITY; + + +ENTITY applied_external_identification_assignment + SUBTYPE OF (external_identification_assignment); + items : SET [1:?] OF external_identification_item; +END_ENTITY; + + +ENTITY applied_group_assignment + SUBTYPE OF (group_assignment); + items : SET [1:?] OF groupable_item; +END_ENTITY; + + +ENTITY applied_identification_assignment + SUBTYPE OF (identification_assignment); + items : SET [1:?] OF identification_item; +END_ENTITY; + + +ENTITY applied_name_assignment + SUBTYPE OF (name_assignment); + item : name_item; +END_ENTITY; + + +ENTITY applied_organization_assignment + SUBTYPE OF (organization_assignment); + items : SET [1:?] OF organization_item; +END_ENTITY; + + +ENTITY applied_organizational_project_assignment + SUBTYPE OF (organizational_project_assignment); + items : SET [1:?] OF project_item; +END_ENTITY; + + +ENTITY applied_person_and_organization_assignment + SUBTYPE OF (person_and_organization_assignment); + items : SET [1:?] OF person_and_organization_item; +END_ENTITY; + + +ENTITY applied_presented_item + SUBTYPE OF (presented_item); + items : SET [1:?] OF presented_item_select; +END_ENTITY; + + +ENTITY applied_security_classification_assignment + SUBTYPE OF (security_classification_assignment); + items : SET [1:?] OF security_classification_item; +END_ENTITY; + + +ENTITY applied_time_interval_assignment + SUBTYPE OF (time_interval_assignment); + items : SET [0:?] OF time_interval_item; +END_ENTITY; + + +ENTITY applied_usage_right + SUBTYPE OF (applied_action_assignment); + SELF\applied_action_assignment.items : SET [1:?] OF ir_usage_item; +END_ENTITY; + + +ENTITY approval; + status : approval_status; + level : label; +END_ENTITY; + + +ENTITY approval_assignment + ABSTRACT SUPERTYPE; + assigned_approval : approval; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY approval_date_time; + date_time : date_time_select; + dated_approval : approval; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY approval_person_organization; + person_organization : person_organization_select; + authorized_approval : approval; + role : approval_role; +END_ENTITY; + + +ENTITY approval_relationship; + name : label; + description : OPTIONAL text; + relating_approval : approval; + related_approval : approval; +END_ENTITY; + + +ENTITY approval_role; + role : label; +DERIVE + description : text := get_description_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY approval_status; + name : label; +END_ENTITY; + + +ENTITY area_in_set; + area : presentation_area; + in_set : presentation_set; +END_ENTITY; + + +ENTITY area_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AREA_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY area_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = + dimensional_exponents ( 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ); +END_ENTITY; + + +ENTITY assembly_component_usage + SUPERTYPE OF (ONEOF (next_assembly_usage_occurrence, specified_higher_usage_occurrence, promissory_usage_occurrence)) + SUBTYPE OF (product_definition_usage); + reference_designator : OPTIONAL identifier; +END_ENTITY; + + +ENTITY assembly_component_usage_substitute; + name : label; + definition : OPTIONAL text; + base : assembly_component_usage; + substitute : assembly_component_usage; +UNIQUE + UR1 : base, substitute; +WHERE + WR1 : base.relating_product_definition :=: + substitute.relating_product_definition; + WR2 : base :<>: substitute; +END_ENTITY; + + +ENTITY assigned_requirement + SUBTYPE OF (group_assignment); + items : SET [1:1] OF product_definition; + SELF\group_assignment.assigned_group : requirement_assignment; +END_ENTITY; + + +ENTITY atomic_formula + SUBTYPE OF (compound_representation_item); +END_ENTITY; + + +ENTITY attribute_assertion + SUBTYPE OF (fact_type, property_definition_representation, representation); +END_ENTITY; + + +ENTITY attribute_classification_assignment + ABSTRACT SUPERTYPE; + assigned_class : group; + attribute_name : label; + role : classification_role; +END_ENTITY; + + +ENTITY attribute_language_assignment + SUBTYPE OF (attribute_classification_assignment); + items : SET [1:?] OF attribute_language_item; + SELF\attribute_classification_assignment.assigned_class : language; +WHERE + WR1 : SELF\attribute_classification_assignment.role.name IN ['primary', 'translated']; + WR2 : SELF\attribute_classification_assignment.attribute_name<> ''; +END_ENTITY; + + +ENTITY attribute_value_assignment + ABSTRACT SUPERTYPE; + attribute_name : label; + attribute_value : attribute_type; + role : attribute_value_role; +END_ENTITY; + + +ENTITY attribute_value_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY auxiliary_geometric_representation_item + SUBTYPE OF (geometric_representation_item, variational_representation_item); +END_ENTITY; + + +ENTITY axis1_placement + SUBTYPE OF (placement); + axis : OPTIONAL direction; +DERIVE + z : direction := NVL(normalise(axis), dummy_gri || + direction([0.0,0.0,1.0])); +WHERE + WR1 : SELF\geometric_representation_item.dim = 3; +END_ENTITY; + + +ENTITY axis2_placement_2d + SUBTYPE OF (placement); + ref_direction : OPTIONAL direction; +DERIVE + p : LIST [2:2] OF direction := build_2axes(ref_direction); +WHERE + WR1 : SELF\geometric_representation_item.dim = 2; +END_ENTITY; + + +ENTITY axis2_placement_3d + SUBTYPE OF (placement); + axis : OPTIONAL direction; + ref_direction : OPTIONAL direction; +DERIVE + p : LIST [3:3] OF direction := build_axes(axis,ref_direction); +WHERE + WR1 : SELF\placement.location.dim = 3; + WR2 : (NOT (EXISTS (axis))) OR (axis.dim = 3); + WR3 : (NOT (EXISTS (ref_direction))) OR (ref_direction.dim = 3); + WR4 : (NOT (EXISTS (axis))) OR (NOT (EXISTS (ref_direction))) OR + (cross_product(axis,ref_direction).magnitude > 0.0); +END_ENTITY; + + +ENTITY b_spline_curve + SUPERTYPE OF ((ONEOF (uniform_curve, b_spline_curve_with_knots, quasi_uniform_curve, bezier_curve) ANDOR rational_b_spline_curve)) + SUBTYPE OF (bounded_curve); + degree : INTEGER; + control_points_list : LIST [2:?] OF cartesian_point; + curve_form : b_spline_curve_form; + closed_curve : LOGICAL; + self_intersect : LOGICAL; +DERIVE + control_points : ARRAY [0:upper_index_on_control_points] OF cartesian_point := list_to_array(control_points_list,0, + upper_index_on_control_points); + upper_index_on_control_points : INTEGER := (SIZEOF(control_points_list) - 1); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.UNIFORM_CURVE' IN TYPEOF(self)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.QUASI_UNIFORM_CURVE' IN TYPEOF(self)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BEZIER_CURVE' IN TYPEOF(self)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE_WITH_KNOTS' IN TYPEOF(self)); +END_ENTITY; + + +ENTITY b_spline_curve_with_knots + SUBTYPE OF (b_spline_curve); + knot_multiplicities : LIST [2:?] OF INTEGER; + knots : LIST [2:?] OF parameter_value; + knot_spec : knot_type; +DERIVE + upper_index_on_knots : INTEGER := SIZEOF(knots); +WHERE + WR1 : constraints_param_b_spline(degree, upper_index_on_knots, + upper_index_on_control_points, + knot_multiplicities, knots); + WR2 : SIZEOF(knot_multiplicities) = upper_index_on_knots; +END_ENTITY; + + +ENTITY b_spline_surface + SUPERTYPE OF ((ONEOF (b_spline_surface_with_knots, uniform_surface, quasi_uniform_surface, bezier_surface) ANDOR rational_b_spline_surface)) + SUBTYPE OF (bounded_surface); + u_degree : INTEGER; + v_degree : INTEGER; + control_points_list : LIST [2:?] OF LIST [2:?] OF cartesian_point; + surface_form : b_spline_surface_form; + u_closed : LOGICAL; + v_closed : LOGICAL; + self_intersect : LOGICAL; +DERIVE + control_points : ARRAY [0:u_upper] OF ARRAY [0:v_upper] OF cartesian_point := make_array_of_array(control_points_list, + 0,u_upper,0,v_upper); + u_upper : INTEGER := SIZEOF(control_points_list) - 1; + v_upper : INTEGER := SIZEOF(control_points_list[1]) - 1; +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.UNIFORM_SURFACE' IN TYPEOF(SELF)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.QUASI_UNIFORM_SURFACE' IN TYPEOF(SELF)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BEZIER_SURFACE' IN TYPEOF(SELF)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_SURFACE_WITH_KNOTS' IN TYPEOF(SELF)); +END_ENTITY; + + +ENTITY b_spline_surface_with_knots + SUBTYPE OF (b_spline_surface); + u_multiplicities : LIST [2:?] OF INTEGER; + v_multiplicities : LIST [2:?] OF INTEGER; + u_knots : LIST [2:?] OF parameter_value; + v_knots : LIST [2:?] OF parameter_value; + knot_spec : knot_type; +DERIVE + knot_u_upper : INTEGER := SIZEOF(u_knots); + knot_v_upper : INTEGER := SIZEOF(v_knots); +WHERE + WR1 : constraints_param_b_spline(SELF\b_spline_surface.u_degree, + knot_u_upper, SELF\b_spline_surface.u_upper, + u_multiplicities, u_knots); + WR2 : constraints_param_b_spline(SELF\b_spline_surface.v_degree, + knot_v_upper, SELF\b_spline_surface.v_upper, + v_multiplicities, v_knots); + WR3 : SIZEOF(u_multiplicities) = knot_u_upper; + WR4 : SIZEOF(v_multiplicities) = knot_v_upper; +END_ENTITY; + + +ENTITY back_chaining_rule + SUBTYPE OF (rule_definition); +END_ENTITY; + + +ENTITY back_chaining_rule_body + SUBTYPE OF (property_definition, property_definition_representation, representation); +END_ENTITY; + + +ENTITY background_colour + SUBTYPE OF (colour); + presentation : area_or_view; +UNIQUE + UR1 : presentation; +END_ENTITY; + + +ENTITY beveled_sheet_representation + SUBTYPE OF (shape_representation); +END_ENTITY; + + +ENTITY bezier_curve + SUBTYPE OF (b_spline_curve); +END_ENTITY; + + +ENTITY bezier_surface + SUBTYPE OF (b_spline_surface); +END_ENTITY; + + +ENTITY binary_generic_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (generic_expression); + operands : LIST [2:2] OF generic_expression; +END_ENTITY; + + +ENTITY binary_numeric_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (numeric_expression, binary_generic_expression); + SELF\binary_generic_expression.operands : LIST [2:2] OF numeric_expression; +END_ENTITY; + + +ENTITY binary_representation_item + SUBTYPE OF (representation_item); + binary_value : BINARY; +END_ENTITY; + + +ENTITY block + SUBTYPE OF (geometric_representation_item); + position : axis2_placement_3d; + x : positive_length_measure; + y : positive_length_measure; + z : positive_length_measure; +END_ENTITY; + + +ENTITY boolean_expression + ABSTRACT SUPERTYPE OF (ONEOF (simple_boolean_expression, multiple_arity_boolean_expression, comparison_expression, interval_expression)) + SUBTYPE OF (expression); +END_ENTITY; + + +ENTITY boolean_literal + SUBTYPE OF (simple_boolean_expression, generic_literal); + the_value : BOOLEAN; +END_ENTITY; + + +ENTITY boolean_representation_item + SUBTYPE OF (representation_item, boolean_literal); +END_ENTITY; + + +ENTITY boolean_result + SUBTYPE OF (geometric_representation_item); + operator : boolean_operator; + first_operand : boolean_operand; + second_operand : boolean_operand; +END_ENTITY; + + +ENTITY boundary_curve + SUBTYPE OF (composite_curve_on_surface); +WHERE + WR1 : SELF\composite_curve.closed_curve; +END_ENTITY; + + +ENTITY bounded_curve + SUPERTYPE OF (ONEOF (polyline, b_spline_curve, trimmed_curve, bounded_pcurve, bounded_surface_curve, composite_curve)) + SUBTYPE OF (curve); +END_ENTITY; + + +ENTITY bounded_pcurve + SUBTYPE OF (pcurve, bounded_curve); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_CURVE' IN + TYPEOF(SELF\pcurve.reference_to_curve.items[1])); +END_ENTITY; + + +ENTITY bounded_surface + SUPERTYPE OF (ONEOF (b_spline_surface, rectangular_trimmed_surface, curve_bounded_surface, rectangular_composite_surface)) + SUBTYPE OF (surface); +END_ENTITY; + + +ENTITY bounded_surface_curve + SUBTYPE OF (surface_curve, bounded_curve); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_CURVE' IN + TYPEOF(SELF\surface_curve.curve_3d)); +END_ENTITY; + + +ENTITY box_domain + SUBTYPE OF (founded_item); + corner : cartesian_point; + xlength : positive_length_measure; + ylength : positive_length_measure; + zlength : positive_length_measure; +WHERE + WR1 : SIZEOF(QUERY(item <* USEDIN(SELF,'')| + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOXED_HALF_SPACE' + IN TYPEOF(item)))) = 0; +END_ENTITY; + + +ENTITY boxed_half_space + SUBTYPE OF (half_space_solid); + enclosure : box_domain; +END_ENTITY; + + +ENTITY breakdown_context + SUBTYPE OF (product_definition_relationship); +END_ENTITY; + + +ENTITY breakdown_element_group_assignment + SUBTYPE OF (group_assignment); + items : SET [1:1] OF product_definition_or_breakdown_element_usage; + SELF\group_assignment.assigned_group : product_definition_element_relationship; +END_ENTITY; + + +ENTITY breakdown_element_realization + SUBTYPE OF (characterized_object, product_definition_element_relationship); +END_ENTITY; + + +ENTITY breakdown_element_usage + SUBTYPE OF (product_definition_relationship); +END_ENTITY; + + +ENTITY breakdown_of + SUBTYPE OF (product_definition_relationship); +END_ENTITY; + + +ENTITY brep_with_voids + SUBTYPE OF (manifold_solid_brep); + voids : SET [1:?] OF oriented_closed_shell; +END_ENTITY; + + +ENTITY bytes_representation_item + SUBTYPE OF (binary_representation_item); +DERIVE + no_of_bytes : INTEGER := BLENGTH(SELF\binary_representation_item.binary_value) DIV 8; +WHERE + WR1 : BLENGTH(SELF\binary_representation_item.binary_value) MOD 8 = 0; +END_ENTITY; + + +ENTITY calendar_date + SUBTYPE OF (date); + day_component : day_in_month_number; + month_component : month_in_year_number; +WHERE + WR1 : valid_calendar_date (SELF); +END_ENTITY; + + +ENTITY camera_image + SUBTYPE OF (mapped_item); + SELF\mapped_item.mapping_source : camera_usage; + SELF\mapped_item.mapping_target : planar_box; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' + IN TYPEOF (SELF); +END_ENTITY; + + +ENTITY camera_image_3d_with_scale + SUBTYPE OF (camera_image); +DERIVE + scale : positive_ratio_measure := ((SELF\mapped_item.mapping_target\ + planar_extent.size_in_x) / (SELF\mapped_item.mapping_source. + mapping_origin\camera_model_d3.perspective_of_volume.view_window. + size_in_x)); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CAMERA_MODEL_D3' + IN TYPEOF (SELF\mapped_item.mapping_source.mapping_origin)); + WR2 : aspect_ratio(SELF\mapped_item.mapping_target) = + aspect_ratio(SELF\mapped_item.mapping_source.mapping_origin\ + camera_model_d3.perspective_of_volume.view_window); + WR3 : SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3. + perspective_of_volume.front_plane_clipping + AND + SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3. + perspective_of_volume.view_volume_sides_clipping; + WR4 : (SELF\mapped_item.mapping_target\planar_extent.size_in_x > 0) + AND + (SELF\mapped_item.mapping_target\planar_extent.size_in_y > 0); + WR5 : (SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3. + perspective_of_volume.view_window.size_in_x > 0) + AND + (SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3. + perspective_of_volume.view_window.size_in_y > 0); + WR6 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_2D' IN TYPEOF (SELF\mapped_item. + mapping_target\planar_box.placement)) + AND NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_3D' IN TYPEOF (SELF\mapped_item. + mapping_target\planar_box.placement)); +END_ENTITY; + + +ENTITY camera_model + ABSTRACT SUPERTYPE + SUBTYPE OF (geometric_representation_item); +WHERE + WR1 : (SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'ITEM_DEFINED_TRANSFORMATION.' + + 'TRANSFORM_ITEM_1')) + + SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'REPRESENTATION_MAP.MAPPING_ORIGIN')) + ) > 0; + WR2 : SIZEOF(USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'STYLED_ITEM.ITEM')) = 0; +END_ENTITY; + + +ENTITY camera_model_d3 + SUBTYPE OF (camera_model); + view_reference_system : axis2_placement_3d; + perspective_of_volume : view_volume; +WHERE + WR1 : (dot_product (SELF.view_reference_system.p[3], + SELF.perspective_of_volume.view_window.placement.p[3]) = 1.0) + AND + (SELF.view_reference_system.location.coordinates[3] = + SELF.perspective_of_volume.view_window. + placement.location.coordinates[3]); + WR2 : SELF\geometric_representation_item.dim = 3; +END_ENTITY; + + +ENTITY camera_model_d3_multi_clipping + SUBTYPE OF (camera_model_d3); + shape_clipping : SET [1:?] OF camera_model_d3_multi_clipping_interection_select; +END_ENTITY; + + +ENTITY camera_model_d3_multi_clipping_intersection + SUBTYPE OF (geometric_representation_item); + shape_clipping : SET [2:?] OF camera_model_d3_multi_clipping_interection_select; +END_ENTITY; + + +ENTITY camera_model_d3_multi_clipping_union + SUBTYPE OF (geometric_representation_item); + shape_clipping : SET [2:?] OF camera_model_d3_multi_clipping_union_select; +END_ENTITY; + + +ENTITY camera_model_d3_with_hlhsr + SUBTYPE OF (camera_model_d3); + hidden_line_surface_removal : BOOLEAN; +END_ENTITY; + + +ENTITY camera_model_with_light_sources + SUBTYPE OF (camera_model_d3); + sources : SET [1:?] OF light_source; +END_ENTITY; + + +ENTITY camera_usage + SUBTYPE OF (representation_map); + SELF\representation_map.mapping_origin : camera_model; +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_REPRESENTATION' + IN TYPEOF(SELF\representation_map.mapped_representation)); +END_ENTITY; + + +ENTITY capacitance_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CAPACITANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY capacitance_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.farad); +END_ENTITY; + + +ENTITY cartesian_point + SUBTYPE OF (point); + coordinates : LIST [1:3] OF length_measure; +END_ENTITY; + + +ENTITY cartesian_transformation_operator + SUPERTYPE OF (ONEOF (cartesian_transformation_operator_2d, cartesian_transformation_operator_3d)) + SUBTYPE OF (geometric_representation_item, functionally_defined_transformation); + axis1 : OPTIONAL direction; + axis2 : OPTIONAL direction; + local_origin : cartesian_point; + scale : OPTIONAL REAL; +DERIVE + scl : REAL := NVL(scale, 1.0); +WHERE + WR1 : scl > 0.0; +END_ENTITY; + + +ENTITY cartesian_transformation_operator_2d + SUBTYPE OF (cartesian_transformation_operator); +DERIVE + u : LIST [2:2] OF direction := base_axis(2,SELF\cartesian_transformation_operator.axis1, + SELF\cartesian_transformation_operator.axis2,?); +WHERE + WR1 : SELF\geometric_representation_item.dim = 2; +END_ENTITY; + + +ENTITY cartesian_transformation_operator_3d + SUBTYPE OF (cartesian_transformation_operator); + axis3 : OPTIONAL direction; +DERIVE + u : LIST [3:3] OF direction := base_axis(3,SELF\cartesian_transformation_operator.axis1, + SELF\cartesian_transformation_operator.axis2,axis3); +WHERE + WR1 : SELF\geometric_representation_item.dim = 3; +END_ENTITY; + + +ENTITY cc_design_approval + SUBTYPE OF (approval_assignment); + items : SET [1:?] OF approved_item; +END_ENTITY; + + +ENTITY cc_design_certification + SUBTYPE OF (certification_assignment); + items : SET [1:?] OF certified_item; +END_ENTITY; + + +ENTITY cc_design_contract + SUBTYPE OF (contract_assignment); + items : SET [1:?] OF contracted_item; +END_ENTITY; + + +ENTITY cc_design_date_and_time_assignment + SUBTYPE OF (date_and_time_assignment); + items : SET [1:?] OF date_time_item; +END_ENTITY; + + +ENTITY cc_design_person_and_organization_assignment + SUBTYPE OF (person_and_organization_assignment); + items : SET [1:?] OF cc_person_organization_item; +WHERE + WR1 : cc_design_person_and_organization_correlation(SELF); +END_ENTITY; + + +ENTITY cc_design_security_classification + SUBTYPE OF (security_classification_assignment); + items : SET [1:?] OF cc_classified_item; +END_ENTITY; + + +ENTITY cc_design_specification_reference + SUBTYPE OF (document_reference); + items : SET [1:?] OF cc_specified_item; +END_ENTITY; + + +ENTITY celsius_temperature_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.THERMODYNAMIC_TEMPERATURE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY centre_of_symmetry + SUBTYPE OF (derived_shape_aspect); +WHERE + WR1 : SIZEOF + (QUERY(sadr<*SELF\derived_shape_aspect.deriving_relationships| + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SYMMETRIC_SHAPE_ASPECT' + IN TYPEOF + (sadr\shape_aspect_relationship.related_shape_aspect))))=0; +END_ENTITY; + + +ENTITY certification; + name : label; + purpose : text; + kind : certification_type; +END_ENTITY; + + +ENTITY certification_assignment + ABSTRACT SUPERTYPE; + assigned_certification : certification; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY certification_type; + description : label; +END_ENTITY; + + +ENTITY change + SUBTYPE OF (action_assignment); + items : SET [1:?] OF work_item; +END_ENTITY; + + +ENTITY change_request + SUBTYPE OF (action_request_assignment); + items : SET [1:?] OF change_request_item; +END_ENTITY; + + +ENTITY character_glyph_font_usage; + character : generic_character_glyph_symbol; + font : text_font; +END_ENTITY; + + +ENTITY character_glyph_style_outline + SUBTYPE OF (founded_item); + outline_style : curve_style; +END_ENTITY; + + +ENTITY character_glyph_style_stroke + SUBTYPE OF (founded_item); + stroke_style : curve_style; +END_ENTITY; + + +ENTITY character_glyph_symbol + SUBTYPE OF (generic_character_glyph_symbol); + character_box : planar_extent; + baseline_ratio : ratio_measure; +DERIVE + box_height : length_measure := character_box.size_in_y; +WHERE + WR1 : {0.0 <= baseline_ratio <= 1.0}; + WR2 : item_in_context(SELF.character_box, + SELF\representation.context_of_items); + WR3 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' + IN TYPEOF (SELF.box_height); +END_ENTITY; + + +ENTITY character_glyph_symbol_outline + SUBTYPE OF (character_glyph_symbol); + outlines : SET [1:?] OF annotation_fill_area; +WHERE + WR1 : SELF.outlines <= SELF\representation.items; +END_ENTITY; + + +ENTITY character_glyph_symbol_stroke + SUBTYPE OF (character_glyph_symbol); + strokes : SET [1:?] OF curve; +WHERE + WR1 : SELF.strokes <= SELF\representation.items; +END_ENTITY; + + +ENTITY characteristic_data_column_header + SUBTYPE OF (general_property); +END_ENTITY; + + +ENTITY characteristic_data_column_header_link + SUBTYPE OF (general_property_relationship); +END_ENTITY; + + +ENTITY characteristic_data_table_header + SUBTYPE OF (general_property); +END_ENTITY; + + +ENTITY characteristic_data_table_header_decomposition + SUBTYPE OF (general_property_relationship); +END_ENTITY; + + +ENTITY characteristic_type + SUBTYPE OF (group); +END_ENTITY; + + +ENTITY characterized_class + SUBTYPE OF (characterized_object, class); +END_ENTITY; + + +ENTITY characterized_object; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY circle + SUBTYPE OF (conic); + radius : positive_length_measure; +END_ENTITY; + + +ENTITY circular_runout_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 2; +END_ENTITY; + + +ENTITY class + SUBTYPE OF (group); +END_ENTITY; + + +ENTITY class_by_extension + SUBTYPE OF (class); +END_ENTITY; + + +ENTITY class_by_intension + SUBTYPE OF (class); +END_ENTITY; + + +ENTITY class_system + SUBTYPE OF (group); +END_ENTITY; + + +ENTITY class_usage_effectivity_context_assignment + SUBTYPE OF (effectivity_context_assignment); + items : SET [1:?] OF class_usage_effectivity_context_item; +WHERE + WR1 : SELF.role.name = 'class usage influence'; + WR2 : SIZEOF( QUERY( i <* SELF.items | NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(i)) )) = 0; + WR3 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.APPLIED_EFFECTIVITY_ASSIGNMENT' IN TYPEOF(SELF.assigned_effectivity_assignment)) AND + (SIZEOF(TYPEOF(SELF.assigned_effectivity_assignment.assigned_effectivity) ) = 1) AND + (SELF.assigned_effectivity_assignment.assigned_effectivity.id = 'class usage') AND + (SIZEOF( QUERY( i <* SELF.assigned_effectivity_assignment\applied_effectivity_assignment.items | + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY_USAGE' IN TYPEOF(i)) )) = 0); +END_ENTITY; + + +ENTITY classification_assignment + ABSTRACT SUPERTYPE; + assigned_class : group; + role : classification_role; +END_ENTITY; + + +ENTITY classification_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY closed_shell + SUBTYPE OF (connected_face_set); +END_ENTITY; + + +ENTITY coaxiality_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 2; +END_ENTITY; + + +ENTITY colour; +END_ENTITY; + + +ENTITY colour_rgb + SUBTYPE OF (colour_specification); + red : REAL; + green : REAL; + blue : REAL; +WHERE + WR1 : {0.0 <= red <= 1.0}; + WR2 : {0.0 <= green <= 1.0}; + WR3 : {0.0 <= blue <= 1.0}; +END_ENTITY; + + +ENTITY colour_specification + SUBTYPE OF (colour); + name : label; +END_ENTITY; + + +ENTITY common_datum + SUBTYPE OF (composite_shape_aspect, datum); +WHERE + WR1 : SIZEOF (SELF\composite_shape_aspect.component_relationships) = 2; + WR2 : SIZEOF (QUERY ( sar <* SELF\composite_shape_aspect.component_relationships| + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DATUM' IN TYPEOF (sar.related_shape_aspect)) AND + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMMON_DATUM' IN TYPEOF (sar.related_shape_aspect))) )) = 0; +END_ENTITY; + + +ENTITY comparison_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (boolean_expression, binary_generic_expression); + SELF\binary_generic_expression.operands : LIST [2:2] OF expression; +WHERE + WR1 : (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NUMERIC_EXPRESSION' +IN TYPEOF(SELF\binary_generic_expression.operands[1])) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NUMERIC_EXPRESSION' +IN TYPEOF(SELF\binary_generic_expression.operands[2]))) +OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOOLEAN_EXPRESSION' +IN TYPEOF(SELF\binary_generic_expression.operands[1])) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOOLEAN_EXPRESSION' + IN TYPEOF(SELF\binary_generic_expression.operands[2]))) +OR +(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_EXPRESSION' +IN TYPEOF(SELF\binary_generic_expression.operands[1])) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_EXPRESSION' +IN TYPEOF(SELF\binary_generic_expression.operands[2]))); +END_ENTITY; + + +ENTITY complex_clause + SUBTYPE OF (compound_representation_item); +END_ENTITY; + + +ENTITY complex_conjunctive_clause + SUBTYPE OF (complex_clause); +END_ENTITY; + + +ENTITY complex_disjunctive_clause + SUBTYPE OF (complex_clause); +END_ENTITY; + + +ENTITY complex_shelled_solid + SUBTYPE OF (shelled_solid); + thickened_face_list : LIST [1:?] OF SET [1:?] OF face_surface; + thickness_list : LIST [1:?] OF length_measure; +WHERE + WR1 : SIZEOF(thickened_face_list) = SIZEOF(thickness_list); + WR2 : SIZEOF(QUERY(q <* thickness_list | (q = 0))) = 0; +END_ENTITY; + + +ENTITY composite_assembly_definition + SUBTYPE OF (product_definition); +WHERE + WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.' + + 'RELATING_PRODUCT_DEFINITION') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN + TYPEOF (pdr))) = 1; +END_ENTITY; + + +ENTITY composite_assembly_sequence_definition + SUBTYPE OF (product_definition); +WHERE + WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.' + + 'RELATING_PRODUCT_DEFINITION') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN + TYPEOF (pdr))) > 0; +END_ENTITY; + + +ENTITY composite_assembly_table + SUBTYPE OF (part_laminate_table); +END_ENTITY; + + +ENTITY composite_curve + SUBTYPE OF (bounded_curve); + segments : LIST [1:?] OF composite_curve_segment; + self_intersect : LOGICAL; +DERIVE + closed_curve : LOGICAL := segments[n_segments].transition <> discontinuous; + n_segments : INTEGER := SIZEOF(segments); +WHERE + WR1 : ((NOT closed_curve) AND (SIZEOF(QUERY(temp <* segments | + temp.transition = discontinuous)) = 1)) OR + ((closed_curve) AND (SIZEOF(QUERY(temp <* segments | + temp.transition = discontinuous)) = 0)); +END_ENTITY; + + +ENTITY composite_curve_on_surface + SUPERTYPE OF (boundary_curve) + SUBTYPE OF (composite_curve); +DERIVE + basis_surface : SET [0:2] OF surface := get_basis_surface(SELF); +WHERE + WR1 : SIZEOF(basis_surface) > 0; + WR2 : constraints_composite_curve_on_surface(SELF); +END_ENTITY; + + +ENTITY composite_curve_segment + SUBTYPE OF (founded_item); + transition : transition_code; + same_sense : BOOLEAN; + parent_curve : curve; +INVERSE + using_curves: BAG [1:?] OF composite_curve FOR segments; +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_CURVE' IN TYPEOF(parent_curve)); +END_ENTITY; + + +ENTITY composite_material_designation + SUBTYPE OF (material_designation); +END_ENTITY; + + +ENTITY composite_shape_aspect + SUBTYPE OF (shape_aspect); +INVERSE + component_relationships: SET [2:?] OF shape_aspect_relationship FOR relating_shape_aspect; +END_ENTITY; + + +ENTITY composite_sheet_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'MANIFOLD_SURFACE_SHAPE_REPRESENTATION'] * TYPEOF (SELF)) = 1; +END_ENTITY; + + +ENTITY composite_text + SUBTYPE OF (geometric_representation_item); + collected_text : SET [2:?] OF text_or_character; +WHERE + WR1 : acyclic_composite_text( SELF, SELF.collected_text); +END_ENTITY; + + +ENTITY composite_text_with_associated_curves + SUBTYPE OF (composite_text); + associated_curves : SET [1:?] OF curve; +END_ENTITY; + + +ENTITY composite_text_with_blanking_box + SUBTYPE OF (composite_text); + blanking : planar_box; +END_ENTITY; + + +ENTITY composite_text_with_delineation + SUBTYPE OF (composite_text); + delineation : text_delineation; +END_ENTITY; + + +ENTITY composite_text_with_extent + SUBTYPE OF (composite_text); + extent : planar_extent; +END_ENTITY; + + +ENTITY compound_representation_item + SUPERTYPE OF (ONEOF (point_and_vector, point_path, row_representation_item, table_representation_item)) + SUBTYPE OF (representation_item); + item_element : compound_item_definition; +END_ENTITY; + + +ENTITY compound_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'GEOMETRIC_REPRESENTATION_CONTEXT' + IN TYPEOF ( SELF.context_of_items ) ) AND ( + SELF.context_of_items\ + geometric_representation_context.coordinate_space_dimension =3 ); + WR2 : SIZEOF ( QUERY ( cbsr_i <* SELF.items | SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'EDGE_BASED_WIREFRAME_MODEL' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'FACE_BASED_SURFACE_MODEL' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MAPPED_ITEM' , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'AXIS2_PLACEMENT_3D']* TYPEOF ( cbsr_i ) ) <>1 ) ) =0; + WR3 : SIZEOF ( QUERY ( cbsr_i <* SELF.items | SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'EDGE_BASED_WIREFRAME_MODEL' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'FACE_BASED_SURFACE_MODEL' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MAPPED_ITEM']* TYPEOF ( cbsr_i ) ) =1 ) ) >0; + WR4 : SIZEOF ( QUERY ( cbsr_i <* SELF.items | ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MAPPED_ITEM' IN TYPEOF ( cbsr_i ) ) + AND ( SIZEOF ( ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'COMPOUND_SHAPE_REPRESENTATION' , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION']* TYPEOF ( + cbsr_i\ mapped_item.mapping_source ) ) <>1 ) ) ) =0; +END_ENTITY; + + +ENTITY concentricity_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) = 1; +END_ENTITY; + + +ENTITY concept_feature_operator; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY concept_feature_relationship; + name : label; + description : OPTIONAL text; + relating_product_concept_feature : product_concept_feature; + related_product_concept_feature : product_concept_feature; +END_ENTITY; + + +ENTITY concept_feature_relationship_with_condition + SUBTYPE OF (concept_feature_relationship); + conditional_operator : concept_feature_operator; +END_ENTITY; + + +ENTITY conditional_concept_feature + SUBTYPE OF (product_concept_feature); + condition : concept_feature_relationship_with_condition; +END_ENTITY; + + +ENTITY conductance_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONDUCTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY conductance_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.siemens); +END_ENTITY; + + +ENTITY configurable_item + SUBTYPE OF (configuration_item); + item_concept_feature : SET [1:?] OF product_concept_feature_association; +END_ENTITY; + + +ENTITY configuration_design; + configuration : configuration_item; + design : configuration_design_item; +DERIVE + description : text := get_description_value (SELF); + name : label := get_name_value (SELF); +UNIQUE + UR1 : configuration, design; +WHERE + WR1 : SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; + WR2 : SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY configuration_effectivity + SUBTYPE OF (product_definition_effectivity); + configuration : configuration_design; +UNIQUE + UR1: configuration, SELF\product_definition_effectivity.usage, SELF\effectivity.id; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_USAGE' IN + TYPEOF (SELF\product_definition_effectivity.usage); +END_ENTITY; + + +ENTITY configuration_item; + id : identifier; + name : label; + description : OPTIONAL text; + item_concept : product_concept; + purpose : OPTIONAL label; +END_ENTITY; + + +ENTITY configuration_item_hierarchical_relationship + SUBTYPE OF (configuration_item_relationship); +END_ENTITY; + + +ENTITY configuration_item_relationship; + name : label; + description : OPTIONAL text; + relating_configuration_item : configuration_item; + related_configuration_item : configuration_item; +END_ENTITY; + + +ENTITY configuration_item_revision_sequence + SUBTYPE OF (configuration_item_relationship); +END_ENTITY; + + +ENTITY configured_effectivity_assignment + SUBTYPE OF (effectivity_assignment); + items : SET [1:?] OF configured_effectivity_item; +WHERE + WR1 : (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EFFECTIVITY'] * TYPEOF(SELF.assigned_effectivity) ) = 1) + AND (SELF.assigned_effectivity.id = 'configuration validity'); + WR2 : SIZEOF(SELF.items) = 1; + WR3 : SIZEOF( QUERY( i <* SELF.items | NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(i)) + OR NOT (i\product_definition.frame_of_reference.name IN ['conceptual definition','part occurrence', 'functional definition','alternative definition']) )) = 0; + WR4 : SELF.role.name IN ['design', 'usage']; + WR5 : (SELF.role.name <> 'design') + OR (SIZEOF( QUERY( i <* SELF.items | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(i)) AND (i\product_definition.frame_of_reference.name = 'part occurrence') )) = 0); + WR6 : (SELF.role.name <> 'usage') OR (SIZEOF( QUERY( i <* SELF.items | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(i)) AND (i\product_definition.frame_of_reference.name = 'conceptual definition') )) = 0); + WR7 : SELF.role.description IN ['exception', 'inherited', 'local']; + WR8 : SIZEOF( QUERY( x <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'EFFECTIVITY_CONTEXT_ASSIGNMENT.ASSIGNED_EFFECTIVITY_ASSIGNMENT') | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONFIGURED_EFFECTIVITY_CONTEXT_ASSIGNMENT' IN TYPEOF(x) )) = 1; +END_ENTITY; + + +ENTITY configured_effectivity_context_assignment + SUBTYPE OF (effectivity_context_assignment); + items : SET [1:?] OF configured_effectivity_context_item; + SELF\effectivity_context_assignment.assigned_effectivity_assignment : configured_effectivity_assignment; +WHERE + WR1 : SIZEOF(SELF.items) = 1; +END_ENTITY; + + +ENTITY conic + SUPERTYPE OF (ONEOF (circle, ellipse, hyperbola, parabola)) + SUBTYPE OF (curve); + position : axis2_placement; +END_ENTITY; + + +ENTITY conical_stepped_hole_transition + SUBTYPE OF (geometric_representation_item); + transition_number : positive_integer; + cone_apex_angle : plane_angle_measure; + cone_base_radius : positive_length_measure; +END_ENTITY; + + +ENTITY conical_surface + SUBTYPE OF (elementary_surface); + radius : length_measure; + semi_angle : plane_angle_measure; +WHERE + WR1 : radius >= 0.0; +END_ENTITY; + + +ENTITY connected_edge_set + SUBTYPE OF (topological_representation_item); + ces_edges : SET [1:?] OF edge; +END_ENTITY; + + +ENTITY connected_face_set + SUPERTYPE OF (ONEOF (closed_shell, open_shell)) + SUBTYPE OF (topological_representation_item); + cfs_faces : SET [1:?] OF face; +END_ENTITY; + + +ENTITY connected_face_sub_set + SUBTYPE OF (connected_face_set); + parent_face_set : connected_face_set; +END_ENTITY; + + +ENTITY constructive_geometry_representation + SUBTYPE OF (representation); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(SELF.context_of_items)) AND ({2 <= SELF.context_of_items\geometric_representation_context. coordinate_space_dimension <= 3}); + WR2 : SIZEOF( QUERY( cgr_i <* SELF.items | SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLACEMENT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT'] * TYPEOF(cgr_i)) <> 1 )) = 0; + WR3 : SIZEOF( USEDIN( SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.REP_2') ) > 0; + WR4 : SIZEOF( USEDIN( SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION_MAP.MAPPED_REPRESENTATION') ) = 0; +END_ENTITY; + + +ENTITY constructive_geometry_representation_relationship + SUBTYPE OF (representation_relationship); + SELF\representation_relationship.rep_1 : constructive_geometry_representation_or_shape_represenation; + SELF\representation_relationship.rep_2 : constructive_geometry_representation; +WHERE + WR1 : (SELF.rep_1.context_of_items :=: SELF.rep_2.context_of_items) AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(SELF.rep_1.context_of_items)); + WR2 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION' IN TYPEOF(SELF)); +END_ENTITY; + + +ENTITY contact_ratio_representation + SUBTYPE OF (representation); +WHERE + WR1 : ( SIZEOF ( SELF.items ) =1 ) AND ( SIZEOF ( QUERY ( i <* + SELF.items | ( SIZEOF ( ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'MEASURE_REPRESENTATION_ITEM' , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'VALUE_RANGE']* TYPEOF ( i ) ) =1 ) AND ( i.name = + 'ratio value' ) ) ) =1 ); + WR2 : ( SIZEOF ( QUERY ( pdr <* USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) | pdr. name = + 'contact ratio reference' ) ) =1 ) AND ( SIZEOF ( QUERY ( + pdr <* USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) | ( pdr. name = + 'contact ratio reference' ) AND ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'PRODUCT_DEFINITION' IN TYPEOF ( pdr. + definition.definition ) ) ) ) =1 ); + WR3 : ( SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) ) =1 ) AND ( SIZEOF ( QUERY ( pdr + <* USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) | SIZEOF ( QUERY ( gpa <* USEDIN ( + pdr. definition , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'GENERAL_PROPERTY_ASSOCIATION.'+ + 'DERIVED_DEFINITION' ) | ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'GENERAL_PROPERTY' IN TYPEOF ( gpa. base_definition ) ) AND + ( gpa. base_definition.name ='surface_condition' ) ) ) =1 ) + ) =1 ); +END_ENTITY; + + +ENTITY context_dependent_invisibility + SUBTYPE OF (invisibility); + presentation_context : invisibility_context; +END_ENTITY; + + +ENTITY context_dependent_over_riding_styled_item + SUBTYPE OF (over_riding_styled_item); + style_context : LIST [1:?] OF style_context_select; +WHERE + WR1 : (SIZEOF(QUERY(sc <* SELF.style_context | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(sc)))= 1) OR +(SIZEOF(QUERY(sc <* SELF.style_context | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF(sc)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION_RELATIONSHIP' IN TYPEOF(sc)) )) + = SIZEOF(style_context)); +END_ENTITY; + + +ENTITY context_dependent_shape_representation; + representation_relation : shape_representation_relationship; + represented_product_relation : product_definition_shape; +DERIVE + description : text := get_description_value(SELF); + name : label := get_name_value(SELF); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP' IN TYPEOF(SELF.represented_product_relation.definition); + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; + WR3 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY context_dependent_unit + SUBTYPE OF (named_unit); + name : label; +END_ENTITY; + + +ENTITY contract; + name : label; + purpose : text; + kind : contract_type; +END_ENTITY; + + +ENTITY contract_assignment + ABSTRACT SUPERTYPE; + assigned_contract : contract; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY contract_relationship; + id : identifier; + name : label; + description : OPTIONAL text; + relating_contract : contract; + related_contract : contract; +END_ENTITY; + + +ENTITY contract_type; + description : label; +END_ENTITY; + + +ENTITY conversion_based_unit + SUBTYPE OF (named_unit); + name : label; + conversion_factor : measure_with_unit; +WHERE + WR1 : SELF\named_unit.dimensions = derive_dimensional_exponents(conversion_factor\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY coordinated_universal_time_offset; + hour_offset : INTEGER; + minute_offset : OPTIONAL INTEGER; + sense : ahead_or_behind; +DERIVE + actual_minute_offset : INTEGER := NVL(minute_offset,0); +WHERE + WR1 : { 0 <= hour_offset < 24 }; + WR2 : { 0 <= actual_minute_offset <= 59 }; + WR3 : NOT (((hour_offset <> 0) OR (actual_minute_offset <>0)) AND (sense = exact)); +END_ENTITY; + + +ENTITY csg_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3; + WR2 : SIZEOF ( +QUERY ( it <* SELF.items| ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CSG_SOLID', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_REPLICA', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REVOLVED_FACE_SOLID', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EXTRUDED_FACE_SOLID' ] * TYPEOF (it)) <> 1) )) = 0; + WR3 : SIZEOF ( +QUERY ( mi <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CSG_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0; + WR4 : SIZEOF ( +QUERY ( sr <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_REPLICA' IN TYPEOF (it)) )| ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CSG_SOLID', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REVOLVED_FACE_SOLID', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EXTRUDED_FACE_SOLID' ] * TYPEOF (sr\solid_replica.parent_solid)) = 0) )) = 0; + WR5 : SIZEOF ( +QUERY ( it <* SELF.items| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF (it)) )) > 0; +END_ENTITY; + + +ENTITY csg_solid + SUBTYPE OF (solid_model); + tree_root_expression : csg_select; +END_ENTITY; + + +ENTITY currency + ABSTRACT SUPERTYPE OF (ONEOF (externally_defined_currency, iso4217_currency)) + SUBTYPE OF (context_dependent_unit); +WHERE + WR1 : ((SELF\named_unit.dimensions.length_exponent = 0.0) AND + (SELF\named_unit.dimensions.mass_exponent = 0.0) AND + (SELF\named_unit.dimensions.time_exponent = 0.0) AND + (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND + (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND + (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND + (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0)); +END_ENTITY; + + +ENTITY currency_measure_with_unit + SUBTYPE OF (measure_with_unit); + SELF\measure_with_unit.unit_component : currency; +END_ENTITY; + + +ENTITY curve + SUPERTYPE OF (ONEOF (line, conic, pcurve, surface_curve, offset_curve_2d, offset_curve_3d, curve_replica)) + SUBTYPE OF (geometric_representation_item); +END_ENTITY; + + +ENTITY curve_bounded_surface + SUBTYPE OF (bounded_surface); + basis_surface : surface; + boundaries : SET [1:?] OF boundary_curve; + implicit_outer : BOOLEAN; +WHERE + WR1 : (NOT implicit_outer) OR + (SIZEOF (QUERY (temp <* boundaries | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OUTER_BOUNDARY_CURVE' IN TYPEOF(temp))) = 0); + WR2 : (NOT(implicit_outer)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_SURFACE' IN TYPEOF(basis_surface)); + WR3 : SIZEOF(QUERY(temp <* boundaries | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OUTER_BOUNDARY_CURVE' IN + TYPEOF(temp))) <= 1; + WR4 : SIZEOF(QUERY(temp <* boundaries | + (temp\composite_curve_on_surface.basis_surface [1] <> + SELF.basis_surface))) = 0; +END_ENTITY; + + +ENTITY curve_dimension + SUBTYPE OF (dimension_curve_directed_callout); +END_ENTITY; + + +ENTITY curve_replica + SUBTYPE OF (curve); + parent_curve : curve; + transformation : cartesian_transformation_operator; +WHERE + WR1 : transformation.dim = parent_curve.dim; + WR2 : acyclic_curve_replica (SELF, parent_curve); +END_ENTITY; + + +ENTITY curve_style + SUBTYPE OF (founded_item); + name : label; + curve_font : curve_font_or_scaled_curve_font_select; + curve_width : size_select; + curve_colour : colour; +END_ENTITY; + + +ENTITY curve_style_font + SUBTYPE OF (founded_item); + name : label; + pattern_list : LIST [1:?] OF curve_style_font_pattern; +END_ENTITY; + + +ENTITY curve_style_font_and_scaling + SUBTYPE OF (founded_item); + name : label; + curve_font : curve_style_font_select; + curve_font_scaling : REAL; +END_ENTITY; + + +ENTITY curve_style_font_pattern + SUBTYPE OF (founded_item); + visible_segment_length : positive_length_measure; + invisible_segment_length : positive_length_measure; +END_ENTITY; + + +ENTITY curve_style_rendering; + rendering_method : shading_curve_method; + rendering_properties : surface_rendering_properties; +END_ENTITY; + + +ENTITY curve_swept_solid_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF (QUERY (it <* SELF.items | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_AREA_SOLID', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_DISK_SOLID', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D'] * + TYPEOF(it)) = 1))) = 0; + WR2 : SIZEOF (QUERY (it <* SELF.items | + SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_AREA_SOLID', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_DISK_SOLID', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM'] * TYPEOF(it)) =1 )) > 0; + WR3 : SIZEOF (QUERY (mi <* QUERY (it <* items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_SWEPT_SOLID_SHAPE_REPRESENTATION' IN + TYPEOF(mi\mapped_item.mapping_source. + mapped_representation)))) = 0; + WR4 : SIZEOF (QUERY (scsas <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE_SWEPT_AREA_SOLID' IN + TYPEOF(it)) | + NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN + TYPEOF(scsas\surface_curve_swept_area_solid.directrix)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN + TYPEOF(scsas\surface_curve_swept_area_solid.directrix))))) = 0; +END_ENTITY; + + +ENTITY cylindrical_surface + SUBTYPE OF (elementary_surface); + radius : positive_length_measure; +END_ENTITY; + + +ENTITY cylindricity_tolerance + SUBTYPE OF (geometric_tolerance); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)); +END_ENTITY; + + +ENTITY data_environment; + name : label; + description : text; + elements : SET [1:?] OF property_definition_representation; +END_ENTITY; + + +ENTITY date + SUPERTYPE OF (ONEOF (calendar_date, ordinal_date, week_of_year_and_day_date, year_month)); + year_component : year_number; +END_ENTITY; + + +ENTITY date_and_time; + date_component : date; + time_component : local_time; +END_ENTITY; + + +ENTITY date_and_time_assignment + ABSTRACT SUPERTYPE; + assigned_date_and_time : date_and_time; + role : date_time_role; +END_ENTITY; + + +ENTITY date_assignment + ABSTRACT SUPERTYPE; + assigned_date : date; + role : date_role; +END_ENTITY; + + +ENTITY date_representation_item + SUBTYPE OF (representation_item, date); +END_ENTITY; + + +ENTITY date_role; + name : label; +DERIVE + description : text := get_description_value (SELF); +WHERE + WR1 : SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY date_time_representation_item + SUBTYPE OF (representation_item, date_and_time); +END_ENTITY; + + +ENTITY date_time_role; + name : label; +DERIVE + description : text := get_description_value (SELF); +WHERE + WR1 : SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY dated_effectivity + SUBTYPE OF (effectivity); + effectivity_end_date : OPTIONAL date_time_or_event_occurrence; + effectivity_start_date : date_time_or_event_occurrence; +END_ENTITY; + + +ENTITY datum + SUBTYPE OF (shape_aspect); + identification : identifier; +INVERSE + established_by_relationships: SET [1:?] OF shape_aspect_relationship FOR related_shape_aspect; +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMMON_DATUM' IN TYPEOF(SELF)) XOR + ((SIZEOF(QUERY(x <* SELF\datum.established_by_relationships | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DATUM_FEATURE' IN TYPEOF(x\shape_aspect_relationship.relating_shape_aspect)))) = 1) XOR + (SIZEOF(QUERY(x <* SELF\datum.established_by_relationships | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DATUM_TARGET' IN TYPEOF(x\shape_aspect_relationship.relating_shape_aspect)))) >= 1)); +END_ENTITY; + + +ENTITY datum_feature + SUBTYPE OF (shape_aspect); +INVERSE + feature_basis_relationship: SET [1:?] OF shape_aspect_relationship FOR relating_shape_aspect; +WHERE + WR1 : SIZEOF(QUERY(sar <* SELF\datum_feature.feature_basis_relationship + | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DATUM' IN TYPEOF + (sar\shape_aspect_relationship.related_shape_aspect)))) = 1; + WR2 : SELF\shape_aspect.product_definitional = TRUE; +END_ENTITY; + + +ENTITY datum_feature_callout + SUBTYPE OF (draughting_callout); +END_ENTITY; + + +ENTITY datum_reference; + precedence : INTEGER; + referenced_datum : datum; +WHERE + WR1 : precedence > 0; +END_ENTITY; + + +ENTITY datum_target + SUBTYPE OF (shape_aspect); + target_id : identifier; +INVERSE + target_basis_relationship: SET [1:?] OF shape_aspect_relationship FOR relating_shape_aspect; +WHERE + WR1 : SIZEOF(QUERY(sar <* SELF\datum_target.target_basis_relationship + | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DATUM' IN TYPEOF + (sar\shape_aspect_relationship.related_shape_aspect)))) = 1; + WR2 : SELF\shape_aspect.product_definitional = TRUE; +END_ENTITY; + + +ENTITY datum_target_callout + SUBTYPE OF (draughting_callout); +END_ENTITY; + + +ENTITY default_tolerance_table + SUBTYPE OF (representation); +WHERE + WR1 : SIZEOF( QUERY( i <* SELF.items | NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEFAULT_TOLERANCE_TABLE_CELL' IN TYPEOF(i)) )) = 0; + WR2 : (SIZEOF( QUERY( rr <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.REP_1') | rr.name < 'general tolerance definition' )) = 0) AND (SIZEOF( QUERY( rr <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.REP_1') | (rr.name = 'general tolerance definition') AND (rr.rep_2.name < 'default tolerance') )) = 0) AND (SIZEOF( USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.REP_2') ) = 0); +END_ENTITY; + + +ENTITY default_tolerance_table_cell + SUBTYPE OF (compound_representation_item); +WHERE + WR1 : SIZEOF(QUERY( x <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION.ITEMS') | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DEFAULT_TOLERANCE_TABLE' IN TYPEOF(x)))=1; + WR2 : default_tolerance_table_cell_wr2(SELF\compound_representation_item.item_element); + WR3 : default_tolerance_table_cell_wr3(SELF\compound_representation_item.item_element); + WR4 : default_tolerance_table_cell_wr4(SELF\compound_representation_item.item_element); + WR5 : default_tolerance_table_cell_wr5(SELF\compound_representation_item.item_element); +END_ENTITY; + + +ENTITY defined_symbol + SUBTYPE OF (geometric_representation_item); + definition : defined_symbol_select; + target : symbol_target; +END_ENTITY; + + +ENTITY definitional_representation + SUBTYPE OF (representation); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PARAMETRIC_REPRESENTATION_CONTEXT' IN + TYPEOF (SELF\representation.context_of_items ); +END_ENTITY; + + +ENTITY definitional_representation_relationship + SUBTYPE OF (representation_relationship); +WHERE + WR1 : acyclic_representation_relationship(SELF, + [SELF\representation_relationship.rep_2], + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'REPRESENTATION'); +END_ENTITY; + + +ENTITY definitional_representation_relationship_with_same_context + SUBTYPE OF (definitional_representation_relationship); +WHERE + WR1 : SELF\representation_relationship.rep_1.context_of_items :=: + SELF\representation_relationship.rep_2.context_of_items; +END_ENTITY; + + +ENTITY degenerate_pcurve + SUBTYPE OF (point); + basis_surface : surface; + reference_to_curve : definitional_representation; +WHERE + WR1 : SIZEOF(reference_to_curve\representation.items) = 1; + WR2 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE' IN TYPEOF + (reference_to_curve\representation.items[1]); + WR3 : reference_to_curve\representation. + items[1]\geometric_representation_item.dim =2; +END_ENTITY; + + +ENTITY degenerate_toroidal_surface + SUBTYPE OF (toroidal_surface); + select_outer : BOOLEAN; +WHERE + WR1 : major_radius < minor_radius; +END_ENTITY; + + +ENTITY derived_shape_aspect + SUPERTYPE OF (ONEOF (apex, centre_of_symmetry, geometric_alignment, geometric_intersection, parallel_offset, perpendicular_to, extension, tangent)) + SUBTYPE OF (shape_aspect); +INVERSE + deriving_relationships: SET [1:?] OF shape_aspect_relationship FOR relating_shape_aspect; +WHERE + WR1 : SIZEOF (QUERY (dr <* + SELF\derived_shape_aspect.deriving_relationships | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SHAPE_ASPECT_DERIVING_RELATIONSHIP' + IN TYPEOF (dr)))) = 0; +END_ENTITY; + + +ENTITY derived_unit + SUPERTYPE OF (ONEOF (absorbed_dose_unit, acceleration_unit, radioactivity_unit, area_unit, capacitance_unit, dose_equivalent_unit, electric_charge_unit, conductance_unit, electric_potential_unit, energy_unit, magnetic_flux_density_unit, force_unit, frequency_unit, illuminance_unit, inductance_unit, magnetic_flux_unit, power_unit, pressure_unit, resistance_unit, velocity_unit, volume_unit)); + elements : SET [1:?] OF derived_unit_element; +DERIVE + name : label := get_name_value(SELF); +WHERE + WR1 : (SIZEOF(elements) > 1) OR ((SIZEOF(elements) = 1) AND (elements[1].exponent <> 1.0)); + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY derived_unit_element; + unit : named_unit; + exponent : REAL; +END_ENTITY; + + +ENTITY description_attribute; + attribute_value : text; + described_item : description_attribute_select; +END_ENTITY; + + +ENTITY descriptive_representation_item + SUPERTYPE OF (ONEOF (tagged_text_item, uniform_resource_identifier)) + SUBTYPE OF (representation_item); + description : text; +END_ENTITY; + + +ENTITY design_context + SUBTYPE OF (product_definition_context); +WHERE + WR1 : SELF.life_cycle_stage = 'design'; +END_ENTITY; + + +ENTITY design_make_from_relationship + SUBTYPE OF (product_definition_relationship); +END_ENTITY; + + +ENTITY diameter_dimension + SUBTYPE OF (dimension_curve_directed_callout); +END_ENTITY; + + +ENTITY dielectric_constant_measure_with_unit + SUBTYPE OF (ratio_measure_with_unit); +END_ENTITY; + + +ENTITY dimension_callout + SUBTYPE OF (draughting_callout); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_DIRECTED_CALLOUT' + IN (TYPEOF (SELF))) XOR + (SIZEOF (QUERY(dce_1 <* SELF\draughting_callout.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_CURVE' + IN (TYPEOF(dce_1))))) = 0); + WR2 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_DIRECTED_CALLOUT' + IN (TYPEOF (SELF))) XOR + (SIZEOF (QUERY(dce_1 <* SELF\draughting_callout.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_CURVE' + IN (TYPEOF(dce_1))))) = 0); + WR3 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT' + IN (TYPEOF (SELF))) XOR + (SIZEOF (QUERY(dce_1 <* SELF\draughting_callout.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE' + IN (TYPEOF(dce_1))))) = 0); +END_ENTITY; + + +ENTITY dimension_callout_component_relationship + SUBTYPE OF (draughting_callout_relationship); +WHERE + WR1 : SELF.name IN ['prefix', 'suffix']; + WR2 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRUCTURED_DIMENSION_CALLOUT' + IN TYPEOF (SELF.relating_draughting_callout); + WR3 : SIZEOF (TYPEOF (SELF.related_draughting_callout) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_DIRECTED_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_DIRECTED_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRUCTURED_DIMENSION_CALLOUT']) = 0; + WR4 : SELF.related_draughting_callout.contents * + SELF.relating_draughting_callout.contents = + SELF.related_draughting_callout.contents; + WR5 : ((SELF.name = 'prefix') AND + (SIZEOF (QUERY (ato <* QUERY (con <* + SELF.related_draughting_callout.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(con))) | + NOT (ato.name = 'prefix text') + )) = 0)); + WR6 : ((SELF.name = 'suffix') AND + (SIZEOF (QUERY (ato <* QUERY (con <* + SELF.related_draughting_callout.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(con))) | + NOT (ato.name = 'suffix text') + )) = 0)); +END_ENTITY; + + +ENTITY dimension_callout_relationship + SUBTYPE OF (draughting_callout_relationship); +WHERE + WR1 : SELF.name IN ['primary', 'secondary']; + WR2 : SIZEOF (TYPEOF (SELF.relating_draughting_callout) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANGULAR_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIAMETER_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_DIRECTED_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINEAR_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORDINATE_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RADIUS_DIMENSION'])>=1; + WR3 : SIZEOF (TYPEOF (SELF.related_draughting_callout) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_DIRECTED_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_DIRECTED_CALLOUT']) = 0; + WR4 : SELF.related_draughting_callout.contents * + SELF.relating_draughting_callout.contents = + SELF.related_draughting_callout.contents; +END_ENTITY; + + +ENTITY dimension_curve + SUBTYPE OF (annotation_curve_occurrence); +WHERE + WR1 : (SIZEOF( + QUERY(dct <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'TERMINATOR_SYMBOL.ANNOTATED_CURVE') + | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DIMENSION_CURVE_TERMINATOR' IN TYPEOF(dct)) + )) + ) <= 2); + WR2 : SIZEOF( + QUERY( dcdc <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_CALLOUT.CONTENTS') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DIMENSION_CURVE_DIRECTED_CALLOUT' IN TYPEOF(dcdc))) + )>= 1; + WR3 : (SIZEOF( + QUERY(dct1 <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'TERMINATOR_SYMBOL.ANNOTATED_CURVE') + | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DIMENSION_CURVE_TERMINATOR' IN TYPEOF(dct1)) + AND (dct1\dimension_curve_terminator.role = dimension_extent_usage.origin))) + ) <= 1) + AND + (SIZEOF( + QUERY (dct2 <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'TERMINATOR_SYMBOL.ANNOTATED_CURVE') + | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DIMENSION_CURVE_TERMINATOR' IN TYPEOF(dct2)) + AND (dct2\dimension_curve_terminator.role = dimension_extent_usage.target))) + ) <= 1); +END_ENTITY; + + +ENTITY dimension_curve_directed_callout + SUBTYPE OF (draughting_callout); +WHERE + WR1 : SIZEOF(QUERY(d_c<*SELF\draughting_callout.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE' IN (TYPEOF(d_c))))=1; + WR2 : SIZEOF(SELF\draughting_callout.contents) >= 2; +END_ENTITY; + + +ENTITY dimension_curve_terminator + SUBTYPE OF (terminator_symbol); + role : dimension_extent_usage; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE' IN TYPEOF + (SELF\terminator_symbol.annotated_curve); +END_ENTITY; + + +ENTITY dimension_curve_terminator_to_projection_curve_associativity + SUBTYPE OF (annotation_occurrence_associativity); + SELF\annotation_occurrence_relationship.related_annotation_occurrence : projection_curve; + SELF\annotation_occurrence_relationship.relating_annotation_occurrence : dimension_curve_terminator; +END_ENTITY; + + +ENTITY dimension_pair + SUBTYPE OF (draughting_callout_relationship); +WHERE + WR1 : SELF.name IN ['chained', 'parallel']; + WR2 : SIZEOF (TYPEOF (SELF.relating_draughting_callout) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANGULAR_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIAMETER_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINEAR_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORDINATE_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RADIUS_DIMENSION'])=1; + WR3 : SIZEOF (TYPEOF (SELF.related_draughting_callout) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANGULAR_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIAMETER_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINEAR_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORDINATE_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RADIUS_DIMENSION'])=1; +END_ENTITY; + + +ENTITY dimension_related_tolerance_zone_element; + related_dimension : dimensional_location; + related_element : tolerance_zone_definition; +END_ENTITY; + + +ENTITY dimension_text_associativity + SUBTYPE OF (text_literal, mapped_item); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_DIMENSION_REPRESENTATION' + IN TYPEOF (SELF\mapped_item. + mapping_source.mapped_representation)); + WR2 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT' + IN TYPEOF (SELF\mapped_item.mapping_target)); + WR3 : SIZEOF (QUERY (ato <* QUERY (si <* + USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM.ITEM') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(si))) | + NOT (SIZEOF( QUERY (dc <* + USEDIN (ato, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_CALLOUT.CONTENTS') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT' + IN TYPEOF (dc))) + * [SELF\mapped_item.mapping_target]) = 1) + )) = 0; +END_ENTITY; + + +ENTITY dimensional_characteristic_representation; + dimension : dimensional_characteristic; + representation : shape_dimension_representation; +END_ENTITY; + + +ENTITY dimensional_exponents; + length_exponent : REAL; + mass_exponent : REAL; + time_exponent : REAL; + electric_current_exponent : REAL; + thermodynamic_temperature_exponent : REAL; + amount_of_substance_exponent : REAL; + luminous_intensity_exponent : REAL; +END_ENTITY; + + +ENTITY dimensional_location + SUPERTYPE OF (ONEOF (angular_location, dimensional_location_with_path)) + SUBTYPE OF (shape_aspect_relationship); +END_ENTITY; + + +ENTITY dimensional_location_with_path + SUBTYPE OF (dimensional_location); + path : shape_aspect; +END_ENTITY; + + +ENTITY dimensional_size + SUPERTYPE OF (ONEOF (angular_size, dimensional_size_with_path)); + applies_to : shape_aspect; + name : label; +WHERE + WR1 : applies_to.product_definitional = TRUE; +END_ENTITY; + + +ENTITY dimensional_size_with_path + SUBTYPE OF (dimensional_size); + path : shape_aspect; +END_ENTITY; + + +ENTITY directed_action + SUBTYPE OF (executed_action); + directive : action_directive; +END_ENTITY; + + +ENTITY directed_dimensional_location + SUBTYPE OF (dimensional_location); +END_ENTITY; + + +ENTITY direction + SUBTYPE OF (geometric_representation_item); + direction_ratios : LIST [2:3] OF REAL; +WHERE + WR1 : SIZEOF(QUERY(tmp <* direction_ratios | tmp <> 0.0)) > 0; +END_ENTITY; + + +ENTITY document; + id : identifier; + name : label; + description : OPTIONAL text; + kind : document_type; +INVERSE + representation_types: SET [0:?] OF document_representation_type FOR represented_document; +END_ENTITY; + + +ENTITY document_file + SUBTYPE OF (document, characterized_object); +WHERE + WR1 : SELF\characterized_object.name = ''; + WR2 : NOT EXISTS(SELF\characterized_object.description); + WR3 : SIZEOF( QUERY( drt <* SELF\document.representation_types | + drt.name IN ['digital','physical'])) = 1; +END_ENTITY; + + +ENTITY document_identifier + SUBTYPE OF (group); +UNIQUE + UR1: SELF\group.name, SELF\group.description; +END_ENTITY; + + +ENTITY document_identifier_assignment + SUBTYPE OF (group_assignment); + items : SET [1:?] OF document_identifier_assigned_item; + SELF\group_assignment.assigned_group : document_identifier; +END_ENTITY; + + +ENTITY document_product_association; + name : label; + description : OPTIONAL text; + relating_document : document; + related_product : product_or_formation_or_definition; +END_ENTITY; + + +ENTITY document_product_equivalence + SUBTYPE OF (document_product_association); +WHERE + WR1 : SELF\document_product_association.name = 'equivalence'; + WR2 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT' IN TYPEOF(SELF\document_product_association.related_product)) OR ((SELF\document_product_association.relating_document.kind. product_data_type = 'configuration controlled document') AND (SIZEOF( QUERY( prpc <* USEDIN(SELF\document_product_association.related_product,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.name = 'document' )) = 1)); + WR3 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_FORMATION' IN TYPEOF(SELF.related_product)) OR ((SELF\document_product_association.relating_document.kind.product_data_type = 'configuration controlled document version') AND (SIZEOF( QUERY( prpc <* USEDIN(SELF.related_product\product_definition_formation.of_product, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.name = 'document')) = 1)); + WR4 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(SELF.related_product)) OR ((SELF\document_product_association.relating_document.kind.product_data_type = 'configuration controlled document definition') AND (SIZEOF( QUERY( prpc <* USEDIN(SELF\document_product_association.related_product\product_definition.formation.of_product, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.name = 'document' )) = 1)); +END_ENTITY; + + +ENTITY document_reference + ABSTRACT SUPERTYPE; + assigned_document : document; + source : label; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY document_relationship; + name : label; + description : OPTIONAL text; + relating_document : document; + related_document : document; +END_ENTITY; + + +ENTITY document_representation_type; + name : label; + represented_document : document; +END_ENTITY; + + +ENTITY document_type; + product_data_type : label; +END_ENTITY; + + +ENTITY document_usage_constraint; + source : document; + subject_element : label; + subject_element_value : text; +END_ENTITY; + + +ENTITY document_usage_constraint_assignment + ABSTRACT SUPERTYPE; + assigned_document_usage : document_usage_constraint; + role : document_usage_role; +END_ENTITY; + + +ENTITY document_usage_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY dose_equivalent_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DOSE_EQUIVALENT_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY dose_equivalent_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.sievert); +END_ENTITY; + + +ENTITY double_offset_shelled_solid + SUBTYPE OF (shelled_solid); + thickness2 : length_measure; +WHERE + WR1 : thickness2 <> 0; + WR2 : SELF\shelled_solid.thickness <> thickness2; +END_ENTITY; + + +ENTITY draped_defined_transformation + SUBTYPE OF (transformation_with_derived_angle); +END_ENTITY; + + +ENTITY draughting_annotation_occurrence + SUBTYPE OF (annotation_occurrence); +WHERE + WR1 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_CURVE_OCCURRENCE' + IN TYPEOF (SELF))) OR + (SIZEOF (QUERY (sty <* SELF.styles | + NOT ((SIZEOF (sty.styles) = 1) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (sty.styles[1]))) )) = 0); + WR2 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE' + IN TYPEOF (SELF))) OR (SIZEOF (QUERY (sty <* SELF.styles | + NOT ((SIZEOF (sty.styles) = 1) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FILL_AREA_STYLE' + IN TYPEOF (sty.styles[1]))) )) = 0); + WR3 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE' + IN TYPEOF (SELF))) OR (SIZEOF (QUERY (bound <* + SELF.item\annotation_fill_area.boundaries | + NOT (SIZEOF (QUERY (si <* + USEDIN (bound, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'STYLED_ITEM.ITEM') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'ANNOTATION_CURVE_OCCURRENCE' IN TYPEOF (si)))) > 0))) = 0); + WR4 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE' + IN TYPEOF (SELF))) OR (SIZEOF (QUERY (sty <* SELF.styles | + NOT ((SIZEOF (sty.styles) = 1) AND + (SIZEOF (TYPEOF (sty.styles[1]) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SYMBOL_STYLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NULL_STYLE']) = 1)) )) = 0); + WR5 : (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE' + IN TYPEOF (SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL' + IN TYPEOF(SELF.item)))) OR + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_SYMBOL_REPRESENTATION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_SUBFIGURE_REPRESENTATION'] * + TYPEOF (SELF.item\mapped_item.mapping_source. + mapped_representation)) = 1); + WR6 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (SELF))) OR + (SIZEOF (QUERY (sty <* SELF.styles | + NOT ((SIZEOF (sty.styles) = 1) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_STYLE' + IN TYPEOF (sty.styles[1]))) )) = 0); + WR7 : (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (SELF))) OR + (SIZEOF (TYPEOF(SELF.item) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL']) = 1); + WR8 : (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT' + IN TYPEOF (SELF.item)))) OR (SIZEOF (QUERY (tl <* + SELF.item\composite_text.collected_text | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL' + IN TYPEOF (tl)) )) = 0); + WR9 : (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL' + IN TYPEOF (SELF.item)))) OR (SELF.item\text_literal.alignment + IN ['baseline left', 'baseline centre', 'baseline right']); + WR10 : (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT' + IN TYPEOF (SELF.item)))) OR + (SIZEOF (QUERY (tl <* QUERY (text <* SELF. + item\composite_text.collected_text + |('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL' IN TYPEOF(text))) | + NOT (tl\text_literal.alignment IN + ['baseline left', 'baseline centre', 'baseline right']) )) = 0); + WR11 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT' + IN TYPEOF (SELF.item))) OR check_text_alignment(SELF.item); + WR12 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT' + IN TYPEOF (SELF.item))) OR check_text_font(SELF.item); + WR13 : (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT' + IN TYPEOF (SELF.item)))) OR + (SIZEOF (QUERY (tl <* QUERY (text <* + SELF.item\composite_text.collected_text | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL' IN TYPEOF (text))) | + NOT (SIZEOF (TYPEOF(tl) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'TEXT_LITERAL_WITH_BLANKING_BOX', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'TEXT_LITERAL_WITH_ASSOCIATED_CURVES']) = 0) )) = 0); + WR14 : (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL_WITH_ASSOCIATED_CURVES' + IN TYPEOF (SELF.item)))) OR + (SIZEOF (QUERY (crv <* + SELF.item\text_literal_with_associated_curves. + associated_curves | + NOT (SIZEOF (QUERY (si <* USEDIN (crv, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM.ITEM') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_CURVE_OCCURRENCE' + IN TYPEOF (si)) )) > 0) )) = 0); + WR15 : (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT_WITH_ASSOCIATED_CURVES' + IN TYPEOF (SELF.item)))) OR + (SIZEOF (QUERY (crv <* + SELF.item\composite_text_with_associated_curves. + associated_curves | + NOT (SIZEOF (QUERY (si <* USEDIN (crv, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM.ITEM') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_CURVE_OCCURRENCE' + IN TYPEOF (si)) )) > 0) )) = 0); + WR16 : SIZEOF (QUERY (cs <* QUERY (sty <* SELF.styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' IN TYPEOF (sty.styles[1]))) + | NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE_WITH_UNIT' + IN TYPEOF (cs.styles[1]\curve_style.curve_width)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' + IN TYPEOF (cs.styles[1]\curve_style. + curve_width\measure_with_unit.value_component))))) = 0; + WR17 : SIZEOF (QUERY (fas <* QUERY (sty <* SELF.styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FILL_AREA_STYLE' + IN TYPEOF (sty.styles[1]))) | + NOT ((SIZEOF (QUERY (fs <* fas.styles[1]\fill_area_style.fill_styles + | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FILL_AREA_STYLE_TILES' + IN TYPEOF (fs)))) <= 1) + AND (SIZEOF (QUERY (fst <* QUERY (fs <* + fas.styles[1]\fill_area_style.fill_styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FILL_AREA_STYLE_TILES' + IN TYPEOF (fs))) | + NOT (SIZEOF (fst\fill_area_style_tiles.tiles) = 1) + )) = 0)) + )) = 0; + WR18 : SIZEOF (QUERY (fas <* QUERY (sty <* SELF.styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FILL_AREA_STYLE' + IN TYPEOF (sty.styles[1]))) | + NOT (SIZEOF (QUERY (fsh <* QUERY (fs <* + fas.styles[1]\fill_area_style.fill_styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FILL_AREA_STYLE_HATCHING' + IN TYPEOF (fs))) | + NOT (fsh\fill_area_style_hatching.point_of_reference_hatch_line :=: + fsh\fill_area_style_hatching.pattern_start) )) = 0) )) = 0; + WR19 : SIZEOF (QUERY (ts <* QUERY (sty <* SELF.styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_STYLE' + IN TYPEOF(sty.styles[1]))) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'TEXT_STYLE_WITH_BOX_CHARACTERISTICS' + IN TYPEOF (ts.styles[1])))) = 0; + WR20 : SIZEOF (QUERY (ts <* QUERY (sty <* SELF.styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_STYLE_WITH_BOX_CHARACTERISTICS' + IN TYPEOF (sty.styles[1]))) | + NOT (SIZEOF (ts.styles[1]\text_style_with_box_characteristics. + characteristics) = 4) )) = 0; +END_ENTITY; + + +ENTITY draughting_callout + SUPERTYPE OF ((ONEOF (datum_feature_callout, datum_target_callout, dimension_curve_directed_callout, draughting_elements, geometrical_tolerance_callout, leader_directed_callout, projection_directed_callout, structured_dimension_callout) ANDOR surface_condition_callout)) + SUBTYPE OF (geometric_representation_item); + contents : SET [1:?] OF draughting_callout_element; +WHERE + WR1 : (SIZEOF (QUERY (l_1 <* SELF\draughting_callout.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_CURVE' IN (TYPEOF(l_1)))) = 0) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_DIRECTED_CALLOUT' IN (TYPEOF(SELF))) AND + (SIZEOF (QUERY (l_1 <* SELF\draughting_callout.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_CURVE' IN (TYPEOF(l_1)))) = 0) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_DIRECTED_CALLOUT' IN (TYPEOF(SELF))) AND + (SIZEOF (QUERY (l_1 <* SELF\draughting_callout.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE' IN (TYPEOF(l_1)))) = 0) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT' IN (TYPEOF(SELF))); +END_ENTITY; + + +ENTITY draughting_callout_relationship; + name : label; + description : text; + relating_draughting_callout : draughting_callout; + related_draughting_callout : draughting_callout; +END_ENTITY; + + +ENTITY draughting_elements + SUBTYPE OF (draughting_callout); +WHERE + WR1 : SIZEOF (QUERY (l_c <* QUERY (con <* SELF.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_CURVE' IN TYPEOF(con))) | + NOT (SIZEOF (QUERY (ldc <* USEDIN (l_c, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DRAUGHTING_CALLOUT.CONTENTS') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_DIRECTED_CALLOUT' + IN TYPEOF (ldc)))) <= 1)))=0; + WR2 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT' + IN TYPEOF(SELF)) OR + (SIZEOF (QUERY (con <* SELF.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_CURVE' IN + TYPEOF (con)))) <= 2); + WR3 : SIZEOF (QUERY (rc <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT_' + + 'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF (rc)) AND + (rc.name = 'primary') )) <= 1; + WR4 : SIZEOF (QUERY (rc <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT_' + + 'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF (rc)) AND + (rc.name = 'secondary') )) <= 1; + WR5 : SIZEOF (QUERY (sec <* QUERY (rc <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT_' + + 'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF (rc)) AND + (rc.name = 'secondary') ) | + NOT (SIZEOF (QUERY (prim <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT_' + + 'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF (prim)) AND + (prim.name = 'primary') )) = 1))) = 0; +END_ENTITY; + + +ENTITY draughting_model + SUBTYPE OF (representation); + SELF\representation.items : SET [1:?] OF draughting_model_item_select; +UNIQUE + UR1: SELF\representation.name; +WHERE + WR1 : SIZEOF (QUERY (mi <* QUERY (it <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF(it))) | + NOT ( + SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_MODEL'] * + TYPEOF (mi\mapped_item.mapping_source. + mapped_representation)) = 1 + ))) = 0; + WR2 : SIZEOF (QUERY (smi <* QUERY (si <* QUERY (it <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' IN TYPEOF(it))) | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN + TYPEOF(si\styled_item.item))) | + (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION' IN + TYPEOF(smi\styled_item.item\mapped_item. + mapping_source.mapped_representation)) + AND + (SIZEOF (QUERY (sty <* smi\styled_item.styles | + (NOT (SIZEOF (QUERY (psa <* sty.styles | + (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' IN TYPEOF(psa))))) = 1 + )))) = 1))) + )) = 0; +END_ENTITY; + + +ENTITY draughting_model_item_association + SUBTYPE OF (item_identified_representation_usage); + SELF\item_identified_representation_usage.definition : shape_definition; + SELF\item_identified_representation_usage.identified_item : draughting_model_item_association_select; + SELF\item_identified_representation_usage.used_representation : draughting_model; +END_ENTITY; + + +ENTITY draughting_pre_defined_colour + SUBTYPE OF (pre_defined_colour); +WHERE + WR1 : SELF.name IN + ['red', + 'green', + 'blue', + 'yellow', + 'magenta', + 'cyan', + 'black', + 'white']; +END_ENTITY; + + +ENTITY draughting_pre_defined_curve_font + SUBTYPE OF (pre_defined_curve_font); +WHERE + WR1 : SELF.name IN + ['continuous', + 'chain', + 'chain double dash', + 'dashed', + 'dotted']; +END_ENTITY; + + +ENTITY draughting_pre_defined_text_font + SUBTYPE OF (pre_defined_text_font); +WHERE + WR1 : SELF.name[1:8] = 'ISO 3098'; +END_ENTITY; + + +ENTITY draughting_subfigure_representation + SUBTYPE OF (symbol_representation); +WHERE + WR1 : SIZEOF (QUERY (item <* SELF\representation.items | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT'] + * TYPEOF (item)) = 1))) = 0; + WR2 : SIZEOF (QUERY (item <* SELF\representation.items | + SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT'] * + TYPEOF (item)) = 1)) >= 1; + WR3 : SIZEOF (QUERY (srm <* QUERY (rm <* + USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'REPRESENTATION_MAP.MAPPED_REPRESENTATION') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SYMBOL_REPRESENTATION_MAP' + IN TYPEOF(rm))) | + NOT (SIZEOF (QUERY (a_s <* QUERY (mi <* srm.map_usage | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL' IN TYPEOF(mi))) + | NOT (SIZEOF (QUERY (aso <* + USEDIN (a_s, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'STYLED_ITEM.ITEM') | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SUBFIGURE_OCCURRENCE' + IN TYPEOF(aso)))) = 0))) = 0))) > 0; + WR4 : NOT (acyclic_mapped_item_usage (SELF)); + WR5 : SIZEOF (SELF.context_of_items.representations_in_context) = 1; +END_ENTITY; + + +ENTITY draughting_symbol_representation + SUBTYPE OF (symbol_representation); +UNIQUE + UR1: SELF\representation.name; +WHERE + WR1 : SIZEOF (QUERY (item <* SELF\representation.items | + NOT (SIZEOF (TYPEOF (item) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_CURVE_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT']) = 1) + )) = 0; + WR2 : SIZEOF (QUERY (item <* SELF\representation.items | + (SIZEOF (TYPEOF (item) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_CURVE_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE']) = 1) + )) >= 1; + WR3 : SIZEOF (QUERY (item <* SELF\representation.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SUBFIGURE_OCCURRENCE' + IN TYPEOF (item))) = 0; + WR4 : SIZEOF (QUERY (srm <* QUERY (rm <* + USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'REPRESENTATION_MAP.MAPPED_REPRESENTATION') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SYMBOL_REPRESENTATION_MAP' + IN TYPEOF(rm))) | + (SIZEOF (QUERY (a_s <* QUERY (mi <* srm.map_usage | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL' IN TYPEOF(mi))) | + NOT (SIZEOF (QUERY(aso <* + USEDIN(a_s, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'STYLED_ITEM.ITEM') | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE' + IN TYPEOF(aso)) + )) = 0) )) = 0) )) > 0; + WR5 : NOT (acyclic_mapped_item_usage (SELF)); + WR6 : SIZEOF (SELF.context_of_items.representations_in_context) = 1; +END_ENTITY; + + +ENTITY draughting_text_literal_with_delineation + SUBTYPE OF (text_literal_with_delineation); +WHERE + WR1 : SELF.delineation IN ['underline', 'overline']; +END_ENTITY; + + +ENTITY draughting_title; + items : SET [1:?] OF draughting_titled_item; + language : label; + contents : text; +END_ENTITY; + + +ENTITY drawing_definition; + drawing_number : identifier; + drawing_type : OPTIONAL label; +END_ENTITY; + + +ENTITY drawing_revision + SUBTYPE OF (presentation_set); + revision_identifier : identifier; + drawing_identifier : drawing_definition; + intended_scale : OPTIONAL text; +UNIQUE + UR1 : revision_identifier, drawing_identifier; +END_ENTITY; + + +ENTITY drawing_revision_sequence; + predecessor : drawing_revision; + successor : drawing_revision; +WHERE + WR1 : predecessor :<>: successor; +END_ENTITY; + + +ENTITY drawing_sheet_revision + SUBTYPE OF (presentation_area); + revision_identifier : identifier; +WHERE + WR1 : SIZEOF( QUERY(item <* SELF\representation.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN (TYPEOF(item))) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAWING_SHEET_REVISION' IN + (TYPEOF(item\mapped_item.mapping_source.mapped_representation)))))=0; +END_ENTITY; + + +ENTITY drawing_sheet_revision_sequence + SUBTYPE OF (representation_relationship); +WHERE + WR1 : SELF\representation_relationship.rep_1 :<>: + SELF\representation_relationship.rep_2; + WR2 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAWING_SHEET_REVISION' + IN TYPEOF (SELF\representation_relationship.rep_1); + WR3 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAWING_SHEET_REVISION' + IN TYPEOF (SELF\representation_relationship.rep_2); +END_ENTITY; + + +ENTITY drawing_sheet_revision_usage + SUBTYPE OF (area_in_set); + sheet_number : identifier; +UNIQUE + UR1: sheet_number, SELF\area_in_set.in_set; +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAWING_SHEET_REVISION' IN + TYPEOF(SELF\area_in_set.area)) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAWING_REVISION' + IN TYPEOF (SELF\area_in_set.in_set)); +END_ENTITY; + + +ENTITY edge + SUPERTYPE OF (ONEOF (edge_curve, oriented_edge, subedge)) + SUBTYPE OF (topological_representation_item); + edge_start : vertex; + edge_end : vertex; +END_ENTITY; + + +ENTITY edge_based_wireframe_model + SUBTYPE OF (geometric_representation_item); + ebwm_boundary : SET [1:?] OF connected_edge_set; +END_ENTITY; + + +ENTITY edge_based_wireframe_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF ( +QUERY ( it <* SELF.items| NOT ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_BASED_WIREFRAME_MODEL', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D' ] * TYPEOF (it)) = 1) )) = 0; + WR2 : SIZEOF ( +QUERY ( it <* SELF.items| ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_BASED_WIREFRAME_MODEL', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' ] * TYPEOF (it)) = 1) )) >= 1; + WR3 : SIZEOF ( +QUERY ( ebwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT ( SIZEOF ( +QUERY ( edges <* eb.ces_edges| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN TYPEOF (edges)) )) = 0) )) = 0) )) = 0; + WR4 : SIZEOF ( +QUERY ( ebwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT ( SIZEOF ( +QUERY ( pline_edges <* +QUERY ( edges <* eb.ces_edges| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF (edges\edge_curve.edge_geometry)) )| NOT ( SIZEOF (pline_edges\edge_curve.edge_geometry\polyline.points) > 2) )) = 0) )) = 0) )) = 0; + WR5 : SIZEOF ( +QUERY ( ebwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT ( SIZEOF ( +QUERY ( edges <* eb.ces_edges| NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (edges.edge_start)) AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (edges.edge_end))) )) = 0) )) = 0) )) = 0; + WR6 : SIZEOF ( +QUERY ( ebwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT ( SIZEOF ( +QUERY ( edges <* eb.ces_edges| NOT valid_wireframe_edge_curve(edges\edge_curve.edge_geometry) )) = 0) )) = 0) )) = 0; + WR7 : SIZEOF ( +QUERY ( ebwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT ( SIZEOF ( +QUERY ( edges <* eb.ces_edges| NOT (valid_wireframe_vertex_point(edges.edge_start\vertex_point.vertex_geometry) AND valid_wireframe_vertex_point(edges.edge_end\vertex_point.vertex_geometry)) )) = 0) )) = 0) )) = 0; + WR8 : SIZEOF ( +QUERY ( mi <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0; + WR9 : SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3; +END_ENTITY; + + +ENTITY edge_blended_solid + ABSTRACT SUPERTYPE OF ((track_blended_solid ANDOR ONEOF (solid_with_constant_radius_edge_blend, solid_with_variable_radius_edge_blend, solid_with_chamfered_edges))) + SUBTYPE OF (modified_solid); + blended_edges : LIST [1:?] OF UNIQUE edge_curve; +END_ENTITY; + + +ENTITY edge_curve + SUBTYPE OF (edge, geometric_representation_item); + edge_geometry : curve; + same_sense : BOOLEAN; +END_ENTITY; + + +ENTITY edge_loop + SUBTYPE OF (loop, path); +DERIVE + ne : INTEGER := SIZEOF(SELF\path.edge_list); +WHERE + WR1 : (SELF\path.edge_list[1].edge_start) :=: + (SELF\path.edge_list[ne].edge_end); +END_ENTITY; + + +ENTITY effectivity + SUPERTYPE OF (ONEOF (serial_numbered_effectivity, dated_effectivity, lot_effectivity, time_interval_based_effectivity)); + id : identifier; +DERIVE + description : text := get_description_value(SELF); + name : label := get_name_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY effectivity_assignment + ABSTRACT SUPERTYPE; + assigned_effectivity : effectivity; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY effectivity_context_assignment + ABSTRACT SUPERTYPE; + assigned_effectivity_assignment : effectivity_assignment; + role : effectivity_context_role; +END_ENTITY; + + +ENTITY effectivity_context_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY effectivity_relationship; + name : label; + description : OPTIONAL text; + related_effectivity : effectivity; + relating_effectivity : effectivity; +END_ENTITY; + + +ENTITY electric_charge_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELECTRIC_CHARGE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY electric_charge_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.coulomb); +END_ENTITY; + + +ENTITY electric_current_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELECTRIC_CURRENT_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY electric_current_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 1.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY electric_potential_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELECTRIC_POTENTIAL_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY electric_potential_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.volt); +END_ENTITY; + + +ENTITY elementary_brep_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF (QUERY (it <* SELF.items | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACETED_BREP', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D'] * + TYPEOF(it)) = 1))) = 0; + WR2 : SIZEOF (QUERY (it <* SELF.items | + SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM'] * TYPEOF(it)) =1 )) > 0; + WR3 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* msb_shells(msb) | + NOT (SIZEOF (QUERY(fcs <* csh.cfs_faces | + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE' IN TYPEOF(fcs)))) = 0 + ))) = 0 + ))) = 0; + WR4 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* msb_shells(msb) | + NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces | + NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELEMENTARY_SURFACE' IN + TYPEOF(fcs\face_surface.face_geometry)) + ))) = 0 + ))) = 0 + ))) = 0; + WR5 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* msb_shells(msb) | + NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces | + NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN + TYPEOF(oe.edge_element)))) = 0 + ))) = 0 + ))) = 0 + ))) = 0 + ))) = 0; + WR6 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* msb_shells(msb) | + NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces | + NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE'] * + TYPEOF(oe.edge_element\edge_curve.edge_geometry)) = 1 ) + )) = 0 + ))) = 0 + ))) = 0 + ))) = 0 + ))) = 0; + WR7 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* msb_shells(msb) | + NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces | + NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF(oe.edge_start)) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN + TYPEOF(oe.edge_end)) + ))) = 0 + ))) = 0 + ))) = 0 + ))) = 0 + ))) = 0; + WR8 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* msb_shells(msb) | + NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces | + NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN + TYPEOF(oe.edge_element\edge_curve.edge_geometry)) AND + (NOT (SIZEOF (oe\oriented_edge.edge_element\ + edge_curve.edge_geometry\polyline.points) >= 3)) + )) = 0 + ))) = 0 + ))) = 0 + ))) = 0 + ))) = 0; + WR9 : SIZEOF (QUERY (msb <* QUERY (it <* items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF + (msb\manifold_solid_brep.outer))) + = 0; + WR10 : SIZEOF (QUERY (brv <* QUERY (it <* items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BREP_WITH_VOIDS' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* brv\brep_with_voids.voids | + csh\oriented_closed_shell.orientation)) = 0))) = 0; + WR11 : SIZEOF (QUERY (mi <* QUERY (it <* items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELEMENTARY_BREP_SHAPE_REPRESENTATION' IN + TYPEOF(mi\mapped_item.mapping_source. + mapped_representation)))) = 0; + WR12 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* msb_shells(msb) | + NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces | + NOT (SIZEOF(QUERY (vlp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF(bnds.bound)) | + NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN + TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN + TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop. + loop_vertex\vertex_point.vertex_geometry)) + ))) = 0))) = 0))) = 0))) =0; +END_ENTITY; + + +ENTITY elementary_surface + SUPERTYPE OF (ONEOF (plane, cylindrical_surface, conical_surface, spherical_surface, toroidal_surface)) + SUBTYPE OF (surface); + position : axis2_placement_3d; +END_ENTITY; + + +ENTITY ellipse + SUBTYPE OF (conic); + semi_axis_1 : positive_length_measure; + semi_axis_2 : positive_length_measure; +END_ENTITY; + + +ENTITY energy_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ENERGY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY energy_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.joule); +END_ENTITY; + + +ENTITY entity_assertion + SUBTYPE OF (fact_type); +END_ENTITY; + + +ENTITY enum_reference_prefix + SUBTYPE OF (descriptive_representation_item); +END_ENTITY; + + +ENTITY environment; + syntactic_representation : generic_variable; + semantics : variable_semantics; +END_ENTITY; + + +ENTITY evaluated_characteristic + SUBTYPE OF (representation, representation_relationship); +UNIQUE + UR1: SELF\representation_relationship.rep_1, SELF\representation_relationship.rep_2; +WHERE + WR1 : SELF\representation_relationship.rep_1 <> + SELF\representation_relationship.rep_2; +END_ENTITY; + + +ENTITY evaluated_degenerate_pcurve + SUBTYPE OF (degenerate_pcurve); + equivalent_point : cartesian_point; +END_ENTITY; + + +ENTITY evaluation_product_definition + SUBTYPE OF (product_definition); +END_ENTITY; + + +ENTITY event_occurrence; + id : identifier; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY event_occurrence_assignment + ABSTRACT SUPERTYPE; + assigned_event_occurrence : event_occurrence; + role : event_occurrence_role; +END_ENTITY; + + +ENTITY event_occurrence_relationship; + name : label; + description : OPTIONAL text; + relating_event : event_occurrence; + related_event : event_occurrence; +END_ENTITY; + + +ENTITY event_occurrence_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY exclusive_product_concept_feature_category + SUBTYPE OF (product_concept_feature_category); +END_ENTITY; + + +ENTITY executed_action + SUBTYPE OF (action); +END_ENTITY; + + +ENTITY expanded_uncertainty + SUBTYPE OF (standard_uncertainty); + coverage_factor : REAL; +END_ENTITY; + + +ENTITY explicit_procedural_geometric_representation_item_relationship + SUBTYPE OF (explicit_procedural_representation_item_relationship); + SELF\representation_item_relationship.related_representation_item : geometric_representation_item; + SELF\representation_item_relationship.relating_representation_item : procedural_shape_representation_sequence; +WHERE + WR1 : NOT ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROCEDURAL_SHAPE_REPRESENTATION_SEQUENCE' + IN TYPEOF( + SELF\representation_item_relationship.related_representation_item)); +END_ENTITY; + + +ENTITY explicit_procedural_representation_item_relationship + SUBTYPE OF (representation_item_relationship); + SELF\representation_item_relationship.relating_representation_item : procedural_representation_sequence; +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROCEDURAL_REPRESENTATION_SEQUENCE' + IN TYPEOF( + SELF\representation_item_relationship.related_representation_item)); + WR2 : SIZEOF(QUERY(q <* using_representations( + SELF\representation_item_relationship.related_representation_item) | + item_in_context( + SELF\representation_item_relationship.relating_representation_item, + q.context_of_items))) > 0; +END_ENTITY; + + +ENTITY explicit_procedural_representation_relationship + SUBTYPE OF (representation_relationship); + SELF\representation_relationship.rep_1 : procedural_representation; +WHERE + WR1 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROCEDURAL_REPRESENTATION' + IN TYPEOF(SELF\representation_relationship.rep_2))) AND + (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VARIATIONAL_REPRESENTATION' + IN TYPEOF(SELF\representation_relationship.rep_2))); + WR2 : SELF\representation_relationship.rep_1.context_of_items :=: + SELF\representation_relationship.rep_2.context_of_items; +END_ENTITY; + + +ENTITY explicit_procedural_shape_representation_relationship + SUBTYPE OF (explicit_procedural_representation_relationship); + SELF\representation_relationship.rep_1 : procedural_shape_representation; + SELF\representation_relationship.rep_2 : shape_representation; +END_ENTITY; + + +ENTITY expression + ABSTRACT SUPERTYPE OF (ONEOF (numeric_expression, boolean_expression)) + SUBTYPE OF (generic_expression); +END_ENTITY; + + +ENTITY expression_conversion_based_unit + SUBTYPE OF (context_dependent_unit, variable_semantics); +INVERSE + associated_variable_environment: environment FOR semantics; +END_ENTITY; + + +ENTITY extension + SUBTYPE OF (derived_shape_aspect); +WHERE + WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1; +END_ENTITY; + + +ENTITY extent + SUBTYPE OF (characterized_object); +END_ENTITY; + + +ENTITY external_class_library + SUBTYPE OF (external_source); +END_ENTITY; + + +ENTITY external_identification_assignment + ABSTRACT SUPERTYPE + SUBTYPE OF (identification_assignment); + source : external_source; +END_ENTITY; + + +ENTITY external_source; + source_id : source_item; +DERIVE + description : text := get_description_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY external_source_relationship; + name : label; + description : OPTIONAL text; + relating_source : external_source; + related_source : external_source; +END_ENTITY; + + +ENTITY externally_defined_class + SUBTYPE OF (class, externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_colour + SUBTYPE OF (colour_specification, externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_context_dependent_unit + SUBTYPE OF (context_dependent_unit, externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_conversion_based_unit + SUBTYPE OF (conversion_based_unit, externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_currency + SUBTYPE OF (currency, externally_defined_context_dependent_unit); +END_ENTITY; + + +ENTITY externally_defined_curve_font + SUBTYPE OF (externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_dimension_definition + SUBTYPE OF (dimensional_size, externally_defined_item); +WHERE + WR1 : (SELF\externally_defined_item.item_id = 'external size dimension') AND (SELF\externally_defined_item.source.source_id = 'external size dimension specification'); + WR2 : 1 >= SIZEOF(QUERY ( adr <* USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.APPLIED_DOCUMENT_REFERENCE.ITEMS')| (adr.assigned_document.description = 'external size dimension specification') )); +END_ENTITY; + + +ENTITY externally_defined_general_property + SUBTYPE OF (general_property, externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_hatch_style + SUBTYPE OF (externally_defined_item, geometric_representation_item); +END_ENTITY; + + +ENTITY externally_defined_item; + item_id : source_item; + source : external_source; +END_ENTITY; + + +ENTITY externally_defined_item_relationship; + name : label; + description : OPTIONAL text; + relating_item : externally_defined_item; + related_item : externally_defined_item; +END_ENTITY; + + +ENTITY externally_defined_marker + SUBTYPE OF (externally_defined_symbol, pre_defined_marker); +END_ENTITY; + + +ENTITY externally_defined_picture_representation_item + SUBTYPE OF (picture_representation_item); +INVERSE + source: applied_external_identification_assignment FOR items; +WHERE + WR1 : NOT (SELF\representation_item.name IN pre_defined_picture_representation_types); +END_ENTITY; + + +ENTITY externally_defined_representation_item + SUBTYPE OF (representation_item, externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_string + SUBTYPE OF (externally_defined_representation_item); +END_ENTITY; + + +ENTITY externally_defined_symbol + SUBTYPE OF (externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_terminator_symbol + SUBTYPE OF (externally_defined_symbol); +END_ENTITY; + + +ENTITY externally_defined_text_font + SUBTYPE OF (externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_tile + SUBTYPE OF (externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_tile_style + SUBTYPE OF (externally_defined_item, geometric_representation_item); +END_ENTITY; + + +ENTITY extruded_area_solid + SUBTYPE OF (swept_area_solid); + extruded_direction : direction; + depth : positive_length_measure; +WHERE + WR1 : dot_product( + (SELF\swept_area_solid.swept_area.basis_surface\ + elementary_surface.position.p[3]), extruded_direction) <> 0.0; +END_ENTITY; + + +ENTITY extruded_face_solid + SUBTYPE OF (swept_face_solid); + extruded_direction : direction; + depth : positive_length_measure; +WHERE + WR1 : dot_product( + (SELF\swept_face_solid.swept_face.face_geometry\ + elementary_surface.position.p[3]), extruded_direction) <> 0.0; +END_ENTITY; + + +ENTITY extruded_face_solid_with_draft_angle + SUBTYPE OF (extruded_face_solid_with_trim_conditions); + draft_angle : plane_angle_measure; +WHERE + WR1 : draft_angle <> 0; +END_ENTITY; + + +ENTITY extruded_face_solid_with_multiple_draft_angles + SUBTYPE OF (extruded_face_solid_with_trim_conditions); + drafted_edges : LIST [2:?] OF SET [1:?] OF edge_curve; + draft_angles : LIST [2:?] OF plane_angle_measure; +WHERE + WR1 : SIZEOF(drafted_edges) = SIZEOF(draft_angles); + WR2 : SIZEOF(QUERY(q <* draft_angles | q = 0)) = 0; + WR3 : SIZEOF(QUERY(q <* drafted_edges | (SIZEOF(QUERY(r <* q | NOT + (SELF\swept_face_solid.swept_face IN + using_items(r,[])))) > 0))) = 0; +END_ENTITY; + + +ENTITY extruded_face_solid_with_trim_conditions + SUPERTYPE OF (ONEOF (extruded_face_solid_with_draft_angle, extruded_face_solid_with_multiple_draft_angles)) + SUBTYPE OF (extruded_face_solid); + first_trim_condition : trim_condition_select; + second_trim_condition : trim_condition_select; + first_trim_intent : trim_intent; + second_trim_intent : trim_intent; + first_offset : non_negative_length_measure; + second_offset : non_negative_length_measure; +WHERE + WR1 : NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE_ANGLE_MEASURE' + IN TYPEOF(first_trim_condition)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE_ANGLE_MEASURE' + IN TYPEOF(second_trim_condition))); + WR2 : NOT ((('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(first_trim_condition)) AND + ((first_trim_intent = trim_intent.offset) + OR (first_trim_intent = trim_intent.up_to_next))) OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(second_trim_condition)) AND + ((second_trim_intent = trim_intent.offset) + OR (second_trim_intent = trim_intent.up_to_next)))); + WR3 : NOT (((NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(first_trim_condition))) AND + ((first_trim_intent = trim_intent.blind) + OR (first_trim_intent = trim_intent.through_all))) OR + ((NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(second_trim_condition))) AND + ((second_trim_intent = trim_intent.blind) + OR (second_trim_intent = trim_intent.through_all)))); + WR4 : (((first_trim_intent = trim_intent.offset) + AND (first_offset > 0)) XOR + ((first_trim_intent <> trim_intent.offset) + AND (first_offset = 0))) AND + (((second_trim_intent = trim_intent.offset) + AND (second_offset > 0)) XOR + ((second_trim_intent <> trim_intent.offset) + AND (second_offset = 0))); + WR5 : NOT((('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(first_trim_condition)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(second_trim_condition))) AND + (first_trim_condition = second_trim_condition)); +END_ENTITY; + + +ENTITY face + SUPERTYPE OF (ONEOF (face_surface, subface, oriented_face)) + SUBTYPE OF (topological_representation_item); + bounds : SET [1:?] OF face_bound; +WHERE + WR1 : NOT (mixed_loop_type_set(list_to_set(list_face_loops(SELF)))); + WR2 : SIZEOF(QUERY(temp <* bounds | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_OUTER_BOUND' IN + TYPEOF(temp))) <= 1; +END_ENTITY; + + +ENTITY face_based_surface_model + SUBTYPE OF (geometric_representation_item); + fbsm_faces : SET [1:?] OF connected_face_set; +END_ENTITY; + + +ENTITY face_bound + SUBTYPE OF (topological_representation_item); + bound : loop; + orientation : BOOLEAN; +END_ENTITY; + + +ENTITY face_outer_bound + SUBTYPE OF (face_bound); +END_ENTITY; + + +ENTITY face_surface + SUBTYPE OF (face, geometric_representation_item); + face_geometry : surface; + same_sense : BOOLEAN; +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_SURFACE' IN TYPEOF(face_geometry)); +END_ENTITY; + + +ENTITY faceted_brep + SUBTYPE OF (manifold_solid_brep); +END_ENTITY; + + +ENTITY faceted_brep_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF ( +QUERY ( it <* items| NOT ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACETED_BREP', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D' ] * TYPEOF (it)) = 1) )) = 0; + WR2 : SIZEOF ( +QUERY ( it <* items| ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACETED_BREP', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' ] * TYPEOF (it)) = 1) )) > 0; + WR3 : SIZEOF ( +QUERY ( fbrep <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACETED_BREP' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( csh <* msb_shells(fbrep)| NOT ( SIZEOF ( +QUERY ( fcs <* csh\connected_face_set.cfs_faces| NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE' IN TYPEOF (fcs)) AND (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE' IN TYPEOF (fcs\face_surface.face_geometry)) AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF (fcs\face_surface.face_geometry\elementary_surface.position.location)))) )) = 0) )) = 0) )) = 0; + WR4 : SIZEOF ( +QUERY ( fbrep <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACETED_BREP' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( csh <* msb_shells(fbrep)| NOT ( SIZEOF ( +QUERY ( fcs <* csh\connected_face_set.cfs_faces| NOT ( SIZEOF ( +QUERY ( bnds <* fcs.bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_OUTER_BOUND' IN TYPEOF (bnds)) )) = 1) )) = 0) )) = 0) )) = 0; + WR5 : SIZEOF ( +QUERY ( msb <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF (it)) )| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF (msb\manifold_solid_brep.outer)) )) = 0; + WR6 : SIZEOF ( +QUERY ( brv <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BREP_WITH_VOIDS' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( csh <* brv\brep_with_voids.voids| csh\oriented_closed_shell.orientation )) = 0) )) = 0; + WR7 : SIZEOF ( +QUERY ( mi <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACETED_BREP_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0; +END_ENTITY; + + +ENTITY fact_type + SUBTYPE OF (property_definition); +END_ENTITY; + + +ENTITY fill_area_style + SUBTYPE OF (founded_item); + name : label; + fill_styles : SET [1:?] OF fill_style_select; +WHERE + WR1 : SIZEOF(QUERY(fill_style <* SELF.fill_styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'FILL_AREA_STYLE_COLOUR' IN + TYPEOF(fill_style) + )) <= 1; +END_ENTITY; + + +ENTITY fill_area_style_colour; + name : label; + fill_colour : colour; +END_ENTITY; + + +ENTITY fill_area_style_hatching + SUBTYPE OF (geometric_representation_item); + hatch_line_appearance : curve_style; + start_of_next_hatch_line : one_direction_repeat_factor; + point_of_reference_hatch_line : cartesian_point; + pattern_start : cartesian_point; + hatch_line_angle : plane_angle_measure; +END_ENTITY; + + +ENTITY fill_area_style_tile_coloured_region + SUBTYPE OF (geometric_representation_item); + closed_curve : curve_or_annotation_curve_occurrence; + region_colour : colour; +WHERE + WR1 : (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE' IN TYPEOF (closed_curve))) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCLE' IN TYPEOF (closed_curve)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELLIPSE' IN TYPEOF (closed_curve)) OR + ( ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' IN TYPEOF (closed_curve)) + AND (closed_curve\b_spline_curve.closed_curve = TRUE) ) OR + ( ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE' IN TYPEOF (closed_curve)) + AND (closed_curve\composite_curve.closed_curve = TRUE) ) OR + ( ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF (closed_curve)) + AND (closed_curve\polyline.points[LOINDEX(closed_curve\polyline.points)] = + closed_curve\polyline.points[HIINDEX(closed_curve\polyline.points)]) ); +END_ENTITY; + + +ENTITY fill_area_style_tile_curve_with_style + SUBTYPE OF (geometric_representation_item); + styled_curve : annotation_curve_occurrence; +END_ENTITY; + + +ENTITY fill_area_style_tile_symbol_with_style + SUBTYPE OF (geometric_representation_item); + symbol : annotation_symbol_occurrence; +END_ENTITY; + + +ENTITY fill_area_style_tiles + SUBTYPE OF (geometric_representation_item); + tiling_pattern : two_direction_repeat_factor; + tiles : SET [1:?] OF fill_area_style_tile_shape_select; + tiling_scale : positive_ratio_measure; +END_ENTITY; + + +ENTITY flat_pattern_ply_representation_relationship + SUBTYPE OF (shape_representation_relationship); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION' IN + (TYPEOF (SELF\representation_relationship.rep_1) * + TYPEOF (SELF\representation_relationship.rep_2)); + WR2 : SELF\representation_relationship.rep_1. + context_of_items\geometric_representation_context. + coordinate_space_dimension = 3; +END_ENTITY; + + +ENTITY flatness_tolerance + SUBTYPE OF (geometric_tolerance); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)); +END_ENTITY; + + +ENTITY force_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FORCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY force_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.newton); +END_ENTITY; + + +ENTITY forward_chaining_rule + SUBTYPE OF (rule_definition); +END_ENTITY; + + +ENTITY forward_chaining_rule_premise + SUBTYPE OF (property_definition, property_definition_representation, representation); +END_ENTITY; + + +ENTITY founded_item + SUPERTYPE OF (ONEOF (character_glyph_style_outline, character_glyph_style_stroke, curve_style, curve_style_font, curve_style_font_and_scaling, curve_style_font_pattern, fill_area_style, point_style, presentation_style_assignment, surface_side_style, surface_style_boundary, surface_style_control_grid, surface_style_fill_area, surface_style_parameter_line, surface_style_segmentation_curve, surface_style_silhouette, surface_style_usage, symbol_style, text_style)); +DERIVE + users : SET [0:?] OF founded_item_select := using_items(SELF,[]); +WHERE + WR1 : SIZEOF(users) > 0; + WR2 : NOT(SELF IN users); +END_ENTITY; + + +ENTITY frequency_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FREQUENCY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY frequency_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.hertz); +END_ENTITY; + + +ENTITY func + SUBTYPE OF (compound_representation_item); +END_ENTITY; + + +ENTITY functional_breakdown_context + SUBTYPE OF (breakdown_context); +END_ENTITY; + + +ENTITY functional_element_usage + SUBTYPE OF (breakdown_element_usage); +END_ENTITY; + + +ENTITY functionally_defined_transformation; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY general_material_property + SUBTYPE OF (general_property); +WHERE + WR1 : SIZEOF( QUERY( gpa <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GENERAL_PROPERTY_ASSOCIATION.BASE_DEFINITION') | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MATERIAL_PROPERTY' IN TYPEOF(gpa.derived_definition)) )) = 0; +END_ENTITY; + + +ENTITY general_property; + id : identifier; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY general_property_association; + name : label; + description : OPTIONAL text; + base_definition : general_property; + derived_definition : derived_property_select; +WHERE + WR1 : SIZEOF(USEDIN(derived_definition, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GENERAL_PROPERTY_ASSOCIATION.' + 'DERIVED_DEFINITION')) = 1; + WR2 : derived_definition.name = base_definition.name; +END_ENTITY; + + +ENTITY general_property_relationship; + name : label; + description : OPTIONAL text; + relating_property : general_property; + related_property : general_property; +END_ENTITY; + + +ENTITY generic_character_glyph_symbol + ABSTRACT SUPERTYPE + SUBTYPE OF (symbol_representation); +END_ENTITY; + + +ENTITY generic_expression + ABSTRACT SUPERTYPE OF (ONEOF (simple_generic_expression, unary_generic_expression, binary_generic_expression, multiple_arity_generic_expression)); +WHERE + WR1 : is_acyclic(SELF); +END_ENTITY; + + +ENTITY generic_literal + ABSTRACT SUPERTYPE + SUBTYPE OF (simple_generic_expression); +END_ENTITY; + + +ENTITY generic_variable + ABSTRACT SUPERTYPE + SUBTYPE OF (simple_generic_expression); +INVERSE + interpretation: environment FOR syntactic_representation; +END_ENTITY; + + +ENTITY geometric_alignment + SUBTYPE OF (derived_shape_aspect); +WHERE + WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)> 1; +END_ENTITY; + + +ENTITY geometric_curve_set + SUBTYPE OF (geometric_set); +WHERE + WR1 : SIZEOF(QUERY(temp <* SELF\geometric_set.elements | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE' IN TYPEOF(temp))) = 0; +END_ENTITY; + + +ENTITY geometric_intersection + SUBTYPE OF (derived_shape_aspect); +WHERE + WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)> 1; +END_ENTITY; + + +ENTITY geometric_item_specific_usage + SUBTYPE OF (item_identified_representation_usage); + SELF\item_identified_representation_usage.definition : geometric_item_specific_usage_select; + SELF\item_identified_representation_usage.identified_item : geometric_representation_item; + SELF\item_identified_representation_usage.used_representation : shape_representation; +END_ENTITY; + + +ENTITY geometric_model_element_relationship + SUBTYPE OF (geometric_representation_item, representation_item_relationship); + SELF\representation_item_relationship.related_representation_item : geometric_representation_item; + SELF\representation_item_relationship.relating_representation_item : geometric_representation_item; +UNIQUE + UR1 : relating_representation_item, related_representation_item; +WHERE + WR1 : SELF\representation_item_relationship.relating_representation_item :<>: + SELF\representation_item_relationship.related_representation_item; +END_ENTITY; + + +ENTITY geometric_representation_context + SUBTYPE OF (representation_context); + coordinate_space_dimension : dimension_count; +END_ENTITY; + + +ENTITY geometric_representation_item + SUPERTYPE OF (ONEOF (point, direction, vector, placement, cartesian_transformation_operator, curve, surface, edge_curve, face_surface, poly_loop, vertex_point, solid_model, boolean_result, sphere, right_circular_cone, right_circular_cylinder, torus, block, right_angular_wedge, half_space_solid, shell_based_surface_model, face_based_surface_model, shell_based_wireframe_model, edge_based_wireframe_model, geometric_set, camera_model, camera_model_d3_multi_clipping_intersection, camera_model_d3_multi_clipping_union, light_source)) + SUBTYPE OF (representation_item); +DERIVE + dim : dimension_count := dimension_of(SELF); +WHERE + WR1 : SIZEOF (QUERY (using_rep <* using_representations (SELF) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN + TYPEOF (using_rep.context_of_items)))) = 0; +END_ENTITY; + + +ENTITY geometric_set + SUBTYPE OF (geometric_representation_item); + elements : SET [1:?] OF geometric_set_select; +END_ENTITY; + + +ENTITY geometric_tolerance; + name : label; + description : text; + magnitude : measure_with_unit; + toleranced_shape_aspect : shape_aspect; +WHERE + WR1 : ('NUMBER' IN TYPEOF + (magnitude\measure_with_unit.value_component)) AND + (magnitude\measure_with_unit.value_component >= 0.0); +END_ENTITY; + + +ENTITY geometric_tolerance_relationship; + name : label; + description : text; + relating_geometric_tolerance : geometric_tolerance; + related_geometric_tolerance : geometric_tolerance; +END_ENTITY; + + +ENTITY geometric_tolerance_with_datum_reference + SUBTYPE OF (geometric_tolerance); + datum_system : SET [1:?] OF datum_reference; +END_ENTITY; + + +ENTITY geometric_tolerance_with_defined_unit + SUBTYPE OF (geometric_tolerance); + unit_size : measure_with_unit; +WHERE + WR1 : ('NUMBER' IN TYPEOF + (unit_size\measure_with_unit.value_component)) AND + (unit_size\measure_with_unit.value_component > 0.0); +END_ENTITY; + + +ENTITY geometrical_tolerance_callout + SUBTYPE OF (draughting_callout); +END_ENTITY; + + +ENTITY geometrically_bounded_2d_wireframe_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SELF.context_of_items\geometric_representation_context. + coordinate_space_dimension = 2; + WR2 : SIZEOF (QUERY (item <* SELF.items | + NOT (SIZEOF (TYPEOF (item) * +['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET', +'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_2D', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM']) = 1) + )) = 0; + WR3 : SIZEOF (QUERY (item <* SELF.items | + SIZEOF (TYPEOF (item) * +['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM']) = 1 + )) >= 1; + WR4 : SIZEOF (QUERY (mi <* QUERY (item <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF (item))) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'GEOMETRICALLY_BOUNDED_2D_WIREFRAME_REPRESENTATION' + IN TYPEOF + (mi\mapped_item.mapping_source.mapped_representation)) + )) = 0; + WR5 : SIZEOF (QUERY (gcs <* QUERY (item <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET' + IN TYPEOF (item))) | + NOT (SIZEOF (QUERY (elem <* gcs\geometric_set.elements | + NOT (SIZEOF (TYPEOF (elem) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELLIPSE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_2D', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TRIMMED_CURVE']) = + 1) + )) = 0) + )) = 0; + WR6 : SIZEOF (QUERY (gcs <* QUERY (item <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET' + IN TYPEOF (item))) | + NOT (SIZEOF (QUERY (crv <* + QUERY (elem <* gcs\geometric_set.elements | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE' + IN TYPEOF (elem))) | + NOT (valid_basis_curve_in_2d_wireframe + (crv)) + )) = 0) + )) = 0; + WR7 : SIZEOF (QUERY (gcs <* QUERY (item <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET' + IN TYPEOF (item))) | + NOT (SIZEOF (QUERY (pnt <* + QUERY (elem <* gcs\geometric_set.elements | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT' + IN TYPEOF(elem))) | + NOT (SIZEOF (TYPEOF (pnt) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE']) + = 1) + )) = 0) + )) = 0; +END_ENTITY; + + +ENTITY geometrically_bounded_surface_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF(QUERY(it <* SELF.items | NOT (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_SET', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D'] * TYPEOF(it)) = 1))) = 0; + WR2 : SIZEOF(QUERY(it <* SELF.items | SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_SET', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM'] * TYPEOF(it)) = 1)) > 0; + WR3 : SIZEOF(QUERY(mi <* QUERY(it <* SELF.items | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)) | NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRICALLY_BOUNDED_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 | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_SET' IN TYPEOF(mr_it)))) > 0)))) = 0; + WR4 : SIZEOF(QUERY(gs <* QUERY(it <* SELF.items | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_SET' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(pnt <* QUERY(gsel <* gs\geometric_set.elements | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT' IN TYPEOF(gsel)) | NOT (gbsf_check_point(pnt)))) = 0))) = 0; + WR5 : SIZEOF(QUERY(gs <* QUERY(it <* SELF.items | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_SET' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(cv <* QUERY(gsel <* gs\geometric_set.elements | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE' IN TYPEOF(gsel)) | NOT (gbsf_check_curve(cv)))) = 0))) = 0; + WR6 : SIZEOF(QUERY(gs <* QUERY(it <* SELF.items | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_SET' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(sf <* QUERY(gsel <* gs\geometric_set.elements | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE' IN TYPEOF(gsel)) | NOT (gbsf_check_surface(sf)))) = 0))) = 0; + WR7 : SIZEOF(QUERY(gs <* QUERY(it <* SELF.items | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_SET' IN TYPEOF(it)) | SIZEOF(QUERY(gsel <* gs\geometric_set.elements | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE' IN TYPEOF(gsel))) > 0)) > 0; +END_ENTITY; + + +ENTITY geometrically_bounded_wireframe_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF ( +QUERY ( it <* SELF.items| NOT ( SIZEOF ( TYPEOF (it) * [ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' ]) = 1) )) = 0; + WR2 : SIZEOF ( +QUERY ( it <* SELF.items| ( SIZEOF ( TYPEOF (it) * [ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' ]) = 1) )) >= 1; + WR3 : SIZEOF ( +QUERY ( gcs <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( crv <* +QUERY ( elem <* gcs\geometric_set.elements| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE' IN TYPEOF (elem)) )| NOT valid_geometrically_bounded_wf_curve(crv) )) = 0) )) = 0; + WR4 : SIZEOF ( +QUERY ( gcs <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( pnts <* +QUERY ( elem <* gcs\geometric_set.elements| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT' IN TYPEOF (elem)) )| NOT valid_geometrically_bounded_wf_point(pnts) )) = 0) )) = 0; + WR5 : SIZEOF ( +QUERY ( gcs <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( cnc <* +QUERY ( elem <* gcs\geometric_set.elements| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC' IN TYPEOF (elem)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF (cnc\conic.position)) )) = 0) )) = 0; + WR6 : SIZEOF ( +QUERY ( gcs <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( pline <* +QUERY ( elem <* gcs\geometric_set.elements| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF (elem)) )| NOT ( SIZEOF (pline\polyline.points) > 2) )) = 0) )) = 0; + WR7 : SIZEOF ( +QUERY ( mi <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0; +END_ENTITY; + + +ENTITY global_assignment + SUBTYPE OF (representation_item_relationship); +END_ENTITY; + + +ENTITY global_uncertainty_assigned_context + SUBTYPE OF (representation_context); + uncertainty : SET [1:?] OF uncertainty_measure_with_unit; +END_ENTITY; + + +ENTITY global_unit_assigned_context + SUBTYPE OF (representation_context); + units : SET [1:?] OF unit; +END_ENTITY; + + +ENTITY ground_fact + SUBTYPE OF (atomic_formula); +END_ENTITY; + + +ENTITY group; + name : label; + description : OPTIONAL text; +DERIVE + id : identifier := get_id_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY group_assignment + ABSTRACT SUPERTYPE; + assigned_group : group; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY group_relationship; + name : label; + description : OPTIONAL text; + relating_group : group; + related_group : group; +END_ENTITY; + + +ENTITY half_space_solid + SUBTYPE OF (geometric_representation_item); + base_surface : surface; + agreement_flag : BOOLEAN; +END_ENTITY; + + +ENTITY hardness_representation + SUBTYPE OF (representation); +WHERE + WR1 : ( {2<= SIZEOF ( SELF.items ) <=4} ) AND ( SIZEOF ( QUERY ( + i <* items | ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF ( i ) ) AND ( + i.name IN [ 'measuring method' , 'measuring position' ] ) ) + ) + SIZEOF ( QUERY ( i <* items | ( SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MEASURE_REPRESENTATION_ITEM' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'VALUE_RANGE']* TYPEOF ( i ) ) =1 ) + AND ( i.name IN ['depth' , 'hardness'] ) ) ) = SIZEOF ( + SELF.items ) ); + WR2 : SIZEOF ( QUERY ( i <* SELF.items | i.name = + 'measuring method' ) ) =1; + WR3 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='hardness' ) ) + =1; + WR4 : SIZEOF ( QUERY ( i <* SELF.items | i.name = + 'measuring position' ) ) <=1; + WR5 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='depth' ) ) + <=1; + WR6 : ( SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) ) =1 ) AND ( SIZEOF ( QUERY ( pdr + <* USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) | SIZEOF ( QUERY ( gpa <* USEDIN ( + pdr. definition , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'GENERAL_PROPERTY_ASSOCIATION.'+ + 'DERIVED_DEFINITION' ) | ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'GENERAL_PROPERTY' IN TYPEOF ( gpa. base_definition ) ) AND + ( gpa. base_definition.name ='surface_condition' ) ) ) =1 ) + ) =1 ); +END_ENTITY; + + +ENTITY hidden_element_over_riding_styled_item + SUBTYPE OF (context_dependent_over_riding_styled_item); + SELF\styled_item.item : camera_image; + SELF\context_dependent_over_riding_styled_item.style_context : LIST [1:1] OF presentation_view; +INVERSE + container: SET [1:?] OF presentation_view FOR items; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CAMERA_MODEL_D3_WITH_HLHSR' IN TYPEOF + (SELF.item\mapped_item.mapping_source.mapping_origin); +END_ENTITY; + + +ENTITY hyperbola + SUBTYPE OF (conic); + semi_axis : positive_length_measure; + semi_imag_axis : positive_length_measure; +END_ENTITY; + + +ENTITY id_attribute; + attribute_value : identifier; + identified_item : id_attribute_select; +END_ENTITY; + + +ENTITY identification_assignment + ABSTRACT SUPERTYPE; + assigned_id : identifier; + role : identification_role; +END_ENTITY; + + +ENTITY identification_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY illuminance_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ILLUMINANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY illuminance_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.lux); +END_ENTITY; + + +ENTITY included_text_block + SUBTYPE OF (mapped_item); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRUCTURED_TEXT_REPRESENTATION' IN TYPEOF(SELF\mapped_item.mapping_source.mapped_representation); +END_ENTITY; + + +ENTITY inclusion_product_concept_feature + SUBTYPE OF (conditional_concept_feature); +WHERE + WR1 : NOT ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PACKAGE_PRODUCT_CONCEPT_FEATURE' IN TYPEOF ( SELF ) ); + WR2 : SIZEOF (QUERY + ( cfr <* USEDIN + ( SELF ,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP.RELATING_PRODUCT_CONCEPT_FEATURE' ) + | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN TYPEOF( cfr ) + ) + ) + + SIZEOF(QUERY + ( cfr <* USEDIN + (SELF , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP.RELATED_PRODUCT_CONCEPT_FEATURE' ) + | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN TYPEOF(cfr) + ) + )= 0; + WR3 : SELF.condition.conditional_operator.name = 'implication'; +END_ENTITY; + + +ENTITY indirectly_selected_elements + SUBTYPE OF (user_selected_elements); + indirectly_picked_items : SET [1:?] OF representation_item; +END_ENTITY; + + +ENTITY indirectly_selected_shape_elements + SUBTYPE OF (indirectly_selected_elements, user_selected_shape_elements); +WHERE + WR1 : SIZEOF(QUERY(q <* + SELF\indirectly_selected_elements.indirectly_picked_items + | NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION_ITEM' + IN TYPEOF(q)))) = 0; +END_ENTITY; + + +ENTITY inductance_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INDUCTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY inductance_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.henry); +END_ENTITY; + + +ENTITY information_right + SUBTYPE OF (action_method); +END_ENTITY; + + +ENTITY information_usage_right + SUBTYPE OF (action_method); +END_ENTITY; + + +ENTITY instance_usage_context_assignment + SUBTYPE OF (product_definition_context); + items : SET [1:?] OF instance_usage_context_select; +END_ENTITY; + + +ENTITY instanced_feature + SUBTYPE OF (shape_aspect, shape_feature_definition); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN + TYPEOF(SELF\shape_aspect.of_shape.definition); + WR2 : SELF\shape_aspect.product_definitional; +END_ENTITY; + + +ENTITY int_literal + SUBTYPE OF (literal_number); + SELF\literal_number.the_value : INTEGER; +END_ENTITY; + + +ENTITY integer_representation_item + SUBTYPE OF (representation_item, int_literal); +END_ENTITY; + + +ENTITY intersection_curve + SUBTYPE OF (surface_curve); +WHERE + WR1 : SIZEOF(SELF\surface_curve.associated_geometry) = 2; + WR2 : associated_surface(SELF\surface_curve.associated_geometry[1]) <> + associated_surface(SELF\surface_curve.associated_geometry[2]); +END_ENTITY; + + +ENTITY interval_expression + SUBTYPE OF (boolean_expression, multiple_arity_generic_expression); +DERIVE + interval_high : generic_expression := SELF\multiple_arity_generic_expression.operands[3]; + interval_item : generic_expression := SELF\multiple_arity_generic_expression.operands[2]; + interval_low : generic_expression := SELF\multiple_arity_generic_expression.operands[1]; +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EXPRESSION' + IN TYPEOF(interval_low)) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EXPRESSION' + IN TYPEOF(interval_item) ) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EXPRESSION' + IN TYPEOF(interval_high)); + WR2 : (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_EXPRESSION' + IN TYPEOF (SELF.interval_low)) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_EXPRESSION' + IN TYPEOF (SELF.interval_high)) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_EXPRESSION' + IN TYPEOF (SELF.interval_item))) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_EXPRESSION' + IN TYPEOF(SELF.interval_low)) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NUMERIC_EXPRESSION' + IN TYPEOF(SELF.interval_item)) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NUMERIC_EXPRESSION' + IN TYPEOF(SELF.interval_high))); +END_ENTITY; + + +ENTITY invisibility; + invisible_items : SET [1:?] OF invisible_item; +END_ENTITY; + + +ENTITY iso4217_currency + SUBTYPE OF (currency); +END_ENTITY; + + +ENTITY item_defined_transformation; + name : label; + description : OPTIONAL text; + transform_item_1 : representation_item; + transform_item_2 : representation_item; +END_ENTITY; + + +ENTITY item_identified_representation_usage; + name : label; + description : OPTIONAL text; + definition : represented_definition; + used_representation : representation; + identified_item : representation_item; +WHERE + WR1 : SELF.used_representation IN using_representations(SELF.identified_item); +END_ENTITY; + + +ENTITY known_source + SUBTYPE OF (external_source, pre_defined_item); +END_ENTITY; + + +ENTITY laid_defined_transformation + SUBTYPE OF (transformation_with_derived_angle); +END_ENTITY; + + +ENTITY laminate_table + SUPERTYPE OF (ONEOF (part_laminate_table, zone_structural_makeup)) + SUBTYPE OF (product_definition); +END_ENTITY; + + +ENTITY language + SUBTYPE OF (group); +WHERE + WR1 : SELF\group.name <> ''; +END_ENTITY; + + +ENTITY leader_curve + SUBTYPE OF (annotation_curve_occurrence); +WHERE + WR1 : SIZEOF( + QUERY(ldc <* USEDIN( SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_CALLOUT.CONTENTS') + | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'LEADER_DIRECTED_CALLOUT' IN TYPEOF(ldc))) >= 1; +END_ENTITY; + + +ENTITY leader_directed_callout + SUBTYPE OF (draughting_callout); +WHERE + WR1 : SIZEOF (QUERY (l_1 <* SELF\draughting_callout.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_CURVE' IN (TYPEOF(l_1)))) >= 1; + WR2 : SIZEOF(SELF\draughting_callout.contents) >=2; +END_ENTITY; + + +ENTITY leader_directed_dimension + SUBTYPE OF (leader_directed_callout); +WHERE + WR1 : SIZEOF (QUERY (con <* SELF.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_CURVE' IN TYPEOF (con)))=1; +END_ENTITY; + + +ENTITY leader_terminator + SUBTYPE OF (terminator_symbol); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_CURVE' IN TYPEOF + (SELF\terminator_symbol.annotated_curve); +END_ENTITY; + + +ENTITY length_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY length_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 1.0) AND + (SELF\named_unit.dimensions.mass_exponent = 0.0) AND + (SELF\named_unit.dimensions.time_exponent = 0.0) AND + (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND + (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND + (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND + (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY light_source + SUPERTYPE OF (ONEOF (light_source_ambient, light_source_directional, light_source_positional, light_source_spot)) + SUBTYPE OF (geometric_representation_item); + light_colour : colour; +WHERE + WR1 : SIZEOF(USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'STYLED_ITEM.ITEM')) = 0; +END_ENTITY; + + +ENTITY light_source_ambient + SUBTYPE OF (light_source); +END_ENTITY; + + +ENTITY light_source_directional + SUBTYPE OF (light_source); + orientation : direction; +END_ENTITY; + + +ENTITY light_source_positional + SUBTYPE OF (light_source); + position : cartesian_point; + constant_attenuation : REAL; + distance_attenuation : REAL; +END_ENTITY; + + +ENTITY light_source_spot + SUBTYPE OF (light_source); + position : cartesian_point; + orientation : direction; + concentration_exponent : REAL; + constant_attenuation : REAL; + distance_attenuation : REAL; + spread_angle : positive_plane_angle_measure; +END_ENTITY; + + +ENTITY limits_and_fits; + form_variance : label; + zone_variance : label; + grade : label; + source : text; +END_ENTITY; + + +ENTITY line + SUBTYPE OF (curve); + pnt : cartesian_point; + dir : vector; +WHERE + WR1 : dir.dim = pnt.dim; +END_ENTITY; + + +ENTITY line_profile_tolerance + SUBTYPE OF (geometric_tolerance); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)) OR ( SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 3); + WR2 : SIZEOF ( +QUERY ( sar <* USEDIN (SELF\geometric_tolerance.toleranced_shape_aspect, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| (sar.name IN [ 'affected plane association', 'resulting intersection curve association' ]) )) = 1; +END_ENTITY; + + +ENTITY linear_dimension + SUBTYPE OF (dimension_curve_directed_callout); +END_ENTITY; + + +ENTITY literal_conjunction + SUBTYPE OF (simple_clause); +END_ENTITY; + + +ENTITY literal_disjunction + SUBTYPE OF (simple_clause); +END_ENTITY; + + +ENTITY literal_number + ABSTRACT SUPERTYPE OF (ONEOF (int_literal, real_literal)) + SUBTYPE OF (simple_numeric_expression, generic_literal); + the_value : NUMBER; +END_ENTITY; + + +ENTITY local_time; + hour_component : hour_in_day; + minute_component : OPTIONAL minute_in_hour; + second_component : OPTIONAL second_in_minute; + zone : coordinated_universal_time_offset; +WHERE + WR1 : valid_time (SELF); +END_ENTITY; + + +ENTITY logical_literal + SUBTYPE OF (generic_literal); + lit_value : LOGICAL; +END_ENTITY; + + +ENTITY logical_representation_item + SUBTYPE OF (representation_item, logical_literal); +END_ENTITY; + + +ENTITY loop + SUPERTYPE OF (ONEOF (vertex_loop, edge_loop, poly_loop)) + SUBTYPE OF (topological_representation_item); +END_ENTITY; + + +ENTITY loss_tangent_measure_with_unit + SUBTYPE OF (ratio_measure_with_unit); +END_ENTITY; + + +ENTITY lot_effectivity + SUBTYPE OF (effectivity); + effectivity_lot_id : identifier; + effectivity_lot_size : measure_with_unit; +END_ENTITY; + + +ENTITY luminous_flux_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LUMINOUS_FLUX_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY luminous_flux_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.lumen); +END_ENTITY; + + +ENTITY luminous_intensity_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LUMINOUS_INTENSITY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY luminous_intensity_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 1.0); +END_ENTITY; + + +ENTITY magnetic_flux_density_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAGNETIC_FLUX_DENSITY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY magnetic_flux_density_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.tesla); +END_ENTITY; + + +ENTITY magnetic_flux_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAGNETIC_FLUX_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY magnetic_flux_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.weber); +END_ENTITY; + + +ENTITY make_from_usage_option + SUBTYPE OF (product_definition_usage); + ranking : INTEGER; + ranking_rationale : text; + quantity : measure_with_unit; +WHERE + WR1 : (NOT ('NUMBER' IN TYPEOF(quantity.value_component))) + OR (quantity.value_component > 0); +END_ENTITY; + + +ENTITY manifold_solid_brep + SUBTYPE OF (solid_model); + outer : closed_shell; +END_ENTITY; + + +ENTITY manifold_subsurface_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF (QUERY (it <* SELF.items | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D'] * + TYPEOF(it)) = 1))) = 0; + WR2 : SIZEOF (QUERY (it <* SELF.items | + SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM'] * TYPEOF(it)) =1 )) > 0; + WR3 : SIZEOF (QUERY (mi <* QUERY (it <* items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SUBSURFACE_SHAPE_REPRESENTATION' IN + TYPEOF(mi\mapped_item.mapping_source. + mapped_representation)))) = 0; + WR4 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OPEN_SHELL' IN TYPEOF(cfss)))) = 0; + WR5 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT( (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN + TYPEOF(cfss\connected_face_sub_set.parent_face_set))AND + (SIZEOF(QUERY(fac <* cfss\connected_face_sub_set.parent_face_set\connected_face_set.cfs_faces | NOT + advanced_face_properties(fac))) = 0)) OR + (SIZEOF(QUERY(fac <* cfss\connected_face_sub_set.parent_face_set\connected_face_set.cfs_faces | NOT + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF(fac)))) = 0) + ))) = 0; + WR6 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + ( SIZEOF (QUERY (fac <* cfss\connected_face_set.cfs_faces | NOT + advanced_face_properties(fac))) = 0))) = 0; + WR7 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND + NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN + TYPEOF(oe.edge_element)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBEDGE' IN + TYPEOF(oe.edge_element)) ))) = 0 + ))) = 0 + ))) = 0 + ))) = 0; + WR8 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND + NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF(oe.edge_start)) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN + TYPEOF(oe.edge_end)) + ))) = 0 + ))) = 0 + ))) = 0 + ))) = 0; + WR9 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND + ( NOT (SIZEOF(QUERY (bnds <* fcs.bounds | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP'] * + TYPEOF(bnds.bound)) = 1 ) + )) = 0) + ))) = 0 + ))) = 0; + WR10 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND + ( NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' ] * + TYPEOF(oe.edge_element\edge_curve.edge_geometry)) = 1 ) + )) = 0 + ))) = 0 + )))) = 0 + ))) = 0; + WR11 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND + (NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN + TYPEOF(oe.edge_element\edge_curve.edge_geometry)) AND + (NOT ((SIZEOF (QUERY (sc_ag <* + oe.edge_element\edge_curve.edge_geometry\ + surface_curve.associated_geometry | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN + TYPEOF(sc_ag)))) = 0))) + )) = 0 + ))) = 0 + )))) = 0 + ))) = 0; + WR12 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND + (NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN + TYPEOF(oe.edge_element\edge_curve.edge_geometry)) AND + (NOT (SIZEOF (oe\oriented_edge.edge_element\ + edge_curve.edge_geometry\polyline.points) >= 3)) + )) = 0 + ))) = 0 + )))) = 0 + ))) = 0; +END_ENTITY; + + +ENTITY manifold_surface_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF (QUERY (it <* SELF.items | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D'] * TYPEOF (it)) = 1))) = 0; + WR2 : SIZEOF (QUERY (it <* SELF.items | + SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM'] * TYPEOF (it)) = 1)) > 0; + WR3 : SIZEOF (QUERY (mi <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL' + IN TYPEOF (mr_it)))) > 0 )))) = 0; + WR4 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (sh <* + sbsm\shell_based_surface_model.sbsm_boundary | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OPEN_SHELL', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_CLOSED_SHELL', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CLOSED_SHELL'] + * TYPEOF (sh)) = 1))) = 0))) = 0; + WR5 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE' IN TYPEOF (fa)) )) = 0))) + = 0))) = 0; + WR6 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (bnds <* fa.bounds | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP'] + * TYPEOF (bnds.bound)) = 1))) = 0)))) = 0))) = 0))) = 0; + WR8 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items| + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN TYPEOF + (oe.edge_element)))) = 0))) = 0)))) = 0))) = 0))) = 0; + WR9 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe_cv <* QUERY (oe <* + elp_fbnds\path.edge_list | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN TYPEOF (oe.edge_element)) | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list| + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF + (oe.edge_element.edge_start)) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN + TYPEOF (oe.edge_element.edge_end))))) + = 0))) = 0)))) = 0))) = 0))) = 0; + WR12 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list | + NOT ((SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEGENERATE_PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_SURFACE'] * TYPEOF + (oe.edge_element.edge_start\vertex_point.vertex_geometry)) = 1) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEGENERATE_PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF + (vlp_fbnds\vertex_loop.loop_vertex)))) = 0)))) = 0))) + = 0))) = 0; + WR14 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEGENERATE_PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_SURFACE'] * TYPEOF + (vlp_fbnds\vertex_loop.loop_vertex\vertex_point.vertex_geometry)) + = 1))) = 0)))) = 0))) = 0))) = 0; +END_ENTITY; + + +ENTITY mapped_item + SUBTYPE OF (representation_item); + mapping_source : representation_map; + mapping_target : representation_item; +WHERE + WR1 : acyclic_mapped_representation(SELF); +END_ENTITY; + + +ENTITY mass_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MASS_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY mass_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 1.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY material_designation; + name : label; + definitions : SET [1:?] OF characterized_definition; +END_ENTITY; + + +ENTITY material_designation_characterization; + name : label; + description : text; + designation : material_designation; + property : characterized_material_property; +END_ENTITY; + + +ENTITY material_property + SUBTYPE OF (property_definition); +UNIQUE + UR1: SELF\property_definition.name, SELF\property_definition.definition; +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CHARACTERIZED_OBJECT' IN + TYPEOF(SELF\property_definition.definition)) OR + (SIZEOF(bag_to_set(USEDIN(SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) - + QUERY(temp <* bag_to_set(USEDIN(SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'MATERIAL_PROPERTY_REPRESENTATION' IN + TYPEOF(temp)))) = 0); +END_ENTITY; + + +ENTITY material_property_representation + SUBTYPE OF (property_definition_representation); + dependent_environment : data_environment; +END_ENTITY; + + +ENTITY measure_qualification; + name : label; + description : text; + qualified_measure : measure_with_unit; + qualifiers : SET [1:?] OF value_qualifier; +WHERE + WR1 : SIZEOF(QUERY(temp <* qualifiers | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRECISION_QUALIFIER' + IN TYPEOF(temp))) < 2; + WR2 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION_ITEM' + IN TYPEOF(SELF\measure_qualification.qualified_measure)); +END_ENTITY; + + +ENTITY measure_representation_item + SUBTYPE OF (representation_item, measure_with_unit); +END_ENTITY; + + +ENTITY measure_with_unit + SUPERTYPE OF (ONEOF (length_measure_with_unit, mass_measure_with_unit, time_measure_with_unit, electric_current_measure_with_unit, thermodynamic_temperature_measure_with_unit, celsius_temperature_measure_with_unit, amount_of_substance_measure_with_unit, luminous_intensity_measure_with_unit, plane_angle_measure_with_unit, solid_angle_measure_with_unit, area_measure_with_unit, volume_measure_with_unit, ratio_measure_with_unit, acceleration_measure_with_unit, capacitance_measure_with_unit, electric_charge_measure_with_unit, conductance_measure_with_unit, electric_potential_measure_with_unit, energy_measure_with_unit, magnetic_flux_density_measure_with_unit, force_measure_with_unit, frequency_measure_with_unit, illuminance_measure_with_unit, inductance_measure_with_unit, luminous_flux_measure_with_unit, magnetic_flux_measure_with_unit, power_measure_with_unit, pressure_measure_with_unit, resistance_measure_with_unit, velocity_measure_with_unit, absorbed_dose_measure_with_unit, radioactivity_measure_with_unit, dose_equivalent_measure_with_unit)); + value_component : measure_value; + unit_component : unit; +WHERE + WR1 : valid_units(SELF); +END_ENTITY; + + +ENTITY mechanical_context + SUBTYPE OF (product_context); +WHERE + WR1 : SELF.discipline_type = 'mechanical'; +END_ENTITY; + + +ENTITY mechanical_design_and_draughting_relationship + SUBTYPE OF (definitional_representation_relationship_with_same_context); + SELF\representation_relationship.rep_1 : mechanical_design_and_draughting_relationship_select; + SELF\representation_relationship.rep_2 : mechanical_design_and_draughting_relationship_select; +WHERE + WR1 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'DRAUGHTING_MODEL' IN TYPEOF(rep_2)) OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'DRAUGHTING_MODEL' IN TYPEOF(rep_1)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'SHAPE_REPRESENTATION' IN TYPEOF(rep_1))); + WR2 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION' IN TYPEOF(rep_2)) OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION' IN TYPEOF(rep_1)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'SHAPE_REPRESENTATION' IN TYPEOF(rep_1))); + WR3 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION' IN TYPEOF(rep_2)) OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION' IN TYPEOF(rep_1)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'SHAPE_REPRESENTATION' IN TYPEOF(rep_1))); +END_ENTITY; + + +ENTITY mechanical_design_geometric_presentation_area + SUBTYPE OF (presentation_area); + SELF\representation.items : SET [1:?] OF mechanical_design_geometric_presentation_area_items; +WHERE + WR1 : SIZEOF(QUERY(it1 <* SELF.items | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(it1)) + OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_VIEW' + IN TYPEOF + (it1\mapped_item.mapping_source.mapped_representation)))) = 0; + WR2 : SIZEOF(QUERY(pv <* QUERY(mi1 <* QUERY(it1 <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(it1)) | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_VIEW' + IN TYPEOF + (mi1\mapped_item.mapping_source.mapped_representation)) | + -- search in all presentation_views for axis2_placements and + -- mapped_items and for the subtype of mapped_item + -- camera_image_3d_with_scale; the latter shall reference + -- a mechanical_design_geometric_presentation_representation; + -- the supertype mapped_item shall reference presentation_view. + NOT (SIZEOF(QUERY(it2 <* pv\mapped_item.mapping_source. + mapped_representation\representation.items | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT' + IN TYPEOF(it2)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(it2)) AND NOT + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(it2))) AND NOT ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_VIEW' + IN TYPEOF + (it2\mapped_item.mapping_source.mapped_representation))) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(it2)) + AND NOT ( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION' + IN TYPEOF (it2\mapped_item.mapping_source.mapped_representation) )) + ))) = 0))) = 0; + WR3 : (SIZEOF(QUERY(ps <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') | ((ps.size\planar_extent.size_in_x <= 0) + OR + (ps.size\planar_extent.size_in_y <= 0)))) = 0) + AND + (SIZEOF(QUERY(ais <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AREA_IN_SET.AREA') | + (SIZEOF(QUERY(ps <* USEDIN (ais, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') | + ((ps.size\planar_extent.size_in_x <= 0) + OR + (ps.size\planar_extent.size_in_y <= 0)))) > 0))) = 0); + WR4 : (SIZEOF(QUERY(ps <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_2D' IN TYPEOF (ps.size.placement)))) = 1) + AND + (SIZEOF(QUERY(ps <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_3D' IN TYPEOF (ps.size.placement)))) = 0) + OR + ((SIZEOF(QUERY(ais <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AREA_IN_SET.AREA') | + (SIZEOF(QUERY(ps <* USEDIN (ais, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_2D' IN TYPEOF (ps.size.placement)))) = 1))) = 1) + AND + (SIZEOF(QUERY(ais <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AREA_IN_SET.AREA') | + (SIZEOF(QUERY(ps <* USEDIN (ais, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_3D' IN TYPEOF (ps.size.placement)))) = 0))) = 1)); +END_ENTITY; + + +ENTITY mechanical_design_geometric_presentation_representation + SUBTYPE OF (representation); + SELF\representation.items : SET [1:?] OF mechanical_design_geometric_presentation_representation_items; +WHERE + WR1 : SIZEOF(QUERY(mi <* QUERY(it <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(it))) | NOT (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SHAPE_REPRESENTATION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION'] + * TYPEOF(mi\mapped_item.mapping_source.mapped_representation)) + = 1))) = 0; + WR2 : SIZEOF(QUERY(smi <* QUERY(si <* QUERY(it <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it))) | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(si\styled_item.item))) | NOT ( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SHAPE_REPRESENTATION' IN TYPEOF (smi\styled_item. + item\mapped_item.mapping_source.mapped_representation))) )) = 0; + WR3 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(pss <* psa.styles | NOT (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_STYLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE'] + * TYPEOF(pss)) = 1))) = 0))) = 0))) = 0; + WR4 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | + NOT (SIZEOF(QUERY(psbc <* QUERY(psa <* si\styled_item.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_STYLE_BY_CONTEXT' IN TYPEOF(psa)) | NOT (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION'] + * TYPEOF(psbc\presentation_style_by_context.style_context)) + = 1))) = 0))) = 0; + WR5 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ps <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_STYLE' + IN TYPEOF(pss)) | NOT + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF (ps\point_style.marker_size)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_COLOUR'] + * TYPEOF(ps\point_style.marker_colour)) + = 1)))) = 0))) = 0))) = 0; + WR6 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(cs <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF(pss)) | NOT((SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_COLOUR'] + * TYPEOF(cs\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF (cs\curve_style.curve_width)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_FONT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] + * TYPEOF(cs\curve_style.curve_font)) = 1)))) = 0))) = 0))) = 0; + WR7 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF(pss)) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_SIDE_STYLE' IN TYPEOF + (ssu\surface_style_usage.style)))) = 0))) = 0))) = 0; + WR8 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + NOT (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_PARAMETER_LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_CONTROL_GRID', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_SILHOUETTE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_SEGMENTATION_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_FILL_AREA', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_BOUNDARY'] + * TYPEOF(sses)) = 1))) = 0))) = 0))) = 0))) = 0; + WR9 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sspl <* QUERY(sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_PARAMETER_LINE' IN TYPEOF(sses)) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF + (sspl\surface_style_parameter_line.style_of_parameter_lines)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_COLOUR'] + * TYPEOF(sspl\surface_style_parameter_line. + style_of_parameter_lines\curve_style.curve_colour)) = 1) + AND ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sspl\surface_style_parameter_line. + style_of_parameter_lines\curve_style.curve_width)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_FONT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] + * TYPEOF(sspl\surface_style_parameter_line. + style_of_parameter_lines\curve_style.curve_font)) = 1)))) + = 0))) = 0))) = 0))) = 0; + WR10 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sscg <* QUERY(sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_CONTROL_GRID' IN TYPEOF(sses)) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (sscg\surface_style_control_grid.style_of_control_grid)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_COLOUR'] + * TYPEOF(sscg\surface_style_control_grid. + style_of_control_grid\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sscg\surface_style_control_grid. + style_of_control_grid\curve_style.curve_width)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_FONT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] + * TYPEOF(sscg\surface_style_control_grid. + style_of_control_grid\curve_style.curve_font)) = 1)))) + = 0))) = 0))) = 0))) = 0; + WR11 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | + NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sssh <* QUERY(sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_SILHOUETTE' IN TYPEOF(sses)) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (sssh\surface_style_silhouette.style_of_silhouette)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_COLOUR'] + * TYPEOF(sssh\surface_style_silhouette. + style_of_silhouette\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sssh\surface_style_silhouette.style_of_silhouette\curve_style. + curve_width)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_FONT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] + * TYPEOF(sssh\surface_style_silhouette. + style_of_silhouette\curve_style.curve_font)) = 1)))) + = 0))) = 0))) = 0))) = 0; + WR12 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sssc <* QUERY(sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_SEGMENTATION_CURVE' IN TYPEOF(sses)) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF + (sssc\surface_style_segmentation_curve.style_of_segmentation_curve)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_COLOUR'] + * TYPEOF(sssc\surface_style_segmentation_curve. + style_of_segmentation_curve\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sssc\surface_style_segmentation_curve. + style_of_segmentation_curve\curve_style.curve_width)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_FONT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] + * TYPEOF(sssc\surface_style_segmentation_curve. + style_of_segmentation_curve\curve_style.curve_font)) = 1)))) + = 0))) = 0))) = 0))) = 0; + WR13 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(ssbd <* QUERY(sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_BOUNDARY' IN TYPEOF(sses)) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (ssbd\surface_style_boundary.style_of_boundary)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_COLOUR'] + * TYPEOF(ssbd\surface_style_boundary. + style_of_boundary\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF (ssbd\surface_style_boundary. + style_of_boundary\curve_style.curve_width)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_FONT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] + * TYPEOF(ssbd\surface_style_boundary. + style_of_boundary\curve_style.curve_font)) = 1)))) = 0))) + = 0))) = 0))) = 0; +END_ENTITY; + + +ENTITY mechanical_design_presentation_representation_with_draughting + SUBTYPE OF (representation); + SELF\representation.items : SET [1:?] OF camera_model_d3; +END_ENTITY; + + +ENTITY mechanical_design_shaded_presentation_area + SUBTYPE OF (presentation_area); +WHERE + WR1 : SIZEOF (QUERY (it1 <* SELF.items | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT' + IN TYPEOF (it1)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF (it1)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_VIEW' + IN TYPEOF + (it1\mapped_item.mapping_source.mapped_representation)))))) = 0; + WR2 : SIZEOF (QUERY (pv <* QUERY (mi1 <* QUERY (it1 <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF (it1)) | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_VIEW' + IN TYPEOF + (mi1\mapped_item.mapping_source.mapped_representation)) | + (* search in all presentation_views for axis2_placements and + mapped_items and for the subtype of mapped_item, + camera_image_3d_with_scale; the latter shall reference + a mechanical_design_geometric_presentation_representation; + the supertype mapped_item shall reference presentation_view. *) + NOT (SIZEOF(QUERY(it2 <* pv\mapped_item.mapping_source. + mapped_representation\representation.items | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT' + IN TYPEOF(it2)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(it2)) AND NOT + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(it2))) AND NOT ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_VIEW' + IN TYPEOF + (it2\mapped_item.mapping_source.mapped_representation))) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(it2)) + AND NOT ( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION' + IN TYPEOF (it2\mapped_item.mapping_source.mapped_representation) )) + ))) = 0))) = 0; + WR3 : (SIZEOF (QUERY(ps <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') | + NOT ((ps.size\planar_extent.size_in_x > 0) + AND (ps.size\planar_extent.size_in_y > 0)) )) = 0) + AND + (* check secondly for presentation_set, via area_in_set *) + (SIZEOF (QUERY(pset <* QUERY(ais <* + USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AREA_IN_SET.AREA') + | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SET' IN TYPEOF (ais.in_set)) | + (* after having collected all presentation_set, check their sizes *) + SIZEOF (QUERY(psize <* USEDIN(pset, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') + | NOT ((psize.size\planar_extent.size_in_x > 0) + AND (psize.size\planar_extent.size_in_y > 0)) )) = 0)) = 0); + WR4 : (SIZEOF(QUERY( psize <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') + | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_2D' + IN TYPEOF (psize.size.placement))) = 1) + AND + (* check secondly for presentation_set, via area_in_set *) + (SIZEOF (QUERY(pset <* QUERY(ais <* + USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AREA_IN_SET.AREA') + | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SET' IN TYPEOF (ais.in_set)) | + (* after having collected all presentation_set, check their + dimension *) + SIZEOF (QUERY(psize <* USEDIN(pset, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') + | NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_2D' + IN TYPEOF (psize.size.placement)) )) = 0)) = 0); + WR5 : SIZEOF (QUERY (pv <* QUERY (mi1 <* QUERY (it1 <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF (it1)) | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_VIEW' + IN TYPEOF + (mi1\mapped_item.mapping_source.mapped_representation)) | + (* search in all presentation_views for + mapped_items and for the subtype of mapped_item, + camera_image_3d_with_scale; the latter shall reference + a camera_usage that shall have as its mapping_origin either + camera_model_d3, camera_model_d3_with_hlhsr, or + camera_model_with_light_sources. *) + NOT (SIZEOF(QUERY(ci <* pv\mapped_item.mapping_source. + mapped_representation\representation.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(ci)) + AND + (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CAMERA_MODEL_D3', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CAMERA_MODEL_D3_WITH_HLHSR', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CAMERA_MODEL_WITH_LIGHT_SOURCES'] * TYPEOF + (ci\mapped_item.mapping_source.mapping_origin)) + = 1))) = 0))) = 0; +END_ENTITY; + + +ENTITY mechanical_design_shaded_presentation_representation + SUBTYPE OF (representation); +WHERE + WR1 : SIZEOF(QUERY(it <* SELF.items | + NOT (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CAMERA_MODEL_D3'] + * TYPEOF(it)) = 1))) = 0; + WR2 : SIZEOF(QUERY(mi <* QUERY(it <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(it))) | NOT (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SHAPE_REPRESENTATION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION'] + * TYPEOF(mi\mapped_item.mapping_source.mapped_representation)) + = 1))) = 0; + WR3 : SIZEOF(QUERY(smi <* QUERY(si <* QUERY(it <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it))) | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(si\styled_item.item))) | NOT ( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SHAPE_REPRESENTATION' IN TYPEOF (smi\styled_item. + item\mapped_item.mapping_source.mapped_representation))) )) = 0; + WR4 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (pss <* psa.styles | + NOT (SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_STYLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE'] + * TYPEOF (pss)) = 1))) = 0))) = 0))) = 0; + WR5 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psbc <* QUERY (psa <* si\styled_item.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'PRESENTATION_STYLE_BY_CONTEXT' IN TYPEOF (psa)) | + NOT (SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION'] + * TYPEOF (psbc\presentation_style_by_context.style_context)) = 1))) + = 0))) = 0; + WR6 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ps <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_STYLE' + IN TYPEOF (pss)) | + NOT ( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MARKER_TYPE' + IN TYPEOF (ps\point_style.marker)) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF + (ps\point_style.marker_size)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (ps\point_style.marker_colour)) = 1)))) = 0))) = 0))) = 0; + WR7 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (cs <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (pss)) | + NOT ( + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (cs\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF + (cs\curve_style.curve_width)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CURVE_STYLE_FONT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF + (cs\curve_style.curve_font)) = 1)))) = 0))) = 0))) = 0; + WR8 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_SIDE_STYLE' + IN TYPEOF (ssu\surface_style_usage.style)) )) = 0))) = 0 ))) = 0; + WR9 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + NOT (SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_PARAMETER_LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_CONTROL_GRID', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_SILHOUETTE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_SEGMENTATION_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_BOUNDARY', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_FILL_AREA', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_RENDERING'] * TYPEOF (sses)) = 1))) = 0))) = 0))) + = 0))) = 0; + WR10 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (ssfa <* QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_FILL_AREA' + IN TYPEOF (sses)) | + NOT (SIZEOF (QUERY (fss <* + ssfa\surface_style_fill_area.fill_area.fill_styles | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'FILL_AREA_STYLE_COLOUR' IN TYPEOF (fss)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (fss\fill_area_style_colour.fill_colour)) = 1)))) = 0))) = 0))) + = 0))) = 0))) = 0; + WR11 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (sspl <* QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_PARAMETER_LINE' IN TYPEOF (sses)) | + NOT (( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' IN TYPEOF + (sspl\surface_style_parameter_line.style_of_parameter_lines)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sspl\surface_style_parameter_line. + style_of_parameter_lines\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sspl\surface_style_parameter_line. + style_of_parameter_lines\curve_style.curve_width)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CURVE_STYLE_FONT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF + (sspl\surface_style_parameter_line. + style_of_parameter_lines\curve_style.curve_font)) = 1)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_RENDERING' + IN TYPEOF + (sspl\surface_style_parameter_line.style_of_parameter_lines)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sspl\surface_style_parameter_line.style_of_parameter_lines\ + curve_style_rendering.rendering_properties.rendered_colour)) + = 1))) )) = 0))) = 0))) = 0))) = 0; + WR12 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (sscg <* QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_CONTROL_GRID' IN TYPEOF (sses)) | + NOT (( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (sscg\surface_style_control_grid.style_of_control_grid)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sscg\surface_style_control_grid. + style_of_control_grid\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sscg\surface_style_control_grid. + style_of_control_grid\curve_style.curve_width)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CURVE_STYLE_FONT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF + (sscg\surface_style_control_grid. + style_of_control_grid\curve_style.curve_font)) = 1)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_RENDERING' + IN TYPEOF (sscg\surface_style_control_grid.style_of_control_grid)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sscg\surface_style_control_grid.style_of_control_grid\ + curve_style_rendering.rendering_properties.rendered_colour)) + = 1))) )) = 0))) = 0))) = 0))) = 0; + WR13 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (sssh <* QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_SILHOUETTE' IN TYPEOF (sses)) | + NOT (( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (sssh\surface_style_silhouette.style_of_silhouette)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sssh\surface_style_silhouette. + style_of_silhouette\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sssh\surface_style_silhouette. + style_of_silhouette\curve_style.curve_width)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CURVE_STYLE_FONT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF + (sssh\surface_style_silhouette. + style_of_silhouette\curve_style.curve_font)) = 1)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_RENDERING' + IN TYPEOF (sssh\surface_style_silhouette.style_of_silhouette)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sssh\surface_style_silhouette.style_of_silhouette\ + curve_style_rendering.rendering_properties.rendered_colour)) + = 1))) )) = 0))) = 0))) = 0))) = 0; + WR14 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (sssc <* QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_SEGMENTATION_CURVE' IN TYPEOF (sses)) | + NOT (( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF + (sssc\surface_style_segmentation_curve.style_of_segmentation_curve)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sssc\surface_style_segmentation_curve. + style_of_segmentation_curve\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sssc\surface_style_segmentation_curve. + style_of_segmentation_curve\curve_style.curve_width)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CURVE_STYLE_FONT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF + (sssc\surface_style_segmentation_curve. + style_of_segmentation_curve\curve_style.curve_font)) = 1)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_RENDERING' + IN TYPEOF (sssc\surface_style_segmentation_curve. + style_of_segmentation_curve)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sssc\surface_style_segmentation_curve.style_of_segmentation_curve\ + curve_style_rendering.rendering_properties.rendered_colour)) + = 1))) )) = 0))) = 0))) = 0))) = 0; + WR15 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (ssbd <* QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_BOUNDARY' IN TYPEOF (sses)) | + NOT (( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (ssbd\surface_style_boundary.style_of_boundary)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (ssbd\surface_style_boundary. + style_of_boundary\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF + (ssbd\surface_style_boundary. + style_of_boundary\curve_style.curve_width)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CURVE_STYLE_FONT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF + (ssbd\surface_style_boundary. + style_of_boundary\curve_style.curve_font)) = 1)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_RENDERING' + IN TYPEOF (ssbd\surface_style_boundary.style_of_boundary)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (ssbd\surface_style_boundary.style_of_boundary\ + curve_style_rendering.rendering_properties.rendered_colour)) + = 1))) )) = 0))) = 0))) = 0))) = 0; + WR16 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (ssre <* QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_RENDERING' IN TYPEOF (sses)) | + NOT + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (ssre\surface_style_rendering.surface_colour)) = 1))) + = 0))) = 0))) = 0))) = 0; +END_ENTITY; + + +ENTITY min_and_major_ply_orientation_basis + SUBTYPE OF (representation_item_relationship, geometric_representation_item); + SELF\representation_item_relationship.related_representation_item : axis2_placement_3d; + SELF\representation_item_relationship.relating_representation_item : axis2_placement_3d; +DERIVE + major_orientation_basis : axis2_placement_3d := SELF\representation_item_relationship.related_representation_item; + minor_orientation_basis : axis2_placement_3d := SELF\representation_item_relationship.relating_representation_item; +END_ENTITY; + + +ENTITY modified_geometric_tolerance + SUBTYPE OF (geometric_tolerance); + modifier : limit_condition; +END_ENTITY; + + +ENTITY modified_solid + ABSTRACT SUPERTYPE OF (ONEOF (edge_blended_solid, sculptured_solid, shelled_solid, modified_solid_with_placed_configuration)) + SUBTYPE OF (solid_model); + rationale : text; + base_solid : base_solid_select; +END_ENTITY; + + +ENTITY modified_solid_with_placed_configuration + ABSTRACT SUPERTYPE OF (ONEOF (solid_with_depression, solid_with_protrusion, solid_with_shape_element_pattern)) + SUBTYPE OF (modified_solid); + placing : axis2_placement_3d; +END_ENTITY; + + +ENTITY moments_of_inertia_representation + SUBTYPE OF (representation); +WHERE + WR1 : (SIZEOF(SELF.items) = 1) AND + (SIZEOF( QUERY( i <* SELF.items | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'COMPOUND_REPRESENTATION_ITEM' IN TYPEOF(i)) AND + (i.name = 'moments of inertia matrix') )) = 1); + WR2 : SIZEOF( QUERY( i <* SELF.items | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'COMPOUND_REPRESENTATION_ITEM' IN TYPEOF(i)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'LIST_REPRESENTATION_ITEM' IN TYPEOF(i\compound_representation_item.item_element)) AND + value_range_aggregate_rep_item (i\compound_representation_item.item_element) )) = 1; +END_ENTITY; + + +ENTITY multi_language_attribute_assignment + SUBTYPE OF (attribute_value_assignment); + items : SET [1:?] OF multi_language_attribute_item; +DERIVE + translation_language : language := language_indication[1]\attribute_classification_assignment.assigned_class; +INVERSE + language_indication: SET [1:1] OF attribute_language_assignment FOR items; +WHERE + WR1 : (SELF\attribute_value_assignment.role.name = 'alternate language'); + WR2 : SIZEOF( QUERY( ala <* language_indication | + (ala\attribute_classification_assignment.attribute_name = 'attribute_value') AND + (ala\attribute_classification_assignment.role.name='translated') )) = 1; + WR3 : SELF\attribute_value_assignment.attribute_name <> ''; + WR4 : SIZEOF(QUERY(ci <* items | +SIZEOF(QUERY(ata <* USEDIN(ci, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | +(ata\attribute_value_assignment.attribute_name = SELF\attribute_value_assignment.attribute_name) AND +(ata.translation_language :=: translation_language) ))>1 )) =0; + WR5 : SIZEOF(QUERY(ci <* items | +SIZEOF(QUERY(ata <* USEDIN(ci, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | + (ata\attribute_classification_assignment.role.name='primary') AND + (ata\attribute_classification_assignment.attribute_name= SELF\attribute_value_assignment.attribute_name) AND + (ata\attribute_classification_assignment.assigned_class :=: translation_language) ))>0 )) =0; +END_ENTITY; + + +ENTITY multiple_arity_boolean_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (boolean_expression, multiple_arity_generic_expression); + SELF\multiple_arity_generic_expression.operands : LIST [2:?] OF boolean_expression; +END_ENTITY; + + +ENTITY multiple_arity_generic_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (generic_expression); + operands : LIST [2:?] OF generic_expression; +END_ENTITY; + + +ENTITY multiple_arity_numeric_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (numeric_expression, multiple_arity_generic_expression); + SELF\multiple_arity_generic_expression.operands : LIST [2:?] OF numeric_expression; +END_ENTITY; + + +ENTITY name_assignment + ABSTRACT SUPERTYPE; + assigned_name : label; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY name_attribute; + attribute_value : label; + named_item : name_attribute_select; +END_ENTITY; + + +ENTITY named_unit + SUPERTYPE OF ((ONEOF (si_unit, conversion_based_unit, context_dependent_unit) ANDOR ONEOF (length_unit, mass_unit, time_unit, electric_current_unit, thermodynamic_temperature_unit, amount_of_substance_unit, luminous_flux_unit, luminous_intensity_unit, plane_angle_unit, solid_angle_unit, ratio_unit))); + dimensions : dimensional_exponents; +END_ENTITY; + + +ENTITY next_assembly_usage_occurrence + SUBTYPE OF (assembly_component_usage); +END_ENTITY; + + +ENTITY non_manifold_surface_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF (QUERY (it <* SELF.items | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D'] * TYPEOF (it)) = 1))) + = 0; + WR2 : SIZEOF (QUERY (it <* SELF.items | + SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM'] * TYPEOF (it)) = 1)) > 0; + WR3 : SIZEOF (QUERY (mi <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'NON_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 | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' + IN TYPEOF (mr_it)))) > 0 )))) = 0; + WR4 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_FACE'] * TYPEOF (fa)) = 1))) + = 0))) = 0))) = 0; + WR5 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (f_sf <* QUERY (fa <* cfs.cfs_faces | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE' IN TYPEOF (fa))) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (f_sf)) + OR + (nmsf_surface_check(f_sf\face_surface.face_geometry))))) = 0))) + = 0))) = 0; + WR6 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (o_fa <* QUERY (fa <* cfs.cfs_faces | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_FACE' IN TYPEOF (fa))) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF + (o_fa\oriented_face.face_element)) + OR + (nmsf_surface_check + (o_fa\oriented_face.face_element\face_surface.face_geometry))))) + = 0))) = 0))) = 0; + WR7 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (bnds <* fa.bounds | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP'] + * TYPEOF (bnds.bound)) = 1))) = 0)))) = 0))) = 0))) = 0; + WR8 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items| + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN TYPEOF + (oe.edge_element)))) = 0))) = 0)))) = 0))) = 0))) = 0; + WR9 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe_cv <* QUERY (oe <* + elp_fbnds\path.edge_list | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN TYPEOF (oe.edge_element)) | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE'] * + TYPEOF (oe_cv.edge_element\edge_curve.edge_geometry)) + = 1))) = 0))) = 0)))) = 0))) = 0))) = 0; + WR10 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list | + NOT (nmsf_curve_check (oe.edge_element\edge_curve.edge_geometry)))) + = 0))) = 0)))) = 0))) = 0))) = 0; + WR11 : SIZEOF (QUERY(fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list| + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF + (oe.edge_element.edge_start)) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN + TYPEOF (oe.edge_element.edge_end))))) + = 0))) = 0)))) = 0))) = 0))) = 0; + WR12 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list | + NOT ((SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEGENERATE_PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_SURFACE'] * TYPEOF + (oe.edge_element.edge_start\vertex_point.vertex_geometry)) = 1) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEGENERATE_PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_SURFACE'] * TYPEOF + (oe.edge_element.edge_end\vertex_point.vertex_geometry)) = 1 + )))) = 0))) = 0)))) = 0))) = 0))) = 0; + WR13 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF + (vlp_fbnds\vertex_loop.loop_vertex)))) = 0)))) = 0))) + = 0))) = 0; + WR14 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEGENERATE_PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_SURFACE'] * TYPEOF + (vlp_fbnds\vertex_loop.loop_vertex\vertex_point.vertex_geometry)) + = 1))) = 0)))) = 0))) = 0))) = 0; +END_ENTITY; + + +ENTITY null_representation_item + SUBTYPE OF (representation_item); +END_ENTITY; + + +ENTITY numeric_expression + ABSTRACT SUPERTYPE OF (ONEOF (simple_numeric_expression, unary_numeric_expression, binary_numeric_expression, multiple_arity_numeric_expression)) + SUBTYPE OF (expression); +DERIVE + is_int : LOGICAL := is_int_expr (SELF); + sql_mappable : LOGICAL := is_SQL_mappable (SELF); +END_ENTITY; + + +ENTITY object_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY offset_curve_2d + SUBTYPE OF (curve); + basis_curve : curve; + distance : length_measure; + self_intersect : LOGICAL; +WHERE + WR1 : basis_curve.dim = 2; +END_ENTITY; + + +ENTITY offset_curve_3d + SUBTYPE OF (curve); + basis_curve : curve; + distance : length_measure; + self_intersect : LOGICAL; + ref_direction : direction; +WHERE + WR1 : (basis_curve.dim = 3) AND (ref_direction.dim = 3); +END_ENTITY; + + +ENTITY offset_surface + SUBTYPE OF (surface); + basis_surface : surface; + distance : length_measure; + self_intersect : LOGICAL; +END_ENTITY; + + +ENTITY one_direction_repeat_factor + SUBTYPE OF (geometric_representation_item); + repeat_factor : vector; +END_ENTITY; + + +ENTITY open_shell + SUBTYPE OF (connected_face_set); +END_ENTITY; + + +ENTITY ordinal_date + SUBTYPE OF (date); + day_component : day_in_year_number; +WHERE + WR1 : (NOT leap_year(SELF.year_component) AND { 1 <= day_component <= 365 }) OR (leap_year(SELF.year_component) AND { 1 <= day_component <= 366 }); +END_ENTITY; + + +ENTITY ordinate_dimension + SUBTYPE OF (projection_directed_callout); +END_ENTITY; + + +ENTITY organization; + id : OPTIONAL identifier; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY organization_assignment + ABSTRACT SUPERTYPE; + assigned_organization : organization; + role : organization_role; +END_ENTITY; + + +ENTITY organization_relationship; + name : label; + description : OPTIONAL text; + relating_organization : organization; + related_organization : organization; +END_ENTITY; + + +ENTITY organization_role; + name : label; +DERIVE + description : text := get_description_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY organizational_address + SUBTYPE OF (address); + organizations : SET [1:?] OF organization; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY organizational_project; + name : label; + description : OPTIONAL text; + responsible_organizations : SET [1:?] OF organization; +DERIVE + id : identifier := get_id_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY organizational_project_assignment + ABSTRACT SUPERTYPE; + assigned_organizational_project : organizational_project; + role : organizational_project_role; +END_ENTITY; + + +ENTITY organizational_project_relationship; + name : label; + description : OPTIONAL text; + relating_organizational_project : organizational_project; + related_organizational_project : organizational_project; +END_ENTITY; + + +ENTITY organizational_project_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY oriented_closed_shell + SUBTYPE OF (closed_shell); + closed_shell_element : closed_shell; + orientation : BOOLEAN; +DERIVE + SELF\connected_face_set.cfs_faces : SET [1:?] OF face := conditional_reverse(SELF.orientation, + SELF.closed_shell_element.cfs_faces); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_CLOSED_SHELL' + IN TYPEOF (SELF.closed_shell_element)); +END_ENTITY; + + +ENTITY oriented_edge + SUBTYPE OF (edge); + edge_element : edge; + orientation : BOOLEAN; +DERIVE + SELF\edge.edge_end : vertex := boolean_choose (SELF.orientation, + SELF.edge_element.edge_end, + SELF.edge_element.edge_start); + SELF\edge.edge_start : vertex := boolean_choose (SELF.orientation, + SELF.edge_element.edge_start, + SELF.edge_element.edge_end); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_EDGE' IN TYPEOF (SELF.edge_element)); +END_ENTITY; + + +ENTITY oriented_face + SUBTYPE OF (face); + face_element : face; + orientation : BOOLEAN; +DERIVE + SELF\face.bounds : SET [1:?] OF face_bound := conditional_reverse(SELF.orientation,SELF.face_element.bounds); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_FACE' IN TYPEOF (SELF.face_element)); +END_ENTITY; + + +ENTITY oriented_open_shell + SUBTYPE OF (open_shell); + open_shell_element : open_shell; + orientation : BOOLEAN; +DERIVE + SELF\connected_face_set.cfs_faces : SET [1:?] OF face := conditional_reverse(SELF.orientation, + SELF.open_shell_element.cfs_faces); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_OPEN_SHELL' + IN TYPEOF (SELF.open_shell_element)); +END_ENTITY; + + +ENTITY oriented_path + SUBTYPE OF (path); + path_element : path; + orientation : BOOLEAN; +DERIVE + SELF\path.edge_list : LIST [1:?] OF UNIQUE oriented_edge := conditional_reverse(SELF.orientation, + SELF.path_element.edge_list); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_PATH' IN TYPEOF (SELF.path_element)); +END_ENTITY; + + +ENTITY oriented_surface + SUBTYPE OF (surface); + orientation : BOOLEAN; +END_ENTITY; + + +ENTITY outer_boundary_curve + SUBTYPE OF (boundary_curve); +END_ENTITY; + + +ENTITY over_riding_styled_item + SUBTYPE OF (styled_item); + over_ridden_style : styled_item; +END_ENTITY; + + +ENTITY package_product_concept_feature + SUBTYPE OF (product_concept_feature); +WHERE + WR1 : NOT ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONDITIONAL_CONCEPT_FEATURE' IN TYPEOF ( SELF ) ); + WR2 : SIZEOF ( QUERY + ( + cfr <* USEDIN ( SELF , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP.' +'RELATING_PRODUCT_CONCEPT_FEATURE' ) + | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN TYPEOF (cfr ) ) + AND + ( SIZEOF ( QUERY + ( + ipcf <* USEDIN ( cfr , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONDITIONAL_CONCEPT_FEATURE.' + 'CONDITION' ) + | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'INCLUSION_PRODUCT_CONCEPT_FEATURE' IN TYPEOF ( ipcf ) + ) + )= 1 + ) + ) + )>0; +END_ENTITY; + + +ENTITY parabola + SUBTYPE OF (conic); + focal_dist : length_measure; +WHERE + WR1 : focal_dist <> 0.0; +END_ENTITY; + + +ENTITY parallel_offset + SUBTYPE OF (derived_shape_aspect); + offset : measure_with_unit; +WHERE + WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1; +END_ENTITY; + + +ENTITY parallelism_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) < 3; +END_ENTITY; + + +ENTITY parametric_representation_context + SUBTYPE OF (representation_context); +END_ENTITY; + + +ENTITY part_laminate_table + SUPERTYPE OF (ONEOF (composite_assembly_table, ply_laminate_table)) + SUBTYPE OF (laminate_table); +END_ENTITY; + + +ENTITY partial_document_with_structured_text_representation_assignment + SUBTYPE OF (applied_document_usage_constraint_assignment, characterized_object); +END_ENTITY; + + +ENTITY path + SUPERTYPE OF (ONEOF (edge_loop, oriented_path)) + SUBTYPE OF (topological_representation_item); + edge_list : LIST [1:?] OF UNIQUE oriented_edge; +WHERE + WR1 : path_head_to_tail(SELF); +END_ENTITY; + + +ENTITY pcurve + SUBTYPE OF (curve); + basis_surface : surface; + reference_to_curve : definitional_representation; +WHERE + WR1 : SIZEOF(reference_to_curve\representation.items) = 1; + WR2 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE' IN TYPEOF + (reference_to_curve\representation.items[1]); + WR3 : reference_to_curve\representation.items[1]\ + geometric_representation_item.dim =2; +END_ENTITY; + + +ENTITY percentage_laminate_definition + SUBTYPE OF (product_definition); +WHERE + WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.' + + 'RELATING_PRODUCT_DEFINITION') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN + TYPEOF (pdr))) > 0; +END_ENTITY; + + +ENTITY percentage_laminate_table + SUBTYPE OF (zone_structural_makeup); +END_ENTITY; + + +ENTITY percentage_ply_definition + SUBTYPE OF (product_definition); +WHERE + WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PERCENTAGE_LAMINATE_DEFINITION' + IN TYPEOF (pdr.related_product_definition)) AND + (pdr.name = 'makeup and properties'))) = 0; +END_ENTITY; + + +ENTITY perpendicular_to + SUBTYPE OF (derived_shape_aspect); +WHERE + WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1; +END_ENTITY; + + +ENTITY perpendicularity_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 3; +END_ENTITY; + + +ENTITY person; + id : identifier; + last_name : OPTIONAL label; + first_name : OPTIONAL label; + middle_names : OPTIONAL LIST [1:?] OF label; + prefix_titles : OPTIONAL LIST [1:?] OF label; + suffix_titles : OPTIONAL LIST [1:?] OF label; +WHERE + WR1 : EXISTS(last_name) OR EXISTS(first_name); +END_ENTITY; + + +ENTITY person_and_organization; + the_person : person; + the_organization : organization; +DERIVE + description : text := get_description_value(SELF); + name : label := get_name_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY person_and_organization_address + SUBTYPE OF (organizational_address, personal_address); + SELF\organizational_address.organizations : SET [1:1] OF organization; + SELF\personal_address.people : SET [1:1] OF person; +WHERE + WR1 : SIZEOF(QUERY(pao <* USEDIN (SELF\personal_address.people[1], 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PERSON_AND_ORGANIZATION.THE_PERSON') | pao.the_organization :=: SELF\organizational_address.organizations[1])) = 1; +END_ENTITY; + + +ENTITY person_and_organization_assignment + ABSTRACT SUPERTYPE; + assigned_person_and_organization : person_and_organization; + role : person_and_organization_role; +END_ENTITY; + + +ENTITY person_and_organization_role; + name : label; +DERIVE + description : text := get_description_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY personal_address + SUBTYPE OF (address); + people : SET [1:?] OF person; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY physical_breakdown_context + SUBTYPE OF (breakdown_context); +END_ENTITY; + + +ENTITY physical_element_usage + SUBTYPE OF (breakdown_element_usage); +END_ENTITY; + + +ENTITY picture_representation + SUBTYPE OF (presentation_view); + SELF\representation.items : SET [2:?] OF picture_representation_item_select; +INVERSE + size: presentation_size FOR unit; +WHERE + WR1: SIZEOF(QUERY(item <* items | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' IN TYPEOF(item))) = 1; + WR2: SIZEOF (QUERY (se <* QUERY (item <* SELF.items | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' IN TYPEOF (item))) + | NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PICTURE_REPRESENTATION_ITEM' + IN TYPEOF (se\styled_item.item)) )) = 0; +END_ENTITY; + + +ENTITY picture_representation_item + ABSTRACT SUPERTYPE OF (ONEOF (externally_defined_picture_representation_item, predefined_picture_representation_item)) + SUBTYPE OF (bytes_representation_item); +END_ENTITY; + + +ENTITY placed_datum_target_feature + SUBTYPE OF (datum_target); +DERIVE + representation_associations : SET [0:?] OF property_definition_representation := get_shape_aspect_property_definition_representations(SELF); +WHERE + WR1 : SELF.description IN ['point','line','rectangle','circle', 'circular line']; + WR2 : SIZEOF (QUERY (pdr <* representation_associations | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation) )) = 1; + WR3 : valid_datum_target_parameters(SELF); +END_ENTITY; + + +ENTITY placed_feature + SUBTYPE OF (shape_aspect); +END_ENTITY; + + +ENTITY placement + SUPERTYPE OF (ONEOF (axis1_placement, axis2_placement_2d, axis2_placement_3d)) + SUBTYPE OF (geometric_representation_item); + location : cartesian_point; +END_ENTITY; + + +ENTITY planar_box + SUBTYPE OF (planar_extent); + placement : axis2_placement; +END_ENTITY; + + +ENTITY planar_extent + SUBTYPE OF (geometric_representation_item); + size_in_x : length_measure; + size_in_y : length_measure; +END_ENTITY; + + +ENTITY plane + SUBTYPE OF (elementary_surface); +END_ENTITY; + + +ENTITY plane_angle_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE_ANGLE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY plane_angle_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY plus_minus_tolerance; + range : tolerance_method_definition; + toleranced_dimension : dimensional_characteristic; +UNIQUE + UR1 : toleranced_dimension; +END_ENTITY; + + +ENTITY ply_laminate_definition + SUBTYPE OF (product_definition); +WHERE + WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.' + + 'RELATING_PRODUCT_DEFINITION') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN + TYPEOF (pdr))) = 1; +END_ENTITY; + + +ENTITY ply_laminate_sequence_definition + SUBTYPE OF (product_definition); +WHERE + WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.' + + 'RELATING_PRODUCT_DEFINITION') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN + TYPEOF (pdr))) > 0; +END_ENTITY; + + +ENTITY ply_laminate_table + SUBTYPE OF (part_laminate_table); +END_ENTITY; + + +ENTITY point + SUPERTYPE OF (ONEOF (cartesian_point, point_on_curve, point_on_surface, point_replica, degenerate_pcurve)) + SUBTYPE OF (geometric_representation_item); +END_ENTITY; + + +ENTITY point_and_vector + SUBTYPE OF (compound_representation_item, geometric_representation_item); + SELF\compound_representation_item.item_element : point_and_vector_members; +END_ENTITY; + + +ENTITY point_on_curve + SUBTYPE OF (point); + basis_curve : curve; + point_parameter : parameter_value; +END_ENTITY; + + +ENTITY point_on_surface + SUBTYPE OF (point); + basis_surface : surface; + point_parameter_u : parameter_value; + point_parameter_v : parameter_value; +END_ENTITY; + + +ENTITY point_path + SUBTYPE OF (compound_representation_item, geometric_representation_item); + SELF\compound_representation_item.item_element : point_path_members; +END_ENTITY; + + +ENTITY point_replica + SUBTYPE OF (point); + parent_pt : point; + transformation : cartesian_transformation_operator; +WHERE + WR1 : transformation.dim = parent_pt.dim; + WR2 : acyclic_point_replica (SELF,parent_pt); +END_ENTITY; + + +ENTITY point_style + SUBTYPE OF (founded_item); + name : label; + marker : marker_select; + marker_size : size_select; + marker_colour : colour; +END_ENTITY; + + +ENTITY polar_complex_number_literal + SUBTYPE OF (generic_literal); + radius : REAL; + angle : REAL; +WHERE + WR1 : radius >= 0; + WR2 : { 0 <= angle < 2*PI }; +END_ENTITY; + + +ENTITY poly_loop + SUBTYPE OF (loop, geometric_representation_item); + polygon : LIST [3:?] OF UNIQUE cartesian_point; +END_ENTITY; + + +ENTITY polyline + SUBTYPE OF (bounded_curve); + points : LIST [2:?] OF cartesian_point; +END_ENTITY; + + +ENTITY position_tolerance + SUBTYPE OF (geometric_tolerance); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)) OR ( SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 3); +END_ENTITY; + + +ENTITY positioned_sketch + SUBTYPE OF (geometric_representation_item); + sketch_basis : sketch_basis_select; + auxiliary_elements : SET [0:?] OF auxiliary_geometric_representation_item; +WHERE + WR1 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_BOUNDED_SURFACE' IN + TYPEOF(sketch_basis)) AND NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE' IN + TYPEOF(sketch_basis\curve_bounded_surface.basis_surface))); + WR2 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE' IN TYPEOF(sketch_basis)) AND + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE' IN TYPEOF(sketch_basis\face_surface.face_geometry))); + WR3 : SIZEOF(QUERY(q <* auxiliary_elements | (SIZEOF(TYPEOF(q) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT','AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE']) = 0))) = 0; + WR4 : SIZEOF(QUERY(q <* auxiliary_elements | + q\geometric_representation_item.dim <> 3)) = 0; +END_ENTITY; + + +ENTITY power_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POWER_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY power_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.watt); +END_ENTITY; + + +ENTITY pre_defined_colour + SUBTYPE OF (pre_defined_item, colour); +END_ENTITY; + + +ENTITY pre_defined_curve_font + SUBTYPE OF (pre_defined_item); +END_ENTITY; + + +ENTITY pre_defined_dimension_symbol + SUBTYPE OF (pre_defined_symbol); +WHERE + WR1 : SELF.name IN [ 'arc length' , 'conical taper' , 'counterbore' , 'countersink' , 'depth' , 'diameter' , 'plus minus' , 'radius' , 'slope' , 'spherical diameter' , 'spherical radius' , 'square']; +END_ENTITY; + + +ENTITY pre_defined_geometrical_tolerance_symbol + SUBTYPE OF (pre_defined_symbol); +WHERE + WR1 : SELF.name IN ['angularity' , 'basic dimension' , 'blanked datum reference' , 'circular runout' , 'circularity' , 'concentricity' , 'cylindricity' , 'datum target identification' , 'diameter' , 'filled datum reference' , 'flatness' , 'least material condition' , 'maximum material condition' , 'parallelism' , 'perpendicularity' , 'position' , 'profile of a line' , 'profile of a surface' , 'projected tolerance zone' , 'regardless of feature size' , 'straightness' , 'symmetry' , 'total runout' ]; +END_ENTITY; + + +ENTITY pre_defined_item; + name : label; +END_ENTITY; + + +ENTITY pre_defined_marker + SUBTYPE OF (pre_defined_item); +END_ENTITY; + + +ENTITY pre_defined_point_marker_symbol + SUBTYPE OF (pre_defined_marker, pre_defined_symbol); +WHERE + WR1 : SELF.name IN ['asterisk','circle','dot','plus','square','triangle','x']; +END_ENTITY; + + +ENTITY pre_defined_surface_condition_symbol + SUBTYPE OF (pre_defined_symbol); +WHERE + WR1 : SELF.name IN ['000' , '010' , '020' , '030' , '040' , '050' , '060' , '070' , '001' , '011' , '021' , '031' , '041' , '051' , '061' , '071' , '100' , '110' , '120' , '130' , '140' , '150' , '160' , '170' , '101' , '111' , '121' , '131' , '141' , '151' , '161' , '171' , '200' , '210' , '220' , '230' , '240' , '250' , '260' , '270' , '201' , '211' , '221' , '231' , '241' , '251' , '261' , '271']; +END_ENTITY; + + +ENTITY pre_defined_surface_side_style + SUBTYPE OF (pre_defined_item); +END_ENTITY; + + +ENTITY pre_defined_symbol + SUBTYPE OF (pre_defined_item); +END_ENTITY; + + +ENTITY pre_defined_terminator_symbol + SUBTYPE OF (pre_defined_symbol); +WHERE + WR1 : SELF.name IN ['blanked arrow', 'blanked box', 'blanked dot', 'blanked triangle', 'dimension origin', 'filled arrow', 'filled box', 'filled dot', 'integral symbol', 'open arrow', 'slash', 'unfilled arrow', 'unfilled triangle', 'filled triangle']; +END_ENTITY; + + +ENTITY pre_defined_text_font + SUBTYPE OF (pre_defined_item); +END_ENTITY; + + +ENTITY pre_defined_tile + SUBTYPE OF (pre_defined_item); +END_ENTITY; + + +ENTITY precision_qualifier; + precision_value : INTEGER; +END_ENTITY; + + +ENTITY predefined_picture_representation_item + SUBTYPE OF (picture_representation_item); +WHERE + WR1 : SELF\representation_item.name IN pre_defined_picture_representation_types; +END_ENTITY; + + +ENTITY presentation_area + SUBTYPE OF (presentation_representation); +WHERE + WR1 : ((SIZEOF (QUERY (ais <* USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AREA_IN_SET.AREA') | + SIZEOF (USEDIN (ais, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT')) =1)) > 0) OR + (SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT')) =1)); +END_ENTITY; + + +ENTITY presentation_layer_assignment; + name : label; + description : text; + assigned_items : SET [1:?] OF layered_item; +END_ENTITY; + + +ENTITY presentation_representation + SUPERTYPE OF (ONEOF (presentation_area, presentation_view)) + SUBTYPE OF (representation); + SELF\representation.context_of_items : geometric_representation_context; +WHERE + WR1 : SELF\representation. + context_of_items\geometric_representation_context. + coordinate_space_dimension = 2; + WR2 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_AREA' IN TYPEOF (SELF)) + OR + (SIZEOF (QUERY (prr <* USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'REPRESENTATION_RELATIONSHIP.REP_2') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_REPRESENTATION' IN + TYPEOF (prr\representation_relationship.rep_1))) > 0) + OR + (SIZEOF(QUERY( rm <* USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'REPRESENTATION_MAP.'+ + 'MAPPED_REPRESENTATION') | + SIZEOF(QUERY( mi <* USEDIN(rm, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'MAPPED_ITEM.'+ + 'MAPPING_SOURCE') | + SIZEOF(QUERY( rep <* using_representations (mi) | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'PRESENTATION_REPRESENTATION' IN + TYPEOF (rep))) > 0 + )) > 0)) + > 0); +END_ENTITY; + + +ENTITY presentation_set; +INVERSE + areas: SET [1:?] OF area_in_set FOR in_set; +END_ENTITY; + + +ENTITY presentation_size; + unit : presentation_size_assignment_select; + size : planar_box; +UNIQUE + UR1 : unit; +WHERE + WR1 : (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_REPRESENTATION' + IN TYPEOF (SELF.unit)) AND + item_in_context (SELF.size, + SELF.unit\representation.context_of_items) + ) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AREA_IN_SET' + IN TYPEOF (SELF.unit)) AND + (SIZEOF (QUERY ( ais <* SELF.unit\area_in_set.in_set.areas | + NOT item_in_context (SELF.size, ais.area\representation. + context_of_items) )) = 0)); +END_ENTITY; + + +ENTITY presentation_style_assignment + SUBTYPE OF (founded_item); + styles : SET [1:?] OF presentation_style_select; +WHERE + WR1 : SIZEOF (QUERY (style1 <* SELF.styles | + NOT (SIZEOF (QUERY (style2 <* (SELF.styles - style1) | + NOT ((TYPEOF (style1) <> TYPEOF (style2)) OR + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_USAGE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'EXTERNALLY_DEFINED_STYLE'] * + TYPEOF (style1)) = 1) + ))) = 0 + ))) = 0; + WR2 : SIZEOF (QUERY (style1 <* SELF.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' IN + TYPEOF(style1) + )) <= 2; + WR3 : SIZEOF (QUERY (style1 <* SELF.styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF (style1)) AND + (SIZEOF (QUERY (style2 <* (SELF.styles - style1) | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF (style2)) AND + ((style1\surface_style_usage.side = both) OR + (style2\surface_style_usage.side = both) OR + (style1\surface_style_usage.side = style2\surface_style_usage.side)) )) > 0))) = 0; +END_ENTITY; + + +ENTITY presentation_style_by_context + SUBTYPE OF (presentation_style_assignment); + style_context : style_context_select; +END_ENTITY; + + +ENTITY presentation_view + SUBTYPE OF (presentation_representation); +END_ENTITY; + + +ENTITY presented_item + ABSTRACT SUPERTYPE; +END_ENTITY; + + +ENTITY presented_item_representation; + presentation : presentation_representation_select; + item : presented_item; +END_ENTITY; + + +ENTITY pressure_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESSURE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY pressure_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.pascal); +END_ENTITY; + + +ENTITY procedural_representation + SUBTYPE OF (representation); + SELF\representation.items : SET [1:?] OF procedural_representation_sequence; +END_ENTITY; + + +ENTITY procedural_representation_sequence + SUBTYPE OF (representation_item); + elements : LIST [1:?] OF representation_item; + suppressed_items : SET [0:?] OF representation_item; + rationale : text; +WHERE + WR1 : SIZEOF(QUERY(q <* suppressed_items | NOT (q IN elements))) = 0; +END_ENTITY; + + +ENTITY procedural_shape_representation + SUBTYPE OF (procedural_representation, shape_representation); + SELF\representation.items : SET [1:?] OF procedural_shape_representation_sequence; +END_ENTITY; + + +ENTITY procedural_shape_representation_sequence + SUBTYPE OF (geometric_representation_item, procedural_representation_sequence); +WHERE + WR1 : SIZEOF(QUERY(q <* SELF\procedural_representation_sequence.elements + | NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION_ITEM' + IN TYPEOF(q)))) = 0; +END_ENTITY; + + +ENTITY product; + id : identifier; + name : label; + description : OPTIONAL text; + frame_of_reference : SET [1:?] OF product_context; +END_ENTITY; + + +ENTITY product_category; + name : label; + description : OPTIONAL text; +DERIVE + id : identifier := get_id_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY product_class + SUBTYPE OF (product_concept, characterized_object); +END_ENTITY; + + +ENTITY product_concept; + id : identifier; + name : label; + description : OPTIONAL text; + market_context : product_concept_context; +UNIQUE + UR1 : id; +END_ENTITY; + + +ENTITY product_concept_context + SUBTYPE OF (application_context_element); + market_segment_type : label; +END_ENTITY; + + +ENTITY product_concept_feature; + id : identifier; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY product_concept_feature_association; + name : label; + description : OPTIONAL text; + concept : product_concept; + feature : product_concept_feature; +END_ENTITY; + + +ENTITY product_concept_feature_category + SUBTYPE OF (group); +WHERE + WR1 : SIZEOF(QUERY + ( + aga <* USEDIN( SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GROUP_ASSIGNMENT.ASSIGNED_GROUP' ) + | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'APPLIED_GROUP_ASSIGNMENT' IN TYPEOF(aga)) + AND + ( + ( aga.role.name <> 'specification category member' ) + OR + ( SIZEOF(QUERY + ( + i <* aga.items + | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'PRODUCT_CONCEPT_FEATURE' IN TYPEOF ( i ) ) + AND + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'CONDITIONAL_CONCEPT_FEATURE' IN TYPEOF (i)) + ) + ) <> SIZEOF (aga.items) + ) + ) + ) + ) =0; +END_ENTITY; + + +ENTITY product_concept_feature_category_usage + SUBTYPE OF (group_assignment); + items : SET [1:?] OF category_usage_item; + SELF\group_assignment.assigned_group : product_concept_feature_category; +WHERE + WR1 : SELF.role.name IN [ 'mandatory category usage', 'optional category usage' ]; +END_ENTITY; + + +ENTITY product_concept_relationship; + name : label; + description : OPTIONAL text; + relating_product_concept : product_concept; + related_product_concept : product_concept; +END_ENTITY; + + +ENTITY product_context + SUBTYPE OF (application_context_element); + discipline_type : label; +END_ENTITY; + + +ENTITY product_definition + SUPERTYPE OF (ONEOF (composite_assembly_definition, composite_assembly_sequence_definition, laminate_table, percentage_laminate_definition, percentage_ply_definition, ply_laminate_definition, ply_laminate_sequence_definition, thickness_laminate_definition)); + id : identifier; + description : OPTIONAL text; + formation : product_definition_formation; + frame_of_reference : product_definition_context; +DERIVE + name : label := get_name_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY product_definition_context + SUBTYPE OF (application_context_element); + life_cycle_stage : label; +END_ENTITY; + + +ENTITY product_definition_context_association; + definition : product_definition; + frame_of_reference : product_definition_context; + role : product_definition_context_role; +END_ENTITY; + + +ENTITY product_definition_context_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY product_definition_effectivity + SUBTYPE OF (effectivity); + usage : product_definition_relationship; +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'EFFECTIVITY_ASSIGNMENT.ASSIGNED_EFFECTIVITY')) = 0; +END_ENTITY; + + +ENTITY product_definition_element_relationship + SUBTYPE OF (group); +END_ENTITY; + + +ENTITY product_definition_formation; + id : identifier; + description : OPTIONAL text; + of_product : product; +UNIQUE + UR1 : id, of_product; +END_ENTITY; + + +ENTITY product_definition_formation_relationship; + id : identifier; + name : label; + description : OPTIONAL text; + relating_product_definition_formation : product_definition_formation; + related_product_definition_formation : product_definition_formation; +END_ENTITY; + + +ENTITY product_definition_formation_with_specified_source + SUBTYPE OF (product_definition_formation); + make_or_buy : source; +END_ENTITY; + + +ENTITY product_definition_group_assignment + SUBTYPE OF (group_assignment); + items : SET [1:1] OF product_definition_or_product_definition_relationship; + SELF\group_assignment.assigned_group : product_definition_element_relationship; +END_ENTITY; + + +ENTITY product_definition_occurrence_relationship; + name : label; + description : OPTIONAL text; + occurrence : product_definition; + occurrence_usage : assembly_component_usage; +WHERE + WR1 : occurrence_usage.relating_product_definition :<>: + occurrence; + WR2 : occurrence_usage.related_product_definition :<>: + occurrence; + WR3 : occurrence.formation :=: + occurrence_usage.related_product_definition.formation; +END_ENTITY; + + +ENTITY product_definition_relationship; + id : identifier; + name : label; + description : OPTIONAL text; + relating_product_definition : product_definition; + related_product_definition : product_definition; +END_ENTITY; + + +ENTITY product_definition_shape + SUBTYPE OF (property_definition); +UNIQUE + UR1: SELF\property_definition.definition; +WHERE + WR1 : SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CHARACTERIZED_PRODUCT_DEFINITION', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CHARACTERIZED_OBJECT'] * TYPEOF(SELF\property_definition.definition)) > 0; +END_ENTITY; + + +ENTITY product_definition_substitute; + description : OPTIONAL text; + context_relationship : product_definition_relationship; + substitute_definition : product_definition; +DERIVE + name : label := get_name_value(SELF); +WHERE + WR1 : context_relationship.related_product_definition :<>: substitute_definition; + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY product_definition_usage + SUPERTYPE OF (ONEOF (make_from_usage_option, assembly_component_usage)) + SUBTYPE OF (product_definition_relationship); +UNIQUE + UR1: SELF\product_definition_relationship.id, + SELF\product_definition_relationship.relating_product_definition, + SELF\product_definition_relationship.related_product_definition; + WHERE + WR1 : acyclic_product_definition_relationship + (SELF, + [SELF\product_definition_relationship.related_product_definition], + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_USAGE'); +END_ENTITY; + + +ENTITY product_definition_with_associated_documents + SUBTYPE OF (product_definition); + documentation_ids : SET [1:?] OF document; +END_ENTITY; + + +ENTITY product_identification + SUBTYPE OF (configuration_item, characterized_object); + SELF\configuration_item.item_concept : product_class; +WHERE + WR1 : SIZEOF(QUERY + ( cd <* USEDIN ( SELF ,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONFIGURATION_DESIGN.CONFIGURATION' ) + | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'PRODUCT_DEFINITION_FORMATION' IN TYPEOF ( cd. design ) ) + AND + ( SIZEOF ( QUERY + ( + prpc <* USEDIN ( cd. design\product_definition_formation.of_product , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') + | + prpc. name IN ['part' , 'raw material' , 'tool'] ) ) >0 + ) + ) + ) <=1; + WR2 : NOT ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'CONFIGURABLE_ITEM' IN TYPEOF( SELF ) ) + XOR ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'PRODUCT_SPECIFICATION' IN TYPEOF ( SELF ) ); +END_ENTITY; + + +ENTITY product_material_composition_relationship + SUBTYPE OF (product_definition_relationship); + class : label; + constituent_amount : SET [1:?] OF characterized_product_composition_value; + composition_basis : label; + determination_method : text; +END_ENTITY; + + +ENTITY product_related_product_category + SUBTYPE OF (product_category); + products : SET [1:?] OF product; +END_ENTITY; + + +ENTITY product_specification + SUBTYPE OF (product_identification, configurable_item); +END_ENTITY; + + +ENTITY projected_zone_definition + SUBTYPE OF (tolerance_zone_definition); + projection_end : shape_aspect; + projected_length : measure_with_unit; +WHERE + WR1 : ('NUMBER' IN TYPEOF + (projected_length\measure_with_unit.value_component)) AND + (projected_length\measure_with_unit.value_component > 0.0); + WR2 : (derive_dimensional_exponents + (projected_length\measure_with_unit.unit_component)= + dimensional_exponents(1,0,0,0,0,0,0)); +END_ENTITY; + + +ENTITY projection_curve + SUBTYPE OF (annotation_curve_occurrence); +END_ENTITY; + + +ENTITY projection_directed_callout + SUBTYPE OF (draughting_callout); +WHERE + WR1 : SIZEOF(QUERY(p_1<*SELF\draughting_callout.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_CURVE' IN (TYPEOF(p_1))))=1; + WR2 : SIZEOF(SELF\draughting_callout.contents) >=2; +END_ENTITY; + + +ENTITY promissory_usage_occurrence + SUBTYPE OF (assembly_component_usage); +END_ENTITY; + + +ENTITY property_definition; + name : label; + description : OPTIONAL text; + definition : characterized_definition; +DERIVE + id : identifier := get_id_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY property_definition_relationship; + name : label; + description : text; + relating_property_definition : property_definition; + related_property_definition : property_definition; +END_ENTITY; + + +ENTITY property_definition_representation; + definition : represented_definition; + used_representation : representation; +DERIVE + description : text := get_description_value(SELF); + name : label := get_name_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY qualified_representation_item + SUBTYPE OF (representation_item); + qualifiers : SET [1:?] OF value_qualifier; +WHERE + WR1 : SIZEOF(QUERY(temp <* qualifiers | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRECISION_QUALIFIER' + IN TYPEOF(temp))) < 2; +END_ENTITY; + + +ENTITY qualitative_uncertainty + SUBTYPE OF (uncertainty_qualifier); + uncertainty_value : text; +END_ENTITY; + + +ENTITY quantified_assembly_component_usage + SUBTYPE OF (assembly_component_usage); + quantity : measure_with_unit; +WHERE + WR1 : (NOT ('NUMBER' IN TYPEOF(quantity.value_component))) + OR (quantity.value_component > 0); +END_ENTITY; + + +ENTITY quasi_uniform_curve + SUBTYPE OF (b_spline_curve); +END_ENTITY; + + +ENTITY quasi_uniform_surface + SUBTYPE OF (b_spline_surface); +END_ENTITY; + + +ENTITY radioactivity_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RADIOACTIVITY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY radioactivity_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.becquerel); +END_ENTITY; + + +ENTITY radius_dimension + SUBTYPE OF (dimension_curve_directed_callout); +WHERE + WR1 : SIZEOF (QUERY (con <* SELF.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_CURVE' IN TYPEOF (con)))<=1; +END_ENTITY; + + +ENTITY range_characteristic + SUBTYPE OF (representation, descriptive_representation_item); +WHERE + WR1 : NOT(SELF\representation.name IN ['tolerance', 'minimum tolerance', 'maximum tolerance', + 'nominal tolerance', 'plus minus tolerance', 'symmetrical tolerance', 'statistical tolerance']); +END_ENTITY; + + +ENTITY ratio_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RATIO_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY ratio_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY rational_b_spline_curve + SUBTYPE OF (b_spline_curve); + weights_data : LIST [2:?] OF REAL; +DERIVE + weights : ARRAY [0:upper_index_on_control_points] OF REAL := list_to_array(weights_data,0, + upper_index_on_control_points); +WHERE + WR1 : SIZEOF(weights_data) = SIZEOF(SELF\b_spline_curve. + control_points_list); + WR2 : curve_weights_positive(SELF); +END_ENTITY; + + +ENTITY rational_b_spline_surface + SUBTYPE OF (b_spline_surface); + weights_data : LIST [2:?] OF LIST [2:?] OF REAL; +DERIVE + weights : ARRAY [0:u_upper] OF ARRAY [0:v_upper] OF REAL := make_array_of_array(weights_data,0,u_upper,0,v_upper); +WHERE + WR1 : (SIZEOF(weights_data) = + SIZEOF(SELF\b_spline_surface.control_points_list)) + AND (SIZEOF(weights_data[1]) = + SIZEOF(SELF\b_spline_surface.control_points_list[1])); + WR2 : surface_weights_positive(SELF); +END_ENTITY; + + +ENTITY rational_representation_item + SUBTYPE OF (representation_item, slash_expression); +WHERE + WR1 : SIZEOF( QUERY( operand <* SELF\binary_generic_expression.operands | + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INT_LITERAL' IN TYPEOF(operand)))) = 0; +END_ENTITY; + + +ENTITY real_literal + SUBTYPE OF (literal_number); + SELF\literal_number.the_value : REAL; +END_ENTITY; + + +ENTITY real_representation_item + SUBTYPE OF (representation_item, real_literal); +END_ENTITY; + + +ENTITY rectangular_composite_surface + SUBTYPE OF (bounded_surface); + segments : LIST [1:?] OF LIST [1:?] OF surface_patch; +DERIVE + n_u : INTEGER := SIZEOF(segments); + n_v : INTEGER := SIZEOF(segments[1]); +WHERE + WR1 : SIZEOF(QUERY (s <* segments | n_v <> SIZEOF (s))) = 0; + WR2 : constraints_rectangular_composite_surface(SELF); +END_ENTITY; + + +ENTITY rectangular_trimmed_surface + SUBTYPE OF (bounded_surface); + basis_surface : surface; + u1 : parameter_value; + u2 : parameter_value; + v1 : parameter_value; + v2 : parameter_value; + usense : BOOLEAN; + vsense : BOOLEAN; +WHERE + WR1 : u1 <> u2; + WR2 : v1 <> v2; + WR3 : (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELEMENTARY_SURFACE' IN TYPEOF(basis_surface)) + AND (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE' IN TYPEOF(basis_surface)))) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_OF_REVOLUTION' IN TYPEOF(basis_surface)) + OR (usense = (u2 > u1)); + WR4 : (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SPHERICAL_SURFACE' IN TYPEOF(basis_surface)) + OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TOROIDAL_SURFACE' IN TYPEOF(basis_surface))) + OR (vsense = (v2 > v1)); +END_ENTITY; + + +ENTITY referenced_modified_datum + SUBTYPE OF (datum_reference); + modifier : limit_condition; +END_ENTITY; + + +ENTITY relative_event_occurrence + SUBTYPE OF (event_occurrence); + base_event : event_occurrence; + offset : time_measure_with_unit; +END_ENTITY; + + +ENTITY rep_item_group + SUBTYPE OF (group, representation_item); +WHERE + WR1 : SIZEOF(USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRESENTATION_LAYER_ASSIGNMENT.' + 'ASSIGNED_ITEMS')) > 0; + WR2 : SIZEOF(QUERY(r <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION.' + 'ITEMS') | r.name = 'group representation')) > 0; + WR3 : SIZEOF(QUERY(ga <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GROUP_ASSIGNMENT.' + 'ASSIGNED_GROUP') | ga.role.name <> 'group membership')) = 0; + WR4 : SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_REPRESENTATION_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'TOPOLOGICAL_REPRESENTATION_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'MAPPED_ITEM','AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'STYLED_ITEM'] * TYPEOF(SELF)) = 1; +END_ENTITY; + + +ENTITY reparametrised_composite_curve_segment + SUBTYPE OF (composite_curve_segment); + param_length : parameter_value; +WHERE + WR1 : param_length > 0.0; +END_ENTITY; + + +ENTITY representation; + name : label; + items : SET [1:?] OF representation_item; + context_of_items : representation_context; +DERIVE + description : text := get_description_value (SELF); + id : identifier := get_id_value (SELF); +WHERE + WR1 : SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) + <= 1; + WR2 : SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) + <= 1; +END_ENTITY; + + +ENTITY representation_context; + context_identifier : identifier; + context_type : text; +INVERSE + representations_in_context: SET [1:?] OF representation FOR context_of_items; +END_ENTITY; + + +ENTITY representation_item + SUPERTYPE OF (ONEOF (binary_representation_item, compound_representation_item, mapped_item, value_representation_item, mapped_item, styled_item, boolean_representation_item, date_representation_item, date_time_representation_item, integer_representation_item, logical_representation_item, rational_representation_item, real_representation_item)); + name : label; +WHERE + WR1 : SIZEOF(using_representations(SELF)) > 0; +END_ENTITY; + + +ENTITY representation_item_relationship; + name : label; + description : OPTIONAL text; + relating_representation_item : representation_item; + related_representation_item : representation_item; +END_ENTITY; + + +ENTITY representation_map; + mapping_origin : representation_item; + mapped_representation : representation; +INVERSE + map_usage: SET [1:?] OF mapped_item FOR mapping_source; +WHERE + WR1 : item_in_context(SELF.mapping_origin, + SELF.mapped_representation.context_of_items); +END_ENTITY; + + +ENTITY representation_relationship; + name : label; + description : OPTIONAL text; + rep_1 : representation; + rep_2 : representation; +END_ENTITY; + + +ENTITY representation_relationship_with_transformation + SUBTYPE OF (representation_relationship); + transformation_operator : transformation; +WHERE + WR1 : SELF\representation_relationship.rep_1.context_of_items + :<>: SELF\representation_relationship.rep_2.context_of_items; +END_ENTITY; + + +ENTITY requirement_assigned_object + SUBTYPE OF (group_assignment); + items : SET [1:1] OF requirement_assigned_item; + SELF\group_assignment.assigned_group : requirement_assignment; +END_ENTITY; + + +ENTITY requirement_assignment + SUBTYPE OF (characterized_object, group); +END_ENTITY; + + +ENTITY requirement_source + SUBTYPE OF (group); +END_ENTITY; + + +ENTITY requirement_view_definition_relationship + SUBTYPE OF (product_definition_relationship); +END_ENTITY; + + +ENTITY resistance_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RESISTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY resistance_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.ohm); +END_ENTITY; + + +ENTITY revolved_area_solid + SUBTYPE OF (swept_area_solid); + axis : axis1_placement; + angle : plane_angle_measure; +DERIVE + axis_line : line := representation_item('')|| + geometric_representation_item()|| curve()|| + line(axis.location, representation_item('')|| + geometric_representation_item()|| + vector(axis.z, 1.0)); +END_ENTITY; + + +ENTITY revolved_face_solid + SUBTYPE OF (swept_face_solid); + axis : axis1_placement; + angle : plane_angle_measure; +DERIVE + axis_line : line := representation_item('')|| + geometric_representation_item()|| curve()|| + line(axis.location, representation_item('')|| + geometric_representation_item()|| + vector(axis.z, 1.0)); +END_ENTITY; + + +ENTITY revolved_face_solid_with_trim_conditions + SUBTYPE OF (revolved_face_solid); + first_trim_condition : trim_condition_select; + second_trim_condition : trim_condition_select; +WHERE + WR1 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(first_trim_condition)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(second_trim_condition))); + WR2 : NOT((('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE_ANGLE_MEASURE' + IN TYPEOF(first_trim_condition)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE_ANGLE_MEASURE' + IN TYPEOF(second_trim_condition))) AND + (first_trim_condition = second_trim_condition)); +END_ENTITY; + + +ENTITY right_angular_wedge + SUBTYPE OF (geometric_representation_item); + position : axis2_placement_3d; + x : positive_length_measure; + y : positive_length_measure; + z : positive_length_measure; + ltx : length_measure; +WHERE + WR1 : ((0.0 <= ltx) AND (ltx < x)); +END_ENTITY; + + +ENTITY right_circular_cone + SUBTYPE OF (geometric_representation_item); + position : axis1_placement; + height : positive_length_measure; + radius : length_measure; + semi_angle : plane_angle_measure; +WHERE + WR1 : radius >= 0.0; +END_ENTITY; + + +ENTITY right_circular_cylinder + SUBTYPE OF (geometric_representation_item); + position : axis1_placement; + height : positive_length_measure; + radius : positive_length_measure; +END_ENTITY; + + +ENTITY right_to_usage_association + SUBTYPE OF (action_method_relationship); + SELF\action_method_relationship.related_method : information_right; + SELF\action_method_relationship.relating_method : information_usage_right; +DERIVE + right_applied : information_right := SELF\action_method_relationship.related_method; + right_usage : information_usage_right := SELF\action_method_relationship.relating_method; +END_ENTITY; + + +ENTITY role_association; + role : object_role; + item_with_role : role_select; +END_ENTITY; + + +ENTITY roundness_tolerance + SUBTYPE OF (geometric_tolerance); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)); +END_ENTITY; + + +ENTITY row_representation_item + SUBTYPE OF (compound_representation_item); + SELF\compound_representation_item.item_element : list_representation_item; +END_ENTITY; + + +ENTITY row_value + SUBTYPE OF (compound_representation_item); +END_ENTITY; + + +ENTITY row_variable + SUBTYPE OF (abstract_variable); +END_ENTITY; + + +ENTITY rule_action + SUBTYPE OF (action); +END_ENTITY; + + +ENTITY rule_condition + SUBTYPE OF (atomic_formula); +END_ENTITY; + + +ENTITY rule_definition + SUBTYPE OF (rule_software_definition); +END_ENTITY; + + +ENTITY rule_set + SUBTYPE OF (rule_software_definition); +END_ENTITY; + + +ENTITY rule_set_group + SUBTYPE OF (rule_software_definition); +END_ENTITY; + + +ENTITY rule_software_definition + SUBTYPE OF (product_definition); +END_ENTITY; + + +ENTITY rule_superseded_assignment + SUBTYPE OF (action_assignment); + items : SET [1:?] OF rule_superseded_item; +END_ENTITY; + + +ENTITY rule_supersedence + SUBTYPE OF (rule_action); +END_ENTITY; + + +ENTITY ruled_surface_swept_area_solid + SUBTYPE OF (surface_curve_swept_area_solid); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF(SELF.reference_surface)) AND + (SELF.reference_surface\b_spline_surface.u_degree = 1); + WR2 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(SELF.directrix)) OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' IN TYPEOF(SELF.directrix\surface_curve.curve_3d)) + AND + (SELF.directrix\surface_curve.curve_3d\b_spline_curve.degree = + SELF.reference_surface\b_spline_surface.v_degree)); +END_ENTITY; + + +ENTITY runout_zone_definition + SUBTYPE OF (tolerance_zone_definition); + orientation : runout_zone_orientation; +END_ENTITY; + + +ENTITY runout_zone_orientation; + angle : measure_with_unit; +END_ENTITY; + + +ENTITY runout_zone_orientation_reference_direction + SUBTYPE OF (runout_zone_orientation); + orientation_defining_relationship : shape_aspect_relationship; +END_ENTITY; + + +ENTITY satisfied_requirement + SUBTYPE OF (group_assignment); + items : SET [1:1] OF product_definition; + SELF\group_assignment.assigned_group : satisfies_requirement; +END_ENTITY; + + +ENTITY satisfies_requirement + SUBTYPE OF (group); +END_ENTITY; + + +ENTITY satisfying_item + SUBTYPE OF (group_assignment); + items : SET [1:1] OF requirement_satisfaction_item; + SELF\group_assignment.assigned_group : satisfies_requirement; +END_ENTITY; + + +ENTITY scalar_variable + SUBTYPE OF (abstract_variable); +END_ENTITY; + + +ENTITY scattering_parameter + SUBTYPE OF (polar_complex_number_literal); +WHERE + WR1 : SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\polar_complex_number_literal || + SELF\scattering_parameter))) = 0; +END_ENTITY; + + +ENTITY sculptured_solid + SUBTYPE OF (modified_solid); + sculpturing_element : generalized_surface_select; + positive_side : BOOLEAN; +END_ENTITY; + + +ENTITY seam_curve + SUBTYPE OF (surface_curve); +WHERE + WR1 : SIZEOF(SELF\surface_curve.associated_geometry) = 2; + WR2 : associated_surface(SELF\surface_curve.associated_geometry[1]) = + associated_surface(SELF\surface_curve.associated_geometry[2]); + WR3 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN + TYPEOF(SELF\surface_curve.associated_geometry[1]); + WR4 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN + TYPEOF(SELF\surface_curve.associated_geometry[2]); +END_ENTITY; + + +ENTITY security_classification; + name : label; + purpose : text; + security_level : security_classification_level; +END_ENTITY; + + +ENTITY security_classification_assignment + ABSTRACT SUPERTYPE; + assigned_security_classification : security_classification; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY security_classification_level; + name : label; +END_ENTITY; + + +ENTITY serial_numbered_effectivity + SUBTYPE OF (effectivity); + effectivity_start_id : identifier; + effectivity_end_id : OPTIONAL identifier; +END_ENTITY; + + +ENTITY shape_aspect; + name : label; + description : OPTIONAL text; + of_shape : product_definition_shape; + product_definitional : LOGICAL; +DERIVE + id : identifier := get_id_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY shape_aspect_associativity + SUBTYPE OF (shape_aspect_relationship); +WHERE + WR1 : SELF.relating_shape_aspect.product_definitional; + WR2 : NOT (SELF.related_shape_aspect.product_definitional); +END_ENTITY; + + +ENTITY shape_aspect_deriving_relationship + SUBTYPE OF (shape_aspect_relationship); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DERIVED_SHAPE_ASPECT' IN +TYPEOF + (SELF\SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT); +END_ENTITY; + + +ENTITY shape_aspect_relationship; + name : label; + description : OPTIONAL text; + relating_shape_aspect : shape_aspect; + related_shape_aspect : shape_aspect; +DERIVE + id : identifier := get_id_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY shape_definition_representation + SUBTYPE OF (property_definition_representation); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(SELF.definition)) OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_DEFINITION' IN TYPEOF(SELF.definition.definition)); + WR2 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION' IN TYPEOF(SELF.used_representation); +END_ENTITY; + + +ENTITY shape_dimension_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF (QUERY (temp <* SELF\representation.items | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' + IN TYPEOF (temp)))) = 0; + WR2 : SIZEOF (SELF\representation.items) <= 3; + WR3 : SIZEOF (QUERY (pos_mri <* QUERY (real_mri <* + SELF\representation.items | 'REAL' IN TYPEOF + (real_mri\measure_with_unit.value_component) ) | + NOT (pos_mri\measure_with_unit.value_component > 0.0 ))) = 0; +END_ENTITY; + + +ENTITY shape_feature_definition + SUBTYPE OF (characterized_object); +END_ENTITY; + + +ENTITY shape_representation + SUBTYPE OF (representation); +END_ENTITY; + + +ENTITY shape_representation_relationship + SUBTYPE OF (representation_relationship); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION' IN (TYPEOF(SELF\representation_relationship.rep_1) + TYPEOF(SELF\representation_relationship.rep_2)); +END_ENTITY; + + +ENTITY shape_representation_with_parameters + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF( QUERY( i <* SELF.items | SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLACEMENT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM'] * TYPEOF(i)) = 1 )) = SIZEOF(SELF.items); +END_ENTITY; + + +ENTITY shell_based_surface_model + SUBTYPE OF (geometric_representation_item); + sbsm_boundary : SET [1:?] OF shell; +WHERE + WR1 : constraints_geometry_shell_based_surface_model(SELF); +END_ENTITY; + + +ENTITY shell_based_wireframe_model + SUBTYPE OF (geometric_representation_item); + sbwm_boundary : SET [1:?] OF shell; +WHERE + WR1 : constraints_geometry_shell_based_wireframe_model(SELF); +END_ENTITY; + + +ENTITY shell_based_wireframe_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF ( +QUERY ( it <* SELF.items| NOT ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D' ] * TYPEOF (it)) = 1) )) = 0; + WR2 : SIZEOF ( +QUERY ( it <* SELF.items| ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' ] * TYPEOF (it)) = 1) )) >= 1; + WR3 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( ws <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF ( +QUERY ( eloop <* +QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (wsb)) )| NOT ( SIZEOF ( +QUERY ( el <* eloop\path.edge_list| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN TYPEOF (el.edge_element)) )) = 0) )) = 0) )) = 0) )) = 0; + WR4 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( ws <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF ( +QUERY ( eloop <* +QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (wsb)) )| NOT ( SIZEOF ( +QUERY ( pline_el <* +QUERY ( el <* eloop\path.edge_list| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF (el.edge_element\edge_curve.edge_geometry)) )| NOT ( SIZEOF (pline_el.edge_element\edge_curve.edge_geometry\polyline.points) > 2) )) = 0) )) = 0) )) = 0) )) = 0; + WR5 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( ws <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF ( +QUERY ( eloop <* +QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (wsb)) )| NOT ( SIZEOF ( +QUERY ( el <* eloop\path.edge_list| NOT valid_wireframe_edge_curve(el.edge_element\edge_curve.edge_geometry) )) = 0) )) = 0) )) = 0) )) = 0; + WR6 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( ws <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF ( +QUERY ( eloop <* +QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (wsb)) )| NOT ( SIZEOF ( +QUERY ( el <* eloop\path.edge_list| NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (el.edge_element.edge_start)) AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (el.edge_element.edge_end))) )) = 0) )) = 0) )) = 0) )) = 0; + WR7 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( ws <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF ( +QUERY ( eloop <* +QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (wsb)) )| NOT ( SIZEOF ( +QUERY ( el <* eloop\path.edge_list| NOT (valid_wireframe_vertex_point(el.edge_element.edge_start\vertex_point.vertex_geometry) AND valid_wireframe_vertex_point(el.edge_element.edge_end\vertex_point.vertex_geometry)) )) = 0) )) = 0) )) = 0) )) = 0; + WR8 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( ws <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF ( +QUERY ( vloop <* +QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF (wsb)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (vloop\vertex_loop.loop_vertex)) )) = 0) )) = 0) )) = 0; + WR9 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( ws <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF ( +QUERY ( vloop <* +QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF (wsb)) )| NOT valid_wireframe_vertex_point(vloop\vertex_loop.loop_vertex\vertex_point.vertex_geometry) )) = 0) )) = 0) )) = 0; + WR10 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( vs <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_SHELL' IN TYPEOF (sb)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (vs\vertex_shell.vertex_shell_extent.loop_vertex)) )) = 0) )) = 0; + WR11 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( vs <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_SHELL' IN TYPEOF (sb)) )| NOT valid_wireframe_vertex_point(vs\vertex_shell.vertex_shell_extent.loop_vertex\vertex_point.vertex_geometry) )) = 0) )) = 0; + WR12 : SIZEOF ( +QUERY ( mi <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'SHELL_BASED_WIREFRAME_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0; + WR13 : SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3; +END_ENTITY; + + +ENTITY shelled_solid + SUPERTYPE OF (ONEOF (double_offset_shelled_solid, complex_shelled_solid)) + SUBTYPE OF (modified_solid); + deleted_face_set : SET [1:?] OF face_surface; + thickness : length_measure; +WHERE + WR1 : thickness <> 0; +END_ENTITY; + + +ENTITY si_absorbed_dose_unit + SUBTYPE OF (absorbed_dose_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.gray; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_capacitance_unit + SUBTYPE OF (capacitance_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.farad; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_conductance_unit + SUBTYPE OF (conductance_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.siemens; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_dose_equivalent_unit + SUBTYPE OF (dose_equivalent_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.sievert; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_electric_charge_unit + SUBTYPE OF (electric_charge_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.coulomb; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_electric_potential_unit + SUBTYPE OF (electric_potential_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.volt; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_energy_unit + SUBTYPE OF (energy_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.joule; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_force_unit + SUBTYPE OF (force_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.newton; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_frequency_unit + SUBTYPE OF (frequency_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.hertz; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_illuminance_unit + SUBTYPE OF (illuminance_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.lux; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_inductance_unit + SUBTYPE OF (inductance_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.henry; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_magnetic_flux_density_unit + SUBTYPE OF (magnetic_flux_density_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.tesla; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_magnetic_flux_unit + SUBTYPE OF (magnetic_flux_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.weber; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_power_unit + SUBTYPE OF (power_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.watt; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_pressure_unit + SUBTYPE OF (pressure_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.pascal; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_radioactivity_unit + SUBTYPE OF (radioactivity_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.becquerel; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_resistance_unit + SUBTYPE OF (resistance_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.ohm; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_unit + SUBTYPE OF (named_unit); + prefix : OPTIONAL si_prefix; + name : si_unit_name; +DERIVE + SELF\named_unit.dimensions : dimensional_exponents := dimensions_for_si_unit(name); +WHERE + WR1 : NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MASS_UNIT' IN TYPEOF(SELF)) AND + (SIZEOF(USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DERIVED_UNIT_ELEMENT.UNIT')) > 0)) OR + (prefix = si_prefix.kilo); +END_ENTITY; + + +ENTITY simple_boolean_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (boolean_expression, simple_generic_expression); +END_ENTITY; + + +ENTITY simple_clause + SUBTYPE OF (compound_representation_item); +END_ENTITY; + + +ENTITY simple_generic_expression + ABSTRACT SUPERTYPE OF (ONEOF (generic_literal, generic_variable)) + SUBTYPE OF (generic_expression); +END_ENTITY; + + +ENTITY simple_numeric_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (numeric_expression, simple_generic_expression); +END_ENTITY; + + +ENTITY slash_expression + SUBTYPE OF (binary_numeric_expression); +END_ENTITY; + + +ENTITY smeared_material_definition + SUBTYPE OF (zone_structural_makeup); +END_ENTITY; + + +ENTITY solid_angle_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_ANGLE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY solid_angle_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY solid_curve_font + SUBTYPE OF (pre_defined_curve_font); +END_ENTITY; + + +ENTITY solid_model + SUPERTYPE OF (ONEOF (csg_solid, manifold_solid_brep, swept_face_solid, swept_area_solid, swept_disk_solid, solid_replica)) + SUBTYPE OF (geometric_representation_item); +END_ENTITY; + + +ENTITY solid_replica + SUBTYPE OF (solid_model); + parent_solid : solid_model; + transformation : cartesian_transformation_operator_3d; +WHERE + WR1 : acyclic_solid_replica(SELF, parent_solid); + WR2 : parent_solid\geometric_representation_item.dim = 3; +END_ENTITY; + + +ENTITY solid_with_angle_based_chamfer + SUBTYPE OF (solid_with_chamfered_edges); + offset_distance : positive_length_measure; + left_offset : BOOLEAN; + offset_angle : positive_plane_angle_measure; +END_ENTITY; + + +ENTITY solid_with_chamfered_edges + ABSTRACT SUPERTYPE OF (ONEOF (solid_with_single_offset_chamfer, solid_with_double_offset_chamfer, solid_with_angle_based_chamfer)) + SUBTYPE OF (edge_blended_solid); +END_ENTITY; + + +ENTITY solid_with_circular_pattern + SUPERTYPE OF (solid_with_incomplete_circular_pattern) + SUBTYPE OF (solid_with_shape_element_pattern); + replicate_count : positive_integer; + angular_spacing : plane_angle_measure; + radial_alignment : BOOLEAN; + reference_point : point; +END_ENTITY; + + +ENTITY solid_with_circular_pocket + SUBTYPE OF (solid_with_pocket); + pocket_radius : positive_length_measure; +WHERE + WR1 : SELF\solid_with_pocket.floor_blend_radius <= pocket_radius; +END_ENTITY; + + +ENTITY solid_with_circular_protrusion + SUBTYPE OF (solid_with_protrusion); + protrusion_radius : positive_length_measure; +END_ENTITY; + + +ENTITY solid_with_conical_bottom_round_hole + SUBTYPE OF (solid_with_stepped_round_hole); + semi_apex_angle : positive_plane_angle_measure; + tip_radius : non_negative_length_measure; +WHERE + WR1 : tip_radius < + SELF\solid_with_stepped_round_hole.segment_radii[segments]; +END_ENTITY; + + +ENTITY solid_with_constant_radius_edge_blend + SUBTYPE OF (edge_blended_solid); + radius : positive_length_measure; +END_ENTITY; + + +ENTITY solid_with_curved_slot + SUBTYPE OF (solid_with_slot); + slot_centreline : bounded_curve; +END_ENTITY; + + +ENTITY solid_with_depression + ABSTRACT SUPERTYPE OF ((solid_with_through_depression ANDOR ONEOF (solid_with_hole, solid_with_pocket, solid_with_slot, solid_with_groove))) + SUBTYPE OF (modified_solid_with_placed_configuration); + depth : positive_length_measure; +END_ENTITY; + + +ENTITY solid_with_double_offset_chamfer + SUBTYPE OF (solid_with_chamfered_edges); + left_offset_distance : positive_length_measure; + right_offset_distance : positive_length_measure; +END_ENTITY; + + +ENTITY solid_with_flat_bottom_round_hole + SUBTYPE OF (solid_with_stepped_round_hole); + fillet_radius : non_negative_length_measure; +WHERE + WR1 : fillet_radius < + SELF\solid_with_stepped_round_hole.segment_radii[segments]; +END_ENTITY; + + +ENTITY solid_with_general_pocket + SUBTYPE OF (solid_with_pocket); + profile : positioned_sketch; + reference_point : point; +WHERE + WR1 : SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_BOUNDED_SURFACE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE'] * TYPEOF(profile.sketch_basis)) = 1; + WR2 : profile IN using_items(reference_point,[]); +END_ENTITY; + + +ENTITY solid_with_general_protrusion + SUBTYPE OF (solid_with_protrusion); + profile : positioned_sketch; + reference_point : point; +WHERE + WR1 : SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_BOUNDED_SURFACE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE'] * TYPEOF(profile.sketch_basis)) = 1; + WR2 : profile IN using_items(reference_point,[]); +END_ENTITY; + + +ENTITY solid_with_groove + SUBTYPE OF (solid_with_depression); + groove_radius : positive_length_measure; + groove_width : positive_length_measure; + draft_angle : plane_angle_measure; + floor_fillet_radius : non_negative_length_measure; + external_groove : BOOLEAN; +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION' + IN TYPEOF(SELF)); +END_ENTITY; + + +ENTITY solid_with_hole + ABSTRACT SUPERTYPE OF (solid_with_stepped_round_hole) + SUBTYPE OF (solid_with_depression); +END_ENTITY; + + +ENTITY solid_with_incomplete_circular_pattern + SUBTYPE OF (solid_with_circular_pattern); + omitted_instances : SET [1:?] OF positive_integer; +WHERE + WR1 : SIZEOF(omitted_instances) < + SELF\solid_with_circular_pattern.replicate_count; + WR2 : SIZEOF(QUERY(q <* omitted_instances | q > + SELF\solid_with_circular_pattern.replicate_count)) = 0; +END_ENTITY; + + +ENTITY solid_with_incomplete_rectangular_pattern + SUBTYPE OF (solid_with_rectangular_pattern); + omitted_instances : SET [1:?] OF LIST [2:2] OF positive_integer; +WHERE + WR1 : NOT([1,1] IN omitted_instances); + WR2 : SIZEOF(omitted_instances) < + ((SELF\solid_with_rectangular_pattern.row_count * + SELF\solid_with_rectangular_pattern.column_count) - 1); + WR3 : SIZEOF(QUERY(q <* omitted_instances | + ((q[1] > SELF\solid_with_rectangular_pattern.row_count) OR + (q[2] > SELF\solid_with_rectangular_pattern.column_count)))) = 0; +END_ENTITY; + + +ENTITY solid_with_pocket + ABSTRACT SUPERTYPE OF (ONEOF (solid_with_rectangular_pocket, solid_with_circular_pocket, solid_with_general_pocket)) + SUBTYPE OF (solid_with_depression); + floor_blend_radius : non_negative_length_measure; + draft_angle : plane_angle_measure; +END_ENTITY; + + +ENTITY solid_with_protrusion + ABSTRACT SUPERTYPE OF (ONEOF (solid_with_circular_protrusion, solid_with_rectangular_protrusion, solid_with_general_protrusion)) + SUBTYPE OF (modified_solid_with_placed_configuration); + protrusion_height : positive_length_measure; + protrusion_draft_angle : plane_angle_measure; +END_ENTITY; + + +ENTITY solid_with_rectangular_pattern + SUPERTYPE OF (solid_with_incomplete_rectangular_pattern) + SUBTYPE OF (solid_with_shape_element_pattern); + row_count : positive_integer; + column_count : positive_integer; + row_spacing : length_measure; + column_spacing : length_measure; +WHERE + WR1 : (row_count * column_count) > 1; +END_ENTITY; + + +ENTITY solid_with_rectangular_pocket + SUBTYPE OF (solid_with_pocket); + pocket_length : positive_length_measure; + pocket_width : positive_length_measure; + corner_radius : non_negative_length_measure; +WHERE + WR1 : (corner_radius < pocket_width/2) + AND (corner_radius < pocket_length/2); +END_ENTITY; + + +ENTITY solid_with_rectangular_protrusion + SUBTYPE OF (solid_with_protrusion); + protrusion_length : positive_length_measure; + protrusion_width : positive_length_measure; + protrusion_corner_radius : non_negative_length_measure; +WHERE + WR1 : (protrusion_corner_radius <= protrusion_width/2) + AND (protrusion_corner_radius <= protrusion_length/2); +END_ENTITY; + + +ENTITY solid_with_shape_element_pattern + ABSTRACT SUPERTYPE OF (ONEOF (solid_with_circular_pattern, solid_with_rectangular_pattern)) + SUBTYPE OF (modified_solid_with_placed_configuration); + replicated_element : modified_solid_with_placed_configuration; +END_ENTITY; + + +ENTITY solid_with_single_offset_chamfer + SUBTYPE OF (solid_with_chamfered_edges); + offset_distance : positive_length_measure; +END_ENTITY; + + +ENTITY solid_with_slot + ABSTRACT SUPERTYPE OF ((ONEOF (solid_with_trapezoidal_section_slot, solid_with_tee_section_slot) AND ONEOF (solid_with_straight_slot, solid_with_curved_slot))) + SUBTYPE OF (solid_with_depression); + slot_width : positive_length_measure; + closed_ends : LIST [2:2] OF LOGICAL; + end_exit_faces : LIST [2:2] OF SET [0:?] OF face_surface; +WHERE + WR1 : NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION' IN + TYPEOF(SELF)) AND (closed_ends = [FALSE,FALSE])); + WR2 : NOT(((closed_ends[1] = TRUE) AND (SIZEOF(end_exit_faces[1]) <> 0)) + OR ((closed_ends[2] = TRUE) AND (SIZEOF(end_exit_faces[2]) <> 0))); +END_ENTITY; + + +ENTITY solid_with_spherical_bottom_round_hole + SUBTYPE OF (solid_with_stepped_round_hole); + sphere_radius : positive_length_measure; +WHERE + WR1 : sphere_radius >= + SELF\solid_with_stepped_round_hole.segment_radii[segments]; +END_ENTITY; + + +ENTITY solid_with_stepped_round_hole + SUPERTYPE OF ((solid_with_stepped_round_hole_and_conical_transitions ANDOR ONEOF (solid_with_flat_bottom_round_hole, solid_with_conical_bottom_round_hole, solid_with_spherical_bottom_round_hole))) + SUBTYPE OF (solid_with_hole); + segments : positive_integer; + segment_radii : LIST [1:segments] OF positive_length_measure; + segment_depths : LIST [1:segments] OF positive_length_measure; +DERIVE + SELF\solid_with_depression.depth : positive_length_measure := compute_total_depth(SELF); +WHERE + WR1 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION' + IN TYPEOF(SELF)) AND (SIZEOF(TYPEOF(SELF) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_FLAT_BOTTOM_ROUND_HOLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_SPHERICAL_BOTTOM_ROUND_HOLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_FLAT_BOTTOM_ROUND_HOLE']) + <> 0)); +END_ENTITY; + + +ENTITY solid_with_stepped_round_hole_and_conical_transitions + SUBTYPE OF (solid_with_stepped_round_hole); + conical_transitions : SET [1:?] OF conical_stepped_hole_transition; +WHERE + WR1 : SIZEOF (conical_transitions) <= + (SELF\solid_with_stepped_round_hole.segments + 1); + WR2 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION' + IN TYPEOF(SELF)) XOR (SIZEOF(conical_transitions) <= + SELF\solid_with_stepped_round_hole.segments); + WR3 : validate_countersink_radii(SELF); +END_ENTITY; + + +ENTITY solid_with_straight_slot + SUBTYPE OF (solid_with_slot); + slot_length : positive_length_measure; +END_ENTITY; + + +ENTITY solid_with_tee_section_slot + SUBTYPE OF (solid_with_slot); + tee_section_width : positive_length_measure; + collar_depth : positive_length_measure; +WHERE + WR1 : collar_depth < SELF\solid_with_depression.depth; + WR2 : tee_section_width > SELF\solid_with_slot.slot_width; +END_ENTITY; + + +ENTITY solid_with_through_depression + SUBTYPE OF (solid_with_depression); + exit_faces : SET [1:?] OF face_surface; +WHERE + WR1 : SIZEOF(TYPEOF(SELF) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_HOLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_POCKET', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_SLOT']) = 1; +END_ENTITY; + + +ENTITY solid_with_trapezoidal_section_slot + SUBTYPE OF (solid_with_slot); + draft_angle : plane_angle_measure; + floor_fillet_radius : non_negative_length_measure; +END_ENTITY; + + +ENTITY solid_with_variable_radius_edge_blend + SUBTYPE OF (edge_blended_solid, track_blended_solid); + point_list : LIST [2:?] OF point; + radius_list : LIST [2:?] OF positive_length_measure; + edge_function_list : LIST [1:?] OF blend_radius_variation_type; +WHERE + WR1 : SIZEOF(point_list) = SIZEOF(radius_list); + WR2 : SIZEOF(edge_function_list) = SIZEOF(radius_list) - 1; + WR3 : NOT((point_list[1] = point_list[HIINDEX(point_list)]) AND NOT + (radius_list[1] = radius_list[HIINDEX(radius_list)])); +END_ENTITY; + + +ENTITY source_for_requirement + SUBTYPE OF (group_assignment); + items : SET [1:1] OF requirement_source_item; + SELF\group_assignment.assigned_group : requirement_source; +END_ENTITY; + + +ENTITY sourced_requirement + SUBTYPE OF (group_assignment); + items : SET [1:1] OF product_definition; + SELF\group_assignment.assigned_group : requirement_source; +END_ENTITY; + + +ENTITY specification_definition + SUBTYPE OF (product_definition); +END_ENTITY; + + +ENTITY specified_higher_usage_occurrence + SUBTYPE OF (assembly_component_usage); + upper_usage : assembly_component_usage; + next_usage : next_assembly_usage_occurrence; +UNIQUE + UR1 : upper_usage, next_usage; +WHERE + WR1 : SELF :<>: upper_usage; + WR2 : SELF\product_definition_relationship.relating_product_definition + :=: upper_usage.relating_product_definition; + WR3 : SELF\product_definition_relationship.related_product_definition + :=: next_usage.related_product_definition; + WR4 : (upper_usage.related_product_definition :=: + next_usage.relating_product_definition) OR + (SIZEOF (QUERY (pdr <* USEDIN (upper_usage.related_product_definition, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP.' + + 'RELATED_PRODUCT_DEFINITION') | + pdr.relating_product_definition :=: + next_usage.relating_product_definition)) = 1); + WR5 : SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NEXT_ASSEMBLY_USAGE_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SPECIFIED_HIGHER_USAGE_OCCURRENCE'] + * TYPEOF(upper_usage)) = 1; +END_ENTITY; + + +ENTITY sphere + SUBTYPE OF (geometric_representation_item); + radius : positive_length_measure; + centre : point; +END_ENTITY; + + +ENTITY spherical_surface + SUBTYPE OF (elementary_surface); + radius : positive_length_measure; +END_ENTITY; + + +ENTITY standard_uncertainty + SUPERTYPE OF (expanded_uncertainty) + SUBTYPE OF (uncertainty_qualifier); + uncertainty_value : REAL; +END_ENTITY; + + +ENTITY start_request + SUBTYPE OF (action_request_assignment); + items : SET [1:?] OF start_request_item; +END_ENTITY; + + +ENTITY start_work + SUBTYPE OF (action_assignment); + items : SET [1:?] OF work_item; +END_ENTITY; + + +ENTITY straightness_tolerance + SUBTYPE OF (geometric_tolerance); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)); +END_ENTITY; + + +ENTITY structured_dimension_callout + SUBTYPE OF (draughting_callout); +WHERE + WR1 : SIZEOF (TYPEOF (SELF) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DATUM_FEATURE_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DATUM_TARGET_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRICAL_TOLERANCE_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_DIRECTED_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_DIRECTED_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT']) = 0; + WR2 : SIZEOF (QUERY (ato <* QUERY (con <* SELF.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (con))) | + NOT (ato.name IN + ['dimension value', 'tolerance value', 'unit text', + 'prefix text', 'suffix text']))) = 0; + WR3 : SIZEOF (QUERY (ato <* QUERY (con <* SELF.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (con))) | + (ato.name = 'dimension value') + )) >= 1; + WR4 : SIZEOF (QUERY (dcr <* USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_CALLOUT_RELATIONSHIP.' + + 'RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN TYPEOF (dcr)) AND + (dcr.name = 'prefix') )) <= 1; + WR5 : SIZEOF (QUERY (dcr <* USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_CALLOUT_RELATIONSHIP.' + + 'RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN TYPEOF (dcr)) AND + (dcr.name = 'suffix') )) <= 1; + WR6 : NOT((SIZEOF (QUERY (ato <* QUERY (con <* SELF.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(con)) ) | + (ato.name = 'prefix text') + )) > 0)) OR + (SIZEOF (QUERY (dcr <* USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_CALLOUT_RELATIONSHIP.' + + 'RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN TYPEOF (dcr)) AND + (dcr.name = 'prefix') )) = 1); + WR7 : NOT(SIZEOF (QUERY (ato <* QUERY (con <* SELF.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(con))) | + (ato.name = 'suffix text') + )) > 0) OR + (SIZEOF (QUERY (dcr <* USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_CALLOUT_RELATIONSHIP.' + + 'RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN TYPEOF (dcr)) AND + (dcr.name = 'suffix') )) = 1); +END_ENTITY; + + +ENTITY structured_text_composition + SUBTYPE OF (compound_representation_item); +END_ENTITY; + + +ENTITY structured_text_representation + SUBTYPE OF (representation); + SELF\representation.items : SET [1:?] OF string_representation_item_select; +END_ENTITY; + + +ENTITY styled_item + SUBTYPE OF (representation_item); + styles : SET [1:?] OF presentation_style_assignment; + item : representation_item; +WHERE + WR1 : (SIZEOF(SELF.styles) = 1) + XOR + (SIZEOF(QUERY(pres_style <* SELF.styles | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_STYLE_BY_CONTEXT' IN + TYPEOF(pres_style)) + )) = 0); +END_ENTITY; + + +ENTITY subedge + SUBTYPE OF (edge); + parent_edge : edge; +END_ENTITY; + + +ENTITY subface + SUBTYPE OF (face); + parent_face : face; +WHERE + WR1 : NOT (mixed_loop_type_set(list_to_set(list_face_loops(SELF)) + + list_to_set(list_face_loops(parent_face)))); +END_ENTITY; + + +ENTITY supplied_part_relationship + SUBTYPE OF (product_definition_relationship); +END_ENTITY; + + +ENTITY surface + SUPERTYPE OF (ONEOF (elementary_surface, swept_surface, bounded_surface, offset_surface, surface_replica)) + SUBTYPE OF (geometric_representation_item); +END_ENTITY; + + +ENTITY surface_condition_callout + SUBTYPE OF (draughting_callout); +WHERE + WR1 : SIZEOF ( QUERY ( c <* SELF.contents | SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'ANNOTATION_CURVE_OCCURRENCE' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'ANNOTATION_SYMBOL_OCCURRENCE' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'ANNOTATION_TEXT_OCCURRENCE']* TYPEOF + ( c ) ) <>1 ) ) =0; +END_ENTITY; + + +ENTITY surface_curve + SUPERTYPE OF ((ONEOF (intersection_curve, seam_curve) ANDOR bounded_surface_curve)) + SUBTYPE OF (curve); + curve_3d : curve; + associated_geometry : LIST [1:2] OF pcurve_or_surface; + master_representation : preferred_surface_curve_representation; +DERIVE + basis_surface : SET [1:2] OF surface := get_basis_surface(SELF); +WHERE + WR1 : curve_3d.dim = 3; + WR2 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(associated_geometry[1])) OR + (master_representation <> pcurve_s1); + WR3 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(associated_geometry[2])) OR + (master_representation <> pcurve_s2); + WR4 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(curve_3d)); +END_ENTITY; + + +ENTITY surface_curve_swept_area_solid + SUBTYPE OF (swept_area_solid); + directrix : curve; + start_param : REAL; + end_param : REAL; + reference_surface : surface; +WHERE + WR1 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN TYPEOF(directrix))) OR + (reference_surface IN (directrix\surface_curve.basis_surface)); +END_ENTITY; + + +ENTITY surface_of_linear_extrusion + SUBTYPE OF (swept_surface); + extrusion_axis : vector; +END_ENTITY; + + +ENTITY surface_of_revolution + SUBTYPE OF (swept_surface); + axis_position : axis1_placement; +DERIVE + axis_line : line := representation_item('')|| + geometric_representation_item()|| curve()|| + line(axis_position.location, representation_item('')|| + geometric_representation_item()|| + vector(axis_position.z, 1.0)); +END_ENTITY; + + +ENTITY surface_patch + SUBTYPE OF (founded_item); + parent_surface : bounded_surface; + u_transition : transition_code; + v_transition : transition_code; + u_sense : BOOLEAN; + v_sense : BOOLEAN; +INVERSE + using_surfaces: BAG [1:?] OF rectangular_composite_surface FOR segments; +WHERE + WR1 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_BOUNDED_SURFACE' + IN TYPEOF(parent_surface))); +END_ENTITY; + + +ENTITY surface_profile_tolerance + SUBTYPE OF (geometric_tolerance); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)) OR ( SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 3); +END_ENTITY; + + +ENTITY surface_rendering_properties; + rendered_colour : colour; +END_ENTITY; + + +ENTITY surface_replica + SUBTYPE OF (surface); + parent_surface : surface; + transformation : cartesian_transformation_operator_3d; +WHERE + WR1 : acyclic_surface_replica(SELF, parent_surface); +END_ENTITY; + + +ENTITY surface_side_style + SUBTYPE OF (founded_item); + name : label; + styles : SET [1:7] OF surface_style_element_select; +WHERE + WR1 : SIZEOF(QUERY( style1 <* SELF.styles | + SIZEOF(QUERY( style2 <* SELF.styles - style1 | + TYPEOF(style1) = TYPEOF(style2) + )) > 0 + )) = 0; +END_ENTITY; + + +ENTITY surface_style_boundary + SUBTYPE OF (founded_item); + style_of_boundary : curve_or_render; +END_ENTITY; + + +ENTITY surface_style_control_grid + SUBTYPE OF (founded_item); + style_of_control_grid : curve_or_render; +END_ENTITY; + + +ENTITY surface_style_fill_area + SUBTYPE OF (founded_item); + fill_area : fill_area_style; +END_ENTITY; + + +ENTITY surface_style_parameter_line + SUBTYPE OF (founded_item); + style_of_parameter_lines : curve_or_render; + direction_counts : SET [1:2] OF direction_count_select; +WHERE + WR1 : (HIINDEX(SELF.direction_counts) = 1) + XOR + (TYPEOF(SELF.direction_counts[1]) <> + TYPEOF(SELF.direction_counts[2])); +END_ENTITY; + + +ENTITY surface_style_reflectance_ambient; + ambient_reflectance : REAL; +END_ENTITY; + + +ENTITY surface_style_reflectance_ambient_diffuse + SUBTYPE OF (surface_style_reflectance_ambient); + diffuse_reflectance : REAL; +END_ENTITY; + + +ENTITY surface_style_reflectance_ambient_diffuse_specular + SUBTYPE OF (surface_style_reflectance_ambient_diffuse); + specular_reflectance : REAL; + specular_exponent : REAL; + specular_colour : colour; +END_ENTITY; + + +ENTITY surface_style_rendering; + rendering_method : shading_surface_method; + surface_colour : colour; +END_ENTITY; + + +ENTITY surface_style_rendering_with_properties + SUBTYPE OF (surface_style_rendering); + properties : SET [1:2] OF rendering_properties_select; +WHERE + WR1 : (HIINDEX(SELF.properties) = 1) + XOR + (TYPEOF(SELF.properties[1]) <> TYPEOF(SELF.properties[2])); +END_ENTITY; + + +ENTITY surface_style_segmentation_curve + SUBTYPE OF (founded_item); + style_of_segmentation_curve : curve_or_render; +END_ENTITY; + + +ENTITY surface_style_silhouette + SUBTYPE OF (founded_item); + style_of_silhouette : curve_or_render; +END_ENTITY; + + +ENTITY surface_style_transparent; + transparency : REAL; +WHERE + WR1 : {0.0 <= transparency <= 1.0}; +END_ENTITY; + + +ENTITY surface_style_usage + SUBTYPE OF (founded_item); + side : surface_side; + style : surface_side_style_select; +END_ENTITY; + + +ENTITY surface_texture_representation + SUBTYPE OF (representation); +WHERE + WR1 : SIZEOF ( QUERY ( i <* SELF.items | SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MEASURE_REPRESENTATION_ITEM' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'VALUE_RANGE' , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DESCRIPTIVE_REPRESENTATION_ITEM']* TYPEOF ( i ) ) <>1 ) ) + =0; + WR2 : ( SIZEOF ( QUERY ( i <* SELF.items | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF ( i ) ) ) =1 ) + AND ( SIZEOF ( QUERY ( i <* SELF.items | ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'DESCRIPTIVE_REPRESENTATION_ITEM' IN + TYPEOF ( i ) ) AND ( i.name = 'measuring method' ) ) ) =1 ); + WR3 : SIZEOF ( QUERY ( i <* SELF.items | SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MEASURE_REPRESENTATION_ITEM' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'VALUE_RANGE']* TYPEOF ( i ) ) =1 ) ) + >0; + WR4 : ( SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'REPRESENTATION_RELATIONSHIP.'+ + 'REP_1' ) ) <=1 ) AND ( SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'REPRESENTATION_RELATIONSHIP.'+ + 'REP_2' ) ) =0 ) AND ( SIZEOF ( QUERY ( rr <* USEDIN ( SELF + , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'REPRESENTATION_RELATIONSHIP.'+ + 'REP_1' ) | rr. rep_2.name = 'measuring direction' ) ) = + SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'REPRESENTATION_RELATIONSHIP.'+ + 'REP_1' ) ) ); + WR5 : ( SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) ) =1 ) AND ( SIZEOF ( QUERY ( pdr + <* USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) | SIZEOF ( QUERY ( gpa <* USEDIN ( + pdr. definition , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'GENERAL_PROPERTY_ASSOCIATION.'+ + 'DERIVED_DEFINITION' ) | ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'GENERAL_PROPERTY' IN TYPEOF ( gpa. base_definition ) ) AND + ( gpa. base_definition.name ='surface_condition' ) ) ) =1 ) + ) =1 ); +END_ENTITY; + + +ENTITY surfaced_open_shell + SUBTYPE OF (open_shell); +WHERE + WR1 : SIZEOF(QUERY(q <* SELF\connected_face_set.cfs_faces | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE' IN TYPEOF(q)))) = 0; +END_ENTITY; + + +ENTITY swept_area_solid + SUPERTYPE OF (ONEOF (revolved_area_solid, extruded_area_solid, surface_curve_swept_area_solid)) + SUBTYPE OF (solid_model); + swept_area : curve_bounded_surface; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE' IN TYPEOF(swept_area.basis_surface); +END_ENTITY; + + +ENTITY swept_disk_solid + SUBTYPE OF (solid_model); + directrix : curve; + radius : positive_length_measure; + inner_radius : OPTIONAL positive_length_measure; + start_param : REAL; + end_param : REAL; +WHERE + WR1 : directrix.dim = 3; + WR2 : (NOT EXISTS(inner_radius)) OR (radius > inner_radius); +END_ENTITY; + + +ENTITY swept_face_solid + SUPERTYPE OF (ONEOF (extruded_face_solid, revolved_face_solid)) + SUBTYPE OF (solid_model); + swept_face : face_surface; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE' IN TYPEOF(swept_face.face_geometry); +END_ENTITY; + + +ENTITY swept_surface + SUPERTYPE OF (ONEOF (surface_of_linear_extrusion, surface_of_revolution)) + SUBTYPE OF (surface); + swept_curve : curve; +END_ENTITY; + + +ENTITY symbol + SUBTYPE OF (representation_item); +END_ENTITY; + + +ENTITY symbol_colour; + colour_of_symbol : colour; +END_ENTITY; + + +ENTITY symbol_representation + SUBTYPE OF (representation); +END_ENTITY; + + +ENTITY symbol_representation_map + SUBTYPE OF (representation_map); + SELF\representation_map.mapped_representation : symbol_representation; + SELF\representation_map.mapping_origin : axis2_placement; +END_ENTITY; + + +ENTITY symbol_style + SUBTYPE OF (founded_item); + name : label; + style_of_symbol : symbol_style_select; +END_ENTITY; + + +ENTITY symbol_target + SUBTYPE OF (geometric_representation_item); + placement : axis2_placement; + x_scale : positive_ratio_measure; + y_scale : positive_ratio_measure; +END_ENTITY; + + +ENTITY symmetric_shape_aspect + SUBTYPE OF (shape_aspect); +INVERSE + basis_relationships: SET [1:?] OF shape_aspect_relationship FOR relating_shape_aspect; +WHERE + WR1 : SIZEOF (QUERY (x<*SELF\symmetric_shape_aspect.basis_relationships | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CENTRE_OF_SYMMETRY' IN TYPEOF + (x\shape_aspect_relationship.related_shape_aspect)))>=1; +END_ENTITY; + + +ENTITY symmetry_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 3; +END_ENTITY; + + +ENTITY table_representation_item + SUBTYPE OF (compound_representation_item); +WHERE + WR1 : SIZEOF(QUERY(itet <* SELF\compound_representation_item.item_element | + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ROW_REPRESENTATION_ITEM' IN TYPEOF(itet)) + )) = 0; +END_ENTITY; + + +ENTITY tactile_appearance_representation + SUBTYPE OF (representation); +WHERE + WR1 : SIZEOF ( QUERY ( i <* SELF.items | SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MEASURE_REPRESENTATION_ITEM' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'VALUE_RANGE']* TYPEOF ( i ) ) <>1 )) =0; + WR2 : SIZEOF ( QUERY ( i <* SELF.items | name ='depth' ) ) <=1; + WR3 : ( SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) ) =1 ) AND ( SIZEOF ( QUERY ( pdr + <* USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) | SIZEOF ( QUERY ( gpa <* USEDIN ( + pdr. definition , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'GENERAL_PROPERTY_ASSOCIATION.'+ + 'DERIVED_DEFINITION' ) | ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'GENERAL_PROPERTY' IN TYPEOF ( gpa. base_definition ) ) AND + ( gpa. base_definition.name ='surface_condition' ) ) ) =1 )) =1 ); +END_ENTITY; + + +ENTITY tagged_text_format + SUBTYPE OF (representation_context); +END_ENTITY; + + +ENTITY tagged_text_item + SUBTYPE OF (descriptive_representation_item); +END_ENTITY; + + +ENTITY tangent + SUBTYPE OF (derived_shape_aspect); +WHERE + WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1; +END_ENTITY; + + +ENTITY terminator_symbol + SUBTYPE OF (annotation_symbol_occurrence); + annotated_curve : annotation_curve_occurrence; +END_ENTITY; + + +ENTITY text_font; + id : identifier; + name : label; + description : text; +INVERSE + glyphs: SET [1:?] OF character_glyph_font_usage FOR font; +END_ENTITY; + + +ENTITY text_font_family; + id : identifier; + name : label; + description : text; +INVERSE + fonts: SET [1:?] OF text_font_in_family FOR family; +END_ENTITY; + + +ENTITY text_font_in_family; + font : text_font; + family : text_font_family; +END_ENTITY; + + +ENTITY text_literal + SUBTYPE OF (geometric_representation_item); + literal : presentable_text; + placement : axis2_placement; + alignment : text_alignment; + path : text_path; + font : font_select; +END_ENTITY; + + +ENTITY text_literal_with_associated_curves + SUBTYPE OF (text_literal); + associated_curves : SET [1:?] OF curve; +END_ENTITY; + + +ENTITY text_literal_with_blanking_box + SUBTYPE OF (text_literal); + blanking : planar_box; +END_ENTITY; + + +ENTITY text_literal_with_delineation + SUBTYPE OF (text_literal); + delineation : text_delineation; +END_ENTITY; + + +ENTITY text_literal_with_extent + SUBTYPE OF (text_literal); + extent : planar_extent; +END_ENTITY; + + +ENTITY text_string_representation + SUBTYPE OF (representation); + SELF\representation.items : SET [1:?] OF text_string_representation_item; +WHERE + WR1 : SIZEOF ( + QUERY (item <* SELF\representation.items | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_CHARACTER', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEFINED_CHARACTER_GLYPH', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT'] * + TYPEOF (item)) = 0) + )) >= 1; + WR2 : SIZEOF ( + QUERY (a2p <* + QUERY (item <* SELF\representation.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT' IN TYPEOF (item)) | + NOT ((SIZEOF ( + QUERY (at <* + QUERY (item <* SELF\representation.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'ANNOTATION_TEXT' IN TYPEOF (item)) | + (at\mapped_item.mapping_target :=: a2p))) >= 1) OR + (SIZEOF ( + QUERY (atc <* + QUERY (item <* SELF\representation.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'ANNOTATION_TEXT_CHARACTER' IN TYPEOF (item)) | + (atc\mapped_item.mapping_target :=: a2p))) >= 1) + ))) = 0; +END_ENTITY; + + +ENTITY text_style + SUBTYPE OF (founded_item); + name : label; + character_appearance : character_style_select; +END_ENTITY; + + +ENTITY text_style_for_defined_font; + text_colour : colour; +END_ENTITY; + + +ENTITY text_style_with_box_characteristics + SUBTYPE OF (text_style); + characteristics : SET [1:4] OF box_characteristic_select; +WHERE + WR1 : SIZEOF( QUERY( c1 <* SELF.characteristics | + SIZEOF( QUERY( c2 <* SELF.characteristics - c1 | + TYPEOF (c1) = TYPEOF (c2) + )) > 0 + )) = 0; +END_ENTITY; + + +ENTITY text_style_with_mirror + SUBTYPE OF (text_style); + mirror_placement : axis2_placement; +END_ENTITY; + + +ENTITY text_style_with_spacing + SUBTYPE OF (text_style); + character_spacing : character_spacing_select; +END_ENTITY; + + +ENTITY thermal_resistance_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.THERMAL_RESISTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY thermal_resistance_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = + dimensional_exponents ( -1.0, -1.0, -3.0, 0.0, 1.0, 0.0, 0.0 ); +END_ENTITY; + + +ENTITY thermodynamic_temperature_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.THERMODYNAMIC_TEMPERATURE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY thermodynamic_temperature_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 1.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY thickened_face_solid + SUBTYPE OF (solid_model); + base_element : generalized_surface_select; + offset1 : length_measure; + offset2 : length_measure; +WHERE + WR1 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE' IN TYPEOF(base_element)) AND + (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_SURFACE' IN TYPEOF(base_element)))); + WR2 : offset1 <> offset2; +END_ENTITY; + + +ENTITY thickness_laminate_definition + SUBTYPE OF (product_definition); +WHERE + WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.' + + 'RELATING_PRODUCT_DEFINITION') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN + TYPEOF (pdr))) = 1; +END_ENTITY; + + +ENTITY thickness_laminate_table + SUBTYPE OF (zone_structural_makeup); +END_ENTITY; + + +ENTITY time_interval; + id : identifier; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY time_interval_assignment + ABSTRACT SUPERTYPE; + assigned_time_interval : time_interval; + role : time_interval_role; +END_ENTITY; + + +ENTITY time_interval_based_effectivity + SUBTYPE OF (effectivity); + effectivity_period : time_interval; +END_ENTITY; + + +ENTITY time_interval_relationship; + name : label; + description : OPTIONAL text; + relating_time_interval : time_interval; + related_time_interval : time_interval; +END_ENTITY; + + +ENTITY time_interval_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY time_interval_with_bounds + SUBTYPE OF (time_interval); + primary_bound : OPTIONAL date_time_or_event_occurrence; + secondary_bound : OPTIONAL date_time_or_event_occurrence; + duration : OPTIONAL time_measure_with_unit; +WHERE + WR1 : NOT (EXISTS(secondary_bound) AND EXISTS(duration)); + WR2 : EXISTS(primary_bound) OR EXISTS(secondary_bound); +END_ENTITY; + + +ENTITY time_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TIME_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY time_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 1.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY tolerance_value; + lower_bound : measure_with_unit; + upper_bound : measure_with_unit; +DERIVE + lbvc : REAL := lower_bound\measure_with_unit.value_component; + ubvc : REAL := upper_bound\measure_with_unit.value_component; +WHERE + WR1 : ubvc > lbvc; + WR2 : upper_bound\measure_with_unit.unit_component = + lower_bound\measure_with_unit.unit_component; +END_ENTITY; + + +ENTITY tolerance_zone + SUBTYPE OF (shape_aspect); + defining_tolerance : SET [1:?] OF geometric_tolerance; + form : tolerance_zone_form; +END_ENTITY; + + +ENTITY tolerance_zone_definition + SUPERTYPE OF (ONEOF (projected_zone_definition, runout_zone_definition)); + zone : tolerance_zone; + boundaries : SET [1:?] OF shape_aspect; +END_ENTITY; + + +ENTITY tolerance_zone_form; + name : label; +END_ENTITY; + + +ENTITY topological_representation_item + SUPERTYPE OF (ONEOF (vertex, edge, face_bound, face, vertex_shell, wire_shell, connected_edge_set, connected_face_set, (loop ANDOR path))) + SUBTYPE OF (representation_item); +END_ENTITY; + + +ENTITY toroidal_surface + SUBTYPE OF (elementary_surface); + major_radius : positive_length_measure; + minor_radius : positive_length_measure; +END_ENTITY; + + +ENTITY torus + SUBTYPE OF (geometric_representation_item); + position : axis1_placement; + major_radius : positive_length_measure; + minor_radius : positive_length_measure; +WHERE + WR1 : major_radius > minor_radius; +END_ENTITY; + + +ENTITY total_runout_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 2; +END_ENTITY; + + +ENTITY track_blended_solid + ABSTRACT SUPERTYPE OF (track_blended_solid_with_end_conditions) + SUBTYPE OF (edge_blended_solid); +WHERE + WR1 : check_continuous_edges(SELF\edge_blended_solid.blended_edges); +END_ENTITY; + + +ENTITY track_blended_solid_with_end_conditions + SUBTYPE OF (track_blended_solid); + end_conditions : LIST [2:2] OF blend_end_condition_select; +WHERE + WR1 : SIZEOF(TYPEOF(SELF) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_CONSTANT_RADIUS_EDGE_BLEND', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_VARIABLE_RADIUS_EDGE_BLEND', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_CHAMFERED_EDGES']) = 1; + WR2 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX' IN TYPEOF(end_conditions[1])) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX' IN TYPEOF(end_conditions[2]))); + WR3 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX' IN TYPEOF(end_conditions[1])) + AND (NOT ((end_conditions[1] + :=: SELF\edge_blended_solid.blended_edges[1].edge_start) + XOR (end_conditions[1] + :=: SELF\edge_blended_solid.blended_edges[1].edge_end)))); + WR4 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX' IN TYPEOF(end_conditions[2])) + AND (NOT ((end_conditions[2] + :=: SELF\edge_blended_solid.blended_edges[HIINDEX( + SELF\edge_blended_solid.blended_edges)].edge_start) + XOR (end_conditions[2] + :=: SELF\edge_blended_solid.blended_edges[HIINDEX( + SELF\edge_blended_solid.blended_edges)].edge_end)))); +END_ENTITY; + + +ENTITY transformation_with_derived_angle + SUPERTYPE OF (ONEOF (draped_defined_transformation, laid_defined_transformation)) + SUBTYPE OF (item_defined_transformation); + SELF\item_defined_transformation.transform_item_1 : angle_direction_reference_with_a2p3d_select; + SELF\item_defined_transformation.transform_item_2 : axis2_placement_3d; +DERIVE + orientation_angle : plane_angle_measure := derive_angle ( + SELF\item_defined_transformation.transform_item_1, + SELF\item_defined_transformation.transform_item_2); +WHERE + WR1 : (SELF\item_defined_transformation.transform_item_1\ + axis2_placement_3d.p[3].direction_ratios[1] = + SELF\item_defined_transformation.transform_item_2\ + axis2_placement_3d.p[3].direction_ratios[1]) + AND + (SELF\item_defined_transformation.transform_item_1\ + axis2_placement_3d.p[3].direction_ratios[2] = + SELF\item_defined_transformation.transform_item_2\ + axis2_placement_3d.p[3].direction_ratios[2]) + AND + (SELF\item_defined_transformation.transform_item_1\ + axis2_placement_3d.p[3].direction_ratios[3] = + SELF\item_defined_transformation.transform_item_2\ + axis2_placement_3d.p[3].direction_ratios[3]); +END_ENTITY; + + +ENTITY trimmed_curve + SUBTYPE OF (bounded_curve); + basis_curve : curve; + trim_1 : SET [1:2] OF trimming_select; + trim_2 : SET [1:2] OF trimming_select; + sense_agreement : BOOLEAN; + master_representation : trimming_preference; +WHERE + WR1 : (HIINDEX(trim_1) = 1) OR (TYPEOF(trim_1[1]) <> TYPEOF(trim_1[2])); + WR2 : (HIINDEX(trim_2) = 1) OR (TYPEOF(trim_2[1]) <> TYPEOF(trim_2[2])); +END_ENTITY; + + +ENTITY two_direction_repeat_factor + SUBTYPE OF (one_direction_repeat_factor); + second_repeat_factor : vector; +END_ENTITY; + + +ENTITY type_qualifier; + name : label; +END_ENTITY; + + +ENTITY unary_generic_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (generic_expression); + operand : generic_expression; +END_ENTITY; + + +ENTITY unary_numeric_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (numeric_expression, unary_generic_expression); + SELF\unary_generic_expression.operand : numeric_expression; +END_ENTITY; + + +ENTITY uncertainty_assigned_representation + SUBTYPE OF (representation); + uncertainty : SET [1:?] OF uncertainty_measure_with_unit; +END_ENTITY; + + +ENTITY uncertainty_measure_with_unit + SUBTYPE OF (measure_with_unit); + name : label; + description : OPTIONAL text; +WHERE + WR1 : valid_measure_value (SELF\measure_with_unit.value_component); +END_ENTITY; + + +ENTITY uncertainty_qualifier + SUPERTYPE OF (ONEOF (standard_uncertainty, qualitative_uncertainty)); + measure_name : label; + description : text; +END_ENTITY; + + +ENTITY uniform_curve + SUBTYPE OF (b_spline_curve); +END_ENTITY; + + +ENTITY uniform_resource_identifier + SUBTYPE OF (descriptive_representation_item); +END_ENTITY; + + +ENTITY uniform_surface + SUBTYPE OF (b_spline_surface); +END_ENTITY; + + +ENTITY usage_association + SUBTYPE OF (action_method_relationship); + SELF\action_method_relationship.related_method : information_usage_right; + SELF\action_method_relationship.relating_method : information_usage_right; +DERIVE + related : information_usage_right := SELF\action_method_relationship.related_method; + relating : information_usage_right := SELF\action_method_relationship.relating_method; +END_ENTITY; + + +ENTITY user_defined_curve_font + SUBTYPE OF (curve_style_font, mapped_item); +END_ENTITY; + + +ENTITY user_defined_marker + SUBTYPE OF (mapped_item, pre_defined_marker); +END_ENTITY; + + +ENTITY user_defined_terminator_symbol + SUBTYPE OF (mapped_item, pre_defined_symbol); +END_ENTITY; + + +ENTITY user_selected_elements + SUBTYPE OF (representation_item); + picked_items : SET [1:?] OF representation_item; +END_ENTITY; + + +ENTITY user_selected_shape_elements + SUBTYPE OF (user_selected_elements); +WHERE + WR1 : SIZEOF(QUERY(q <* + SELF\user_selected_elements.picked_items | NOT + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION_ITEM' + IN TYPEOF(q)))) = 0; +END_ENTITY; + + +ENTITY value_range + SUBTYPE OF (compound_representation_item); +WHERE + WR1 : ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'SET_REPRESENTATION_ITEM' IN TYPEOF ( item_element ) ) AND value_range_wr1 ( item_element ); + WR2 : value_range_wr2 ( item_element ); + WR3 : value_range_wr3 ( item_element ); +END_ENTITY; + + +ENTITY value_representation_item + SUBTYPE OF (representation_item); + value_component : measure_value; +WHERE + WR1 : SIZEOF (QUERY (rep <* using_representations (SELF) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GLOBAL_UNIT_ASSIGNED_CONTEXT' + IN TYPEOF (rep.context_of_items) + ))) = 0; +END_ENTITY; + + +ENTITY variable_semantics + ABSTRACT SUPERTYPE; +END_ENTITY; + + +ENTITY variational_representation_item + ABSTRACT SUPERTYPE OF (auxiliary_geometric_representation_item) + SUBTYPE OF (representation_item); +WHERE + WR1 : SIZEOF(QUERY(q <* using_representations(SELF) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VARIATIONAL_REPRESENTATION' + IN TYPEOF(q)))) = 0; + WR2 : SIZEOF(QUERY(q <* using_representations(SELF) | + NOT (SELF IN q.items))) = 0; +END_ENTITY; + + +ENTITY vector + SUBTYPE OF (geometric_representation_item); + orientation : direction; + magnitude : length_measure; +WHERE + WR1 : magnitude >= 0.0; +END_ENTITY; + + +ENTITY vector_style + SUBTYPE OF (curve_style, pre_defined_terminator_symbol); +END_ENTITY; + + +ENTITY velocity_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VELOCITY_UNIT' IN TYPEOF (SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY velocity_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = + dimensional_exponents ( 1.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0 ); +END_ENTITY; + + +ENTITY versioned_action_request; + id : identifier; + version : label; + purpose : text; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY vertex + SUBTYPE OF (topological_representation_item); +END_ENTITY; + + +ENTITY vertex_loop + SUBTYPE OF (loop); + loop_vertex : vertex; +END_ENTITY; + + +ENTITY vertex_point + SUBTYPE OF (vertex, geometric_representation_item); + vertex_geometry : point; +END_ENTITY; + + +ENTITY vertex_shell + SUBTYPE OF (topological_representation_item); + vertex_shell_extent : vertex_loop; +END_ENTITY; + + +ENTITY view_volume + SUBTYPE OF (founded_item); + projection_type : central_or_parallel; + projection_point : cartesian_point; + view_plane_distance : length_measure; + front_plane_distance : length_measure; + front_plane_clipping : BOOLEAN; + back_plane_distance : length_measure; + back_plane_clipping : BOOLEAN; + view_volume_sides_clipping : BOOLEAN; + view_window : planar_box; +END_ENTITY; + + +ENTITY visual_appearance_representation + SUBTYPE OF (representation); +WHERE + WR1 : ( {3<= SIZEOF ( SELF.items ) <=9} ) AND ( SIZEOF ( QUERY ( + i <* items | ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF ( i ) ) AND ( + i.name IN [ 'colour id' , 'colour name' , 'lustre' , 'pattern' , 'transparency', 'orientation'] ) ) + ) + SIZEOF ( QUERY ( i <* items | ( SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MEASURE_REPRESENTATION_ITEM' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'VALUE_RANGE']* TYPEOF ( i ) ) =1 ) + AND ( i.name IN ['refraction index' , 'opacity'] ) ) + ) + SIZEOF ( QUERY ( i <* items | ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'DOCUMENT_FILE' IN TYPEOF ( i ) ) + AND ( i.name IN [ 'texture map' ] ) ) ) + = SIZEOF ( SELF.items ) ); + WR2 : SIZEOF ( QUERY ( i <* SELF.items | i.name = 'colour id' )) =1; + WR3 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='lustre' ) )=1; + WR4 : SIZEOF ( QUERY ( i <* SELF.items | i.name = 'colour name') ) <=1; + WR5 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='pattern' ) )<=1; + WR6 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='transparency') ) <=1; + WR7 : SIZEOF ( QUERY ( i <* SELF.items | i.name = 'texture map') ) <=1; + WR8 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='refraction index' ) )<=1; + WR9 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='opacity') ) <=1; + WR10 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='orientation') ) <=1; + WR11 : ( SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) ) =1 ) AND ( SIZEOF ( QUERY ( pdr + <* USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) | SIZEOF ( QUERY ( gpa <* USEDIN ( + pdr. definition , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'GENERAL_PROPERTY_ASSOCIATION.'+ + 'DERIVED_DEFINITION' ) | ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'GENERAL_PROPERTY' IN TYPEOF ( gpa. base_definition ) ) AND + ( gpa. base_definition.name ='surface_condition' ) ) ) =1 )) =1 ); +END_ENTITY; + + +ENTITY volume_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VOLUME_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY volume_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = + dimensional_exponents ( 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ); +END_ENTITY; + + +ENTITY week_of_year_and_day_date + SUBTYPE OF (date); + week_component : week_in_year_number; + day_component : OPTIONAL day_in_week_number; +END_ENTITY; + + +ENTITY wire_shell + SUBTYPE OF (topological_representation_item); + wire_shell_extent : SET [1:?] OF loop; +WHERE + WR1 : NOT mixed_loop_type_set(wire_shell_extent); +END_ENTITY; + + +ENTITY year_month + SUBTYPE OF (date); + month_component : month_in_year_number; +END_ENTITY; + + +ENTITY zone_structural_makeup + SUPERTYPE OF (ONEOF ((smeared_material_definition AND thickness_laminate_table), (smeared_material_definition AND percentage_laminate_table), thickness_laminate_table, percentage_laminate_table, smeared_material_definition)) + SUBTYPE OF (laminate_table); +END_ENTITY; + + +RULE alternative_solution_requires_solution_definition FOR (product_definition_formation); + LOCAL + solution_versions: SET OF product_definition_formation := []; + END_LOCAL; + solution_versions := QUERY( pdf <* product_definition_formation | + SIZEOF( QUERY( prpc <* USEDIN(pdf.of_product, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | + prpc.name = 'alternative solution')) = 1); +WHERE + WR1 : SIZEOF( QUERY( pdf <* solution_versions | + SIZEOF( QUERY( pd <* USEDIN(pdf, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.PRODUCT_DEFINITION.FORMATION') | + pd.frame_of_reference.name = 'alternative definition')) <> 1))= 0; +END_RULE; + +RULE application_protocol_definition_required FOR (application_context); + +WHERE + WR1 : SIZEOF( QUERY( ac <* application_context | + (SIZEOF (QUERY (apd <* USEDIN(ac,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.APPLICATION_PROTOCOL_DEFINITION.APPLICATION') | + apd.application_interpreted_model_schema_name = 'ap203_configuration_controlled_3d_design_of_mechanical_parts_and_assemblies' + )) > 0) + )) > 0; +END_RULE; + +RULE breakdown_element_requires_product_definition FOR (product_definition_formation); + +WHERE + WR1 : SIZEOF ( QUERY ( pdf <* product_definition_formation | + ( SIZEOF ( QUERY ( prpc <* USEDIN ( pdf.of_product , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS' ) | + prpc.name = 'functionality' ) ) = 1 ) AND + ( SIZEOF ( QUERY ( pd <* USEDIN ( pdf ,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION.FORMATION') | + pd.frame_of_reference.name = 'functional definition' ) ) <1 ) ) ) = 0; + WR2 : SIZEOF ( QUERY ( pdf <* product_definition_formation | + ( SIZEOF ( QUERY ( prpc <* USEDIN ( pdf.of_product , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS' ) | + prpc.name = 'conceptual design' ) ) = 1 ) AND + ( SIZEOF (QUERY ( pd <* USEDIN ( pdf , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION.FORMATION' ) | + pd.frame_of_reference.name = 'conceptual definition' ) ) <1) ) ) = 0; +END_RULE; + +RULE compatible_dimension FOR (cartesian_point, direction, representation_context, geometric_representation_context); + +WHERE + WR1 : SIZEOF(QUERY(x <* cartesian_point| SIZEOF(QUERY + (y <* geometric_representation_context | item_in_context(x,y) AND + (HIINDEX(x.coordinates) <> y.coordinate_space_dimension))) > 0 )) =0; + WR2 : SIZEOF(QUERY(x <* direction | SIZEOF( QUERY + (y <* geometric_representation_context | item_in_context(x,y) AND + (HIINDEX(x.direction_ratios) <> y.coordinate_space_dimension))) + > 0 )) = 0; +END_RULE; + +RULE component_class_for_assembly_select FOR (composite_assembly_sequence_definition, next_assembly_usage_occurrence, product_related_product_category); + LOCAL + i,j,k : INTEGER :=0; + dkuhr : LOGICAL :=TRUE; + nnauo : INTEGER :=0; + nprpc : INTEGER :=0; + rp : product; + END_LOCAL; + REPEAT i:= LOINDEX (composite_assembly_sequence_definition) TO + HIINDEX (composite_assembly_sequence_definition); + nnauo := 0; + REPEAT j:= LOINDEX (next_assembly_usage_occurrence) TO + HIINDEX (next_assembly_usage_occurrence); + IF (composite_assembly_sequence_definition[i] = + next_assembly_usage_occurrence[j].relating_product_definition) THEN + rp := next_assembly_usage_occurrence[j].related_product_definition. + formation.of_product; + nprpc := 0; + REPEAT k:= LOINDEX (product_related_product_category) TO + HIINDEX (product_related_product_category); + IF ((rp IN product_related_product_category[k].products) AND + (product_related_product_category[k].name IN ['ply', + 'ply laminate', 'filament laminate', 'processed core', + 'composite assembly'])) THEN + nprpc := nprpc + 1; + END_IF; + END_REPEAT; + IF (nprpc = 1) THEN + nnauo := nnauo + 1; + ELSE + dkuhr := FALSE; + ESCAPE; + END_IF; + END_IF; + END_REPEAT; + IF (dkuhr = FALSE) THEN + ESCAPE; + END_IF; + IF(nnauo = 0) THEN + dkuhr := FALSE; + ESCAPE; + END_IF; + END_REPEAT; +WHERE + WR1 : dkuhr; +END_RULE; + +RULE consistent_uncertainty FOR (global_uncertainty_assigned_context, qualified_representation_item, uncertainty_assigned_representation); + +WHERE + WR1 : SIZEOF ( QUERY ( guac <* global_uncertainty_assigned_context | + SIZEOF ( QUERY ( u1 <* guac.uncertainty | + SIZEOF ( QUERY ( u2 <* guac.uncertainty | u2.name = u1.name ) ) >1 ) ) >0 ) ) = 0; + WR2 : SIZEOF ( QUERY ( uar <* uncertainty_assigned_representation | + SIZEOF ( QUERY ( u1<* uar.uncertainty | + SIZEOF ( QUERY ( u2 <* uar.uncertainty | u2.name = u1.name ) ) >1 ) ) >0 ) ) = 0; + WR3 : SIZEOF ( QUERY ( qri <* qualified_representation_item | + SIZEOF ( QUERY ( u1 <* qri.qualifiers | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.UNCERTAINTY_QUALIFIER' IN TYPEOF ( u1 ) ) AND + ( SIZEOF ( QUERY ( u2 <* qri.qualifiers | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.UNCERTAINTY_QUALIFIER' IN TYPEOF ( u2 ) ) AND + ( u2\uncertainty_qualifier.measure_name = u1\uncertainty_qualifier.measure_name ) ) + ) >1 ) ) ) >0 ) ) = 0; +END_RULE; + +RULE constraint_definition_requires_constraint_category FOR (product_definition); + LOCAL + constraint_definitions: SET OF product_definition := []; + END_LOCAL; + constraint_definitions := QUERY( pd <* product_definition | + (pd.frame_of_reference.name = 'design constraint definition')); +WHERE + WR1 : SIZEOF ( QUERY ( pd <* constraint_definitions | + ( SIZEOF ( QUERY ( prpc <* USEDIN ( pd.formation.of_product , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS' ) | + prpc. name ='requirement' ) ) =0 ) ) ) =0; +END_RULE; + +RULE design_constraint_requires_product_definition FOR (product_definition_formation); + +WHERE + WR1 : SIZEOF ( QUERY ( pdf <* product_definition_formation | ( + SIZEOF ( QUERY ( prpc <* USEDIN ( pdf.of_product , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS' ) | + prpc.name = 'requirement' ) ) >0 ) AND + ( SIZEOF ( QUERY ( pd <* USEDIN ( pdf , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION.FORMATION') | + pd.frame_of_reference.name = 'design constraint definition' ) ) <1 ) ) ) = 0; +END_RULE; + +RULE draughting_model_items_constraint FOR (draughting_model); + +WHERE + WR1 : SIZEOF(QUERY(dm <* draughting_model | + NOT(SIZEOF(QUERY(it1 <* dm\representation.items | + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_OCCURRENCE' IN TYPEOF(it1)) + AND + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DRAUGHTING_ANNOTATION_OCCURRENCE' IN TYPEOF(it1))) + )) = 0) + )) = 0; + WR2 : SIZEOF(QUERY(dm <* draughting_model | + NOT(SIZEOF(QUERY(it1 <* dm\representation.items | + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT' IN TYPEOF(it1)) + AND + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_ELEMENTS' IN TYPEOF(it1))) + )) = 0) + )) = 0; +END_RULE; + +RULE external_version_assignments_are_valid FOR (applied_external_identification_assignment); + +WHERE + WR1 : SIZEOF(QUERY(aia <* applied_external_identification_assignment | + NOT external_version_assignment_is_valid(aia)))=0; +END_RULE; + +RULE material_for_coating_layer FOR (shape_aspect); + LOCAL + coating_layers: SET OF shape_aspect := []; + END_LOCAL; + coating_layers:= QUERY( r <* shape_aspect | + (r.name = 'coating layer') ); +WHERE + WR1 : SIZEOF( QUERY( r <* coating_layers | + SIZEOF(USEDIN(r , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MATERIAL_DESIGNATION.DEFINITIONS'))<>1 + )) = 0; +END_RULE; + +RULE plib_property_reference_requires_name_scope FOR (externally_defined_general_property); + LOCAL + known_sourced_properties : SET OF externally_defined_general_property; + END_LOCAL; + known_sourced_properties := QUERY( edc <* externally_defined_general_property | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'KNOWN_SOURCE' IN TYPEOF(edc.source) ); +WHERE + WR1 : SIZEOF ( QUERY ( edgp <* known_sourced_properties | + ( SIZEOF ( QUERY ( edir <* USEDIN ( edgp, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'EXTERNALLY_DEFINED_ITEM_RELATIONSHIP.RELATING_ITEM' )| + ( edir.name = 'name scope' ) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'EXTERNALLY_DEFINED_CLASS' IN TYPEOF ( edir.related_item ) ) AND + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'KNOWN_SOURCE' IN TYPEOF ( edir.related_item.source ) ) ) ) <>1 ) ) ) = 0; +END_RULE; + +RULE plib_property_reference_requires_version FOR (externally_defined_general_property); + LOCAL + plib_properties : SET OF externally_defined_general_property := []; + END_LOCAL; + plib_properties := QUERY ( edgp <* externally_defined_general_property | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'KNOWN_SOURCE' IN TYPEOF ( edgp.source ) ) AND + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'KNOWN_SOURCE' + '.NAME' = 'ISO 13584 library' ) ); +WHERE + WR1 : SIZEOF( QUERY( edgp <* plib_properties | + (SIZEOF( QUERY( edir <* USEDIN(edgp, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.ITEMS') | + (edir.role.name = 'version') )) <> 1) )) = 0; +END_RULE; + +RULE ply_reference FOR (ply_laminate_sequence_definition, next_assembly_usage_occurrence, product_related_product_category); + LOCAL + i,j,k : INTEGER; + dkuhr : LOGICAL := TRUE; + nnauo : INTEGER; + nprpc : INTEGER := 0; + rp : product; + END_LOCAL; + REPEAT i:= LOINDEX (ply_laminate_sequence_definition) TO + HIINDEX (ply_laminate_sequence_definition); + nnauo := 0; + REPEAT j:= LOINDEX (next_assembly_usage_occurrence) TO + HIINDEX (next_assembly_usage_occurrence); + IF (ply_laminate_sequence_definition[i] = + next_assembly_usage_occurrence[j].relating_product_definition) THEN + rp := next_assembly_usage_occurrence[j].related_product_definition. + formation.of_product; + nprpc := 0; + REPEAT k:= LOINDEX (product_related_product_category) TO + HIINDEX (product_related_product_category); + IF ((product_related_product_category[k].name = 'ply') AND + (rp IN product_related_product_category[k].products)) THEN + nprpc := nprpc + 1; + END_IF; + END_REPEAT; + IF (nprpc = 1) THEN + nnauo := nnauo + 1; + ELSE + dkuhr := FALSE; + ESCAPE; + END_IF; + END_IF; + END_REPEAT; + IF (dkuhr = FALSE) THEN + ESCAPE; + END_IF; + IF(nnauo = 0) THEN + dkuhr := FALSE; + ESCAPE; + END_IF; + END_REPEAT; +WHERE + WR1 : dkuhr; +END_RULE; + +RULE ply_stock_material_select FOR (product_related_product_category, make_from_usage_option); + LOCAL + i,j,k,kp : INTEGER; + dkuhr : LOGICAL; + nmfuo : INTEGER; + nprpc : INTEGER := 0; + rp : product; + END_LOCAL; + + dkuhr := TRUE; + REPEAT kp:= LOINDEX (product_related_product_category) TO + HIINDEX (product_related_product_category); + + IF (product_related_product_category[kp].name = 'ply') THEN + REPEAT i:= LOINDEX (product_related_product_category[kp].products) TO + HIINDEX (product_related_product_category[kp].products); + + nmfuo := 0; + REPEAT j:= LOINDEX (make_from_usage_option) TO + HIINDEX (make_from_usage_option); + + rp := make_from_usage_option[j].related_product_definition. + formation.of_product; + + IF (product_related_product_category[kp].products[i] = rp) THEN + + REPEAT k:= LOINDEX (product_related_product_category) TO + HIINDEX (product_related_product_category); + + IF ((rp IN product_related_product_category[k].products) AND + (product_related_product_category[k].name IN + ['isotropic material', 'filament assembly', + 'discontinuous fiber assembly'])) THEN + nprpc := nprpc + 1; + END_IF; + + END_REPEAT; + + IF (nprpc = 1) THEN + nmfuo := nmfuo + 1; + ELSE + dkuhr := FALSE; + ESCAPE; + END_IF; + + END_IF; + + END_REPEAT; + + IF (dkuhr = FALSE) THEN + ESCAPE; + END_IF; + IF(nmfuo <> 1) THEN + dkuhr := FALSE; + ESCAPE; + END_IF; + + END_REPEAT; + END_IF; + + END_REPEAT; +WHERE + WR1 : dkuhr; +END_RULE; + +RULE product_concept_feature_requires_category FOR (product_concept_feature); + +WHERE + WR1 : SIZEOF ( QUERY ( pcf <* product_concept_feature | +(SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'INCLUSION_PRODUCT_CONCEPT_FEATURE', +'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONDITIONAL_CONCEPT_FEATURE'] * TYPEOF(pcf)) = 0) AND +(SIZEOF ( QUERY ( aga <* USEDIN ( pcf , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'APPLIED_GROUP_ASSIGNMENT.' + 'ITEMS' ) | +( aga.role.name = 'specification category member' ) AND +('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRODUCT_CONCEPT_FEATURE_CATEGORY' IN TYPEOF ( aga.assigned_group )))) <>1 ) ) ) = 0; +END_RULE; + +RULE product_definition_replacement_requires_effectivity_assignment FOR (product_definition_relationship); + +WHERE + WR1 : SIZEOF( QUERY( pdr <* product_definition_relationship | + (pdr.name = 'definition replacement') AND + (SIZEOF( USEDIN(pdr,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.APPLIED_EFFECTIVITY_ASSIGNMENT.ITEMS') ) = 0) )) + = 0; +END_RULE; + +RULE restrict_alternative_definition FOR (product_definition); + LOCAL + solution_definitions: SET OF product_definition := []; + END_LOCAL; + solution_definitions := QUERY( pd <* product_definition | + (pd.frame_of_reference.name = 'alternative definition')); +WHERE + WR1 : SIZEOF ( QUERY ( pd <* solution_definitions | + ( SIZEOF ( QUERY ( pdr <* USEDIN ( pd , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION' ) | + pdr.name = 'solution alternative definition' ) ) <>1 ) ) ) = 0; + WR2 : SIZEOF ( QUERY ( pd <* solution_definitions | + NOT ( pd.name IN ['technical' , 'supplier' , 'technical supplier' , ''] ) ) ) = 0; + WR3 : SIZEOF ( QUERY ( pd <* solution_definitions | + ( pd.name IN ['supplier' , 'technical supplier'] ) AND ( + SIZEOF ( QUERY ( aoa <* USEDIN ( pd.formation , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS' ) | + aoa.role.name = 'supplier' )) <>1 ) )) = 0; +END_RULE; + +RULE restrict_assembly_category FOR (product_definition); + LOCAL + assembly_definitions: SET OF product_definition := []; + END_LOCAL; + assembly_definitions := QUERY( pd <* product_definition | + SIZEOF( QUERY( pdca <* USEDIN( pd, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION') | + pdca.frame_of_reference.name= 'assembly definition')) > 0 ); +WHERE + WR1 : SIZEOF( QUERY( pd <* assembly_definitions | + NOT ('assembly' IN categories_of_product(pd.formation.of_product)) ))= 0; +END_RULE; + +RULE restrict_centre_of_mass_representation FOR (representation); + +WHERE + WR1 : SIZEOF ( QUERY ( r <* representation | + ( r.name ='centre of mass' ) AND + ( ( SIZEOF ( r.items ) <>1 ) OR + (SIZEOF ( QUERY ( i <* r.items | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'POINT' IN TYPEOF ( i ) ) AND + ( i.name = 'centre point' ) )) <>1 ) ) ) ) + =0; +END_RULE; + +RULE restrict_classification_assignments FOR (applied_classification_assignment); + +WHERE + WR1 : SIZEOF(QUERY(aia <* applied_classification_assignment | + NOT class_assignment_is_valid(aia)))=0; +END_RULE; + +RULE restrict_collection_category FOR (product_definition); + LOCAL + collection_definitions: SET OF product_definition := []; + END_LOCAL; + collection_definitions := QUERY( pd <* product_definition | + SIZEOF( QUERY( pdca <* USEDIN( pd, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION') | + pdca.frame_of_reference.name= 'collection definition')) > 0 ); +WHERE + WR1 : SIZEOF( QUERY( pd <* collection_definitions | + NOT ('collection' IN categories_of_product(pd.formation.of_product)) ))= 0; +END_RULE; + +RULE restrict_concept_feature_operator FOR (concept_feature_operator); + +WHERE + WR1 : SIZEOF ( QUERY ( cfo <* concept_feature_operator | NOT + ( cfo.name IN ['and' , 'or' , 'oneof' , 'not' , 'implication'] ) ) ) = 0; + WR2 : SIZEOF ( QUERY ( cfo <* concept_feature_operator | (cfo.name = 'implication' ) AND + ( SIZEOF ( QUERY (cfrwc <* USEDIN ( cfo , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION.' + + 'CONDITIONAL_OPERATOR' ) | + SIZEOF ( QUERY ( ccf <* USEDIN( cfrwc , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONDITIONAL_CONCEPT_FEATURE.CONDITION' ) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'INCLUSION_PRODUCT_CONCEPT_FEATURE' IN TYPEOF ( ccf )))) >0 )) >0 ))) = 0; + WR3 : SIZEOF( QUERY (cfo <* concept_feature_operator | (cfo.name = 'not') + AND (SIZEOF(QUERY(cfrwc <* USEDIN(cfo, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION.CONDITIONAL_OPERATOR') | + cfrwc.related_product_concept_feature :<>: cfrwc.relating_product_concept_feature)) >0 ))) = 0; +END_RULE; + +RULE restrict_configuration_design_for_class_breakdown_association FOR (configuration_design); + +WHERE + WR1 : SIZEOF ( QUERY ( cd <* configuration_design | + ( cd.name ='functionality' ) AND + ( NOT ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF ( cd. design ) ) OR + ( cd.design\product_definition.frame_of_reference.name<> 'functional definition' ) ) + ) ) =0; + WR2 : SIZEOF ( QUERY ( cd <* configuration_design | + ( cd.name='realization' ) AND + ( NOT ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF ( cd.design ) ) OR + ( cd.design\product_definition.frame_of_reference.name<> 'conceptual definition' ) ) + ) ) =0; + WR3 : SIZEOF ( QUERY ( cd <* configuration_design | + ( cd.name IN ['functionality' , 'realization'] ) AND + ( NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_CLASS' IN TYPEOF ( cd.configuration.item_concept ) ) ) + ) ) =0; +END_RULE; + +RULE restrict_configuration_design_for_design_constraint FOR (configuration_design); + +WHERE + WR1 : SIZEOF ( QUERY (cd <* configuration_design | + (cd.name = 'design constraint usage') AND + (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF ( cd.design ) ) OR + (cd.design\product_definition.frame_of_reference.name <> 'design constraint definition')))) = 0; +END_RULE; + +RULE restrict_group_relationship_for_classification_hierarchy FOR (group_relationship); + +WHERE + WR1 : SIZEOF( QUERY( gr <* group_relationship | + (gr\group_relationship.name = 'class hierarchy') AND + (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CLASS' IN TYPEOF(gr\group_relationship.related_group)) OR + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CLASS' IN TYPEOF(gr\group_relationship.relating_group))) )) = 0; +END_RULE; + +RULE restrict_group_relationship_for_specification_category FOR (group_relationship); + +WHERE + WR1 : SIZEOF( QUERY( gr <* group_relationship | + (gr.name = 'specification category hierarchy') AND + (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY' IN TYPEOF(gr.related_group)) + OR NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY' IN TYPEOF(gr.relating_group))) )) = 0; +END_RULE; + +RULE restrict_language_assignment_per_attribute FOR (attribute_language_assignment); + +WHERE + WR1 : SIZEOF ( QUERY ( ala1 <* attribute_language_assignment | + SIZEOF(QUERY( it <* ala1.items | + SIZEOF ( QUERY ( ala2 <* USEDIN ( it ,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS' ) | + ( ala1\attribute_classification_assignment.attribute_name = ala2\attribute_classification_assignment.attribute_name ) AND + ( ala1\attribute_classification_assignment.assigned_class :=: ala2\attribute_classification_assignment.assigned_class ) + )) >1 + )) >0 + )) =0; +END_RULE; + +RULE restrict_part_occurrence FOR (product_definition); + LOCAL + part_occurrences: SET OF product_definition := QUERY(pd <* product_definition | + ( pd.frame_of_reference.name = 'part occurrence' )); + END_LOCAL; +WHERE + WR1 : SIZEOF ( QUERY ( pd <* part_occurrences | + ( NOT( pd.name IN + ['single instance' , 'selected instance' ,'quantified instance' , 'specified instance' ] ) ) ) ) = 0; + WR2 : SIZEOF ( QUERY ( pd <* part_occurrences | + (SIZEOF ( QUERY ( pdr <* USEDIN ( pd , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION' ) | + pdr.name = 'definition usage' ) ) <>1 ) AND + ( SIZEOF ( QUERY ( cd <* USEDIN ( pd , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONFIGURATION_DESIGN.DESIGN' ) | + ( cd.name = 'occurrence usage definition' ) AND + ( NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRODUCT_IDENTIFICATION' IN TYPEOF( cd.configuration ) ) ) ) ) <>1 ) ) ) = 0; + WR3 : SIZEOF ( QUERY ( pd <* part_occurrences | + (SIZEOF ( QUERY ( cd <* USEDIN ( pd , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION' ) | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' +'PRODUCT_DEFINITION_USAGE' IN TYPEOF ( cd ) ) ) ) = 0 )AND + ( SIZEOF ( USEDIN ( pd , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRODUCT_DEFINITION_OCCURRENCE_RELATIONSHIP.OCCURRENCE' ) ) = 0 ) ) ) = 0; + WR4 : SIZEOF ( QUERY ( pd <* part_occurrences | + ( pd.name = 'selected instance' ) AND + NOT valid_selected_instance_representation(pd) ))=0; + WR5 : SIZEOF ( QUERY ( pd <* part_occurrences | + ( pd.name = 'quantified instance' ) AND + ( SIZEOF ( QUERY (ppd <* USEDIN ( pd , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' +'PROPERTY_DEFINITION.DEFINITION' ) | + ( ppd.name ='occurrence quantity' ) AND + ( SIZEOF ( QUERY ( pdr <*USEDIN ( ppd , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' +'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION' ) | ( + pdr.used_representation.name = 'quantity' ) AND + (SIZEOF ( pdr.used_representation.items ) = 1 ) AND + (SIZEOF ( QUERY ( i <* pdr.used_representation.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'MEASURE_REPRESENTATION_ITEM' IN TYPEOF ( i ) ) AND + ( i.name = 'quantity measure' ) ) ) = 1)))= 1 )))= 0 )))= 0; + WR6 : SIZEOF ( QUERY ( pd <* part_occurrences | + ( pd.name = 'specified instance' ) AND + ( SIZEOF ( QUERY ( + pdor <* USEDIN ( pd , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' +'PRODUCT_DEFINITION_OCCURRENCE_RELATIONSHIP.OCCURRENCE' ) | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' +'SPECIFIED_HIGHER_USAGE_OCCURRENCE' IN TYPEOF ( pdor.occurrence_usage ) ) ) = 0 ) ) ) = 0; +END_RULE; + +RULE restrict_part_occurrence_category FOR (product_definition); + LOCAL + part_occurrences: SET OF product_definition := QUERY( pd <* product_definition |( + pd.frame_of_reference.name = 'part occurrence')); + END_LOCAL; +WHERE + WR1 : SIZEOF( QUERY( pd <* part_occurrences | + (SIZEOF( QUERY( prpc <* USEDIN(pd.formation.of_product, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | + prpc.name IN ['part','raw material','tool'] )) = 0 ) )) = 0; +END_RULE; + +RULE restrict_product_definitions_for_base_element FOR (product_definition_relationship); + +WHERE + WR1 : SIZEOF ( QUERY ( pdr <* product_definition_relationship | + ( pdr. name = 'solution alternative definition' ) AND + ( NOT( pdr. relating_product_definition.frame_of_reference.name + IN [ 'alternative definition' , 'functional definition' , 'conceptual definition' ] ) OR + ( pdr.related_product_definition.frame_of_reference.name<>'alternative definition' ) ) ) ) =0; +END_RULE; + +RULE restrict_product_definitions_for_collection FOR (product_definition_relationship); + +WHERE + WR1 : SIZEOF ( QUERY ( pdr <* product_definition_relationship | + ( pdr. name = 'collection membership' ) AND + ( ( pdr.relating_product_definition.frame_of_reference.name<>'part definition' ) OR + ( pdr.related_product_definition.frame_of_reference.name<>'part occurrence' ) OR + ( SIZEOF ( QUERY ( pdca <* USEDIN (pdr.relating_product_definition , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION') | + ( pdca.role.name = 'part definition type' ) AND + ( pdca.frame_of_reference.name = 'collection definition' ) )) =0 ) ) ) ) =0; +END_RULE; + +RULE restrict_product_definitions_for_definition_usage FOR (product_definition_relationship); + +WHERE + WR1 : SIZEOF ( QUERY ( pdr <* product_definition_relationship | + ( pdr.name = 'definition usage' ) AND + ( ( pdr.relating_product_definition.frame_of_reference.name<> 'part definition' ) OR + ( pdr.related_product_definition.frame_of_reference.name<>'part occurrence' )))) =0; +END_RULE; + +RULE restrict_product_definitions_for_design_constraint_association FOR (product_definition_relationship); + +WHERE + WR1 : SIZEOF ( QUERY ( pdr <* product_definition_relationship | + ( pdr. name = 'design constraint association' ) AND + ( (pdr. relating_product_definition.frame_of_reference.name<>'design constraint definition' ) OR + NOT ( pdr.related_product_definition.frame_of_reference.name IN + ['alternative definition' , 'functional definition' ,'conceptual definition' ] ) ) ) ) =0; +END_RULE; + +RULE restrict_product_definitions_for_part_definition_relationship FOR (product_definition_relationship); + +WHERE + WR1 : SIZEOF ( QUERY ( pdr <* product_definition_relationship | + ( pdr.name IN [ 'geometrical relationship' , 'definition replacement' ] ) AND + ( ( pdr.relating_product_definition.frame_of_reference.name <>'part definition' ) OR + ( pdr.related_product_definition.frame_of_reference.name <>'part definition' ) ) ) ) =0; +END_RULE; + +RULE restrict_representation_for_surface_condition FOR (property_definition_representation); + +WHERE + WR1 : SIZEOF(QUERY(pdr <* property_definition_representation | + NOT surface_condition_correlation(pdr.definition, pdr.used_representation) ))=0; +END_RULE; + +RULE restrict_treatment_result FOR (representation); + LOCAL + treatment_results: SET OF representation := []; + END_LOCAL; + treatment_results:= QUERY( r <* representation | + (r.name = 'treatment result') ); +WHERE + WR1 : (SIZEOF( QUERY( r <* treatment_results | (SIZEOF(r.items) > 2) )) = 0) AND + (SIZEOF( QUERY( r <* treatment_results | + (SIZEOF( QUERY( i <* r.items | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) )) > 0) )) = 0); + WR2 : SIZEOF( QUERY( r <* treatment_results | + (SIZEOF( QUERY( i <* r.items | i.name = 'result' )) = 0) )) = 0; + WR3 : SIZEOF( QUERY( r <* treatment_results | + (SIZEOF( QUERY( i <* r.items | i.name = 'purpose' )) > 1) )) = 0; +END_RULE; + +RULE selected_instance_usage_requires_representation FOR (assembly_component_usage); + LOCAL + selected_instance_usages: SET OF assembly_component_usage := QUERY( acr <* assembly_component_usage| + (acr.name = 'selected instance usage')); + END_LOCAL; +WHERE + WR1 : SIZEOF ( QUERY ( acr <* selected_instance_usages | + NOT valid_selected_instance_representation(acr) ))=0; +END_RULE; + +RULE solution_definition_requires_solution_category FOR (product_definition); + LOCAL + solution_definitions: SET OF product_definition := []; + END_LOCAL; + solution_definitions := QUERY( pd <* product_definition | + (pd.frame_of_reference.name = 'alternative definition')); +WHERE + WR1 : SIZEOF( QUERY( pd <* solution_definitions | + (SIZEOF( QUERY( prpc <* USEDIN(pd.formation.of_product, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | + prpc.name = 'alternative solution')) = 0 ) )) = 0; +END_RULE; + +RULE stock_material_reference FOR (percentage_ply_definition, make_from_usage_option, product_related_product_category); + LOCAL + i,j,k : INTEGER; + dkuhr : LOGICAL; + nmfuo : INTEGER; + nprpc : INTEGER; + rp : product; + END_LOCAL; + dkuhr := TRUE; + REPEAT i:= LOINDEX (percentage_ply_definition) TO + HIINDEX (percentage_ply_definition); + nmfuo := 0; + REPEAT j:= LOINDEX (make_from_usage_option) TO + HIINDEX (make_from_usage_option); + IF (percentage_ply_definition[i] = + make_from_usage_option[j].relating_product_definition) THEN + rp := make_from_usage_option[j].related_product_definition. + formation.of_product; + nprpc := 0; + REPEAT k:= LOINDEX (product_related_product_category) TO + HIINDEX (product_related_product_category); + IF ((rp IN product_related_product_category[k].products) AND + (product_related_product_category[k].name IN + ['anisotropic material', 'isotropic material', 'stock core', + 'filament assembly', 'discontinuous fiber assembly'])) THEN + nprpc := nprpc + 1; + END_IF; + END_REPEAT; + IF (nprpc = 1) THEN + nmfuo := nmfuo + 1; + ELSE + dkuhr := FALSE; + ESCAPE; + END_IF; + END_IF; + END_REPEAT; + IF (dkuhr = FALSE) THEN + ESCAPE; + END_IF; + IF(nmfuo = 0) THEN + dkuhr := FALSE; + ESCAPE; + END_IF; + END_REPEAT; +WHERE + WR1 : dkuhr; +END_RULE; + +RULE styled_curve FOR (styled_item); + +WHERE + WR1 : SIZEOF( QUERY( si <* styled_item | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE' IN TYPEOF (si.item)) AND (SIZEOF (QUERY (psa <* si.styles | (SIZEOF (QUERY (cs <* psa.styles | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' IN TYPEOF (cs)) )) > 0) )) <> 1) )) = 0; +END_RULE; + +RULE subtype_exclusiveness_geometric_tolerance FOR (geometric_tolerance); + +WHERE + WR1 : SIZEOF(QUERY (gt <* geometric_tolerance | NOT (type_check_function(gt, ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANGULARITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCULAR_RUNOUT_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COAXIALITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONCENTRICITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CYLINDRICITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FLATNESS_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE_PROFILE_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PARALLELISM_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PERPENDICULARITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITION_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ROUNDNESS_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRAIGHTNESS_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_PROFILE_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SYMMETRY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TOTAL_RUNOUT_TOLERANCE'] , 3)))) = 0; +END_RULE; + +RULE subtype_exclusiveness_representation_item FOR (representation_item); + +WHERE + WR1 : SIZEOF(QUERY (cri <* representation_item | + NOT (type_check_function(cri,['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VALUE_REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOUND_REPRESENTATION_ITEM'] , 3)))) = 0; +END_RULE; + +RULE subtype_mandatory_geometric_tolerance FOR (geometric_tolerance); + +WHERE + WR1 : SIZEOF(QUERY (gt <* geometric_tolerance | NOT (type_check_function(gt, ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANGULARITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCULAR_RUNOUT_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COAXIALITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONCENTRICITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CYLINDRICITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FLATNESS_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE_PROFILE_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PARALLELISM_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PERPENDICULARITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITION_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ROUNDNESS_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRAIGHTNESS_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_PROFILE_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SYMMETRY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TOTAL_RUNOUT_TOLERANCE'] , 0)))) = 0; +END_RULE; + +RULE text_font_usage FOR (externally_defined_text_font, pre_defined_text_font); + +WHERE + WR1 : SIZEOF (QUERY (pdtf <* pre_defined_text_font | SIZEOF (USEDIN (pdtf, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL.FONT')) = 0 )) = 0; + WR2 : SIZEOF (QUERY (edtf <* externally_defined_text_font | SIZEOF (USEDIN (edtf, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL.FONT')) = 0 )) = 0; +END_RULE; + +RULE thickness_laminate_table_component_select FOR (thickness_laminate_definition, next_assembly_usage_occurrence, product_related_product_category); + LOCAL + i,j,k : INTEGER; + dkuhr : LOGICAL; + nnauo : INTEGER; + nprpc : INTEGER; + rp : product; + END_LOCAL; + dkuhr := TRUE; + REPEAT i:= LOINDEX (thickness_laminate_definition) TO + HIINDEX (thickness_laminate_definition); + nnauo := 0; + REPEAT j:= LOINDEX (next_assembly_usage_occurrence) TO + HIINDEX (next_assembly_usage_occurrence); + IF (thickness_laminate_definition[i] = + next_assembly_usage_occurrence[j].relating_product_definition) THEN + rp := next_assembly_usage_occurrence[j].related_product_definition. + formation.of_product; + nprpc := 0; + REPEAT k:= LOINDEX (product_related_product_category) TO + HIINDEX (product_related_product_category); + IF ((rp IN product_related_product_category[k].products) AND + (product_related_product_category[k].name IN + ['ply', 'filament laminate', 'processed core'])) THEN + nprpc := nprpc + 1; + END_IF; + END_REPEAT; + IF (nprpc = 1) THEN + nnauo := nnauo + 1; + ELSE + dkuhr := FALSE; + ESCAPE; + END_IF; + END_IF; + END_REPEAT; + IF (dkuhr = FALSE) THEN + ESCAPE; + END_IF; + IF (nnauo <> 1) THEN + dkuhr := FALSE; + ESCAPE; + END_IF; + END_REPEAT; +WHERE + WR1 : dkuhr; +END_RULE; + +RULE validate_dependently_instantiable_entity_data_types FOR (action_method_role, annotation_text, attribute_value_role, auxiliary_geometric_representation_item, binary_numeric_expression, boolean_expression, bounded_curve, bounded_surface, cartesian_transformation_operator, comparison_expression, concept_feature_relationship, concept_feature_relationship_with_condition, connected_edge_set, document_usage_constraint, edge_blended_solid, effectivity_context_role, event_occurrence_role, explicit_procedural_representation_item_relationship, expression, founded_item, generic_expression, generic_variable, indirectly_selected_elements, interval_expression, literal_number, local_time, loop, modified_solid_with_placed_configuration, multiple_arity_boolean_expression, multiple_arity_generic_expression, multiple_arity_numeric_expression, numeric_expression, one_direction_repeat_factor, oriented_open_shell, oriented_path, positioned_sketch, procedural_representation, procedural_representation_sequence, product_definition_context_role, product_definition_effectivity, runout_zone_orientation, simple_boolean_expression, simple_generic_expression, simple_numeric_expression, solid_with_depression, solid_with_hole, solid_with_pocket, solid_with_protrusion, solid_with_shape_element_pattern, solid_with_slot, swept_area_solid, symbol_target, tolerance_zone_form, two_direction_repeat_factor, unary_generic_expression, unary_numeric_expression, user_selected_elements, variational_representation_item, view_volume); +LOCAL + number_of_input_instances : INTEGER; + previous_in_chain : LIST OF GENERIC := []; + set_of_input_types : SET OF STRING := []; + all_instances : SET OF GENERIC := []; +END_LOCAL; + + all_instances := all_instances + action_method_role + annotation_text + attribute_value_role + auxiliary_geometric_representation_item + binary_numeric_expression + boolean_expression + bounded_curve + bounded_surface + cartesian_transformation_operator + comparison_expression + concept_feature_relationship + concept_feature_relationship_with_condition + connected_edge_set + document_usage_constraint + edge_blended_solid + effectivity_context_role + event_occurrence_role + explicit_procedural_representation_item_relationship + expression + founded_item + generic_expression + generic_variable + indirectly_selected_elements + interval_expression + literal_number + local_time + loop + modified_solid_with_placed_configuration + multiple_arity_boolean_expression + multiple_arity_generic_expression + multiple_arity_numeric_expression + numeric_expression + one_direction_repeat_factor + oriented_open_shell + oriented_path + positioned_sketch + procedural_representation + procedural_representation_sequence + product_definition_context_role + product_definition_effectivity + runout_zone_orientation + simple_boolean_expression + simple_generic_expression + simple_numeric_expression + solid_with_depression + solid_with_hole + solid_with_pocket + solid_with_protrusion + solid_with_shape_element_pattern + solid_with_slot + swept_area_solid + symbol_target + tolerance_zone_form + two_direction_repeat_factor + unary_generic_expression + unary_numeric_expression + user_selected_elements + variational_representation_item + view_volume;-- +number_of_input_instances := SIZEOF(all_instances); +(* Collect all type strings of all FOR instances into one set. *) +REPEAT i:=1 TO number_of_input_instances; + set_of_input_types := set_of_input_types + TYPEOF(all_instances[i]); +END_REPEAT; +WHERE + WR1 : dependently_instantiated(all_instances, set_of_input_types, + previous_in_chain); +END_RULE; + +FUNCTION acyclic + (arg1: generic_expression; arg2: SET [0:?] OF generic_expression) : BOOLEAN; +LOCAL + result: BOOLEAN := TRUE; +END_LOCAL; + +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SIMPLE_GENERIC_EXPRESSION' + IN TYPEOF (arg1)) +THEN + RETURN (TRUE); +END_IF; + +IF arg1 IN arg2 +THEN + RETURN (FALSE); +END_IF; + +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.UNARY_GENERIC_EXPRESSION' + IN TYPEOF (arg1) +THEN + RETURN + (acyclic(arg1\unary_generic_expression.operand,arg2+[arg1])); +END_IF; + +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BINARY_GENERIC_EXPRESSION' + IN TYPEOF (arg1) +THEN + RETURN + (acyclic(arg1\binary_generic_expression.operands[1],arg2+[arg1]) + AND + acyclic(arg1\binary_generic_expression.operands[2],arg2+[arg1])); +END_IF; + +IF +'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MULTIPLE_ARITY_GENERIC_EXPRESSION' + IN TYPEOF (arg1) +THEN + result := TRUE; + REPEAT i := 1 TO + SIZEOF (arg1\multiple_arity_generic_expression.operands); + result := result AND + acyclic(arg1\multiple_arity_generic_expression.operands[i], arg2+[arg1]); + END_REPEAT; + + RETURN (result); +END_IF; + RETURN (result); +END_FUNCTION; + +FUNCTION acyclic_composite_text + (start_composite: composite_text; child_text: SET [1:?] OF text_or_character) : LOGICAL; + LOCAL + i : INTEGER; + local_composite_text : SET [0:?] OF composite_text; + local_annotation_text : SET [0:?] OF annotation_text; + local_children : SET [0:?] OF text_or_character; + END_LOCAL; + + local_composite_text := QUERY (child <* child_text | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT' + IN TYPEOF (child))); + + IF (SIZEOF (local_composite_text) > 0) + THEN + REPEAT i := 1 TO HIINDEX (local_composite_text); + IF (start_composite :=: local_composite_text[i]) + THEN + RETURN (FALSE); + END_IF; + END_REPEAT; + END_IF; + + local_children := child_text; + + IF (SIZEOF (local_composite_text)) > 0 THEN + REPEAT i := 1 TO HIINDEX (local_composite_text); + local_children := local_children + + local_composite_text[i].collected_text; + END_REPEAT; + END_IF; + + local_annotation_text := QUERY (child <* child_text | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT' + IN TYPEOF (child))); + + IF (SIZEOF (local_annotation_text) > 0) THEN + REPEAT i := 1 TO HIINDEX (local_annotation_text); + local_children := local_children + + QUERY (item <* local_annotation_text[i]\mapped_item. + mapping_source.mapped_representation.items | + SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT'] * + TYPEOF(item)) > 0); + END_REPEAT; + END_IF; + + IF (local_children :<>: child_text) THEN + RETURN (acyclic_composite_text (start_composite, local_children)); + ELSE + RETURN (TRUE); + END_IF; +END_FUNCTION; + +FUNCTION acyclic_curve_replica + (rep: curve_replica; parent: curve) : BOOLEAN; +IF NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA') IN TYPEOF(parent)) THEN + RETURN (TRUE); + END_IF; + (* Return TRUE if the parent is not of type curve_replica *) + IF (parent :=: rep) THEN + RETURN (FALSE); + (* Return FALSE if the parent is the same curve_replica, otherwise, + call function again with the parents own parent_curve. *) + ELSE + RETURN(acyclic_curve_replica(rep, + parent\curve_replica.parent_curve)); + END_IF; +END_FUNCTION; + +FUNCTION acyclic_mapped_item_usage + (rep: representation) : BOOLEAN; + LOCAL + items : SET OF representation_item; + END_LOCAL; + + items := QUERY (item <* rep.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (item)); + IF SIZEOF (items) = 0 + THEN + RETURN (FALSE); + ELSE + REPEAT i := 1 TO HIINDEX (items); + IF items[i]\mapped_item.mapping_source.mapped_representation :=: rep + THEN + RETURN (TRUE); + ELSE + RETURN (acyclic_mapped_item_usage(items[i]\ + mapped_item.mapping_source.mapped_representation)); + END_IF; + END_REPEAT; + RETURN (FALSE); + END_IF; +END_FUNCTION; + +FUNCTION acyclic_mapped_representation + (mi: mapped_item) : BOOLEAN; + LOCAL + rms : SET OF representation_map; + mis : SET OF mapped_item; + rs1, rs2 : SET OF representation; + END_LOCAL; + + rs1 := using_representations(mi); + rs2 := []; + -- loop as long as there are elements in rs1 + REPEAT WHILE SIZEOF(rs1) > 0; + REPEAT i := 1 TO HIINDEX(rs1); + -- Determine the set of representation_map that reference the parent_set + rms := bag_to_set(USEDIN(rs1[i], 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION_MAP.MAPPED_REPRESENTATION')); + IF SIZEOF(rms) > 0 THEN + REPEAT j := 1 TO HIINDEX(rms); + mis := bag_to_set(USEDIN(rms[i], 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM.MAPPING_SOURCE')); + IF SIZEOF(mis) > 0 THEN + REPEAT j := 1 TO HIINDEX(mis); + -- check mis members for instance equal with mi. If so then there is a cycle + IF mis[i] :=: mi THEN + RETURN (FALSE); + END_IF; + rs2 := rs2 + using_representations(mis[i]); + END_REPEAT; + END_IF; + END_REPEAT; + END_IF; + END_REPEAT; + rs1 := rs2; + rs2 := []; + END_REPEAT; + RETURN (TRUE); +END_FUNCTION; + +FUNCTION acyclic_point_replica + (rep: point_replica; parent: point) : BOOLEAN; +IF NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_REPLICA') IN TYPEOF(parent)) THEN + RETURN (TRUE); + END_IF; + (* Return TRUE if the parent is not of type point_replica *) + IF (parent :=: rep) THEN + RETURN (FALSE); + (* Return FALSE if the parent is the same point_replica, otherwise, + call function again with the parents own parent_pt. *) + ELSE RETURN(acyclic_point_replica(rep, parent\point_replica.parent_pt)); + END_IF; +END_FUNCTION; + +FUNCTION acyclic_product_definition_relationship + (relation: product_definition_relationship; relatives: SET [1:?] OF product_definition; specific_relation: STRING) : BOOLEAN; + LOCAL + x : SET OF product_definition_relationship; + END_LOCAL; + + IF relation.relating_product_definition IN relatives THEN + RETURN (FALSE); + END_IF; + x := QUERY(pd <* bag_to_set(USEDIN(relation.relating_product_definition, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRODUCT_DEFINITION_RELATIONSHIP.' + 'RELATED_PRODUCT_DEFINITION')) | specific_relation IN TYPEOF(pd)); + REPEAT i := 1 TO HIINDEX(x); + IF NOT acyclic_product_definition_relationship(x[i], relatives + relation.relating_product_definition, specific_relation) THEN + RETURN (FALSE); + END_IF; + END_REPEAT; + RETURN (TRUE); +END_FUNCTION; + +FUNCTION acyclic_representation_relationship + (relation: representation_relationship; relatives: SET [1:?] OF representation; specific_relation: STRING) : BOOLEAN; + LOCAL + x : SET OF representation_relationship; + END_LOCAL; + + IF relation.rep_1 IN relatives THEN + RETURN (FALSE); + END_IF; + x := QUERY(r <* bag_to_set(USEDIN(relation.rep_1, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.' + 'REP_2')) | specific_relation IN TYPEOF(r)); + REPEAT i := 1 TO HIINDEX(x); + IF NOT acyclic_representation_relationship(x[i], relatives + relation.rep_1, specific_relation) THEN + RETURN (FALSE); + END_IF; + END_REPEAT; + RETURN (TRUE); +END_FUNCTION; + +FUNCTION acyclic_solid_replica + (rep: solid_replica; parent: solid_model) : BOOLEAN; +IF NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_REPLICA') IN TYPEOF(parent)) THEN + RETURN (TRUE); + END_IF; + (* Return TRUE if the parent is not of type solid_replica. *) + IF (parent :=: rep) THEN + RETURN (FALSE); + (* Return FALSE if the parent is the same solid_replica, otherwise, + call function again with the parents own parent_solid. *) + ELSE RETURN(acyclic_solid_replica(rep, + parent\solid_replica.parent_solid)); + END_IF; +END_FUNCTION; + +FUNCTION acyclic_surface_replica + (rep: surface_replica; parent: surface) : BOOLEAN; +IF NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_REPLICA') IN TYPEOF(parent)) THEN + RETURN (TRUE); + END_IF; + (* Return TRUE if the parent is not of type surface_replica *) + IF (parent :=: rep) THEN + RETURN (FALSE); + (* Return FALSE if the parent is the same surface_replica, otherwise, + call function again with the parents own parent_surface. *) + ELSE RETURN(acyclic_surface_replica(rep, + parent\surface_replica.parent_surface)); + END_IF; +END_FUNCTION; + +FUNCTION advanced_face_properties + (testface: face) : BOOLEAN; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF(testface) THEN + RETURN (TRUE); +END_IF; +(* if testface is a subface recursively test the parent_face, +return FALSE for all other types of face *) +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBFACE' IN TYPEOF(testface)) THEN + RETURN(advanced_face_properties(testface\subface.parent_face)); + ELSE RETURN (FALSE); +END_IF; +END_FUNCTION; + +FUNCTION aspect_ratio + (p: planar_box) : positive_ratio_measure; +IF (p.size_in_x > 0.) AND (p.size_in_y > 0.) THEN + RETURN (p.size_in_x / p.size_in_y); + ELSE + RETURN (?); + END_IF; +END_FUNCTION; + +FUNCTION associated_surface + (arg: pcurve_or_surface) : surface; + LOCAL + surf : surface; + END_LOCAL; + + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(arg) THEN + surf := arg\pcurve.basis_surface; + ELSE + surf := arg; + END_IF; + RETURN(surf); +END_FUNCTION; + +FUNCTION bag_to_set + (the_bag: BAG [0:?] OF GENERIC: intype) : SET [0:?] OF GENERIC: intype; + LOCAL + the_set : SET OF GENERIC:intype := []; + END_LOCAL; + + IF SIZEOF(the_bag) > 0 THEN + REPEAT i := 1 TO HIINDEX(the_bag); + the_set := the_set + the_bag[i]; + END_REPEAT; + END_IF; + RETURN (the_set); +END_FUNCTION; + +FUNCTION base_axis + (dim: INTEGER; axis1: direction; axis2: direction; axis3: direction) : LIST [2:3] OF direction; + LOCAL + u : LIST [2:3] OF direction; + factor : REAL; + d1, d2 : direction; + END_LOCAL; + + IF (dim = 3) THEN + d1 := NVL(normalise(axis3), dummy_gri || direction([0.0,0.0,1.0])); + d2 := first_proj_axis(d1,axis1); + u := [d2, second_proj_axis(d1,d2,axis2), d1]; + ELSE + IF EXISTS(axis1) THEN + d1 := normalise(axis1); + u := [d1, orthogonal_complement(d1)]; + IF EXISTS(axis2) THEN + factor := dot_product(axis2,u[2]); + IF (factor < 0.0) THEN + u[2].direction_ratios[1] := -u[2].direction_ratios[1]; + u[2].direction_ratios[2] := -u[2].direction_ratios[2]; + END_IF; + END_IF; + ELSE + IF EXISTS(axis2) THEN + d1 := normalise(axis2); + u := [orthogonal_complement(d1), d1]; + u[1].direction_ratios[1] := -u[1].direction_ratios[1]; + u[1].direction_ratios[2] := -u[1].direction_ratios[2]; + ELSE + u := [dummy_gri || direction([1.0, 0.0]), dummy_gri || + direction([0.0, 1.0])]; + END_IF; + END_IF; + END_IF; + RETURN(u); +END_FUNCTION; + +FUNCTION boolean_choose + (b: BOOLEAN; choice1: GENERIC: item; choice2: GENERIC: item) : GENERIC: item; +IF b THEN + RETURN (choice1); + ELSE + RETURN (choice2); + END_IF; +END_FUNCTION; + +FUNCTION build_2axes + (ref_direction: direction) : LIST [2:2] OF direction; + LOCAL + d : direction := NVL(normalise(ref_direction), + dummy_gri || direction([1.0,0.0])); + END_LOCAL; + + RETURN([d, orthogonal_complement(d)]); +END_FUNCTION; + +FUNCTION build_axes + (axis: direction; ref_direction: direction) : LIST [3:3] OF direction; + LOCAL + d1, d2 : direction; + END_LOCAL; + d1 := NVL(normalise(axis), dummy_gri || direction([0.0,0.0,1.0])); + d2 := first_proj_axis(d1, ref_direction); + RETURN([d2, normalise(cross_product(d1,d2))\vector.orientation, d1]); +END_FUNCTION; + +FUNCTION categories_of_product + (obj: product) : SET [0:?] OF STRING; +LOCAL + category_assignments: BAG OF product_category; + categories: SET OF STRING:=[]; +END_LOCAL; +category_assignments := USEDIN(obj, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'); +REPEAT i := LOINDEX(category_assignments) TO HIINDEX(category_assignments) BY 1; + categories := categories + category_assignments[i].name; +END_REPEAT; +RETURN(categories); +END_FUNCTION; + +FUNCTION cc_design_person_and_organization_correlation + (e: cc_design_person_and_organization_assignment) : BOOLEAN; + LOCAL + po_role : STRING; + END_LOCAL; + po_role := e\person_and_organization_assignment.role.name; + CASE po_role OF + 'request_recipient' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CHANGE_REQUEST', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'START_REQUEST'] * + TYPEOF (x)) = 1)) + THEN RETURN(FALSE); + END_IF; + 'initiator' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CHANGE_REQUEST', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'START_REQUEST', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'START_WORK', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CHANGE'] * + TYPEOF (x)) = 1)) + THEN RETURN(FALSE); + END_IF; + 'creator' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_FORMATION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION'] * + TYPEOF (x)) = 1)) + THEN RETURN (FALSE); + END_IF; + 'part_supplier' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_FORMATION' + IN TYPEOF (x))) + THEN RETURN(FALSE); + END_IF; + 'design_supplier' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_FORMATION' + IN TYPEOF (x))) + THEN RETURN(FALSE); + END_IF; + 'design_owner' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT' + IN TYPEOF (x))) + THEN RETURN(FALSE); + END_IF; + 'configuration_manager' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CONFIGURATION_ITEM' + IN TYPEOF (x))) + THEN RETURN(FALSE); + END_IF; + 'contractor' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONTRACT' + IN TYPEOF (x))) + THEN RETURN(FALSE); + END_IF; + 'classification_officer' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SECURITY_CLASSIFICATION' + IN TYPEOF (x))) THEN + RETURN(FALSE); + END_IF; + OTHERWISE : RETURN(TRUE); + END_CASE; + RETURN (TRUE); +END_FUNCTION; + +FUNCTION check_continuous_edges + (edges: LIST [0:?] OF UNIQUE edge_curve) : BOOLEAN; + LOCAL + i : INTEGER; + next_vertex : vertex; + END_LOCAL; + + -- first check whether there is only one edge in the list: in this + -- case there is no connectivity to be checked. + + IF (SIZEOF(edges) = 1) + THEN RETURN(TRUE); + END_IF; + + -- otherwise, establish the matching vertices of edges 1 and 2 in + -- the list, and determine the vertex of edge 2 to which edge 3, + -- must be connected, if there are more than two edges in the list. + + IF ((edges[2].edge_start :=: edges[1].edge_end) + XOR (edges[2].edge_start :=: edges[1].edge_start)) + THEN next_vertex := edges[2].edge_end; + ELSE + IF ((edges[2].edge_end :=: edges[1].edge_end) + XOR (edges[2].edge_end :=: edges[1].edge_start)) + THEN next_vertex := edges[2].edge_start; + ELSE RETURN(FALSE); -- no match between any vertices of edges 1 and 2 + END_IF; + END_IF; + + -- exit if there are only two edges and they are connected + + IF (SIZEOF(edges) = 2) + THEN RETURN(TRUE); + END_IF; + + -- otherwise, check that any remaining edges are connected in list order. + + REPEAT i := 3 TO HIINDEX(edges); + IF (edges[i].edge_start :=: next_vertex) + THEN next_vertex := edges[i].edge_end; + ELSE + IF (edges[i].edge_end :=: next_vertex) + THEN next_vertex := edges[i].edge_start; + ELSE RETURN(FALSE); -- no match is found. + END_IF; + END_IF; + END_REPEAT; + RETURN(TRUE); +END_FUNCTION; + +FUNCTION check_text_alignment + (ct: composite_text) : BOOLEAN; + LOCAL + a : SET OF text_alignment := []; + END_LOCAL; + + -- create a set of all the alignments + REPEAT i := 1 TO HIINDEX (ct.collected_text); + a := a + [ct.collected_text[i]\text_literal.alignment]; + END_REPEAT; + + -- if there is more than one element in the set + -- then not all alignments were the same + RETURN (SIZEOF(a) = 1); +END_FUNCTION; + +FUNCTION check_text_font + (ct: composite_text) : BOOLEAN; + LOCAL + f : SET OF font_select := []; + END_LOCAL; + + -- build a set of all the fonts + REPEAT i := 1 TO HIINDEX (ct.collected_text); + f := f + [ct.collected_text[i]\text_literal.font]; + END_REPEAT; + + -- if there is more than one element in the set + -- then not all fonts were the same + RETURN (SIZEOF(f) <= 1); +END_FUNCTION; + +FUNCTION class_assignment_is_valid + (aia: applied_classification_assignment) : BOOLEAN; +LOCAL + item: classification_item; + role: classification_role; +END_LOCAL; + +role:= aia\classification_assignment.role; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' +'CLASS_SYSTEM' IN TYPEOF(aia\classification_assignment.assigned_class)) THEN + IF(role\classification_role.name <> 'class system membership') THEN + RETURN(FALSE); + END_IF; + REPEAT i:=LOINDEX(aia\applied_classification_assignment.items) TO HIINDEX(aia\applied_classification_assignment.items); + item:= aia\applied_classification_assignment.items[i]; + + IF (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CLASS_SYSTEM_ITEM'] * TYPEOF(item))=0) THEN +-- item invalid if item does not belong to the types that may have a class_system + RETURN(FALSE); + END_IF; + END_REPEAT; +END_IF; + +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' +'CHARACTERIZED_CLASS' IN TYPEOF(aia\classification_assignment.assigned_class)) THEN + IF NOT(role\classification_role.name IN ['definitional','non-definitional','']) THEN + RETURN(FALSE); + END_IF; + + + REPEAT i:=LOINDEX(aia\applied_classification_assignment.items) TO HIINDEX(aia\applied_classification_assignment.items); + item:= aia\applied_classification_assignment.items[i]; + + IF (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CLASSIFIED_ITEM'] * TYPEOF(item))=0) THEN +-- item invalid if item does not belong to the types that may have a characterized_class + RETURN(FALSE); + END_IF; + END_REPEAT; +END_IF; + + IF + (role\classification_role.name = 'definitional') + THEN + IF NOT + (SIZEOF(QUERY(it <* aia\applied_classification_assignment.items | NOT + (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_FORMATION', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION'] * TYPEOF(it)) = 1) + )) = 0 ) + THEN + RETURN(FALSE); + END_IF; + END_IF; + +RETURN(TRUE); +END_FUNCTION; + +FUNCTION closed_shell_reversed + (a_shell: closed_shell) : oriented_closed_shell; + LOCAL + the_reverse : oriented_closed_shell; + END_LOCAL; + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF (a_shell) ) THEN + the_reverse := dummy_tri || + connected_face_set ( + a_shell\connected_face_set.cfs_faces) || + closed_shell () || oriented_closed_shell( + a_shell\oriented_closed_shell.closed_shell_element, + NOT(a_shell\oriented_closed_shell.orientation)); + ELSE + the_reverse := dummy_tri || + connected_face_set ( + a_shell\connected_face_set.cfs_faces) || + closed_shell () || oriented_closed_shell (a_shell, FALSE); + END_IF; + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION compute_total_depth + (swsrh: solid_with_stepped_round_hole) : positive_length_measure; +LOCAL +i : positive_integer; +n : positive_integer := swsrh.segments; +td : positive_length_measure := swsrh.segment_depths[1]; +END_LOCAL; + +IF n = 1 +THEN RETURN(td); +ELSE + REPEAT i := 2 TO n; + td := td + swsrh.segment_depths[i]; + END_REPEAT; +END_IF; +RETURN(td); +END_FUNCTION; + +FUNCTION conditional_reverse + (p: BOOLEAN; an_item: reversible_topology) : reversible_topology; +IF p THEN + RETURN (an_item); + ELSE + RETURN (topology_reversed (an_item)); + END_IF; +END_FUNCTION; + +FUNCTION constraints_composite_curve_on_surface + (c: composite_curve_on_surface) : BOOLEAN; + LOCAL + n_segments : INTEGER := SIZEOF(c.segments); + END_LOCAL; + + REPEAT k := 1 TO n_segments; + IF (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN + TYPEOF(c\composite_curve.segments[k].parent_curve))) AND + (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN + TYPEOF(c\composite_curve.segments[k].parent_curve))) AND + (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE_ON_SURFACE' IN + TYPEOF(c\composite_curve.segments[k].parent_curve))) THEN + RETURN (FALSE); + END_IF; + END_REPEAT; + RETURN(TRUE); +END_FUNCTION; + +FUNCTION constraints_geometry_shell_based_surface_model + (m: shell_based_surface_model) : BOOLEAN; + LOCAL + result : BOOLEAN := TRUE; + END_LOCAL; + + REPEAT j := 1 TO SIZEOF(m.sbsm_boundary); + IF (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OPEN_SHELL' IN + TYPEOF(m.sbsm_boundary[j])) AND + (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CLOSED_SHELL' IN + TYPEOF(m.sbsm_boundary[j])))) + THEN + result := FALSE; + RETURN(result); + (* A surface model is composed of OPEN_ and CLOSED_SHELLs. *) + END_IF; + END_REPEAT; + RETURN(result); +END_FUNCTION; + +FUNCTION constraints_geometry_shell_based_wireframe_model + (m: shell_based_wireframe_model) : BOOLEAN; + LOCAL + result : BOOLEAN := TRUE; + END_LOCAL; + + REPEAT j := 1 TO SIZEOF(m.sbwm_boundary); + IF (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN + TYPEOF(m.sbwm_boundary[j])) AND + (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_SHELL' IN + TYPEOF(m.sbwm_boundary[j])))) + THEN + result := FALSE; + RETURN(result); + (* A wireframe model is composed of WIRE_ and VERTEX_SHELLs *) + END_IF; + END_REPEAT; + RETURN(result); +END_FUNCTION; + +FUNCTION constraints_param_b_spline + (degree: INTEGER; up_knots: INTEGER; up_cp: INTEGER; knot_mult: LIST [0:?] OF INTEGER; knots: LIST [0:?] OF parameter_value) : BOOLEAN; + LOCAL + result : BOOLEAN := TRUE; + k, sum : INTEGER; + END_LOCAL; + + (* Find sum of knot multiplicities. *) + sum := knot_mult[1]; + + REPEAT i := 2 TO up_knots; + sum := sum + knot_mult[i]; + END_REPEAT; + + (* Check limits holding for all B-spline parametrisations *) + IF (degree < 1) OR (up_knots < 2) OR (up_cp < degree) OR + (sum <> (degree + up_cp + 2)) THEN + result := FALSE; + RETURN(result); + END_IF; + + k := knot_mult[1]; + + IF (k < 1) OR (k > degree + 1) THEN + result := FALSE; + RETURN(result); + END_IF; + + REPEAT i := 2 TO up_knots; + IF (knot_mult[i] < 1) OR (knots[i] <= knots[i-1]) THEN + result := FALSE; + RETURN(result); + END_IF; + + k := knot_mult[i]; + + IF (i < up_knots) AND (k > degree) THEN + result := FALSE; + RETURN(result); + END_IF; + + IF (i = up_knots) AND (k > degree + 1) THEN + result := FALSE; + RETURN(result); + END_IF; + END_REPEAT; + RETURN(result); +END_FUNCTION; + +FUNCTION constraints_rectangular_composite_surface + (s: rectangular_composite_surface) : BOOLEAN; +REPEAT i := 1 TO s.n_u; + REPEAT j := 1 TO s.n_v; + IF NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF + (s.segments[i][j].parent_surface)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RECTANGULAR_TRIMMED_SURFACE' IN TYPEOF + (s.segments[i][j].parent_surface))) THEN + RETURN(FALSE); + END_IF; + END_REPEAT; + END_REPEAT; + + (* Check the transition codes, omitting the last row or column *) + REPEAT i := 1 TO s.n_u-1; + REPEAT j := 1 TO s.n_v; + IF s.segments[i][j].u_transition = discontinuous THEN + RETURN(FALSE); + END_IF; + END_REPEAT; + END_REPEAT; + + REPEAT i := 1 TO s.n_u; + REPEAT j := 1 TO s.n_v-1; + IF s.segments[i][j].v_transition = discontinuous THEN + RETURN(FALSE); + END_IF; + END_REPEAT; + END_REPEAT; + RETURN(TRUE); +END_FUNCTION; + +FUNCTION control_characters_free + (s: STRING) : BOOLEAN; + LOCAL + ch : STRING; + END_LOCAL; + + REPEAT i:=1 TO LENGTH(s); + ch := s[i]; + IF (ch = '\x9') OR (ch = '\xA') OR (ch = '\xD') THEN + RETURN(FALSE); + END_IF; + END_REPEAT; + RETURN (TRUE); +END_FUNCTION; + +FUNCTION cross_product + (arg1: direction; arg2: direction) : vector; + LOCAL + mag : REAL; + res : direction; + v1,v2 : LIST[3:3] OF REAL; + result : vector; + END_LOCAL; + + IF ( NOT EXISTS (arg1) OR (arg1.dim = 2)) OR + ( NOT EXISTS (arg2) OR (arg2.dim = 2)) THEN + RETURN(?); + ELSE + BEGIN + v1 := normalise(arg1).direction_ratios; + v2 := normalise(arg2).direction_ratios; + res := dummy_gri || direction([(v1[2]*v2[3] - v1[3]*v2[2]), + (v1[3]*v2[1] - v1[1]*v2[3]), (v1[1]*v2[2] - v1[2]*v2[1])]); + mag := 0.0; + REPEAT i := 1 TO 3; + mag := mag + res.direction_ratios[i]*res.direction_ratios[i]; + END_REPEAT; + IF (mag > 0.0) THEN + result := dummy_gri || vector(res, SQRT(mag)); + ELSE + result := dummy_gri || vector(arg1, 0.0); + END_IF; + RETURN(result); + END; + END_IF; +END_FUNCTION; + +FUNCTION curve_weights_positive + (b: rational_b_spline_curve) : BOOLEAN; + LOCAL + result : BOOLEAN := TRUE; + END_LOCAL; + + REPEAT i := 0 TO b.upper_index_on_control_points; + IF b.weights[i] <= 0.0 THEN + result := FALSE; + RETURN(result); + END_IF; + END_REPEAT; + RETURN(result); +END_FUNCTION; + +FUNCTION default_tolerance_table_cell_wr2 + (agg: compound_item_definition) : BOOLEAN; +BEGIN +IF SIZEOF(agg) <= 5 THEN + RETURN(TRUE); +ELSE + RETURN(FALSE); +END_IF; +END; +END_FUNCTION; + +FUNCTION default_tolerance_table_cell_wr3 + (agg: compound_item_definition) : BOOLEAN; +BEGIN +IF (SIZEOF(QUERY ( i <* agg | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) + AND (i\representation_item.name = 'significant number of digits')) )) = 1) OR +((SIZEOF(QUERY ( i <* agg | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND + (i\representation_item.name = 'lower limit')) )) = 1) AND +(SIZEOF( QUERY ( i <* agg | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND + (i\representation_item.name = 'upper limit')) )) = 1)) THEN + RETURN(TRUE); +ELSE + RETURN(FALSE); +END_IF; +END; +END_FUNCTION; + +FUNCTION default_tolerance_table_cell_wr4 + (agg: compound_item_definition) : BOOLEAN; +BEGIN +IF (SIZEOF(QUERY ( i <* agg | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND + (i\representation_item.name = 'plus minus tolerance value')) )) = 1) OR +((SIZEOF(QUERY ( i <* agg | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND ( + i\representation_item.name = 'lower tolerance value')) )) = 1) AND +(SIZEOF( QUERY ( i <* agg | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND ( + i\representation_item.name = 'upper tolerance value')) )) = 1)) THEN + RETURN(TRUE); +ELSE + RETURN(FALSE); +END_IF; +END; +END_FUNCTION; + +FUNCTION default_tolerance_table_cell_wr5 + (agg: compound_item_definition) : BOOLEAN; +BEGIN +IF (SIZEOF(QUERY ( i <* agg | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) )) <= 1) AND +(SIZEOF(QUERY ( i <* agg | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) )) = + SIZEOF(QUERY ( i <* agg | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND + (i\representation_item.name = 'cell description'))) )) +THEN + RETURN(TRUE); +ELSE + RETURN(FALSE); +END_IF; +END; +END_FUNCTION; + +FUNCTION dependently_instantiated + (set_of_input_instances: SET [0:?] OF GENERIC: igen; set_of_input_types: SET [0:?] OF STRING; previous_in_chain: LIST [0:?] OF GENERIC: cgen) : BOOLEAN; +LOCAL + number_of_input_instances : INTEGER; + number_of_referring_instances : INTEGER; + bag_of_referring_instances : BAG OF GENERIC:igen := []; + dependently_instantiated_flag : BOOLEAN; + previous_in_chain_plus : LIST OF GENERIC:cgen := []; + result : BOOLEAN := true; + set_of_types : SET OF STRING := []; +END_LOCAL; + +IF EXISTS(set_of_input_instances) THEN + number_of_input_instances := SIZEOF(set_of_input_instances); + (* Add the declared type of bag_of_referring_instances to the set of + types of the REFERENCEd instances for the subset comparison later. + *) + set_of_input_types := set_of_input_types + 'GENERIC'; + REPEAT i:=1 TO number_of_input_instances; + (* Determine all references to the current input instance. *) + bag_of_referring_instances := USEDIN (set_of_input_instances[i] , ''); + IF EXISTS(bag_of_referring_instances) THEN + number_of_referring_instances := SIZEOF(bag_of_referring_instances); + dependently_instantiated_flag := false; + REPEAT j:=1 TO number_of_referring_instances; + (* Determine the type strings of the current referencing instance. + *) + set_of_types := TYPEOF(bag_of_referring_instances[j]); + (* If the referencing instance is of one of the types of the + only dependently instantiable select items, the current input + instance may still be invalidly instantiated. + Otherwise it is OK, and the next input instance is tested. + *) + IF set_of_types <= set_of_input_types THEN -- subset operator + (* The referring instance is of one of the restricted types. + However, it may itself be referred to by a valid instance; + then also the current instance would be valid. + Thus, call this function recursively with the referring + instance as input. + To avoid an infinite loop in case a set of instances + reference each other in a closed loop, test first whether + the current referencing instance is in the list of + previously processed chain members. + *) + IF NOT (bag_of_referring_instances[j] IN previous_in_chain) THEN + previous_in_chain_plus := previous_in_chain + + set_of_input_instances[i]; + IF dependently_instantiated([bag_of_referring_instances[j]], + set_of_input_types, + previous_in_chain_plus) THEN + dependently_instantiated_flag := true; + ESCAPE; -- dependently instantiated; next input instance + ELSE + (* Not dependently instantiated: go to next referring + instance. *) + SKIP; + END_IF; + END_IF; + ELSE + dependently_instantiated_flag := true; + ESCAPE; -- dependently instantiated; take next input instance + END_IF; + END_REPEAT; + IF NOT dependently_instantiated_flag THEN + RETURN(false); + END_IF; + ELSE + RETURN(false); -- not referenced at all => invalidly instantiated + END_IF; + END_REPEAT; +ELSE + RETURN(false); -- no input +END_IF; + +RETURN(true); +END_FUNCTION; + +FUNCTION derive_angle + (placement_1: axis2_placement_3d; placement_2: axis2_placement_3d) : plane_angle_measure; + LOCAL + v1 : direction; + v2 : direction; + mag_v1 : REAL; + mag_v2 : REAL; + theta : plane_angle_measure; + END_LOCAL; + v1 := placement_1.p[1]; + v2 := placement_2.p[1]; + mag_v1 := SQRT (v1.direction_ratios[1]*v1.direction_ratios[1] + + v1.direction_ratios[2]*v1.direction_ratios[2]); + mag_v2 := SQRT (v2.direction_ratios[1]*v2.direction_ratios[1] + + v2.direction_ratios[2]*v2.direction_ratios[2]); + IF ((mag_v1 = 0.0) OR (mag_v2 = 0.0)) THEN + theta := 0.0; + RETURN (theta); + END_IF; + theta := ACOS ((v1.direction_ratios[1]*v2.direction_ratios[1] + + v1.direction_ratios[2]*v2.direction_ratios[2]) / + (mag_v1*mag_v2)); + RETURN (theta); +END_FUNCTION; + +FUNCTION derive_dimensional_exponents + (x: unit) : dimensional_exponents; + LOCAL + result : dimensional_exponents := dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + END_LOCAL; + + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DERIVED_UNIT' IN TYPEOF(x) THEN + REPEAT i := LOINDEX(x\derived_unit.elements) TO HIINDEX(x\derived_unit.elements); + result.length_exponent := result.length_exponent + + (x\derived_unit.elements[i]\derived_unit_element.exponent * + x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.length_exponent); + result.mass_exponent := result.mass_exponent + + (x\derived_unit.elements[i]\derived_unit_element.exponent * + x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.mass_exponent); + result.time_exponent := result.time_exponent + + (x\derived_unit.elements[i]\derived_unit_element.exponent * + x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.time_exponent); + result.electric_current_exponent := result.electric_current_exponent + + (x\derived_unit.elements[i]\derived_unit_element.exponent * + x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.electric_current_exponent); + result.thermodynamic_temperature_exponent := result.thermodynamic_temperature_exponent + + (x\derived_unit.elements[i]\derived_unit_element.exponent * + x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.thermodynamic_temperature_exponent); + result.amount_of_substance_exponent := result.amount_of_substance_exponent + + (x\derived_unit.elements[i]\derived_unit_element.exponent * + x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.amount_of_substance_exponent); + result.luminous_intensity_exponent := result.luminous_intensity_exponent + + (x\derived_unit.elements[i]\derived_unit_element.exponent * + x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.luminous_intensity_exponent); + END_REPEAT; + ELSE + result := x\named_unit.dimensions; + END_IF; + RETURN (result); +END_FUNCTION; + +FUNCTION dimension_of + (item: geometric_representation_item) : dimension_count; + LOCAL + x : SET OF representation; + y : representation_context; + dim : dimension_count; + END_LOCAL; + -- For cartesian_point, direction, or vector dimension is determined by + -- counting components. + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF(item) THEN + dim := SIZEOF(item\cartesian_point.coordinates); + RETURN(dim); + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIRECTION' IN TYPEOF(item) THEN + dim := SIZEOF(item\direction.direction_ratios); + RETURN(dim); + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VECTOR' IN TYPEOF(item) THEN + dim := SIZEOF(item\vector.orientation\direction.direction_ratios); + RETURN(dim); + END_IF; + -- For all other types of geometric_representation_item dim is obtained + -- via context. + -- Find the set of representation in which the item is used. + + x := using_representations(item); + + -- Determines the dimension_count of the + -- geometric_representation_context. Note that the + -- RULE compatible_dimension ensures that the context_of_items + -- is of type geometric_representation_context and has + -- the same dimension_count for all values of x. + -- The SET x is non-empty since this is required by WR1 of + -- representation_item. + y := x[1].context_of_items; + dim := y\geometric_representation_context.coordinate_space_dimension; + RETURN (dim); +END_FUNCTION; + +FUNCTION dimensions_for_si_unit + (n: si_unit_name) : dimensional_exponents; +CASE n OF + metre: + RETURN (dimensional_exponents(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)); + gram: + RETURN (dimensional_exponents(0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0)); + second: + RETURN (dimensional_exponents(0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0)); + ampere: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0)); + kelvin: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0)); + mole: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0)); + candela: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0)); + radian: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)); + steradian: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)); + hertz: + RETURN (dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0)); + newton: + RETURN (dimensional_exponents(1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0)); + pascal: + RETURN (dimensional_exponents(-1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0)); + joule: + RETURN (dimensional_exponents(2.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0)); + watt: + RETURN (dimensional_exponents(2.0, 1.0, -3.0, 0.0, 0.0, 0.0, 0.0)); + coulomb: + RETURN (dimensional_exponents(0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0)); + volt: + RETURN (dimensional_exponents(2.0, 1.0, -3.0, -1.0, 0.0, 0.0, 0.0)); + farad: + RETURN (dimensional_exponents(-2.0, -1.0, 4.0, 1.0, 0.0, 0.0, 0.0)); + ohm: + RETURN (dimensional_exponents(2.0, 1.0, -3.0, -2.0, 0.0, 0.0, 0.0)); + siemens: + RETURN (dimensional_exponents(-2.0, -1.0, 3.0, 2.0, 0.0, 0.0, 0.0)); + weber: + RETURN (dimensional_exponents(2.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0)); + tesla: + RETURN (dimensional_exponents(0.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0)); + henry: + RETURN (dimensional_exponents(2.0, 1.0, -2.0, -2.0, 0.0, 0.0, 0.0)); + degree_Celsius: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0)); + lumen: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0)); + lux: + RETURN (dimensional_exponents(-2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0)); + becquerel: + RETURN (dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0)); + gray: + RETURN (dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0)); + sievert: + RETURN (dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0)); + OTHERWISE: + RETURN (?); + END_CASE; +END_FUNCTION; + +FUNCTION dot_product + (arg1: direction; arg2: direction) : REAL; + LOCAL + scalar : REAL; + vec1, vec2: direction; + ndim : INTEGER; + END_LOCAL; + + IF NOT EXISTS (arg1) OR NOT EXISTS (arg2) THEN + scalar := ?; + (* When function is called with invalid data an indeterminate result + is returned *) + ELSE + IF (arg1.dim <> arg2.dim) THEN + scalar := ?; + (* When function is called with invalid data an indeterminate result + is returned *) + ELSE + BEGIN + vec1 := normalise(arg1); + vec2 := normalise(arg2); + ndim := arg1.dim; + scalar := 0.0; + REPEAT i := 1 TO ndim; + scalar := scalar + + vec1.direction_ratios[i]*vec2.direction_ratios[i]; + END_REPEAT; + END; + END_IF; + END_IF; + RETURN (scalar); +END_FUNCTION; + +FUNCTION edge_reversed + (an_edge: edge) : oriented_edge; + LOCAL + the_reverse : oriented_edge; + END_LOCAL; + + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_EDGE' IN TYPEOF (an_edge) ) THEN + the_reverse := dummy_tri || + edge(an_edge.edge_end, an_edge.edge_start) || + oriented_edge(an_edge\oriented_edge.edge_element, + NOT (an_edge\oriented_edge.orientation)) ; + ELSE + the_reverse := dummy_tri || + edge(an_edge.edge_end, an_edge.edge_start) || + oriented_edge(an_edge, FALSE); + END_IF; + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION external_version_assignment_is_valid + (aia: applied_external_identification_assignment) : BOOLEAN; + LOCAL + item: identification_item; + role: identification_role; + END_LOCAL; + role:= aia.role; + IF role.name='version' THEN + REPEAT i:=LOINDEX(aia.items) TO HIINDEX(aia.items); + item:= aia.items[i]; + IF (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'EXTERNALLY_VERSIONED_ITEM']*TYPEOF(item))=0) THEN + -- item invalid if item does not belong to versionable types + RETURN(FALSE); + END_IF; + END_REPEAT; + RETURN(TRUE); + ELSE -- case where aia does not convey a version id + RETURN(TRUE); + END_IF; +END_FUNCTION; + +FUNCTION face_bound_reversed + (a_face_bound: face_bound) : face_bound; + LOCAL + the_reverse : face_bound ; + END_LOCAL; + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_OUTER_BOUND' IN TYPEOF (a_face_bound) ) THEN + the_reverse := dummy_tri || + face_bound(a_face_bound\face_bound.bound, + NOT (a_face_bound\face_bound.orientation)) + || face_outer_bound() ; + ELSE + the_reverse := dummy_tri || + face_bound(a_face_bound.bound, NOT(a_face_bound.orientation)); + END_IF; + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION face_reversed + (a_face: face) : oriented_face; + LOCAL + the_reverse : oriented_face ; + END_LOCAL; + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_FACE' IN TYPEOF (a_face) ) THEN + the_reverse := dummy_tri || + face(set_of_topology_reversed(a_face.bounds)) || + oriented_face(a_face\oriented_face.face_element, + NOT (a_face\oriented_face.orientation)) ; + ELSE + the_reverse := dummy_tri || + face(set_of_topology_reversed(a_face.bounds)) || + oriented_face(a_face, FALSE) ; + END_IF; + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION first_proj_axis + (z_axis: direction; arg: direction) : direction; + LOCAL + x_axis : direction; + v : direction; + z : direction; + x_vec : vector; + END_LOCAL; + + IF (NOT EXISTS(z_axis)) THEN + RETURN (?) ; + ELSE + z := normalise(z_axis); + IF NOT EXISTS(arg) THEN + IF ((z.direction_ratios <> [1.0,0.0,0.0]) AND + (z.direction_ratios <> [-1.0,0.0,0.0])) THEN + v := dummy_gri || direction([1.0,0.0,0.0]); + ELSE + v := dummy_gri || direction([0.0,1.0,0.0]); + END_IF; + ELSE + IF (arg.dim <> 3) THEN + RETURN (?) ; + END_IF; + IF ((cross_product(arg,z).magnitude) = 0.0) THEN + RETURN (?); + ELSE + v := normalise(arg); + END_IF; + END_IF; + x_vec := scalar_times_vector(dot_product(v, z), z); + x_axis := vector_difference(v, x_vec).orientation; + x_axis := normalise(x_axis); + END_IF; + RETURN(x_axis); +END_FUNCTION; + +FUNCTION gbsf_check_curve + (cv: representation_item) : BOOLEAN; +IF SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_CURVE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D'] * TYPEOF(cv)) > 1 THEN + RETURN (FALSE); + END_IF; + IF SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCLE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELLIPSE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TRIMMED_CURVE'] * TYPEOF(cv)) = 1 THEN + RETURN (TRUE); + ELSE + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE' IN TYPEOF(cv)) AND (cv\composite_curve.self_intersect = FALSE) OR (cv\composite_curve.self_intersect = UNKNOWN)) THEN + RETURN (SIZEOF(QUERY(seg <* cv\composite_curve.segments | NOT (gbsf_check_curve(seg.parent_curve)))) = 0); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA' IN TYPEOF(cv) THEN + RETURN (gbsf_check_curve(cv\curve_replica.parent_curve)); + ELSE + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF(cv)) AND ((cv\offset_curve_3d.self_intersect = FALSE) OR (cv\offset_curve_3d.self_intersect = UNKNOWN)) AND (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF(cv\offset_curve_3d.basis_curve)))) THEN + RETURN (gbsf_check_curve(cv\offset_curve_3d.basis_curve)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(cv) THEN + RETURN ((gbsf_check_curve(cv\pcurve.reference_to_curve\representation.items[1])) AND (gbsf_check_surface(cv\pcurve.basis_surface))); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF(cv) THEN + IF (SIZEOF(cv\polyline.points) >= 3) THEN + RETURN (TRUE); + END_IF; + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN TYPEOF(cv) THEN + IF gbsf_check_curve(cv\surface_curve.curve_3d) THEN + REPEAT i := 1 TO SIZEOF(cv\surface_curve.associated_geometry); + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE' IN TYPEOF(cv\surface_curve.associated_geometry[i]) THEN + IF NOT gbsf_check_surface(cv\surface_curve.associated_geometry[i]) THEN + RETURN (FALSE); + END_IF; + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(cv\surface_curve.associated_geometry[i]) THEN + IF NOT gbsf_check_curve(cv\surface_curve.associated_geometry[i]) THEN + RETURN (FALSE); + END_IF; + END_IF; + END_IF; + END_REPEAT; + RETURN (TRUE); + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION gbsf_check_point + (pnt: point) : BOOLEAN; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF(pnt) THEN + RETURN (TRUE); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE' IN TYPEOF(pnt) THEN + RETURN (gbsf_check_curve(pnt\point_on_curve.basis_curve)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_SURFACE' IN TYPEOF(pnt) THEN + RETURN (gbsf_check_surface(pnt\point_on_surface.basis_surface)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEGENERATE_PCURVE' IN TYPEOF(pnt) THEN + RETURN ((gbsf_check_curve(pnt\degenerate_pcurve.reference_to_curve\representation.items[1])) AND (gbsf_check_surface(pnt\degenerate_pcurve.basis_surface))); + END_IF; + END_IF; + END_IF; + END_IF; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION gbsf_check_surface + (sf: surface) : BOOLEAN; +IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF(sf)) AND (sf\b_spline_surface.self_intersect = FALSE) OR (sf\b_spline_surface.self_intersect = UNKNOWN)) THEN + RETURN (TRUE); + ELSE + IF SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SPHERICAL_SURFACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TOROIDAL_SURFACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_BOUNDED_SURFACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RECTANGULAR_TRIMMED_SURFACE'] * TYPEOF(sf)) = 1 THEN + RETURN (TRUE); + ELSE + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_SURFACE' IN TYPEOF(sf)) AND (sf\offset_surface.self_intersect = FALSE) OR (sf\offset_surface.self_intersect = UNKNOWN)) THEN + RETURN (gbsf_check_surface(sf\offset_surface.basis_surface)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RECTANGULAR_COMPOSITE_SURFACE' IN TYPEOF(sf) THEN + REPEAT i := 1 TO SIZEOF(sf\rectangular_composite_surface.segments); + REPEAT j := 1 TO SIZEOF(sf\rectangular_composite_surface.segments[i]); + IF NOT (gbsf_check_surface(sf\rectangular_composite_surface.segments[i][j].parent_surface)) THEN + RETURN (FALSE); + END_IF; + END_REPEAT; + END_REPEAT; + RETURN (TRUE); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_REPLICA' IN TYPEOF(sf) THEN + RETURN (gbsf_check_surface(sf\surface_replica.parent_surface)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_OF_REVOLUTION' IN TYPEOF(sf) THEN + RETURN (gbsf_check_curve(sf\swept_surface.swept_curve)); + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION get_basis_surface + (c: curve_on_surface) : SET [0:2] OF surface; + LOCAL + surfs : SET[0:2] OF surface; + n : INTEGER; + END_LOCAL; + surfs := []; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF (c) THEN + surfs := [c\pcurve.basis_surface]; + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN TYPEOF (c) THEN + n := SIZEOF(c\surface_curve.associated_geometry); + REPEAT i := 1 TO n; + surfs := surfs + + associated_surface(c\surface_curve.associated_geometry[i]); + END_REPEAT; + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE_ON_SURFACE' IN TYPEOF (c) THEN + (* For a composite_curve_on_surface the basis_surface is the intersection + of the basis_surfaces of all the segments. *) + n := SIZEOF(c\composite_curve.segments); + surfs := get_basis_surface( + c\composite_curve.segments[1].parent_curve); + IF n > 1 THEN + REPEAT i := 2 TO n; + surfs := surfs * get_basis_surface( + c\composite_curve.segments[i].parent_curve); + END_REPEAT; + END_IF; + + END_IF; + RETURN(surfs); +END_FUNCTION; + +FUNCTION get_description_value + (obj: description_attribute_select) : text; + LOCAL + description_bag : BAG OF description_attribute := (USEDIN(obj, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.' + 'DESCRIBED_ITEM')); + END_LOCAL; + + IF SIZEOF(description_bag) = 1 THEN + RETURN (description_bag[1].attribute_value); + ELSE + RETURN (?); + END_IF; +END_FUNCTION; + +FUNCTION get_id_value + (obj: id_attribute_select) : identifier; + LOCAL + id_bag : BAG OF id_attribute := (USEDIN(obj, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.' + 'IDENTIFIED_ITEM')); + END_LOCAL; + + IF SIZEOF(id_bag) = 1 THEN + RETURN (id_bag[1].attribute_value); + ELSE + RETURN (?); + END_IF; +END_FUNCTION; + +FUNCTION get_name_value + (obj: name_attribute_select) : label; + LOCAL + name_bag : BAG OF name_attribute := (USEDIN(obj, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.' + 'NAMED_ITEM')); + END_LOCAL; + + IF SIZEOF(name_bag) = 1 THEN + RETURN (name_bag[1].attribute_value); + ELSE + RETURN (?); + END_IF; +END_FUNCTION; + +FUNCTION get_role + (obj: role_select) : object_role; + LOCAL + role_bag : BAG OF role_association := (USEDIN(obj, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.' + 'ITEM_WITH_ROLE')); + END_LOCAL; + + IF SIZEOF(role_bag) = 1 THEN + RETURN (role_bag[1].role); + ELSE + RETURN (?); + END_IF; +END_FUNCTION; + +FUNCTION get_shape_aspect_property_definition_representations + (s_a_instance: shape_aspect) : SET [0:?] OF property_definition_representation; +LOCAL +pd_set : SET OF property_definition := []; +pdr_set : SET OF property_definition_representation := [] ; +END_LOCAL; +pd_set := bag_to_set(USEDIN(s_a_instance, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROPERTY_DEFINITION.DEFINITION')); +IF (SIZEOF(pd_set) < 1) THEN +RETURN (pdr_set); +END_IF; +REPEAT i := 1 TO HIINDEX(pd_set); +pdr_set := pdr_set + (QUERY(pdr <* USEDIN(pd_set[i], 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PROPERTY_DEFINITION_REPRESENTATION.' + 'DEFINITION') | +'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF(pdr))); +END_REPEAT; +RETURN (pdr_set); +END_FUNCTION; + +FUNCTION is_acyclic + (arg: generic_expression) : BOOLEAN; +RETURN (acyclic (arg, [])); +END_FUNCTION; + +FUNCTION is_int_expr + (arg: numeric_expression) : LOGICAL; +LOCAL + i: INTEGER := 0; +END_LOCAL; + +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INT_LITERAL' IN TYPEOF(arg) +THEN + RETURN (TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REAL_LITERAL' IN TYPEOF(arg) +THEN + RETURN (FALSE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INT_NUMERIC_VARIABLE' IN TYPEOF(arg) +THEN + RETURN (TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REAL_NUMERIC_VARIABLE' IN TYPEOF(arg) +THEN + RETURN (FALSE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ABS_FUNCTION' IN TYPEOF(arg) +THEN + RETURN (is_int_expr(arg\unary_numeric_expression.operand)); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MINUS_FUNCTION' IN TYPEOF(arg) +THEN + RETURN (is_int_expr(arg\unary_numeric_expression.operand)); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SIN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COS_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TAN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ASIN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ACOS_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ATAN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EXP_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LOG_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LOG2_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LOG10_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SQUARE_ROOT_FUNCTION' + IN TYPEOF(arg)) +THEN + RETURN (FALSE); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLUS_EXPRESSION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MULT_EXPRESSION' + IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAXIMUM_FUNCTION' + IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MINIMUM_FUNCTION' + IN TYPEOF(arg)) +THEN + REPEAT i :=1 TO SIZEOF ( + arg\multiple_arity_numeric_expression.operands); + IF NOT + is_int_expr(arg\multiple_arity_numeric_expression.operands[i]) + THEN + RETURN (FALSE); + END_IF; + END_REPEAT; + RETURN (TRUE); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MINUS_EXPRESSION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POWER_EXPRESSION' + IN TYPEOF(arg)) +THEN + RETURN (is_int_expr(arg\binary_numeric_expression.operands[1]) + AND is_int_expr(arg\binary_numeric_expression.operands[2])); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIV_EXPRESSION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MOD_EXPRESSION' IN TYPEOF(arg)) +THEN + RETURN(TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SLASH_EXPRESSION' IN TYPEOF(arg) +THEN + RETURN (FALSE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_FUNCTION' IN TYPEOF(arg) +THEN + RETURN (TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VALUE_FUNCTION' IN TYPEOF(arg) +THEN + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INT_VALUE_FUNCTION' + IN TYPEOF(arg) + THEN + RETURN (TRUE); + ELSE + RETURN (FALSE); + END_IF; +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INTEGER_DEFINED_FUNCTION' + IN TYPEOF(arg) +THEN + RETURN(TRUE) ; +END_IF; +IF'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REAL_DEFINED_FUNCTION' IN TYPEOF(arg) +THEN + RETURN(FALSE) ; +END_IF ; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOOLEAN_DEFINED_FUNCTION' + IN TYPEOF(arg) +THEN + RETURN(FALSE) ; +END_IF ; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_DEFINED_FUNCTION' + IN TYPEOF(arg) +THEN + RETURN (FALSE) ; +END_IF ; + +RETURN (FALSE); +END_FUNCTION; + +FUNCTION is_SQL_mappable + (arg: expression) : LOGICAL; +LOCAL + i: INTEGER; +END_LOCAL; + +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SIMPLE_NUMERIC_EXPRESSION' + IN TYPEOF (arg) +THEN + RETURN (TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SQL_MAPPABLE_DEFINED_FUNCTION' + IN TYPEOF (arg) +THEN + RETURN (TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MINUS_FUNCTION' IN TYPEOF(arg) +THEN + RETURN (is_SQL_mappable(arg\unary_numeric_expression.operand)); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ABS_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SIN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COS_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TAN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ASIN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ACOS_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ATAN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EXP_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LOG_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LOG2_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LOG10_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SQUARE_ROOT_FUNCTION' + IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VALUE_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_FUNCTION' + IN TYPEOF(arg)) +THEN + RETURN (FALSE); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLUS_EXPRESSION' IN TYPEOF(arg)) + OR('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MULT_EXPRESSION' IN TYPEOF(arg)) + OR('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAXIMUM_FUNCTION' + IN TYPEOF(arg)) + OR('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MINIMUM_FUNCTION' + IN TYPEOF(arg)) +THEN + REPEAT i :=1 TO SIZEOF ( + arg\multiple_arity_numeric_expression.operands); + IF NOT is_SQL_mappable( + arg\multiple_arity_numeric_expression.operands[i]) + THEN + RETURN (FALSE); + END_IF; + END_REPEAT; +RETURN (TRUE); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MINUS_EXPRESSION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SLASH_EXPRESSION' IN + TYPEOF(arg)) +THEN + RETURN (is_SQL_mappable( + arg\binary_numeric_expression.operands[1]) + AND is_SQL_mappable(arg\binary_numeric_expression.operands[2])); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIV_EXPRESSION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MOD_EXPRESSION' IN TYPEOF(arg)) + OR('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POWER_EXPRESSION' + IN TYPEOF(arg)) +THEN + RETURN (FALSE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SIMPLE_BOOLEAN_EXPRESSION' + IN TYPEOF (arg) +THEN + RETURN (TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NOT_EXPRESSION' IN TYPEOF (arg) +THEN + RETURN (is_SQL_mappable (arg\UNARY_GENERIC_EXPRESSION.OPERAND)); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ODD_FUNCTION'IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.XOR_EXPRESSION' + IN TYPEOF (arg)) +THEN + RETURN (FALSE); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AND_EXPRESSION' IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OR_EXPRESSION' IN TYPEOF (arg)) +THEN + REPEAT i:=1 TO SIZEOF ( + arg\MULTIPLE_ARITY_BOOLEAN_EXPRESSION.OPERANDS); + IF NOT is_SQL_mappable ( + arg\MULTIPLE_ARITY_BOOLEAN_EXPRESSION.OPERANDS[i]) + THEN + RETURN (FALSE); + END_IF; + END_REPEAT; + RETURN (TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EQUALS_EXPRESSION' IN TYPEOF (arg) +THEN + RETURN(is_SQL_mappable ( + arg\BINARY_GENERIC_EXPRESSION.OPERANDS [1]) + AND is_SQL_mappable( + arg\BINARY_GENERIC_EXPRESSION.OPERANDS [2])); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPARISON_EQUAL' IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPARISON_GREATER' + IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPARISON_GREATER_EQUAL' + IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPARISON_LESS' + IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPARISON_LESS_EQUAL' + IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPARISON_NOT_EQUAL' + IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LIKE_EXPRESSION' + IN TYPEOF (arg)) +THEN + RETURN (is_SQL_mappable (arg\COMPARISON_EXPRESSION.OPERANDS[1]) + AND is_SQL_mappable (arg\COMPARISON_EXPRESSION.OPERANDS[2])); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INTERVAL_EXPRESSION' IN TYPEOF(arg) +THEN + RETURN (is_SQL_mappable(arg\interval_expression.interval_low) + AND is_SQL_mappable(arg\interval_expression.interval_high) + AND is_SQL_mappable(arg\interval_expression.interval_item)); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NUMERIC_DEFINED_FUNCTION' + IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOOLEAN_DEFINED_FUNCTION' + IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_DEFINED_FUNCTION' + IN TYPEOF(arg)) +THEN + RETURN (FALSE) ; +END_IF; + +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SIMPLE_STRING_EXPRESSION' + IN TYPEOF(ARG) +THEN + RETURN (TRUE); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INDEX_EXPRESSION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBSTRING_EXPRESSION' + IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONCAT_EXPRESSION' + IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FORMAT_FUNCTION' + IN TYPEOF(arg)) +THEN + RETURN (FALSE); +END_IF; + + RETURN (FALSE); +END_FUNCTION; + +FUNCTION item_in_context + (item: representation_item; cntxt: representation_context) : BOOLEAN; + LOCAL + y : BAG OF representation_item; + END_LOCAL; + -- If there is one or more representation using both the item + -- and cntxt return true. + IF SIZEOF(USEDIN(item,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION.ITEMS') + * cntxt.representations_in_context) > 0 THEN + RETURN (TRUE); + -- Determine the bag of representation_items that reference + -- item + ELSE y := QUERY(z <* USEDIN (item , '') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(z)); + -- Ensure that the bag is not empty + IF SIZEOF(y) > 0 THEN + -- For each element in the bag + REPEAT i := 1 TO HIINDEX(y); + -- Check to see it is an item in the input cntxt. + IF item_in_context(y[i], cntxt) THEN + RETURN (TRUE); + END_IF; + END_REPEAT; + END_IF; + END_IF; + -- Return false when all possible branches have been checked + -- with no success. + RETURN (FALSE); +END_FUNCTION; + +FUNCTION leap_year + (year: year_number) : BOOLEAN; +IF ((((year MOD 4) = 0) AND ((year MOD 100) <> 0)) OR ((year MOD 400) = 0)) THEN + RETURN (TRUE); + ELSE + RETURN (FALSE); + END_IF; +END_FUNCTION; + +FUNCTION list_face_loops + (f: face) : LIST [0:?] OF loop; + LOCAL + loops : LIST[0:?] OF loop := []; + END_LOCAL; + + REPEAT i := 1 TO SIZEOF(f.bounds); + loops := loops +(f.bounds[i].bound); + END_REPEAT; + + RETURN(loops); +END_FUNCTION; + +FUNCTION list_of_topology_reversed + (a_list: list_of_reversible_topology_item) : list_of_reversible_topology_item; + LOCAL + the_reverse : list_of_reversible_topology_item; + END_LOCAL; + + the_reverse := []; + REPEAT i := 1 TO SIZEOF (a_list); + the_reverse := topology_reversed (a_list [i]) + the_reverse; + END_REPEAT; + + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION list_to_array + (lis: LIST [0:?] OF GENERIC: T; low: INTEGER; u: INTEGER) : ARRAY [low:u] OF GENERIC: T; + LOCAL + n : INTEGER; + res : ARRAY [low:u] OF GENERIC : T; + END_LOCAL; + + n := SIZEOF(lis); + IF (n <> (u-low +1)) THEN + RETURN(?); + ELSE + res := [lis[1] : n]; + REPEAT i := 2 TO n; + res[low+i-1] := lis[i]; + END_REPEAT; + RETURN(res); + END_IF; +END_FUNCTION; + +FUNCTION list_to_set + (l: LIST [0:?] OF GENERIC: T) : SET [0:?] OF GENERIC: T; + LOCAL + s : SET OF GENERIC:T := []; + END_LOCAL; + + REPEAT i := 1 TO SIZEOF(l); + s := s + l[i]; + END_REPEAT; + + RETURN(s); +END_FUNCTION; + +FUNCTION make_array_of_array + (lis: LIST [1:?] OF LIST [1:?] OF GENERIC: T; low1: INTEGER; u1: INTEGER; low2: INTEGER; u2: INTEGER) : ARRAY [low1:u1] OF ARRAY [low2:u2] OF GENERIC: T; + LOCAL + res : ARRAY[low1:u1] OF ARRAY [low2:u2] OF GENERIC : T; + END_LOCAL; + +(* Check input dimensions for consistency *) + IF (u1-low1+1) <> SIZEOF(lis) THEN + RETURN (?); + END_IF; + IF (u2 - low2 + 1 ) <> SIZEOF(lis[1]) THEN + RETURN (?) ; + END_IF; +(* Initialise res with values from lis[1] *) + res := [list_to_array(lis[1], low2, u2) : (u1-low1 + 1)]; + REPEAT i := 2 TO HIINDEX(lis); + IF (u2-low2+1) <> SIZEOF(lis[i]) THEN + RETURN (?); + END_IF; + res[low1+i-1] := list_to_array(lis[i], low2, u2); + END_REPEAT; + + RETURN (res); +END_FUNCTION; + +FUNCTION mixed_loop_type_set + (l: SET [0:?] OF loop) : LOGICAL; + LOCAL + poly_loop_type: LOGICAL; + END_LOCAL; + IF(SIZEOF(l) <= 1) THEN + RETURN(FALSE); + END_IF; + poly_loop_type := ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLY_LOOP' IN TYPEOF(l[1])); + REPEAT i := 2 TO SIZEOF(l); + IF(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLY_LOOP' IN TYPEOF(l[i])) <> poly_loop_type) + THEN + RETURN(TRUE); + END_IF; + END_REPEAT; + RETURN(FALSE); +END_FUNCTION; + +FUNCTION msb_shells + (brep: manifold_solid_brep) : SET [1:?] OF closed_shell; + LOCAL + return_set: SET[1:?] OF closed_shell := [brep.outer]; + END_LOCAL; + + IF SIZEOF(QUERY(msbtype <* TYPEOF(brep) | + msbtype LIKE '*BREP_WITH_VOIDS')) >= 1 + THEN + return_set := return_set + brep\brep_with_voids.voids; + END_IF; + RETURN(return_set); +END_FUNCTION; + +FUNCTION msf_curve_check + (cv: representation_item) : BOOLEAN; +IF SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D'] * TYPEOF(cv)) > 1 THEN + RETURN(FALSE); +END_IF; + +(* b_spline_curves shall not self-intersect + *) +IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 + + (* conics and lines are valid curve types + *) + IF SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE'] + * TYPEOF (cv)) = 1 THEN + RETURN(TRUE); + ELSE + + (* a curve_replica shall reference a valid curve + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA' IN TYPEOF(cv) THEN + RETURN (msf_curve_check(cv\curve_replica.parent_curve)); + ELSE + + (* an offset_curve_3d shall not self-intersect and + shall reference a valid curve; a polyline is not a + valid basis_curve + *) + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF (cv)) + AND + ((cv\offset_curve_3d.self_intersect = FALSE) OR + (cv\offset_curve_3d.self_intersect = UNKNOWN)) + AND + (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF + (cv\offset_curve_3d.basis_curve)))) THEN + RETURN (msf_curve_check(cv\offset_curve_3d.basis_curve)); + ELSE + + (* a pcurve shall reference a valid curve and a valid + basis_surface + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 + + (* a surface_curve references a curve_3d and one or + two pcurves or one or two surfaces or one of + each; all of these references shall be valid + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN TYPEOF(cv) THEN + + (* if the curve reference is correct, check also the rest + *) + IF msf_curve_check(cv\surface_curve.curve_3d) THEN + REPEAT i := 1 TO SIZEOF + (cv\surface_curve.associated_geometry); + + (* do for one or two associated_geometrys: + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 + + (* a polyline shall have at least 3 points + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 is returned if the input parameter cv is not a valid curve. + *) +RETURN (FALSE); +END_FUNCTION; + +FUNCTION msf_surface_check + (surf: surface) : BOOLEAN; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELEMENTARY_SURFACE' IN TYPEOF(surf) THEN + RETURN(TRUE); + ELSE + + (* a swept_surface shall have a valid sweeping curve + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_SURFACE' IN TYPEOF (surf) THEN + RETURN (msf_curve_check(surf\swept_surface.swept_curve)); + ELSE + + (* an offset_surface shall not self-intersect and shall + reference a valid surface + *) + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 + + (* a surface_replica shall have a valid parent surface + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_REPLICA' IN TYPEOF(surf) THEN + RETURN(msf_surface_check(surf\surface_replica.parent_surface)); + ELSE + + (* a b_spline_surface shall not self-intersect + *) + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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; + +FUNCTION nmsf_curve_check + (cv: representation_item) : BOOLEAN; +IF SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D'] * TYPEOF(cv)) > 1 + THEN RETURN(FALSE); + ELSE + + (* b_spline_curves shall not self-intersect + *) + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 + + (* conics and lines are valid curve types + *) + IF SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE'] * TYPEOF (cv)) = 1 THEN + RETURN(TRUE); + ELSE + + (* a curve_replica shall reference a valid curve + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA' IN TYPEOF(cv) THEN + RETURN (nmsf_curve_check(cv\curve_replica.parent_curve)); + ELSE + + (* an offset_curve_3d shall not self-intersect and + shall reference a valid curve; a polyline is not a + valid basis_curve + *) + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF (cv)) + AND + ((cv\offset_curve_3d.self_intersect = FALSE) OR + (cv\offset_curve_3d.self_intersect = UNKNOWN)) + AND + (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF + (cv\offset_curve_3d.basis_curve)))) THEN + RETURN (nmsf_curve_check(cv\offset_curve_3d.basis_curve)); + ELSE + + (* a pcurve shall reference a valid curve and a valid + basis_surface + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(cv) THEN + RETURN ((nmsf_curve_check + (cv\pcurve.reference_to_curve\representation.items[1])) + AND + (nmsf_surface_check(cv\pcurve.basis_surface))); + ELSE + + (* a surface_curve references a curve_3d and one or + two pcurves or one or two surfaces or one of + each; all of these references shall be valid + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN TYPEOF(cv) THEN + + (* if the curve reference is correct, check also the rest + *) + IF nmsf_curve_check(cv\surface_curve.curve_3d) THEN + REPEAT i := 1 TO SIZEOF + (cv\surface_curve.associated_geometry); + + (* do for one or two associated_geometrys: + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE' IN + TYPEOF (cv\surface_curve.associated_geometry[i]) THEN + IF NOT nmsf_surface_check + (cv\surface_curve.associated_geometry[i]) THEN + RETURN(FALSE); + END_IF; + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF + (cv\surface_curve.associated_geometry[i]) THEN + IF NOT nmsf_curve_check + (cv\surface_curve.associated_geometry[i]) THEN + RETURN(FALSE); + END_IF; + END_IF; + END_IF; + END_REPEAT; + RETURN(TRUE); + END_IF; + ELSE + + (* a polyline shall have at least 3 points + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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; + END_IF; + (* FALSE is returned if the input parameter cv is not a valid curve. + *) + RETURN (FALSE); +END_FUNCTION; + +FUNCTION nmsf_surface_check + (surf: surface) : BOOLEAN; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELEMENTARY_SURFACE' IN TYPEOF(surf) THEN + RETURN(TRUE); + ELSE + + (* a swept_surface shall have a valid sweeping curve + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_SURFACE' IN TYPEOF (surf) THEN + RETURN (nmsf_curve_check(surf\swept_surface.swept_curve)); + ELSE + + (* an offset_surface shall not self-intersect and shall + reference a valid surface + *) + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_SURFACE' IN TYPEOF (surf)) AND + (surf\offset_surface.self_intersect = FALSE) OR + (surf\offset_surface.self_intersect = UNKNOWN)) THEN + RETURN (nmsf_surface_check(surf\offset_surface.basis_surface)); + ELSE + + (* a surface_replica shall have a valid parent surface + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_REPLICA' IN TYPEOF(surf) THEN + RETURN(nmsf_surface_check(surf\surface_replica.parent_surface)); + ELSE + + (* a b_spline_surface shall not self-intersect + *) + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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; + +FUNCTION normalise + (arg: vector_or_direction) : vector_or_direction; + LOCAL + ndim : INTEGER; + v : direction; + result : vector_or_direction; + vec : vector; + mag : REAL; + END_LOCAL; + + IF NOT EXISTS (arg) THEN + result := ?; + (* When function is called with invalid data a NULL result is returned *) + ELSE + ndim := arg.dim; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VECTOR' IN TYPEOF(arg) THEN + BEGIN + v := dummy_gri || direction(arg\vector.orientation.direction_ratios); + IF arg.magnitude = 0.0 THEN + RETURN(?); + ELSE + vec := dummy_gri || vector (v, 1.0); + END_IF; + END; + ELSE + v := dummy_gri || direction (arg.direction_ratios); + END_IF; + mag := 0.0; + REPEAT i := 1 TO ndim; + mag := mag + v.direction_ratios[i]*v.direction_ratios[i]; + END_REPEAT; + IF mag > 0.0 THEN + mag := SQRT(mag); + REPEAT i := 1 TO ndim; + v.direction_ratios[i] := v.direction_ratios[i]/mag; + END_REPEAT; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VECTOR' IN TYPEOF(arg) THEN + vec.orientation := v; + result := vec; + ELSE + result := v; + END_IF; + ELSE + RETURN(?); + END_IF; + END_IF; + RETURN (result); +END_FUNCTION; + +FUNCTION open_shell_reversed + (a_shell: open_shell) : oriented_open_shell; + LOCAL + the_reverse : oriented_open_shell; + END_LOCAL; + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_OPEN_SHELL' IN TYPEOF (a_shell) ) THEN + the_reverse := dummy_tri || + connected_face_set ( + a_shell\connected_face_set.cfs_faces) || + open_shell () || oriented_open_shell( + a_shell\oriented_open_shell.open_shell_element, + (NOT (a_shell\oriented_open_shell.orientation))); + ELSE + the_reverse := dummy_tri || + connected_face_set ( + a_shell\connected_face_set.cfs_faces) || + open_shell () || oriented_open_shell (a_shell, FALSE); + END_IF; + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION orthogonal_complement + (vec: direction) : direction; + LOCAL + result : direction ; + END_LOCAL; + + IF (vec.dim <> 2) OR NOT EXISTS (vec) THEN + RETURN(?); + ELSE + result := dummy_gri || direction([-vec.direction_ratios[2], + vec.direction_ratios[1]]); + RETURN(result); + END_IF; +END_FUNCTION; + +FUNCTION path_head_to_tail + (a_path: path) : LOGICAL; + LOCAL + n : INTEGER; + p : LOGICAL := TRUE; + END_LOCAL; + + n := SIZEOF (a_path.edge_list); + REPEAT i := 2 TO n; + p := p AND (a_path.edge_list[i-1].edge_end :=: + a_path.edge_list[i].edge_start); + END_REPEAT; + + RETURN (p); +END_FUNCTION; + +FUNCTION path_reversed + (a_path: path) : oriented_path; + LOCAL + the_reverse : oriented_path ; + END_LOCAL; + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_PATH' IN TYPEOF (a_path) ) THEN + the_reverse := dummy_tri || + path(list_of_topology_reversed (a_path.edge_list)) || + oriented_path(a_path\oriented_path.path_element, + NOT(a_path\oriented_path.orientation)) ; + ELSE + the_reverse := dummy_tri || + path(list_of_topology_reversed (a_path.edge_list)) || + oriented_path(a_path, FALSE); + END_IF; + + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION scalar_times_vector + (scalar: REAL; vec: vector_or_direction) : vector; + LOCAL + v : direction; + mag : REAL; + result : vector; + END_LOCAL; + + IF NOT EXISTS (scalar) OR NOT EXISTS (vec) THEN + RETURN (?) ; + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VECTOR' IN TYPEOF (vec) THEN + v := dummy_gri || direction(vec\vector.orientation.direction_ratios); + mag := scalar * vec.magnitude; + ELSE + v := dummy_gri || direction(vec.direction_ratios); + mag := scalar; + END_IF; + IF (mag < 0.0 ) THEN + REPEAT i := 1 TO SIZEOF(v.direction_ratios); + v.direction_ratios[i] := -v.direction_ratios[i]; + END_REPEAT; + mag := -mag; + END_IF; + result := dummy_gri || vector(normalise(v), mag); + END_IF; + RETURN (result); +END_FUNCTION; + +FUNCTION second_proj_axis + (z_axis: direction; x_axis: direction; arg: direction) : direction; + LOCAL + y_axis : vector; + v : direction; + temp : vector; + END_LOCAL; + + IF NOT EXISTS(arg) THEN + v := dummy_gri || direction([0.0,1.0,0.0]); + ELSE + v := arg; + END_IF; + + temp := scalar_times_vector(dot_product(v, z_axis), z_axis); + y_axis := vector_difference(v, temp); + temp := scalar_times_vector(dot_product(v, x_axis), x_axis); + y_axis := vector_difference(y_axis, temp); + y_axis := normalise(y_axis); + RETURN(y_axis.orientation); +END_FUNCTION; + +FUNCTION set_of_topology_reversed + (a_set: set_of_reversible_topology_item) : set_of_reversible_topology_item; + LOCAL + the_reverse : set_of_reversible_topology_item; + END_LOCAL; + + the_reverse := []; + REPEAT i := 1 TO SIZEOF (a_set); + the_reverse := the_reverse + topology_reversed (a_set [i]); + END_REPEAT; + + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION shell_reversed + (a_shell: shell) : shell; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OPEN_SHELL' IN TYPEOF (a_shell) ) THEN + RETURN (open_shell_reversed (a_shell)); + ELSE + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CLOSED_SHELL' IN TYPEOF (a_shell) ) THEN + RETURN (closed_shell_reversed (a_shell)); + ELSE + RETURN (?); + END_IF; + END_IF; +END_FUNCTION; + +FUNCTION surface_condition_correlation + (pd: property_definition; rep: representation) : LOGICAL; +CASE pd.name OF + 'visual appearance', 'tactile appearance', 'contact ratio', 'hardness', 'treatment result', 'surface texture' : + RETURN(pd.name = rep.name); + OTHERWISE : RETURN(UNKNOWN); + END_CASE; +END_FUNCTION; + +FUNCTION surface_weights_positive + (b: rational_b_spline_surface) : BOOLEAN; + LOCAL + result : BOOLEAN := TRUE; + END_LOCAL; + + REPEAT i := 0 TO b.u_upper; + REPEAT j := 0 TO b.v_upper; + IF (b.weights[i][j] <= 0.0) THEN + result := FALSE; + RETURN(result); + END_IF; + END_REPEAT; + END_REPEAT; + RETURN(result); +END_FUNCTION; + +FUNCTION topology_reversed + (an_item: reversible_topology) : reversible_topology; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE' IN TYPEOF (an_item)) THEN + RETURN (edge_reversed (an_item)); + END_IF; + + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PATH' IN TYPEOF (an_item)) THEN + RETURN (path_reversed (an_item)); + END_IF; + + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BOUND' IN TYPEOF (an_item)) THEN + RETURN (face_bound_reversed (an_item)); + END_IF; + + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE' IN TYPEOF (an_item)) THEN + RETURN (face_reversed (an_item)); + END_IF; + + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL' IN TYPEOF (an_item)) THEN + RETURN (shell_reversed (an_item)); + END_IF; + + IF ('SET' IN TYPEOF (an_item)) THEN + RETURN (set_of_topology_reversed (an_item)); + END_IF; + + IF ('LIST' IN TYPEOF (an_item)) THEN + RETURN (list_of_topology_reversed (an_item)); + END_IF; + + RETURN (?); +END_FUNCTION; + +FUNCTION type_check_function + (the_type: GENERIC; sub_names: SET [0:?] OF STRING; criterion: INTEGER) : LOGICAL; +IF ((NOT EXISTS(the_type)) OR (NOT ({0 <= criterion <= 3})) OR (SIZEOF(sub_names) = 0)) THEN + RETURN (UNKNOWN); + ELSE + CASE criterion OF + 0: + RETURN (SIZEOF(sub_names * TYPEOF(the_type)) > 0); + 1: + RETURN (SIZEOF(sub_names * TYPEOF(the_type)) = 0); + 2: + RETURN (SIZEOF(sub_names * TYPEOF(the_type)) = 1); + 3: + RETURN (SIZEOF(sub_names * TYPEOF(the_type)) <= 1); + END_CASE; + END_IF; +END_FUNCTION; + +FUNCTION using_items + (item: founded_item_select; checked_items: SET [0:?] OF founded_item_select) : SET [0:?] OF founded_item_select; + LOCAL + new_check_items : SET OF founded_item_select; + result_items : SET OF founded_item_select; + next_items : SET OF founded_item_select; + END_LOCAL; + result_items := []; + new_check_items := checked_items + item; + -- Find the set of representation_items or founded_items + -- in which item is used directly. + next_items := QUERY(z <* bag_to_set( USEDIN(item , '')) | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(z)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FOUNDED_ITEM' IN TYPEOF(z))); + -- If the set of next_items is not empty; + IF SIZEOF(next_items) > 0 THEN + -- For each element in the set, find the using_items recursively + REPEAT i := 1 TO HIINDEX(next_items); + -- Check for loop in data model, i.e. one of the next_items + -- occurred earlier in the set of check_items; + IF NOT(next_items[i] IN new_check_items) THEN + result_items := result_items + next_items[i] + + using_items(next_items[i],new_check_items); + END_IF; + END_REPEAT; + END_IF; + -- return the set of representation_items or founded_items + -- in which the input item is used directly and indirectly. + RETURN (result_items); +END_FUNCTION; + +FUNCTION using_representations + (item: founded_item_select) : SET [0:?] OF representation; + LOCAL + results : SET OF representation; + result_bag : BAG OF representation; + intermediate_items : SET OF founded_item_select; + END_LOCAL; + -- Find the representations in which the item is used and add to the + -- results set. + results := []; + result_bag := USEDIN(item,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION.ITEMS'); + IF SIZEOF(result_bag) > 0 THEN + REPEAT i := 1 TO HIINDEX(result_bag); + results := results + result_bag[i]; + END_REPEAT; + END_IF; + -- Find all representation_items or founded_items + -- by which item is referenced directly or indirectly. + intermediate_items := using_items(item,[]); + -- If the set of intermediate items is not empty; + IF SIZEOF(intermediate_items) > 0 THEN + -- For each element in the set, add the + -- representations of that element. + REPEAT i := 1 TO HIINDEX(intermediate_items); + result_bag := USEDIN(intermediate_items[i], + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION.ITEMS'); + IF SIZEOF(result_bag) > 0 THEN + REPEAT j := 1 TO HIINDEX(result_bag); + results := results + result_bag[j]; + END_REPEAT; + END_IF; + END_REPEAT; + END_IF; + -- Return the set of representation in which the input item is + -- used directly and indirectly (through intervening + -- representation_items or founded items). + RETURN (results); +END_FUNCTION; + +FUNCTION valid_basis_curve_in_2d_wireframe + (crv: curve) : BOOLEAN; +IF SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELLIPSE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCLE'] * + TYPEOF (crv)) = 1 + THEN RETURN (TRUE); + ELSE + -- if the curve is a trimmed_curve + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TRIMMED_CURVE') + IN TYPEOF (crv)) THEN + -- if a line, parabola, or hyperbola is being trimmed, then valid + IF SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PARABOLA', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.HYPERBOLA'] * + TYPEOF(crv\trimmed_curve.basis_curve)) = 1 + THEN RETURN (TRUE); + -- otherwise, recursively check basis_curve + ELSE RETURN (valid_basis_curve_in_2d_wireframe + (crv\trimmed_curve.basis_curve)); + END_IF; + ELSE + -- recursively check the offset_curve basis curve + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_2D') + IN TYPEOF (crv)) + THEN RETURN (valid_basis_curve_in_2d_wireframe + (crv\offset_curve_2d.basis_curve)); + ELSE + -- recursively check the curve_replica parent curve + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA') + IN TYPEOF (crv)) + THEN RETURN (valid_basis_curve_in_2d_wireframe + (crv\curve_replica.parent_curve)); + ELSE + -- recursively check the composite_curve segments + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE') + IN TYPEOF (crv)) THEN + RETURN (SIZEOF (QUERY (ccs <* crv\composite_curve.segments | + NOT (valid_basis_curve_in_2d_wireframe + (ccs.parent_curve)))) = 0); + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION valid_calendar_date + (date: calendar_date) : LOGICAL; +CASE date.month_component OF + 1 : RETURN({ 1 <= date.day_component <= 31 }); + 2 : BEGIN + IF (leap_year(date.year_component)) THEN + RETURN({ 1 <= date.day_component <= 29 }); + ELSE + RETURN({ 1 <= date.day_component <= 28 }); + END_IF; + END; + 3 : RETURN({ 1 <= date.day_component <= 31 }); + 4 : RETURN({ 1 <= date.day_component <= 30 }); + 5 : RETURN({ 1 <= date.day_component <= 31 }); + 6 : RETURN({ 1 <= date.day_component <= 30 }); + 7 : RETURN({ 1 <= date.day_component <= 31 }); + 8 : RETURN({ 1 <= date.day_component <= 31 }); + 9 : RETURN({ 1 <= date.day_component <= 30 }); + 10 : RETURN({ 1 <= date.day_component <= 31 }); + 11 : RETURN({ 1 <= date.day_component <= 30 }); + 12 : RETURN({ 1 <= date.day_component <= 31 }); + END_CASE; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION valid_datum_target_parameters + (pdf: placed_datum_target_feature) : BOOLEAN; +LOCAL + +rep_set : SET OF representation := [] ; + +parameter_representations: SET OF representation; +END_LOCAL; + + +REPEAT i := 1 TO HIINDEX(pdf.representation_associations); +rep_set := rep_set + pdf.representation_associations[i].used_representation; +END_REPEAT; + +parameter_representations := QUERY(rep <* rep_set | +('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN +TYPEOF(rep))); + + +IF (SIZEOF( QUERY( srwp <* parameter_representations | + (SIZEOF( QUERY( i <* srwp.items | + (i.name='orientation') AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLACEMENT' IN TYPEOF(i)))) = 1))) <> 1) THEN + RETURN(FALSE); +END_IF; + +CASE pdf\shape_aspect.description OF +'point': RETURN(SIZEOF(QUERY( srwp <* parameter_representations | + (SIZEOF(srwp.items) = 1))) = 1); + +'circle': RETURN((SIZEOF( QUERY( srwp <* parameter_representations | + (SIZEOF(srwp.items) = 2))) = 1) AND + (SIZEOF( QUERY( srwp <* parameter_representations | + (SIZEOF( QUERY( i <* srwp.items | + (i.name='target diameter') AND + (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i) + ) = 2) )) = 1))) = 1)); + +'line': RETURN(SIZEOF( QUERY( srwp <* parameter_representations | + (SIZEOF( QUERY( i <* srwp.items | + (i.name='target length') AND + (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i) + ) = 2) )) = 1))) = 1); + +'rectangle': RETURN((SIZEOF( QUERY( srwp <* parameter_representations | + (SIZEOF(srwp.items)= 3))) = 1) AND + (SIZEOF( QUERY( srwp <* parameter_representations | + (SIZEOF( QUERY( i <* srwp.items | + (i.name='target length') AND + (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i) + ) = 2))) = 1))) = 1) AND + (SIZEOF( QUERY( srwp <* parameter_representations | + (SIZEOF( QUERY( i <* srwp.items | + (i.name='target width') AND + (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i) + ) = 2))) = 1) )) = 1)); +OTHERWISE : RETURN(FALSE); +END_CASE; +END_FUNCTION; + +FUNCTION valid_geometrically_bounded_wf_curve + (crv: curve) : BOOLEAN; +IF SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELLIPSE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCLE' ] * TYPEOF (crv)) = 1 THEN + RETURN (TRUE); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TRIMMED_CURVE' IN TYPEOF (crv) THEN + IF SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PARABOLA', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.HYPERBOLA' ] * TYPEOF (crv\trimmed_curve.basis_curve)) = 1 THEN + RETURN (TRUE); + ELSE + RETURN (valid_geometrically_bounded_wf_curve(crv\trimmed_curve.basis_curve)); + END_IF ; + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF (crv) THEN + RETURN (valid_geometrically_bounded_wf_curve(crv\offset_curve_3d.basis_curve)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA' IN TYPEOF (crv) THEN + RETURN (valid_geometrically_bounded_wf_curve(crv\curve_replica.parent_curve)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE' IN TYPEOF (crv) THEN + RETURN ( SIZEOF ( +QUERY ( ccs <* crv\composite_curve.segments| NOT valid_geometrically_bounded_wf_curve(ccs.parent_curve) )) = 0); + END_IF ; + END_IF ; + END_IF ; + END_IF ; + END_IF ; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION valid_geometrically_bounded_wf_point + (pnt: point) : BOOLEAN; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF (pnt) THEN + RETURN (TRUE); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE' IN TYPEOF (pnt) THEN + RETURN (valid_geometrically_bounded_wf_curve(pnt\point_on_curve.basis_curve)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_REPLICA' IN TYPEOF (pnt) THEN + RETURN (valid_geometrically_bounded_wf_point(pnt\point_replica.parent_pt)); + END_IF ; + END_IF ; + END_IF ; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION valid_measure_value + (m: measure_value) : BOOLEAN; +IF ('REAL' IN TYPEOF (m)) THEN + RETURN (m > 0.0); + ELSE + IF ('INTEGER' IN TYPEOF (m)) THEN + RETURN (m > 0); + ELSE + RETURN (TRUE); + END_IF; + END_IF; +END_FUNCTION; + +FUNCTION valid_selected_instance_representation + (pd: product_definition_or_assembly_relationship) : LOGICAL; + LOCAL + properties: SET OF property_definition := bag_to_set(QUERY( prd<* USEDIN ( pd ,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) | + (prd.name = 'occurrence selection' ))); + property_definition_representations: SET OF property_definition_representation := bag_to_set(QUERY ( pdr <* USEDIN ( properties[1] , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | + ( pdr.used_representation.name = 'selection criteria' ))); + selected_representation: representation; + END_LOCAL; + IF (SIZEOF( properties)<>1) THEN + RETURN(FALSE); + END_IF; + IF (SIZEOF(property_definition_representations)<>1) THEN + RETURN(FALSE); + END_IF; + selected_representation := property_definition_representations[1]\property_definition_representation.used_representation; + IF (SIZEOF(selected_representation\representation.items) <1) OR (SIZEOF(selected_representation\representation.items) >2) THEN + RETURN(FALSE); + END_IF; + IF (SIZEOF ( QUERY ( i <* selected_representation\representation.items | + ( SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VALUE_RANGE']* TYPEOF ( i ) ) = 1) AND + ( i.name = 'selection quantity' ))) <> 1 ) THEN + RETURN(FALSE); + END_IF; + IF (SIZEOF ( QUERY ( i <* selected_representation\representation.items | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF ( i ) ) AND + ( i.name = 'selection control' )))> 1) THEN + RETURN(FALSE); + END_IF; --the selection control is not specified then the quantity shall be a qualified_representation_item or a value_range + IF (SIZEOF ( QUERY ( i <* selected_representation\representation.items | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF( i ) ) AND + ( i.name = 'selection control' ) ))= 0) AND + (SIZEOF ( QUERY ( i <* selected_representation\representation.items | + ( i.name = 'selection quantity' ) AND + ( SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.QUALIFIED_REPRESENTATION_ITEM' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VALUE_RANGE']* TYPEOF ( i ) ) =0 ))) > 0 ) THEN + RETURN(FALSE); + END_IF; + RETURN(TRUE); +END_FUNCTION; + +FUNCTION valid_time + (time: local_time) : BOOLEAN; +IF EXISTS(time.second_component) THEN + RETURN (EXISTS(time.minute_component)); + ELSE + RETURN (TRUE); + END_IF; +END_FUNCTION; + +FUNCTION valid_units + (m: measure_with_unit) : BOOLEAN; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MASS_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TIME_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELECTRIC_CURRENT_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.THERMODYNAMIC_TEMPERATURE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CELSIUS_TEMPERATURE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AMOUNT_OF_SUBSTANCE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LUMINOUS_INTENSITY_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE_ANGLE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_ANGLE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AREA_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VOLUME_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RATIO_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_PLANE_ANGLE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ACCELERATION_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 1.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CAPACITANCE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( -2.0, -1.0, 4.0, 1.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELECTRIC_CHARGE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONDUCTANCE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( -2.0, -1.0, 3.0, 2.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELECTRIC_POTENTIAL_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 2.0, 1.0, -3.0, -1.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ENERGY_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 2.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FORCE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FREQUENCY_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ILLUMINANCE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( -2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INDUCTANCE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 2.0, 1.0, -2.0, -2.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LUMINOUS_FLUX_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAGNETIC_FLUX_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 2.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAGNETIC_FLUX_DENSITY_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 0.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POWER_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 2.0, 1.0, -3.0, 0.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESSURE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( -1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RESISTANCE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 2.0, 1.0, -3.0, -2.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VELOCITY_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 1.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RADIOACTIVITY_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ABSORBED_DOSE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DOSE_EQUIVALENT_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + RETURN (TRUE); +END_FUNCTION; + +FUNCTION valid_wireframe_edge_curve + (crv: curve) : BOOLEAN; +IF SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' ] * TYPEOF (crv)) = 1 THEN + RETURN (TRUE); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA' IN TYPEOF (crv) THEN + RETURN (valid_wireframe_edge_curve(crv\curve_replica.parent_curve)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF (crv) THEN + RETURN (valid_wireframe_edge_curve(crv\offset_curve_3d.basis_curve)); + END_IF ; + END_IF ; + END_IF ; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION valid_wireframe_vertex_point + (pnt: point) : BOOLEAN; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF (pnt) THEN + RETURN (TRUE); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_REPLICA' IN TYPEOF (pnt) THEN + RETURN (valid_wireframe_vertex_point(pnt\point_replica.parent_pt)); + END_IF ; + END_IF ; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION validate_countersink_radii + (cskhole: solid_with_stepped_round_hole_and_conical_transitions) : BOOLEAN; + LOCAL + i,j : INTEGER; + n : INTEGER := 1 + + cskhole\solid_with_stepped_round_hole.segments; + smaller, larger : positive_length_measure; + END_LOCAL; + + REPEAT i := 1 TO SIZEOF(cskhole.conical_transitions); + + -- First check whether transition i applies to the entry of the hole or + -- the exit of a through hole - those cases only need to be checked for + -- the sign of the cone apex angle. + + IF (((cskhole.conical_transitions[i].transition_number = 1) + AND (cskhole.conical_transitions[i].cone_apex_angle < 0)) + XOR ((cskhole.conical_transitions[i].transition_number = n) + AND (cskhole.conical_transitions[i].cone_apex_angle > 0))) + THEN RETURN(FALSE); + ELSE + IF ((cskhole.conical_transitions[i].transition_number <> 1) + AND (cskhole.conical_transitions[i].transition_number <> n)) + THEN + + -- For all remaining transitions, check that the cone base radius + -- lies in the range of validity. + + + BEGIN + j := cskhole.conical_transitions[i].transition_number; + IF cskhole\solid_with_stepped_round_hole.segment_radii[j] + > cskhole\solid_with_stepped_round_hole.segment_radii[j-1] + THEN + BEGIN + IF (cskhole.conical_transitions[i].cone_apex_angle > 0) + THEN RETURN(FALSE); + END_IF; + larger + := cskhole\solid_with_stepped_round_hole.segment_radii[j]; + smaller + := cskhole\solid_with_stepped_round_hole.segment_radii[j-1]; + END; + ELSE + BEGIN + IF (cskhole.conical_transitions[i].cone_apex_angle < 0) + THEN RETURN(FALSE); + END_IF; + larger + := cskhole\solid_with_stepped_round_hole.segment_radii[j-1]; + smaller + := cskhole\solid_with_stepped_round_hole.segment_radii[j]; + END; + END_IF; + IF ((cskhole.conical_transitions[i].cone_base_radius > larger) + OR (cskhole.conical_transitions[i].cone_base_radius < smaller)) + THEN RETURN(FALSE); + END_IF; + END; + END_IF; + END_IF; + END_REPEAT; + RETURN(TRUE); +END_FUNCTION; + +FUNCTION value_range_aggregate_rep_item + (agg: AGGREGATE OF representation_item) : BOOLEAN; +BEGIN + IF (SIZEOF(QUERY(i1 <* agg | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i1)) )) = 6) THEN + RETURN (TRUE); + ELSE + RETURN (FALSE); + END_IF; + END; +END_FUNCTION; + +FUNCTION value_range_wr1 + (agg: compound_item_definition) : BOOLEAN; +BEGIN + IF (SIZEOF(agg) = 2) AND ((SIZEOF(QUERY (i1 <* agg | ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF + (i1)))) = 2) OR + (SIZEOF(QUERY (i2 <* agg | ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VALUE_REPRESENTATION_ITEM' IN TYPEOF + (i2)))) = 2)) + THEN + RETURN(TRUE); + ELSE + RETURN(FALSE); + END_IF; + END; +END_FUNCTION; + +FUNCTION value_range_wr2 + (agg: compound_item_definition) : BOOLEAN; +BEGIN + IF ((SIZEOF(QUERY (i <* agg | (i\representation_item.name = 'upper limit'))) = 1) + AND (SIZEOF(QUERY (i <* agg | (i\representation_item.name = 'lower limit'))) = 1)) + THEN + RETURN(TRUE); + ELSE + RETURN(FALSE); + END_IF; + END; +END_FUNCTION; + +FUNCTION value_range_wr3 + (agg: compound_item_definition) : BOOLEAN; +BEGIN + IF (SIZEOF(QUERY(i1 <* agg | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF (i1)) AND + (SIZEOF (QUERY (i2 <* agg | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF (i2)) AND + (i1 :<>: i2) AND (i1\measure_with_unit.unit_component :=: i2\measure_with_unit.unit_component))) = 1))) = 2) + THEN + RETURN (TRUE); + ELSE + RETURN (FALSE); + END_IF; + END; +END_FUNCTION; + +FUNCTION vector_difference + (arg1: vector_or_direction; arg2: vector_or_direction) : vector; + LOCAL + result : vector; + res, vec1, vec2 : direction; + mag, mag1, mag2 : REAL; + ndim : INTEGER; + END_LOCAL; + + IF ((NOT EXISTS (arg1)) OR (NOT EXISTS (arg2))) OR (arg1.dim <> arg2.dim) + THEN + RETURN (?) ; + ELSE + BEGIN + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VECTOR' IN TYPEOF(arg1) THEN + mag1 := arg1.magnitude; + vec1 := arg1\vector.orientation; + ELSE + mag1 := 1.0; + vec1 := arg1; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VECTOR' IN TYPEOF(arg2) THEN + mag2 := arg2.magnitude; + vec2 := arg2\vector.orientation; + ELSE + mag2 := 1.0; + vec2 := arg2; + END_IF; + vec1 := normalise (vec1); + vec2 := normalise (vec2); + ndim := SIZEOF(vec1.direction_ratios); + mag := 0.0; + res := dummy_gri || direction(vec1.direction_ratios); + REPEAT i := 1 TO ndim; + res.direction_ratios[i] := mag1*vec1.direction_ratios[i] - + mag2*vec2.direction_ratios[i]; + mag := mag + (res.direction_ratios[i]*res.direction_ratios[i]); + END_REPEAT; + IF (mag > 0.0 ) THEN + result := dummy_gri || vector( res, SQRT(mag)); + ELSE + result := dummy_gri || vector( vec1, 0.0); + END_IF; + END; + END_IF; + RETURN (result); +END_FUNCTION; + +END_SCHEMA; + diff --git a/src/mesh/assimp-master/scripts/StepImporter/schema_ap203e2_mim_lf.exp b/src/mesh/assimp-master/scripts/StepImporter/schema_ap203e2_mim_lf.exp new file mode 100644 index 0000000..7935304 --- /dev/null +++ b/src/mesh/assimp-master/scripts/StepImporter/schema_ap203e2_mim_lf.exp @@ -0,0 +1,16378 @@ +(* + $Id: mim_lf.exp,v 1.43 2009/09/10 20:08:09 darla Exp $ + ISO TC184/SC4/WG3 N2635 - ISO/TS 10303-403 AP203 configuration controlled 3d design of mechanical parts and assemblies - EXPRESS MIM Long form + Supersedes ISO TC184/SC4/WG3 N2464 +*) + +SCHEMA Ap203_configuration_controlled_3d_design_of_mechanical_parts_and_assemblies_mim_lf; + + +CONSTANT + deprecated_constructed_data_types : SET [0:?] OF STRING := ['approved_item', + 'certified_item', + 'change_request_item', + 'contracted_item', + 'cc_classified_item', + 'date_time_item', + 'cc_person_organization_item', + 'cc_specified_item', + 'start_request_item', + 'work_item']; + + + deprecated_entity_data_types : SET [0:?] OF STRING := ['cc_design_approval', + 'cc_design_certification', + 'cc_design_contract', + 'cc_design_date_and_time_assignment', + 'cc_design_person_and_organization_assignment', + 'cc_design_security_classification', + 'cc_design_specification_reference', + 'change', + 'change_request', + 'design_context', + 'design_make_from_relationship', + 'mechanical_context', + 'start_request', + 'start_work', + 'supplied_part_relationship']; + + + deprecated_interfaced_data_types : SET [0:?] OF STRING := ['document_with_class', + 'ordinal_date', + 'product_definition_formation_with_specified_source', + 'week_of_year_and_day_date']; + + + dummy_gri : geometric_representation_item := representation_item('')|| + geometric_representation_item(); + + + dummy_tri : topological_representation_item := representation_item('')|| + topological_representation_item(); + + + pre_defined_picture_representation_types : SET [0:?] OF STRING := [ 'JPEG', 'PNG', 'TIFF', 'BMP', 'GIF']; + + + +END_CONSTANT; + +TYPE absorbed_dose_measure = REAL; +END_TYPE; + +TYPE acceleration_measure = REAL; +END_TYPE; + +TYPE action_items = SELECT ( + action_directive, + certification_item, + characterized_object, + classification_item, + configuration_effectivity, + document_reference_item, + identification_item, + organization, + person_and_organization, + product_definition, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + requirement_assigned_item); +END_TYPE; + +TYPE action_method_items = SELECT ( + product, + product_definition_formation); +END_TYPE; + +TYPE action_request_item = SELECT ( + product_definition, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + property_definition, + versioned_action_request); +END_TYPE; + +TYPE ahead_or_behind = ENUMERATION OF ( + ahead, + exact, + behind ); +END_TYPE; + +TYPE amount_of_substance_measure = REAL; +END_TYPE; + +TYPE angle_direction_reference_select = SELECT ( + direction, + curve, + point_path); +END_TYPE; + +TYPE angle_direction_reference_with_a2p3d_select = SELECT ( + angle_direction_reference_select, + axis2_placement_3d); +END_TYPE; + +TYPE angle_relator = ENUMERATION OF ( + equal, + large, + small ); +END_TYPE; + +TYPE annotation_plane_element = SELECT ( + draughting_callout, + styled_item); +END_TYPE; + +TYPE annotation_representation_select = SELECT ( + presentation_area, + presentation_view, + symbol_representation); +END_TYPE; + +TYPE annotation_symbol_occurrence_item = SELECT ( + annotation_symbol, + defined_symbol); +END_TYPE; + +TYPE annotation_text_occurrence_item = SELECT ( + text_literal, + annotation_text, + annotation_text_character, + composite_text); +END_TYPE; + +TYPE approval_item = SELECT ( + action, + action_directive, + alternate_product_relationship, + applied_action_assignment, + applied_usage_right, + assembly_component_usage_substitute, + certification, + configuration_effectivity, + configuration_item, + contract, + date, + directed_action, + document, + document_file, + effectivity, + executed_action, + general_property_relationship, + group, + group_relationship, + information_usage_right, + product, + product_definition, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + representation, + requirement_assignment, + security_classification, + shape_aspect_relationship, + versioned_action_request); +END_TYPE; + +TYPE approved_item = SELECT ( + certification, + change, + change_request, + configuration_effectivity, + configuration_item, + contract, + product, + security_classification, + start_request, + start_work); +END_TYPE; + +TYPE area_measure = REAL; +END_TYPE; + +TYPE area_or_view = SELECT ( + presentation_area, + presentation_view); +END_TYPE; + +TYPE attribute_classification_item = SELECT ( + action_directive, + action_method, + action_property, + action_property_representation, + action_relationship, + action_request_solution, + action_request_status, + alternate_product_relationship, + applied_action_assignment, + applied_action_request_assignment, + applied_approval_assignment, + applied_certification_assignment, + applied_document_reference, + applied_document_usage_constraint_assignment, + applied_effectivity_assignment, + applied_event_occurrence_assignment, + applied_external_identification_assignment, + applied_identification_assignment, + applied_organization_assignment, + applied_organizational_project_assignment, + applied_person_and_organization_assignment, + approval, + approval_person_organization, + approval_relationship, + approval_status, + certification, + context_dependent_unit, + contract, + date_and_time_assignment, + date_assignment, + derived_unit, + descriptive_representation_item, + document_file, + document_relationship, + effectivity, + event_occurrence_relationship, + executed_action, + general_property, + general_property_relationship, + group, + group_relationship, + information_right, + information_usage_right, + language, + measure_representation_item, + measure_with_unit, + named_unit, + organization_relationship, + organizational_address, + organizational_project_relationship, + person_and_organization, + person_and_organization_address, + product, + product_category, + product_concept, + product_concept_context, + product_definition, + product_definition_context, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + property_definition, + property_definition_relationship, + property_definition_representation, + representation, + representation_context, + representation_item, + security_classification, + time_interval_relationship, + uncertainty_measure_with_unit, + usage_association, + versioned_action_request); +END_TYPE; + +TYPE attribute_language_item = SELECT ( + alternate_product_relationship, + application_context, + applied_certification_assignment, + applied_document_reference, + applied_document_usage_constraint_assignment, + applied_external_identification_assignment, + applied_identification_assignment, + applied_organizational_project_assignment, + applied_security_classification_assignment, + approval, + approval_relationship, + approval_status, + assembly_component_usage_substitute, + attribute_value_assignment, + certification, + certification_type, + configuration_design, + configuration_item, + contract, + date_role, + date_time_role, + descriptive_representation_item, + document_relationship, + document_usage_role, + effectivity, + effectivity_relationship, + event_occurrence, + external_source, + general_property, + general_property_relationship, + geometric_representation_item, + geometric_tolerance, + identification_role, + information_right, + information_usage_right, + make_from_usage_option, + mapped_item, + multi_language_attribute_assignment, + object_role, + organization_relationship, + organization_role, + organizational_project, + organizational_project_relationship, + organizational_project_role, + person_and_organization, + person_and_organization_role, + product, + product_concept, + product_concept_relationship, + product_definition, + product_definition_context, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + product_definition_shape, + product_related_product_category, + property_definition, + representation, + security_classification, + security_classification_assignment, + shape_aspect, + shape_aspect_relationship, + shape_representation, + time_interval_role, + topological_representation_item, + uncertainty_measure_with_unit, + uncertainty_qualifier, + usage_association); +END_TYPE; + +TYPE attribute_type = SELECT ( + label, + text); +END_TYPE; + +TYPE axis2_placement = SELECT ( + axis2_placement_2d, + axis2_placement_3d); +END_TYPE; + +TYPE b_spline_curve_form = ENUMERATION OF ( + polyline_form, + circular_arc, + elliptic_arc, + parabolic_arc, + hyperbolic_arc, + unspecified ); +END_TYPE; + +TYPE b_spline_surface_form = ENUMERATION OF ( + plane_surf, + cylindrical_surf, + conical_surf, + spherical_surf, + toroidal_surf, + surf_of_revolution, + ruled_surf, + generalised_cone, + quadric_surf, + surf_of_linear_extrusion, + unspecified ); +END_TYPE; + +TYPE base_solid_select = SELECT ( + solid_model, + csg_primitive, + boolean_result); +WHERE + WR1 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRIMITIVE_2D' IN TYPEOF(SELF)); +END_TYPE; + +TYPE blend_end_condition_select = SELECT ( + point_on_curve, + edge_curve, + vertex); +END_TYPE; + +TYPE blend_radius_variation_type = ENUMERATION OF ( + linear_blend, + cubic_blend, + unspecified_blend ); +END_TYPE; + +TYPE boolean_operand = SELECT ( + solid_model, + half_space_solid, + csg_primitive, + boolean_result); +END_TYPE; + +TYPE boolean_operator = ENUMERATION OF ( + union, + intersection, + difference ); +END_TYPE; + +TYPE box_characteristic_select = SELECT ( + box_height, + box_width, + box_slant_angle, + box_rotate_angle); +END_TYPE; + +TYPE box_height = positive_ratio_measure; +END_TYPE; + +TYPE box_rotate_angle = plane_angle_measure; +END_TYPE; + +TYPE box_slant_angle = plane_angle_measure; +END_TYPE; + +TYPE box_width = positive_ratio_measure; +END_TYPE; + +TYPE camera_model_d3_multi_clipping_interection_select = SELECT ( + camera_model_d3_multi_clipping_union, + plane); +END_TYPE; + +TYPE camera_model_d3_multi_clipping_union_select = SELECT ( + camera_model_d3_multi_clipping_intersection, + plane); +END_TYPE; + +TYPE capacitance_measure = REAL; +END_TYPE; + +TYPE category_usage_item = SELECT ( + product_class); +END_TYPE; + +TYPE cc_classified_item = SELECT ( + assembly_component_usage, + product_definition_formation); +END_TYPE; + +TYPE cc_person_organization_item = SELECT ( + change, + change_request, + configuration_item, + contract, + product, + product_definition, + product_definition_formation, + security_classification, + start_request, + start_work); +END_TYPE; + +TYPE cc_specified_item = SELECT ( + product_definition, + shape_aspect); +END_TYPE; + +TYPE celsius_temperature_measure = REAL; +END_TYPE; + +TYPE central_or_parallel = ENUMERATION OF ( + central, + parallel ); +END_TYPE; + +TYPE certification_item = SELECT ( + alternate_product_relationship, + make_from_usage_option, + product_definition_formation, + product_definition_formation_relationship); +END_TYPE; + +TYPE certified_item = SELECT ( + supplied_part_relationship); +END_TYPE; + +TYPE change_request_item = SELECT ( + product_definition_formation); +END_TYPE; + +TYPE character_spacing_select = SELECT ( + length_measure, + ratio_measure, + measure_with_unit, + descriptive_measure); +END_TYPE; + +TYPE character_style_select = SELECT ( + character_glyph_style_stroke, + character_glyph_style_outline, + text_style_for_defined_font); +END_TYPE; + +TYPE characterized_action_definition = SELECT ( + action, + action_method, + action_method_relationship, + action_relationship); +END_TYPE; + +TYPE characterized_definition = SELECT ( + characterized_object, + characterized_product_definition, + shape_definition); +END_TYPE; + +TYPE characterized_material_property = SELECT ( + material_property_representation, + product_material_composition_relationship); +END_TYPE; + +TYPE characterized_product_composition_value = SELECT ( + measure_with_unit); +END_TYPE; + +TYPE characterized_product_definition = SELECT ( + product_definition, + product_definition_relationship); +END_TYPE; + +TYPE class_usage_effectivity_context_item = SELECT ( + product_definition); +END_TYPE; + +TYPE classification_item = SELECT ( + action, + action_directive, + action_method, + action_property, + action_relationship, + action_request_solution, + action_request_status, + address, + alternate_product_relationship, + applied_action_assignment, + applied_action_request_assignment, + applied_approval_assignment, + applied_certification_assignment, + applied_contract_assignment, + applied_date_and_time_assignment, + applied_date_assignment, + applied_document_reference, + applied_document_usage_constraint_assignment, + applied_effectivity_assignment, + applied_event_occurrence_assignment, + applied_external_identification_assignment, + applied_identification_assignment, + applied_organization_assignment, + applied_organizational_project_assignment, + applied_person_and_organization_assignment, + applied_security_classification_assignment, + approval, + approval_person_organization, + approval_relationship, + approval_status, + assembly_component_usage_substitute, + calendar_date, + certification, + characterized_class, + characterized_object, + class, + classified_item, + configuration_item, + context_dependent_unit, + contract, + conversion_based_unit, + date_and_time, + date_and_time_assignment, + date_assignment, + derived_unit, + descriptive_representation_item, + directed_action, + document_file, + document_relationship, + effectivity, + event_occurrence, + executed_action, + general_property, + general_property_relationship, + group, + identification_assignment, + information_right, + information_usage_right, + language, + measure_representation_item, + measure_with_unit, + multi_language_attribute_assignment, + named_unit, + organization, + organization_relationship, + organizational_address, + organizational_project, + organizational_project_relationship, + person, + person_and_organization_address, + product, + product_concept, + product_definition, + product_definition_context, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + property_definition, + property_definition_representation, + representation, + representation_context, + representation_item, + security_classification, + uncertainty_measure_with_unit, + usage_association, + versioned_action_request); +END_TYPE; + +TYPE classified_item = SELECT ( + product, + product_definition, + product_definition_formation); +END_TYPE; + +TYPE compound_item_definition = SELECT ( + list_representation_item, + set_representation_item); +END_TYPE; + +TYPE conductance_measure = REAL; +END_TYPE; + +TYPE configuration_design_item = SELECT ( + product_definition, + product_definition_formation); +END_TYPE; + +TYPE configured_effectivity_context_item = SELECT ( + product_concept_feature_association); +END_TYPE; + +TYPE configured_effectivity_item = SELECT ( + product_definition); +END_TYPE; + +TYPE constructive_geometry_representation_or_shape_represenation = SELECT ( + constructive_geometry_representation, + shape_representation); +END_TYPE; + +TYPE context_dependent_measure = REAL; +END_TYPE; + +TYPE contract_item = SELECT ( + action_directive, + alternate_product_relationship, + directed_action, + executed_action, + information_usage_right, + organization, + person_and_organization, + product, + product_definition_formation); +END_TYPE; + +TYPE contracted_item = SELECT ( + product_definition_formation); +END_TYPE; + +TYPE count_measure = NUMBER; +END_TYPE; + +TYPE csg_primitive = SELECT ( + sphere, + block, + right_angular_wedge, + torus, + right_circular_cone, + right_circular_cylinder); +END_TYPE; + +TYPE csg_select = SELECT ( + boolean_result, + csg_primitive); +END_TYPE; + +TYPE curve_font_or_scaled_curve_font_select = SELECT ( + curve_style_font_select, + curve_style_font_and_scaling); +END_TYPE; + +TYPE curve_on_surface = SELECT ( + pcurve, + surface_curve, + composite_curve_on_surface); +END_TYPE; + +TYPE curve_or_annotation_curve_occurrence = SELECT ( + curve, + annotation_curve_occurrence); +END_TYPE; + +TYPE curve_or_render = SELECT ( + curve_style, + curve_style_rendering); +END_TYPE; + +TYPE curve_style_font_select = SELECT ( + curve_style_font, + pre_defined_curve_font, + externally_defined_curve_font); +END_TYPE; + +TYPE date_and_time_item = SELECT ( + action, + action_directive, + applied_action_assignment, + applied_organization_assignment, + applied_person_and_organization_assignment, + applied_security_classification_assignment, + approval_person_organization, + certification, + contract, + directed_action, + document, + document_file, + event_occurrence, + executed_action, + information_usage_right, + organizational_project, + product_definition, + product_definition_formation, + product_definition_relationship, + rule_action, + security_classification, + versioned_action_request); +END_TYPE; + +TYPE date_item = SELECT ( + action, + action_directive, + applied_action_assignment, + applied_organization_assignment, + applied_person_and_organization_assignment, + applied_security_classification_assignment, + approval_person_organization, + certification, + contract, + directed_action, + document, + document_file, + event_occurrence, + executed_action, + information_usage_right, + organizational_project, + product_definition, + product_definition_formation, + product_definition_relationship, + security_classification, + versioned_action_request); +END_TYPE; + +TYPE date_time_item = SELECT ( + approval_person_organization, + certification, + change, + change_request, + contract, + product_definition, + security_classification, + start_request, + start_work); +END_TYPE; + +TYPE date_time_or_event_occurrence = SELECT ( + date_time_select, + event_occurrence); +END_TYPE; + +TYPE date_time_select = SELECT ( + date, + date_and_time, + local_time); +END_TYPE; + +TYPE day_in_month_number = INTEGER; +WHERE + WR1 : {1 <= SELF <= 31}; +END_TYPE; + +TYPE day_in_week_number = INTEGER; +WHERE + WR1 : { 1 <= SELF <= 7 }; +END_TYPE; + +TYPE day_in_year_number = INTEGER; +WHERE + WR1 : {1 <= SELF <= 366}; +END_TYPE; + +TYPE defined_symbol_select = SELECT ( + pre_defined_symbol, + externally_defined_symbol); +END_TYPE; + +TYPE derived_property_select = SELECT ( + property_definition, + action_property); +END_TYPE; + +TYPE description_attribute_select = SELECT ( + action_request_solution, + application_context, + approval_role, + configuration_design, + date_role, + date_time_role, + context_dependent_shape_representation, + effectivity, + external_source, + organization_role, + person_and_organization_role, + person_and_organization, + property_definition_representation, + representation); +END_TYPE; + +TYPE descriptive_measure = STRING; +END_TYPE; + +TYPE dimension_count = INTEGER; +WHERE + WR1 : SELF > 0; +END_TYPE; + +TYPE dimension_extent_usage = ENUMERATION OF ( + origin, + target ); +END_TYPE; + +TYPE dimensional_characteristic = SELECT ( + dimensional_location, + dimensional_size); +END_TYPE; + +TYPE direction_count_select = SELECT ( + u_direction_count, + v_direction_count); +END_TYPE; + +TYPE document_identifier_assigned_item = SELECT ( + document); +END_TYPE; + +TYPE document_reference_item = SELECT ( + action_method, + applied_external_identification_assignment, + assembly_component_usage, + characterized_class, + characterized_object, + configuration_item, + descriptive_representation_item, + dimensional_size, + executed_action, + externally_defined_dimension_definition, + externally_defined_item, + group, + group_relationship, + information_right, + information_usage_right, + material_designation, + measure_representation_item, + product, + product_category, + product_definition, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + property_definition, + representation, + representation_item, + rule_set, + shape_aspect, + shape_aspect_relationship, + usage_association, + versioned_action_request); +END_TYPE; + +TYPE dose_equivalent_measure = REAL; +END_TYPE; + +TYPE draughting_callout_element = SELECT ( + annotation_text_occurrence, + annotation_symbol_occurrence, + annotation_curve_occurrence); +END_TYPE; + +TYPE draughting_model_item_association_select = SELECT ( + annotation_occurrence, + draughting_callout); +END_TYPE; + +TYPE draughting_model_item_select = SELECT ( + mapped_item, + styled_item, + axis2_placement, + camera_model, + draughting_callout); +END_TYPE; + +TYPE draughting_titled_item = SELECT ( + drawing_revision, + drawing_sheet_revision); +END_TYPE; + +TYPE effectivity_item = SELECT ( + assembly_component_usage_substitute, + product, + product_definition, + product_definition_formation, + product_definition_relationship, + product_definition_substitute); +END_TYPE; + +TYPE electric_charge_measure = REAL; +END_TYPE; + +TYPE electric_current_measure = REAL; +END_TYPE; + +TYPE electric_potential_measure = REAL; +END_TYPE; + +TYPE energy_measure = REAL; +END_TYPE; + +TYPE event_occurrence_item = SELECT ( + organizational_project); +END_TYPE; + +TYPE external_identification_item = SELECT ( + action_relationship, + action_request_status, + applied_organization_assignment, + applied_person_and_organization_assignment, + approval, + approval_status, + date_and_time_assignment, + date_assignment, + document_file, + external_source, + externally_defined_class, + externally_defined_context_dependent_unit, + externally_defined_conversion_based_unit, + externally_defined_general_property, + externally_defined_picture_representation_item, + externally_defined_representation_item, + organizational_address, + product_definition, + security_classification, + trimmed_curve, + versioned_action_request); +END_TYPE; + +TYPE fill_area_style_tile_shape_select = SELECT ( + fill_area_style_tile_curve_with_style, + fill_area_style_tile_coloured_region, + fill_area_style_tile_symbol_with_style, + pre_defined_tile, + externally_defined_tile); +END_TYPE; + +TYPE fill_style_select = SELECT ( + fill_area_style_colour, + externally_defined_tile_style, + fill_area_style_tiles, + externally_defined_hatch_style, + fill_area_style_hatching); +END_TYPE; + +TYPE font_select = SELECT ( + pre_defined_text_font, + externally_defined_text_font, + text_font); +END_TYPE; + +TYPE force_measure = REAL; +END_TYPE; + +TYPE founded_item_select = SELECT ( + founded_item, + representation_item); +END_TYPE; + +TYPE frequency_measure = REAL; +END_TYPE; + +TYPE generalized_surface_select = SELECT ( + surface, + face_surface, + surfaced_open_shell); +END_TYPE; + +TYPE geometric_item_specific_usage_select = SELECT ( + shape_aspect, + shape_aspect_relationship); +END_TYPE; + +TYPE geometric_set_select = SELECT ( + point, + curve, + surface); +END_TYPE; + +TYPE groupable_item = SELECT ( + geometric_representation_item, + group_relationship, + mapped_item, + package_product_concept_feature, + product_concept_feature, + product_definition, + product_definition_formation, + property_definition_representation, + representation, + representation_item, + representation_relationship_with_transformation, + shape_aspect, + shape_aspect_relationship, + shape_representation_relationship, + styled_item, + topological_representation_item); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GROUP' IN TYPEOF(SELF)); +END_TYPE; + +TYPE hour_in_day = INTEGER; +WHERE + WR1 : { 0 <= SELF < 24 }; +END_TYPE; + +TYPE id_attribute_select = SELECT ( + action, + address, + product_category, + property_definition, + shape_aspect, + shape_aspect_relationship, + application_context, + group, + organizational_project, + representation); +END_TYPE; + +TYPE identification_item = SELECT ( + approval_status, + characterized_class, + class, + configuration_item, + contract, + dimensional_size, + document_file, + general_property, + group, + group_relationship, + information_right, + information_usage_right, + material_designation, + organization, + person_and_organization, + product, + product_category, + product_class, + product_concept, + product_concept_feature, + product_definition, + product_definition_formation, + product_identification, + representation, + rule_set, + security_classification, + security_classification_level, + shape_aspect_relationship, + shape_representation, + usage_association); +END_TYPE; + +TYPE identifier = STRING; +END_TYPE; + +TYPE illuminance_measure = REAL; +END_TYPE; + +TYPE inductance_measure = REAL; +END_TYPE; + +TYPE instance_usage_context_select = SELECT ( + product_definition_relationship, + product_definition_usage); +END_TYPE; + +TYPE invisibility_context = SELECT ( + draughting_model, + presentation_representation, + presentation_set); +END_TYPE; + +TYPE invisible_item = SELECT ( + draughting_callout, + presentation_layer_assignment, + representation, + styled_item); +END_TYPE; + +TYPE ir_usage_item = action_items; +WHERE + wr1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONFIGURATION_EFFECTIVITY' IN TYPEOF(SELF)); +END_TYPE; + +TYPE knot_type = ENUMERATION OF ( + uniform_knots, + quasi_uniform_knots, + piecewise_bezier_knots, + unspecified ); +END_TYPE; + +TYPE label = STRING; +END_TYPE; + +TYPE layered_item = SELECT ( + presentation_representation, + representation_item); +END_TYPE; + +TYPE length_measure = REAL; +END_TYPE; + +TYPE limit_condition = ENUMERATION OF ( + maximum_material_condition, + least_material_condition, + regardless_of_feature_size ); +END_TYPE; + +TYPE list_of_reversible_topology_item = LIST [0:?] OF reversible_topology_item; +END_TYPE; + +TYPE list_representation_item = LIST [1:?] OF representation_item; +END_TYPE; + +TYPE luminous_flux_measure = REAL; +END_TYPE; + +TYPE luminous_intensity_measure = REAL; +END_TYPE; + +TYPE magnetic_flux_density_measure = REAL; +END_TYPE; + +TYPE magnetic_flux_measure = REAL; +END_TYPE; + +TYPE marker_select = SELECT ( + marker_type, + pre_defined_marker); +END_TYPE; + +TYPE marker_type = ENUMERATION OF ( + dot, + x, + plus, + asterisk, + ring, + square, + triangle ); +END_TYPE; + +TYPE mass_measure = REAL; +END_TYPE; + +TYPE measure_value = SELECT ( + absorbed_dose_measure, + dose_equivalent_measure, + radioactivity_measure, + acceleration_measure, + amount_of_substance_measure, + area_measure, + celsius_temperature_measure, + context_dependent_measure, + count_measure, + descriptive_measure, + capacitance_measure, + electric_charge_measure, + conductance_measure, + electric_current_measure, + electric_potential_measure, + energy_measure, + magnetic_flux_density_measure, + force_measure, + frequency_measure, + illuminance_measure, + inductance_measure, + length_measure, + luminous_flux_measure, + luminous_intensity_measure, + magnetic_flux_measure, + mass_measure, + numeric_measure, + non_negative_length_measure, + parameter_value, + plane_angle_measure, + positive_length_measure, + positive_plane_angle_measure, + positive_ratio_measure, + power_measure, + pressure_measure, + ratio_measure, + resistance_measure, + solid_angle_measure, + thermodynamic_temperature_measure, + time_measure, + velocity_measure, + volume_measure); +END_TYPE; + +TYPE mechanical_design_and_draughting_relationship_select = SELECT ( + draughting_model, + mechanical_design_geometric_presentation_representation, + mechanical_design_presentation_representation_with_draughting, + mechanical_design_shaded_presentation_representation, + shape_representation); +END_TYPE; + +TYPE mechanical_design_geometric_presentation_area_items = SELECT ( + axis2_placement, + mapped_item); +END_TYPE; + +TYPE mechanical_design_geometric_presentation_representation_items = SELECT ( + axis2_placement, + camera_model_d3, + mapped_item, + styled_item); +END_TYPE; + +TYPE message = STRING; +END_TYPE; + +TYPE minute_in_hour = INTEGER; +WHERE + WR1 : { 0 <= SELF <= 59 }; +END_TYPE; + +TYPE month_in_year_number = INTEGER; +WHERE + WR1 : { 1 <= SELF <= 12 }; +END_TYPE; + +TYPE multi_language_attribute_item = SELECT ( + alternate_product_relationship, + application_context, + applied_certification_assignment, + applied_document_reference, + applied_document_usage_constraint_assignment, + applied_external_identification_assignment, + applied_identification_assignment, + applied_organizational_project_assignment, + approval, + approval_relationship, + approval_status, + assembly_component_usage_substitute, + attribute_value_assignment, + certification, + certification_type, + colour, + configuration_design, + configuration_item, + contract, + date_role, + date_time_role, + descriptive_representation_item, + document_relationship, + document_usage_role, + effectivity, + effectivity_relationship, + event_occurrence, + external_source, + general_property, + general_property_relationship, + geometric_representation_item, + geometric_tolerance, + identification_role, + information_right, + information_usage_right, + make_from_usage_option, + mapped_item, + object_role, + organization_relationship, + organization_role, + organizational_project, + organizational_project_relationship, + organizational_project_role, + person_and_organization, + person_and_organization_role, + product, + product_concept, + product_concept_relationship, + product_definition, + product_definition_context, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + product_definition_shape, + product_related_product_category, + property_definition, + representation, + representation_relationship, + security_classification, + security_classification_assignment, + shape_aspect, + shape_aspect_relationship, + shape_representation, + time_interval_role, + topological_representation_item, + uncertainty_measure_with_unit, + usage_association); +END_TYPE; + +TYPE name_attribute_select = SELECT ( + action_request_solution, + address, + configuration_design, + context_dependent_shape_representation, + derived_unit, + effectivity, + person_and_organization, + product_definition, + product_definition_substitute, + property_definition_representation); +END_TYPE; + +TYPE name_item = SELECT ( + assembly_component_usage, + external_class_library, + group, + group_relationship, + product, + product_definition); +END_TYPE; + +TYPE non_negative_length_measure = length_measure; +WHERE + WR1 : SELF >= 0.0; +END_TYPE; + +TYPE nonnegative_integer = INTEGER; +WHERE + nonnegativity : SELF >= 0; +END_TYPE; + +TYPE null_style = ENUMERATION OF ( + null ); +END_TYPE; + +TYPE numeric_measure = NUMBER; +END_TYPE; + +TYPE organization_item = SELECT ( + action, + action_directive, + alternate_product_relationship, + applied_action_assignment, + applied_classification_assignment, + applied_identification_assignment, + applied_security_classification_assignment, + approval, + assembly_component_usage_substitute, + certification, + class, + configuration_item, + contract, + document_file, + executed_action, + general_property, + information_usage_right, + organizational_project, + product, + product_definition, + product_definition_formation, + product_definition_formation_relationship, + property_definition, + rule_action, + security_classification, + shape_representation, + versioned_action_request); +END_TYPE; + +TYPE orientation_basis_select = SELECT ( + axis2_placement_3d, + min_and_major_ply_orientation_basis); +END_TYPE; + +TYPE parameter_value = REAL; +END_TYPE; + +TYPE pcurve_or_surface = SELECT ( + pcurve, + surface); +END_TYPE; + +TYPE person_and_organization_item = SELECT ( + action, + action_directive, + alternate_product_relationship, + applied_action_assignment, + applied_classification_assignment, + applied_identification_assignment, + applied_security_classification_assignment, + approval, + assembly_component_usage_substitute, + certification, + configuration_item, + contract, + document_file, + executed_action, + general_property, + information_usage_right, + organizational_project, + person_and_organization, + product, + product_definition, + product_definition_formation, + product_definition_formation_relationship, + property_definition, + rule_action, + security_classification, + shape_representation, + versioned_action_request); +END_TYPE; + +TYPE person_organization_select = SELECT ( + person, + organization, + person_and_organization); +END_TYPE; + +TYPE picture_representation_item_select = SELECT ( + styled_item, + planar_box, + axis2_placement_2d); +END_TYPE; + +TYPE plane_angle_measure = REAL; +END_TYPE; + +TYPE plane_or_planar_box = SELECT ( + plane, + planar_box); +END_TYPE; + +TYPE point_and_vector_member = SELECT ( + point, + direction); +END_TYPE; + +TYPE point_and_vector_members = LIST [2:3] OF point_and_vector_member; +END_TYPE; + +TYPE point_path_members = LIST [1:?] OF point_and_vector; +END_TYPE; + +TYPE positive_integer = nonnegative_integer; +WHERE + positivity : SELF > 0; +END_TYPE; + +TYPE positive_length_measure = non_negative_length_measure; +WHERE + WR1 : SELF > 0.0; +END_TYPE; + +TYPE positive_plane_angle_measure = plane_angle_measure; +WHERE + WR1 : SELF > 0.0; +END_TYPE; + +TYPE positive_ratio_measure = ratio_measure; +WHERE + WR1 : SELF > 0.0; +END_TYPE; + +TYPE power_measure = REAL; +END_TYPE; + +TYPE preferred_surface_curve_representation = ENUMERATION OF ( + curve_3d, + pcurve_s1, + pcurve_s2 ); +END_TYPE; + +TYPE presentable_text = STRING; +WHERE + WR1 : control_characters_free(SELF); +END_TYPE; + +TYPE presentation_representation_select = SELECT ( + presentation_representation, + presentation_set); +END_TYPE; + +TYPE presentation_size_assignment_select = SELECT ( + presentation_view, + presentation_area, + area_in_set); +END_TYPE; + +TYPE presentation_style_select = SELECT ( + point_style, + curve_style, + surface_style_usage, + symbol_style, + fill_area_style, + text_style, + null_style); +END_TYPE; + +TYPE presented_item_select = SELECT ( + action, + action_method, + action_relationship, + product_concept, + product_concept_feature, + product_concept_feature_category, + product_definition, + product_definition_formation, + product_definition_relationship); +END_TYPE; + +TYPE pressure_measure = REAL; +END_TYPE; + +TYPE product_definition_or_assembly_relationship = SELECT ( + assembly_component_usage, + product_definition); +END_TYPE; + +TYPE product_definition_or_breakdown_element_usage = SELECT ( + product_definition, + product_definition_usage); +END_TYPE; + +TYPE product_definition_or_product_definition_relationship = SELECT ( + product_definition, + product_definition_usage); +END_TYPE; + +TYPE product_or_formation_or_definition = SELECT ( + product, + product_definition_formation, + product_definition); +END_TYPE; + +TYPE project_item = SELECT ( + executed_action, + product_concept); +END_TYPE; + +TYPE radioactivity_measure = REAL; +END_TYPE; + +TYPE ratio_measure = REAL; +END_TYPE; + +TYPE rendering_properties_select = SELECT ( + surface_style_reflectance_ambient, + surface_style_transparent); +END_TYPE; + +TYPE represented_definition = SELECT ( + general_property, + property_definition, + property_definition_relationship, + shape_aspect, + shape_aspect_relationship); +END_TYPE; + +TYPE requirement_assigned_item = SELECT ( + configuration_item, + descriptive_representation_item, + product, + product_class, + product_definition, + product_definition_formation, + product_definition_relationship, + representation, + shape_aspect); +END_TYPE; + +TYPE requirement_satisfaction_item = SELECT ( + requirement_assigned_item); +END_TYPE; + +TYPE requirement_source_item = SELECT ( + characterized_object, + group, + group_relationship, + product, + product_definition, + product_definition_formation, + product_definition_relationship, + shape_aspect); +END_TYPE; + +TYPE resistance_measure = REAL; +END_TYPE; + +TYPE reversible_topology = SELECT ( + reversible_topology_item, + list_of_reversible_topology_item, + set_of_reversible_topology_item); +END_TYPE; + +TYPE reversible_topology_item = SELECT ( + edge, + path, + face, + face_bound, + closed_shell, + open_shell); +END_TYPE; + +TYPE role_select = SELECT ( + action_assignment, + action_request_assignment, + approval_assignment, + approval_date_time, + certification_assignment, + contract_assignment, + document_reference, + effectivity_assignment, + group_assignment, + name_assignment, + security_classification_assignment); +END_TYPE; + +TYPE rule_superseded_item = SELECT ( + product_definition_formation); +END_TYPE; + +TYPE second_in_minute = REAL; +WHERE + WR1 : { 0 <= SELF <= 60.0 }; +END_TYPE; + +TYPE security_classification_item = SELECT ( + assembly_component_usage, + document, + document_file, + make_from_usage_option, + product, + product_definition, + product_definition_formation, + product_definition_usage); +END_TYPE; + +TYPE set_of_reversible_topology_item = SET [0:?] OF reversible_topology_item; +END_TYPE; + +TYPE set_representation_item = SET [1:?] OF representation_item; +END_TYPE; + +TYPE shading_curve_method = ENUMERATION OF ( + constant_colour, + linear_colour ); +END_TYPE; + +TYPE shading_surface_method = ENUMERATION OF ( + constant_shading, + colour_shading, + dot_shading, + normal_shading ); +END_TYPE; + +TYPE shape_definition = SELECT ( + product_definition_shape, + shape_aspect, + shape_aspect_relationship); +END_TYPE; + +TYPE shell = SELECT ( + vertex_shell, + wire_shell, + open_shell, + closed_shell); +END_TYPE; + +TYPE si_prefix = ENUMERATION OF ( + exa, + peta, + tera, + giga, + mega, + kilo, + hecto, + deca, + deci, + centi, + milli, + micro, + nano, + pico, + femto, + atto ); +END_TYPE; + +TYPE si_unit_name = ENUMERATION OF ( + metre, + gram, + second, + ampere, + kelvin, + mole, + candela, + radian, + steradian, + hertz, + newton, + pascal, + joule, + watt, + coulomb, + volt, + farad, + ohm, + siemens, + weber, + tesla, + henry, + degree_Celsius, + lumen, + lux, + becquerel, + gray, + sievert ); +END_TYPE; + +TYPE size_select = SELECT ( + positive_length_measure, + measure_with_unit, + descriptive_measure); +END_TYPE; + +TYPE sketch_basis_select = SELECT ( + curve_bounded_surface, + face_surface); +END_TYPE; + +TYPE solid_angle_measure = REAL; +END_TYPE; + +TYPE source = ENUMERATION OF ( + made, + bought, + not_known ); +END_TYPE; + +TYPE source_item = SELECT ( + identifier, + message); +END_TYPE; + +TYPE start_request_item = SELECT ( + product_definition_formation); +END_TYPE; + +TYPE string_representation_item_select = SELECT ( + descriptive_representation_item, + included_text_block, + structured_text_composition); +END_TYPE; + +TYPE style_context_select = SELECT ( + group, + presentation_layer_assignment, + presentation_set, + representation, + representation_item, + representation_relationship); +END_TYPE; + +TYPE surface_side = ENUMERATION OF ( + positive, + negative, + both ); +END_TYPE; + +TYPE surface_side_style_select = SELECT ( + surface_side_style, + pre_defined_surface_side_style); +END_TYPE; + +TYPE surface_style_element_select = SELECT ( + surface_style_fill_area, + surface_style_boundary, + surface_style_silhouette, + surface_style_segmentation_curve, + surface_style_control_grid, + surface_style_parameter_line, + surface_style_rendering); +END_TYPE; + +TYPE symbol_style_select = SELECT ( + symbol_colour); +END_TYPE; + +TYPE text = STRING; +END_TYPE; + +TYPE text_alignment = label; +END_TYPE; + +TYPE text_delineation = label; +END_TYPE; + +TYPE text_or_character = SELECT ( + annotation_text, + annotation_text_character, + composite_text, + text_literal); +END_TYPE; + +TYPE text_path = ENUMERATION OF ( + left, + right, + up, + down ); +END_TYPE; + +TYPE text_string_representation_item = SELECT ( + text_literal, + annotation_text, + annotation_text_character, + composite_text, + axis2_placement); +END_TYPE; + +TYPE thermodynamic_temperature_measure = REAL; +END_TYPE; + +TYPE time_interval_item = SELECT ( + action, + time_interval_based_effectivity); +END_TYPE; + +TYPE time_measure = REAL; +END_TYPE; + +TYPE tolerance_method_definition = SELECT ( + tolerance_value, + limits_and_fits); +END_TYPE; + +TYPE transformation = SELECT ( + item_defined_transformation, + functionally_defined_transformation); +END_TYPE; + +TYPE transition_code = ENUMERATION OF ( + discontinuous, + continuous, + cont_same_gradient, + cont_same_gradient_same_curvature ); +END_TYPE; + +TYPE trim_condition_select = SELECT ( + length_measure, + plane_angle_measure, + generalized_surface_select, + solid_model); +END_TYPE; + +TYPE trim_intent = ENUMERATION OF ( + blind, + offset, + through_all, + unspecified, + up_to_next ); +END_TYPE; + +TYPE trimming_preference = ENUMERATION OF ( + cartesian, + parameter, + unspecified ); +END_TYPE; + +TYPE trimming_select = SELECT ( + cartesian_point, + parameter_value); +END_TYPE; + +TYPE u_direction_count = INTEGER; +WHERE + WR1 : SELF > 1; +END_TYPE; + +TYPE unit = SELECT ( + derived_unit, + named_unit); +END_TYPE; + +TYPE v_direction_count = INTEGER; +WHERE + WR1 : SELF > 1; +END_TYPE; + +TYPE value_qualifier = SELECT ( + precision_qualifier, + type_qualifier, + uncertainty_qualifier); +END_TYPE; + +TYPE vector_or_direction = SELECT ( + vector, + direction); +END_TYPE; + +TYPE velocity_measure = REAL; +END_TYPE; + +TYPE volume_measure = REAL; +END_TYPE; + +TYPE week_in_year_number = INTEGER; +WHERE + WR1 : { 1 <= SELF <= 53 }; +END_TYPE; + +TYPE work_item = SELECT ( + product_definition_formation); +END_TYPE; + +TYPE year_number = INTEGER; +END_TYPE; + +ENTITY absorbed_dose_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ABSORBED_DOSE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY absorbed_dose_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.gray); +END_ENTITY; + + +ENTITY abstract_variable + SUBTYPE OF (property_definition, property_definition_representation, representation, representation_item); +END_ENTITY; + + +ENTITY acceleration_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ACCELERATION_UNIT' IN TYPEOF (SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY acceleration_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = + dimensional_exponents ( 1.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0 ); +END_ENTITY; + + +ENTITY action; + name : label; + description : OPTIONAL text; + chosen_method : action_method; +DERIVE + id : identifier := get_id_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY action_assignment + ABSTRACT SUPERTYPE; + assigned_action : action; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY action_directive; + name : label; + description : OPTIONAL text; + analysis : text; + comment : text; + requests : SET [1:?] OF versioned_action_request; +END_ENTITY; + + +ENTITY action_method; + name : label; + description : OPTIONAL text; + consequence : text; + purpose : text; +END_ENTITY; + + +ENTITY action_method_assignment + ABSTRACT SUPERTYPE; + assigned_action_method : action_method; + role : action_method_role; +END_ENTITY; + + +ENTITY action_method_relationship; + name : label; + description : OPTIONAL text; + relating_method : action_method; + related_method : action_method; +END_ENTITY; + + +ENTITY action_method_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY action_property; + name : label; + description : text; + definition : characterized_action_definition; +END_ENTITY; + + +ENTITY action_property_representation; + name : label; + description : text; + property : action_property; + representation : representation; +END_ENTITY; + + +ENTITY action_relationship; + name : label; + description : OPTIONAL text; + relating_action : action; + related_action : action; +END_ENTITY; + + +ENTITY action_request_assignment + ABSTRACT SUPERTYPE; + assigned_action_request : versioned_action_request; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY action_request_solution; + method : action_method; + request : versioned_action_request; +DERIVE + description : text := get_description_value(SELF); + name : label := get_name_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY action_request_status; + status : label; + assigned_request : versioned_action_request; +END_ENTITY; + + +ENTITY action_status; + status : label; + assigned_action : executed_action; +END_ENTITY; + + +ENTITY address; + internal_location : OPTIONAL label; + street_number : OPTIONAL label; + street : OPTIONAL label; + postal_box : OPTIONAL label; + town : OPTIONAL label; + region : OPTIONAL label; + postal_code : OPTIONAL label; + country : OPTIONAL label; + facsimile_number : OPTIONAL label; + telephone_number : OPTIONAL label; + electronic_mail_address : OPTIONAL label; + telex_number : OPTIONAL label; +DERIVE + name : label := get_name_value(SELF); + url : identifier := get_id_value(SELF); +WHERE + WR1 : EXISTS(internal_location) OR EXISTS(street_number) OR EXISTS(street) OR EXISTS(postal_box) OR EXISTS(town) OR EXISTS(region) OR EXISTS(postal_code) OR EXISTS(country) OR EXISTS(facsimile_number) OR EXISTS(telephone_number) OR EXISTS(electronic_mail_address) OR EXISTS(telex_number); +END_ENTITY; + + +ENTITY advanced_brep_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF ( +QUERY ( it <* SELF.items| NOT ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACETED_BREP', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D' ] * TYPEOF (it)) = 1) )) = 0; + WR2 : SIZEOF ( +QUERY ( it <* SELF.items| ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' ] * TYPEOF (it)) = 1) )) > 0; + WR3 : SIZEOF ( +QUERY ( msb <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( csh <* msb_shells(msb)| NOT ( SIZEOF ( +QUERY ( fcs <* csh\connected_face_set.cfs_faces| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fcs)) )) = 0) )) = 0) )) = 0; + WR4 : SIZEOF ( +QUERY ( msb <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF (it)) )| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF (msb\manifold_solid_brep.outer)) )) = 0; + WR5 : SIZEOF ( +QUERY ( brv <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BREP_WITH_VOIDS' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( csh <* brv\brep_with_voids.voids| csh\oriented_closed_shell.orientation )) = 0) )) = 0; + WR6 : SIZEOF ( +QUERY ( mi <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_BREP_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0; +END_ENTITY; + + +ENTITY advanced_face + SUBTYPE OF (face_surface); +WHERE + WR1 : SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELEMENTARY_SURFACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_SURFACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_SURFACE' ] * TYPEOF (face_geometry)) = 1; + WR2 : SIZEOF ( +QUERY ( elp_fbnds <* +QUERY ( bnds <* bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF ( +QUERY ( oe <* elp_fbnds.bound\path.edge_list| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN TYPEOF (oe\oriented_edge.edge_element)) )) = 0) )) = 0; + WR3 : SIZEOF ( +QUERY ( elp_fbnds <* +QUERY ( bnds <* bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF ( +QUERY ( oe <* elp_fbnds.bound\path.edge_list| NOT ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' ] * TYPEOF (oe.edge_element\edge_curve.edge_geometry)) = 1) )) = 0) )) = 0; + WR4 : SIZEOF ( +QUERY ( elp_fbnds <* +QUERY ( bnds <* bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF ( +QUERY ( oe <* elp_fbnds.bound\path.edge_list| NOT ((('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (oe\edge.edge_start)) AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF (oe\edge.edge_start\vertex_point.vertex_geometry))) AND (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (oe\edge.edge_end)) AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF (oe\edge.edge_end\vertex_point.vertex_geometry)))) )) = 0) )) = 0; + WR5 : SIZEOF ( +QUERY ( elp_fbnds <* +QUERY ( bnds <* bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_PATH' IN TYPEOF (elp_fbnds.bound)) )) = 0; + WR6 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_SURFACE' IN TYPEOF (face_geometry)) OR ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' ] * TYPEOF (face_geometry\swept_surface.swept_curve)) = 1); + WR7 : SIZEOF ( +QUERY ( vlp_fbnds <* +QUERY ( bnds <* bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) )| NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex)) AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF (vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex\vertex_point.vertex_geometry))) )) = 0; + WR8 : SIZEOF ( +QUERY ( bnd <* bounds| NOT ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' ] * TYPEOF (bnd.bound)) = 1) )) = 0; + WR9 : SIZEOF ( +QUERY ( elp_fbnds <* +QUERY ( bnds <* bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF ( +QUERY ( oe <* elp_fbnds.bound\path.edge_list| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN TYPEOF (oe\oriented_edge.edge_element\edge_curve.edge_geometry)) AND NOT ( SIZEOF ( +QUERY ( sc_ag <* oe.edge_element\edge_curve.edge_geometry\surface_curve.associated_geometry| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF (sc_ag)) )) = 0) )) = 0) )) = 0; + WR10 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_SURFACE' IN TYPEOF (face_geometry)) OR (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF (face_geometry\swept_surface.swept_curve)) OR ( SIZEOF (face_geometry\swept_surface.swept_curve\polyline.points) >= 3))) AND ( SIZEOF ( +QUERY ( elp_fbnds <* +QUERY ( bnds <* bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF ( +QUERY ( oe <* elp_fbnds.bound\path.edge_list| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF (oe\oriented_edge.edge_element\edge_curve.edge_geometry)) AND NOT ( SIZEOF (oe\oriented_edge.edge_element\edge_curve.edge_geometry\polyline.points) >= 3) )) = 0) )) = 0); +END_ENTITY; + + +ENTITY alternate_product_relationship; + name : label; + definition : OPTIONAL text; + alternate : product; + base : product; + basis : text; +UNIQUE + UR1 : alternate, base; +WHERE + WR1 : alternate :<>: base; +END_ENTITY; + + +ENTITY amount_of_substance_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AMOUNT_OF_SUBSTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY amount_of_substance_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 1.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY angle_direction_reference + SUBTYPE OF (representation_item_relationship, geometric_representation_item); + SELF\representation_item_relationship.related_representation_item : angle_direction_reference_select; + SELF\representation_item_relationship.relating_representation_item : orientation_basis_select; +WHERE + WR1 : ((('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_PATH' IN TYPEOF(related_representation_item)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MIN_AND_MAJOR_PLY_ORIENTATION_BASIS' IN TYPEOF(relating_representation_item))) + OR + (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_PATH' IN TYPEOF(related_representation_item)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF(relating_representation_item)))); +END_ENTITY; + + +ENTITY angular_dimension + SUBTYPE OF (dimension_curve_directed_callout); +END_ENTITY; + + +ENTITY angular_location + SUBTYPE OF (dimensional_location); + angle_selection : angle_relator; +END_ENTITY; + + +ENTITY angular_size + SUBTYPE OF (dimensional_size); + angle_selection : angle_relator; +END_ENTITY; + + +ENTITY angularity_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) < 3; +END_ENTITY; + + +ENTITY annotation_curve_occurrence + SUBTYPE OF (annotation_occurrence); + SELF\styled_item.item : curve; +END_ENTITY; + + +ENTITY annotation_fill_area + SUBTYPE OF (geometric_representation_item); + boundaries : SET [1:?] OF curve; +WHERE + WR1 : (SELF\geometric_representation_item.dim = 3) OR (SIZEOF (QUERY (curve <* SELF.boundaries | + NOT ( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCLE' IN TYPEOF (curve)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELLIPSE' IN TYPEOF (curve)) OR + ( ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' IN TYPEOF (curve)) + AND (curve\b_spline_curve.closed_curve = TRUE) ) OR + ( ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE' IN TYPEOF (curve)) + AND (curve\composite_curve.closed_curve = TRUE) ) OR + ( ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF (curve)) + AND (curve\polyline.points[LOINDEX(curve\polyline.points)] = + curve\polyline.points[HIINDEX(curve\polyline.points)]) ) + ) )) = 0); +END_ENTITY; + + +ENTITY annotation_fill_area_occurrence + SUBTYPE OF (annotation_occurrence); + fill_style_target : point; + SELF\styled_item.item : annotation_fill_area; +END_ENTITY; + + +ENTITY annotation_occurrence + SUPERTYPE OF (ONEOF (annotation_curve_occurrence, annotation_fill_area_occurrence, annotation_text_occurrence, annotation_symbol_occurrence)) + SUBTYPE OF (styled_item); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN + TYPEOF (SELF); + WR2 : SIZEOF (QUERY (reps <* using_representations(SELF) | + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_REPRESENTATION_SELECT' IN TYPEOF(reps)))) = 0; +END_ENTITY; + + +ENTITY annotation_occurrence_associativity + SUBTYPE OF (annotation_occurrence_relationship); +WHERE + WR1 : SIZEOF (TYPEOF (SELF.related_annotation_occurrence) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_CURVE']) = 1; +END_ENTITY; + + +ENTITY annotation_occurrence_relationship; + name : label; + description : text; + relating_annotation_occurrence : annotation_occurrence; + related_annotation_occurrence : annotation_occurrence; +END_ENTITY; + + +ENTITY annotation_plane + SUBTYPE OF (annotation_occurrence, geometric_representation_item); + elements : OPTIONAL SET [1:?] OF annotation_plane_element; + SELF\styled_item.item : plane_or_planar_box; +WHERE + WR1 : SELF\geometric_representation_item.dim = 3; + WR2 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PLANAR_BOX' IN TYPEOF(SELF\styled_item.item)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'AXIS2_PLACEMENT_3D' IN TYPEOF(SELF\styled_item.item\planar_box.placement)); + WR3 : (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PLANAR_BOX' IN TYPEOF(SELF\styled_item.item)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'CURVE_STYLE' IN TYPEOF(SELF\styled_item.styles[1]\presentation_style_assignment.styles[1]))) OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PLANE' IN TYPEOF(SELF\styled_item.item)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'FILL_AREA_STYLE' IN TYPEOF(SELF\styled_item.styles[1]\presentation_style_assignment.styles[1]))); + WR4 : (SIZEOF(SELF\styled_item.styles) = 1) AND + (SIZEOF(SELF\styled_item.styles[1]\presentation_style_assignment.styles) = 1); +END_ENTITY; + + +ENTITY annotation_subfigure_occurrence + SUBTYPE OF (annotation_symbol_occurrence); +WHERE + WR1 : SIZEOF (QUERY (sty <* SELF.styles | + NOT (SIZEOF (sty.styles) = 1) + )) = 0; + WR2 : SIZEOF (QUERY (sty <* SELF.styles | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NULL_STYLE' + IN TYPEOF (sty.styles[1])) ))=0; + WR3 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL' + IN TYPEOF (SELF.item)); + WR4 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_SUBFIGURE_REPRESENTATION' + IN TYPEOF + (SELF.item\mapped_item.mapping_source.mapped_representation)); +END_ENTITY; + + +ENTITY annotation_symbol + SUBTYPE OF (mapped_item); + SELF\mapped_item.mapping_source : symbol_representation_map; + SELF\mapped_item.mapping_target : symbol_target; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN + TYPEOF (SELF); +END_ENTITY; + + +ENTITY annotation_symbol_occurrence + SUBTYPE OF (annotation_occurrence); + SELF\styled_item.item : annotation_symbol_occurrence_item; +END_ENTITY; + + +ENTITY annotation_text + SUBTYPE OF (mapped_item); + SELF\mapped_item.mapping_target : axis2_placement; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_STRING_REPRESENTATION' IN + TYPEOF( SELF\mapped_item.mapping_source.mapped_representation); + WR2 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN + TYPEOF( SELF); +END_ENTITY; + + +ENTITY annotation_text_character + SUBTYPE OF (mapped_item); + alignment : text_alignment; + SELF\mapped_item.mapping_target : axis2_placement; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CHARACTER_GLYPH_SYMBOL' IN + TYPEOF (SELF\mapped_item.mapping_source.mapped_representation); + WR2 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN + TYPEOF (SELF); +END_ENTITY; + + +ENTITY annotation_text_occurrence + SUBTYPE OF (annotation_occurrence); + SELF\styled_item.item : annotation_text_occurrence_item; +END_ENTITY; + + +ENTITY apex + SUBTYPE OF (derived_shape_aspect); +END_ENTITY; + + +ENTITY application_context; + application : label; +DERIVE + description : text := get_description_value(SELF); + id : identifier := get_id_value(SELF); +INVERSE + context_elements: SET [1:?] OF application_context_element FOR frame_of_reference; +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY application_context_element + SUPERTYPE OF (ONEOF (product_concept_context, product_context, product_definition_context)); + name : label; + frame_of_reference : application_context; +END_ENTITY; + + +ENTITY application_protocol_definition; + status : label; + application_interpreted_model_schema_name : label; + application_protocol_year : year_number; + application : application_context; +END_ENTITY; + + +ENTITY applied_action_assignment + SUBTYPE OF (action_assignment); + items : SET [1:?] OF action_items; +END_ENTITY; + + +ENTITY applied_action_method_assignment + SUBTYPE OF (action_method_assignment); + items : SET [1:?] OF action_method_items; +END_ENTITY; + + +ENTITY applied_action_request_assignment + SUBTYPE OF (action_request_assignment); + items : SET [1:?] OF action_request_item; +END_ENTITY; + + +ENTITY applied_approval_assignment + SUBTYPE OF (approval_assignment); + items : SET [1:?] OF approval_item; +END_ENTITY; + + +ENTITY applied_attribute_classification_assignment + SUBTYPE OF (attribute_classification_assignment); + items : SET [1:?] OF attribute_classification_item; + SELF\attribute_classification_assignment.assigned_class : class; +END_ENTITY; + + +ENTITY applied_certification_assignment + SUBTYPE OF (certification_assignment); + items : SET [1:?] OF certification_item; +END_ENTITY; + + +ENTITY applied_classification_assignment + SUBTYPE OF (classification_assignment); + items : SET [1:?] OF classification_item; +END_ENTITY; + + +ENTITY applied_contract_assignment + SUBTYPE OF (contract_assignment); + items : SET [1:?] OF contract_item; +END_ENTITY; + + +ENTITY applied_date_and_time_assignment + SUBTYPE OF (date_and_time_assignment); + items : SET [1:?] OF date_and_time_item; +END_ENTITY; + + +ENTITY applied_date_assignment + SUBTYPE OF (date_assignment); + items : SET [1:?] OF date_item; +END_ENTITY; + + +ENTITY applied_document_reference + SUBTYPE OF (document_reference); + items : SET [1:?] OF document_reference_item; +END_ENTITY; + + +ENTITY applied_document_usage_constraint_assignment + SUBTYPE OF (document_usage_constraint_assignment); + items : SET [1:?] OF document_reference_item; +END_ENTITY; + + +ENTITY applied_effectivity_assignment + SUBTYPE OF (effectivity_assignment); + items : SET [1:?] OF effectivity_item; +END_ENTITY; + + +ENTITY applied_event_occurrence_assignment + SUBTYPE OF (event_occurrence_assignment); + items : SET [1:?] OF event_occurrence_item; +END_ENTITY; + + +ENTITY applied_external_identification_assignment + SUBTYPE OF (external_identification_assignment); + items : SET [1:?] OF external_identification_item; +END_ENTITY; + + +ENTITY applied_group_assignment + SUBTYPE OF (group_assignment); + items : SET [1:?] OF groupable_item; +END_ENTITY; + + +ENTITY applied_identification_assignment + SUBTYPE OF (identification_assignment); + items : SET [1:?] OF identification_item; +END_ENTITY; + + +ENTITY applied_name_assignment + SUBTYPE OF (name_assignment); + item : name_item; +END_ENTITY; + + +ENTITY applied_organization_assignment + SUBTYPE OF (organization_assignment); + items : SET [1:?] OF organization_item; +END_ENTITY; + + +ENTITY applied_organizational_project_assignment + SUBTYPE OF (organizational_project_assignment); + items : SET [1:?] OF project_item; +END_ENTITY; + + +ENTITY applied_person_and_organization_assignment + SUBTYPE OF (person_and_organization_assignment); + items : SET [1:?] OF person_and_organization_item; +END_ENTITY; + + +ENTITY applied_presented_item + SUBTYPE OF (presented_item); + items : SET [1:?] OF presented_item_select; +END_ENTITY; + + +ENTITY applied_security_classification_assignment + SUBTYPE OF (security_classification_assignment); + items : SET [1:?] OF security_classification_item; +END_ENTITY; + + +ENTITY applied_time_interval_assignment + SUBTYPE OF (time_interval_assignment); + items : SET [0:?] OF time_interval_item; +END_ENTITY; + + +ENTITY applied_usage_right + SUBTYPE OF (applied_action_assignment); + SELF\applied_action_assignment.items : SET [1:?] OF ir_usage_item; +END_ENTITY; + + +ENTITY approval; + status : approval_status; + level : label; +END_ENTITY; + + +ENTITY approval_assignment + ABSTRACT SUPERTYPE; + assigned_approval : approval; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY approval_date_time; + date_time : date_time_select; + dated_approval : approval; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY approval_person_organization; + person_organization : person_organization_select; + authorized_approval : approval; + role : approval_role; +END_ENTITY; + + +ENTITY approval_relationship; + name : label; + description : OPTIONAL text; + relating_approval : approval; + related_approval : approval; +END_ENTITY; + + +ENTITY approval_role; + role : label; +DERIVE + description : text := get_description_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY approval_status; + name : label; +END_ENTITY; + + +ENTITY area_in_set; + area : presentation_area; + in_set : presentation_set; +END_ENTITY; + + +ENTITY area_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AREA_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY area_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = + dimensional_exponents ( 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ); +END_ENTITY; + + +ENTITY assembly_component_usage + SUPERTYPE OF (ONEOF (next_assembly_usage_occurrence, specified_higher_usage_occurrence, promissory_usage_occurrence)) + SUBTYPE OF (product_definition_usage); + reference_designator : OPTIONAL identifier; +END_ENTITY; + + +ENTITY assembly_component_usage_substitute; + name : label; + definition : OPTIONAL text; + base : assembly_component_usage; + substitute : assembly_component_usage; +UNIQUE + UR1 : base, substitute; +WHERE + WR1 : base.relating_product_definition :=: + substitute.relating_product_definition; + WR2 : base :<>: substitute; +END_ENTITY; + + +ENTITY assigned_requirement + SUBTYPE OF (group_assignment); + items : SET [1:1] OF product_definition; + SELF\group_assignment.assigned_group : requirement_assignment; +END_ENTITY; + + +ENTITY atomic_formula + SUBTYPE OF (compound_representation_item); +END_ENTITY; + + +ENTITY attribute_assertion + SUBTYPE OF (fact_type, property_definition_representation, representation); +END_ENTITY; + + +ENTITY attribute_classification_assignment + ABSTRACT SUPERTYPE; + assigned_class : group; + attribute_name : label; + role : classification_role; +END_ENTITY; + + +ENTITY attribute_language_assignment + SUBTYPE OF (attribute_classification_assignment); + items : SET [1:?] OF attribute_language_item; + SELF\attribute_classification_assignment.assigned_class : language; +WHERE + WR1 : SELF\attribute_classification_assignment.role.name IN ['primary', 'translated']; + WR2 : SELF\attribute_classification_assignment.attribute_name<> ''; +END_ENTITY; + + +ENTITY attribute_value_assignment + ABSTRACT SUPERTYPE; + attribute_name : label; + attribute_value : attribute_type; + role : attribute_value_role; +END_ENTITY; + + +ENTITY attribute_value_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY auxiliary_geometric_representation_item + SUBTYPE OF (geometric_representation_item, variational_representation_item); +END_ENTITY; + + +ENTITY axis1_placement + SUBTYPE OF (placement); + axis : OPTIONAL direction; +DERIVE + z : direction := NVL(normalise(axis), dummy_gri || + direction([0.0,0.0,1.0])); +WHERE + WR1 : SELF\geometric_representation_item.dim = 3; +END_ENTITY; + + +ENTITY axis2_placement_2d + SUBTYPE OF (placement); + ref_direction : OPTIONAL direction; +DERIVE + p : LIST [2:2] OF direction := build_2axes(ref_direction); +WHERE + WR1 : SELF\geometric_representation_item.dim = 2; +END_ENTITY; + + +ENTITY axis2_placement_3d + SUBTYPE OF (placement); + axis : OPTIONAL direction; + ref_direction : OPTIONAL direction; +DERIVE + p : LIST [3:3] OF direction := build_axes(axis,ref_direction); +WHERE + WR1 : SELF\placement.location.dim = 3; + WR2 : (NOT (EXISTS (axis))) OR (axis.dim = 3); + WR3 : (NOT (EXISTS (ref_direction))) OR (ref_direction.dim = 3); + WR4 : (NOT (EXISTS (axis))) OR (NOT (EXISTS (ref_direction))) OR + (cross_product(axis,ref_direction).magnitude > 0.0); +END_ENTITY; + + +ENTITY b_spline_curve + SUPERTYPE OF ((ONEOF (uniform_curve, b_spline_curve_with_knots, quasi_uniform_curve, bezier_curve) ANDOR rational_b_spline_curve)) + SUBTYPE OF (bounded_curve); + degree : INTEGER; + control_points_list : LIST [2:?] OF cartesian_point; + curve_form : b_spline_curve_form; + closed_curve : LOGICAL; + self_intersect : LOGICAL; +DERIVE + control_points : ARRAY [0:upper_index_on_control_points] OF cartesian_point := list_to_array(control_points_list,0, + upper_index_on_control_points); + upper_index_on_control_points : INTEGER := (SIZEOF(control_points_list) - 1); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.UNIFORM_CURVE' IN TYPEOF(self)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.QUASI_UNIFORM_CURVE' IN TYPEOF(self)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BEZIER_CURVE' IN TYPEOF(self)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE_WITH_KNOTS' IN TYPEOF(self)); +END_ENTITY; + + +ENTITY b_spline_curve_with_knots + SUBTYPE OF (b_spline_curve); + knot_multiplicities : LIST [2:?] OF INTEGER; + knots : LIST [2:?] OF parameter_value; + knot_spec : knot_type; +DERIVE + upper_index_on_knots : INTEGER := SIZEOF(knots); +WHERE + WR1 : constraints_param_b_spline(degree, upper_index_on_knots, + upper_index_on_control_points, + knot_multiplicities, knots); + WR2 : SIZEOF(knot_multiplicities) = upper_index_on_knots; +END_ENTITY; + + +ENTITY b_spline_surface + SUPERTYPE OF ((ONEOF (b_spline_surface_with_knots, uniform_surface, quasi_uniform_surface, bezier_surface) ANDOR rational_b_spline_surface)) + SUBTYPE OF (bounded_surface); + u_degree : INTEGER; + v_degree : INTEGER; + control_points_list : LIST [2:?] OF LIST [2:?] OF cartesian_point; + surface_form : b_spline_surface_form; + u_closed : LOGICAL; + v_closed : LOGICAL; + self_intersect : LOGICAL; +DERIVE + control_points : ARRAY [0:u_upper] OF ARRAY [0:v_upper] OF cartesian_point := make_array_of_array(control_points_list, + 0,u_upper,0,v_upper); + u_upper : INTEGER := SIZEOF(control_points_list) - 1; + v_upper : INTEGER := SIZEOF(control_points_list[1]) - 1; +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.UNIFORM_SURFACE' IN TYPEOF(SELF)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.QUASI_UNIFORM_SURFACE' IN TYPEOF(SELF)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BEZIER_SURFACE' IN TYPEOF(SELF)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_SURFACE_WITH_KNOTS' IN TYPEOF(SELF)); +END_ENTITY; + + +ENTITY b_spline_surface_with_knots + SUBTYPE OF (b_spline_surface); + u_multiplicities : LIST [2:?] OF INTEGER; + v_multiplicities : LIST [2:?] OF INTEGER; + u_knots : LIST [2:?] OF parameter_value; + v_knots : LIST [2:?] OF parameter_value; + knot_spec : knot_type; +DERIVE + knot_u_upper : INTEGER := SIZEOF(u_knots); + knot_v_upper : INTEGER := SIZEOF(v_knots); +WHERE + WR1 : constraints_param_b_spline(SELF\b_spline_surface.u_degree, + knot_u_upper, SELF\b_spline_surface.u_upper, + u_multiplicities, u_knots); + WR2 : constraints_param_b_spline(SELF\b_spline_surface.v_degree, + knot_v_upper, SELF\b_spline_surface.v_upper, + v_multiplicities, v_knots); + WR3 : SIZEOF(u_multiplicities) = knot_u_upper; + WR4 : SIZEOF(v_multiplicities) = knot_v_upper; +END_ENTITY; + + +ENTITY back_chaining_rule + SUBTYPE OF (rule_definition); +END_ENTITY; + + +ENTITY back_chaining_rule_body + SUBTYPE OF (property_definition, property_definition_representation, representation); +END_ENTITY; + + +ENTITY background_colour + SUBTYPE OF (colour); + presentation : area_or_view; +UNIQUE + UR1 : presentation; +END_ENTITY; + + +ENTITY beveled_sheet_representation + SUBTYPE OF (shape_representation); +END_ENTITY; + + +ENTITY bezier_curve + SUBTYPE OF (b_spline_curve); +END_ENTITY; + + +ENTITY bezier_surface + SUBTYPE OF (b_spline_surface); +END_ENTITY; + + +ENTITY binary_generic_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (generic_expression); + operands : LIST [2:2] OF generic_expression; +END_ENTITY; + + +ENTITY binary_numeric_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (numeric_expression, binary_generic_expression); + SELF\binary_generic_expression.operands : LIST [2:2] OF numeric_expression; +END_ENTITY; + + +ENTITY binary_representation_item + SUBTYPE OF (representation_item); + binary_value : BINARY; +END_ENTITY; + + +ENTITY block + SUBTYPE OF (geometric_representation_item); + position : axis2_placement_3d; + x : positive_length_measure; + y : positive_length_measure; + z : positive_length_measure; +END_ENTITY; + + +ENTITY boolean_expression + ABSTRACT SUPERTYPE OF (ONEOF (simple_boolean_expression, multiple_arity_boolean_expression, comparison_expression, interval_expression)) + SUBTYPE OF (expression); +END_ENTITY; + + +ENTITY boolean_literal + SUBTYPE OF (simple_boolean_expression, generic_literal); + the_value : BOOLEAN; +END_ENTITY; + + +ENTITY boolean_representation_item + SUBTYPE OF (representation_item, boolean_literal); +END_ENTITY; + + +ENTITY boolean_result + SUBTYPE OF (geometric_representation_item); + operator : boolean_operator; + first_operand : boolean_operand; + second_operand : boolean_operand; +END_ENTITY; + + +ENTITY boundary_curve + SUBTYPE OF (composite_curve_on_surface); +WHERE + WR1 : SELF\composite_curve.closed_curve; +END_ENTITY; + + +ENTITY bounded_curve + SUPERTYPE OF (ONEOF (polyline, b_spline_curve, trimmed_curve, bounded_pcurve, bounded_surface_curve, composite_curve)) + SUBTYPE OF (curve); +END_ENTITY; + + +ENTITY bounded_pcurve + SUBTYPE OF (pcurve, bounded_curve); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_CURVE' IN + TYPEOF(SELF\pcurve.reference_to_curve.items[1])); +END_ENTITY; + + +ENTITY bounded_surface + SUPERTYPE OF (ONEOF (b_spline_surface, rectangular_trimmed_surface, curve_bounded_surface, rectangular_composite_surface)) + SUBTYPE OF (surface); +END_ENTITY; + + +ENTITY bounded_surface_curve + SUBTYPE OF (surface_curve, bounded_curve); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_CURVE' IN + TYPEOF(SELF\surface_curve.curve_3d)); +END_ENTITY; + + +ENTITY box_domain + SUBTYPE OF (founded_item); + corner : cartesian_point; + xlength : positive_length_measure; + ylength : positive_length_measure; + zlength : positive_length_measure; +WHERE + WR1 : SIZEOF(QUERY(item <* USEDIN(SELF,'')| + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOXED_HALF_SPACE' + IN TYPEOF(item)))) = 0; +END_ENTITY; + + +ENTITY boxed_half_space + SUBTYPE OF (half_space_solid); + enclosure : box_domain; +END_ENTITY; + + +ENTITY breakdown_context + SUBTYPE OF (product_definition_relationship); +END_ENTITY; + + +ENTITY breakdown_element_group_assignment + SUBTYPE OF (group_assignment); + items : SET [1:1] OF product_definition_or_breakdown_element_usage; + SELF\group_assignment.assigned_group : product_definition_element_relationship; +END_ENTITY; + + +ENTITY breakdown_element_realization + SUBTYPE OF (characterized_object, product_definition_element_relationship); +END_ENTITY; + + +ENTITY breakdown_element_usage + SUBTYPE OF (product_definition_relationship); +END_ENTITY; + + +ENTITY breakdown_of + SUBTYPE OF (product_definition_relationship); +END_ENTITY; + + +ENTITY brep_with_voids + SUBTYPE OF (manifold_solid_brep); + voids : SET [1:?] OF oriented_closed_shell; +END_ENTITY; + + +ENTITY bytes_representation_item + SUBTYPE OF (binary_representation_item); +DERIVE + no_of_bytes : INTEGER := BLENGTH(SELF\binary_representation_item.binary_value) DIV 8; +WHERE + WR1 : BLENGTH(SELF\binary_representation_item.binary_value) MOD 8 = 0; +END_ENTITY; + + +ENTITY calendar_date + SUBTYPE OF (date); + day_component : day_in_month_number; + month_component : month_in_year_number; +WHERE + WR1 : valid_calendar_date (SELF); +END_ENTITY; + + +ENTITY camera_image + SUBTYPE OF (mapped_item); + SELF\mapped_item.mapping_source : camera_usage; + SELF\mapped_item.mapping_target : planar_box; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' + IN TYPEOF (SELF); +END_ENTITY; + + +ENTITY camera_image_3d_with_scale + SUBTYPE OF (camera_image); +DERIVE + scale : positive_ratio_measure := ((SELF\mapped_item.mapping_target\ + planar_extent.size_in_x) / (SELF\mapped_item.mapping_source. + mapping_origin\camera_model_d3.perspective_of_volume.view_window. + size_in_x)); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CAMERA_MODEL_D3' + IN TYPEOF (SELF\mapped_item.mapping_source.mapping_origin)); + WR2 : aspect_ratio(SELF\mapped_item.mapping_target) = + aspect_ratio(SELF\mapped_item.mapping_source.mapping_origin\ + camera_model_d3.perspective_of_volume.view_window); + WR3 : SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3. + perspective_of_volume.front_plane_clipping + AND + SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3. + perspective_of_volume.view_volume_sides_clipping; + WR4 : (SELF\mapped_item.mapping_target\planar_extent.size_in_x > 0) + AND + (SELF\mapped_item.mapping_target\planar_extent.size_in_y > 0); + WR5 : (SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3. + perspective_of_volume.view_window.size_in_x > 0) + AND + (SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3. + perspective_of_volume.view_window.size_in_y > 0); + WR6 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_2D' IN TYPEOF (SELF\mapped_item. + mapping_target\planar_box.placement)) + AND NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_3D' IN TYPEOF (SELF\mapped_item. + mapping_target\planar_box.placement)); +END_ENTITY; + + +ENTITY camera_model + ABSTRACT SUPERTYPE + SUBTYPE OF (geometric_representation_item); +WHERE + WR1 : (SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'ITEM_DEFINED_TRANSFORMATION.' + + 'TRANSFORM_ITEM_1')) + + SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'REPRESENTATION_MAP.MAPPING_ORIGIN')) + ) > 0; + WR2 : SIZEOF(USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'STYLED_ITEM.ITEM')) = 0; +END_ENTITY; + + +ENTITY camera_model_d3 + SUBTYPE OF (camera_model); + view_reference_system : axis2_placement_3d; + perspective_of_volume : view_volume; +WHERE + WR1 : (dot_product (SELF.view_reference_system.p[3], + SELF.perspective_of_volume.view_window.placement.p[3]) = 1.0) + AND + (SELF.view_reference_system.location.coordinates[3] = + SELF.perspective_of_volume.view_window. + placement.location.coordinates[3]); + WR2 : SELF\geometric_representation_item.dim = 3; +END_ENTITY; + + +ENTITY camera_model_d3_multi_clipping + SUBTYPE OF (camera_model_d3); + shape_clipping : SET [1:?] OF camera_model_d3_multi_clipping_interection_select; +END_ENTITY; + + +ENTITY camera_model_d3_multi_clipping_intersection + SUBTYPE OF (geometric_representation_item); + shape_clipping : SET [2:?] OF camera_model_d3_multi_clipping_interection_select; +END_ENTITY; + + +ENTITY camera_model_d3_multi_clipping_union + SUBTYPE OF (geometric_representation_item); + shape_clipping : SET [2:?] OF camera_model_d3_multi_clipping_union_select; +END_ENTITY; + + +ENTITY camera_model_d3_with_hlhsr + SUBTYPE OF (camera_model_d3); + hidden_line_surface_removal : BOOLEAN; +END_ENTITY; + + +ENTITY camera_model_with_light_sources + SUBTYPE OF (camera_model_d3); + sources : SET [1:?] OF light_source; +END_ENTITY; + + +ENTITY camera_usage + SUBTYPE OF (representation_map); + SELF\representation_map.mapping_origin : camera_model; +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_REPRESENTATION' + IN TYPEOF(SELF\representation_map.mapped_representation)); +END_ENTITY; + + +ENTITY capacitance_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CAPACITANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY capacitance_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.farad); +END_ENTITY; + + +ENTITY cartesian_point + SUBTYPE OF (point); + coordinates : LIST [1:3] OF length_measure; +END_ENTITY; + + +ENTITY cartesian_transformation_operator + SUPERTYPE OF (ONEOF (cartesian_transformation_operator_2d, cartesian_transformation_operator_3d)) + SUBTYPE OF (geometric_representation_item, functionally_defined_transformation); + axis1 : OPTIONAL direction; + axis2 : OPTIONAL direction; + local_origin : cartesian_point; + scale : OPTIONAL REAL; +DERIVE + scl : REAL := NVL(scale, 1.0); +WHERE + WR1 : scl > 0.0; +END_ENTITY; + + +ENTITY cartesian_transformation_operator_2d + SUBTYPE OF (cartesian_transformation_operator); +DERIVE + u : LIST [2:2] OF direction := base_axis(2,SELF\cartesian_transformation_operator.axis1, + SELF\cartesian_transformation_operator.axis2,?); +WHERE + WR1 : SELF\geometric_representation_item.dim = 2; +END_ENTITY; + + +ENTITY cartesian_transformation_operator_3d + SUBTYPE OF (cartesian_transformation_operator); + axis3 : OPTIONAL direction; +DERIVE + u : LIST [3:3] OF direction := base_axis(3,SELF\cartesian_transformation_operator.axis1, + SELF\cartesian_transformation_operator.axis2,axis3); +WHERE + WR1 : SELF\geometric_representation_item.dim = 3; +END_ENTITY; + + +ENTITY cc_design_approval + SUBTYPE OF (approval_assignment); + items : SET [1:?] OF approved_item; +END_ENTITY; + + +ENTITY cc_design_certification + SUBTYPE OF (certification_assignment); + items : SET [1:?] OF certified_item; +END_ENTITY; + + +ENTITY cc_design_contract + SUBTYPE OF (contract_assignment); + items : SET [1:?] OF contracted_item; +END_ENTITY; + + +ENTITY cc_design_date_and_time_assignment + SUBTYPE OF (date_and_time_assignment); + items : SET [1:?] OF date_time_item; +END_ENTITY; + + +ENTITY cc_design_person_and_organization_assignment + SUBTYPE OF (person_and_organization_assignment); + items : SET [1:?] OF cc_person_organization_item; +WHERE + WR1 : cc_design_person_and_organization_correlation(SELF); +END_ENTITY; + + +ENTITY cc_design_security_classification + SUBTYPE OF (security_classification_assignment); + items : SET [1:?] OF cc_classified_item; +END_ENTITY; + + +ENTITY cc_design_specification_reference + SUBTYPE OF (document_reference); + items : SET [1:?] OF cc_specified_item; +END_ENTITY; + + +ENTITY celsius_temperature_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.THERMODYNAMIC_TEMPERATURE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY centre_of_symmetry + SUBTYPE OF (derived_shape_aspect); +WHERE + WR1 : SIZEOF + (QUERY(sadr<*SELF\derived_shape_aspect.deriving_relationships| + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SYMMETRIC_SHAPE_ASPECT' + IN TYPEOF + (sadr\shape_aspect_relationship.related_shape_aspect))))=0; +END_ENTITY; + + +ENTITY certification; + name : label; + purpose : text; + kind : certification_type; +END_ENTITY; + + +ENTITY certification_assignment + ABSTRACT SUPERTYPE; + assigned_certification : certification; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY certification_type; + description : label; +END_ENTITY; + + +ENTITY change + SUBTYPE OF (action_assignment); + items : SET [1:?] OF work_item; +END_ENTITY; + + +ENTITY change_request + SUBTYPE OF (action_request_assignment); + items : SET [1:?] OF change_request_item; +END_ENTITY; + + +ENTITY character_glyph_font_usage; + character : generic_character_glyph_symbol; + font : text_font; +END_ENTITY; + + +ENTITY character_glyph_style_outline + SUBTYPE OF (founded_item); + outline_style : curve_style; +END_ENTITY; + + +ENTITY character_glyph_style_stroke + SUBTYPE OF (founded_item); + stroke_style : curve_style; +END_ENTITY; + + +ENTITY character_glyph_symbol + SUBTYPE OF (generic_character_glyph_symbol); + character_box : planar_extent; + baseline_ratio : ratio_measure; +DERIVE + box_height : length_measure := character_box.size_in_y; +WHERE + WR1 : {0.0 <= baseline_ratio <= 1.0}; + WR2 : item_in_context(SELF.character_box, + SELF\representation.context_of_items); + WR3 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' + IN TYPEOF (SELF.box_height); +END_ENTITY; + + +ENTITY character_glyph_symbol_outline + SUBTYPE OF (character_glyph_symbol); + outlines : SET [1:?] OF annotation_fill_area; +WHERE + WR1 : SELF.outlines <= SELF\representation.items; +END_ENTITY; + + +ENTITY character_glyph_symbol_stroke + SUBTYPE OF (character_glyph_symbol); + strokes : SET [1:?] OF curve; +WHERE + WR1 : SELF.strokes <= SELF\representation.items; +END_ENTITY; + + +ENTITY characteristic_data_column_header + SUBTYPE OF (general_property); +END_ENTITY; + + +ENTITY characteristic_data_column_header_link + SUBTYPE OF (general_property_relationship); +END_ENTITY; + + +ENTITY characteristic_data_table_header + SUBTYPE OF (general_property); +END_ENTITY; + + +ENTITY characteristic_data_table_header_decomposition + SUBTYPE OF (general_property_relationship); +END_ENTITY; + + +ENTITY characteristic_type + SUBTYPE OF (group); +END_ENTITY; + + +ENTITY characterized_class + SUBTYPE OF (characterized_object, class); +END_ENTITY; + + +ENTITY characterized_object; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY circle + SUBTYPE OF (conic); + radius : positive_length_measure; +END_ENTITY; + + +ENTITY circular_runout_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 2; +END_ENTITY; + + +ENTITY class + SUBTYPE OF (group); +END_ENTITY; + + +ENTITY class_by_extension + SUBTYPE OF (class); +END_ENTITY; + + +ENTITY class_by_intension + SUBTYPE OF (class); +END_ENTITY; + + +ENTITY class_system + SUBTYPE OF (group); +END_ENTITY; + + +ENTITY class_usage_effectivity_context_assignment + SUBTYPE OF (effectivity_context_assignment); + items : SET [1:?] OF class_usage_effectivity_context_item; +WHERE + WR1 : SELF.role.name = 'class usage influence'; + WR2 : SIZEOF( QUERY( i <* SELF.items | NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(i)) )) = 0; + WR3 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.APPLIED_EFFECTIVITY_ASSIGNMENT' IN TYPEOF(SELF.assigned_effectivity_assignment)) AND + (SIZEOF(TYPEOF(SELF.assigned_effectivity_assignment.assigned_effectivity) ) = 1) AND + (SELF.assigned_effectivity_assignment.assigned_effectivity.id = 'class usage') AND + (SIZEOF( QUERY( i <* SELF.assigned_effectivity_assignment\applied_effectivity_assignment.items | + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY_USAGE' IN TYPEOF(i)) )) = 0); +END_ENTITY; + + +ENTITY classification_assignment + ABSTRACT SUPERTYPE; + assigned_class : group; + role : classification_role; +END_ENTITY; + + +ENTITY classification_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY closed_shell + SUBTYPE OF (connected_face_set); +END_ENTITY; + + +ENTITY coaxiality_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 2; +END_ENTITY; + + +ENTITY colour; +END_ENTITY; + + +ENTITY colour_rgb + SUBTYPE OF (colour_specification); + red : REAL; + green : REAL; + blue : REAL; +WHERE + WR1 : {0.0 <= red <= 1.0}; + WR2 : {0.0 <= green <= 1.0}; + WR3 : {0.0 <= blue <= 1.0}; +END_ENTITY; + + +ENTITY colour_specification + SUBTYPE OF (colour); + name : label; +END_ENTITY; + + +ENTITY common_datum + SUBTYPE OF (composite_shape_aspect, datum); +WHERE + WR1 : SIZEOF (SELF\composite_shape_aspect.component_relationships) = 2; + WR2 : SIZEOF (QUERY ( sar <* SELF\composite_shape_aspect.component_relationships| + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DATUM' IN TYPEOF (sar.related_shape_aspect)) AND + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMMON_DATUM' IN TYPEOF (sar.related_shape_aspect))) )) = 0; +END_ENTITY; + + +ENTITY comparison_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (boolean_expression, binary_generic_expression); + SELF\binary_generic_expression.operands : LIST [2:2] OF expression; +WHERE + WR1 : (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NUMERIC_EXPRESSION' +IN TYPEOF(SELF\binary_generic_expression.operands[1])) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NUMERIC_EXPRESSION' +IN TYPEOF(SELF\binary_generic_expression.operands[2]))) +OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOOLEAN_EXPRESSION' +IN TYPEOF(SELF\binary_generic_expression.operands[1])) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOOLEAN_EXPRESSION' + IN TYPEOF(SELF\binary_generic_expression.operands[2]))) +OR +(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_EXPRESSION' +IN TYPEOF(SELF\binary_generic_expression.operands[1])) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_EXPRESSION' +IN TYPEOF(SELF\binary_generic_expression.operands[2]))); +END_ENTITY; + + +ENTITY complex_clause + SUBTYPE OF (compound_representation_item); +END_ENTITY; + + +ENTITY complex_conjunctive_clause + SUBTYPE OF (complex_clause); +END_ENTITY; + + +ENTITY complex_disjunctive_clause + SUBTYPE OF (complex_clause); +END_ENTITY; + + +ENTITY complex_shelled_solid + SUBTYPE OF (shelled_solid); + thickened_face_list : LIST [1:?] OF SET [1:?] OF face_surface; + thickness_list : LIST [1:?] OF length_measure; +WHERE + WR1 : SIZEOF(thickened_face_list) = SIZEOF(thickness_list); + WR2 : SIZEOF(QUERY(q <* thickness_list | (q = 0))) = 0; +END_ENTITY; + + +ENTITY composite_assembly_definition + SUBTYPE OF (product_definition); +WHERE + WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.' + + 'RELATING_PRODUCT_DEFINITION') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN + TYPEOF (pdr))) = 1; +END_ENTITY; + + +ENTITY composite_assembly_sequence_definition + SUBTYPE OF (product_definition); +WHERE + WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.' + + 'RELATING_PRODUCT_DEFINITION') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN + TYPEOF (pdr))) > 0; +END_ENTITY; + + +ENTITY composite_assembly_table + SUBTYPE OF (part_laminate_table); +END_ENTITY; + + +ENTITY composite_curve + SUBTYPE OF (bounded_curve); + segments : LIST [1:?] OF composite_curve_segment; + self_intersect : LOGICAL; +DERIVE + closed_curve : LOGICAL := segments[n_segments].transition <> discontinuous; + n_segments : INTEGER := SIZEOF(segments); +WHERE + WR1 : ((NOT closed_curve) AND (SIZEOF(QUERY(temp <* segments | + temp.transition = discontinuous)) = 1)) OR + ((closed_curve) AND (SIZEOF(QUERY(temp <* segments | + temp.transition = discontinuous)) = 0)); +END_ENTITY; + + +ENTITY composite_curve_on_surface + SUPERTYPE OF (boundary_curve) + SUBTYPE OF (composite_curve); +DERIVE + basis_surface : SET [0:2] OF surface := get_basis_surface(SELF); +WHERE + WR1 : SIZEOF(basis_surface) > 0; + WR2 : constraints_composite_curve_on_surface(SELF); +END_ENTITY; + + +ENTITY composite_curve_segment + SUBTYPE OF (founded_item); + transition : transition_code; + same_sense : BOOLEAN; + parent_curve : curve; +INVERSE + using_curves: BAG [1:?] OF composite_curve FOR segments; +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_CURVE' IN TYPEOF(parent_curve)); +END_ENTITY; + + +ENTITY composite_material_designation + SUBTYPE OF (material_designation); +END_ENTITY; + + +ENTITY composite_shape_aspect + SUBTYPE OF (shape_aspect); +INVERSE + component_relationships: SET [2:?] OF shape_aspect_relationship FOR relating_shape_aspect; +END_ENTITY; + + +ENTITY composite_sheet_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'MANIFOLD_SURFACE_SHAPE_REPRESENTATION'] * TYPEOF (SELF)) = 1; +END_ENTITY; + + +ENTITY composite_text + SUBTYPE OF (geometric_representation_item); + collected_text : SET [2:?] OF text_or_character; +WHERE + WR1 : acyclic_composite_text( SELF, SELF.collected_text); +END_ENTITY; + + +ENTITY composite_text_with_associated_curves + SUBTYPE OF (composite_text); + associated_curves : SET [1:?] OF curve; +END_ENTITY; + + +ENTITY composite_text_with_blanking_box + SUBTYPE OF (composite_text); + blanking : planar_box; +END_ENTITY; + + +ENTITY composite_text_with_delineation + SUBTYPE OF (composite_text); + delineation : text_delineation; +END_ENTITY; + + +ENTITY composite_text_with_extent + SUBTYPE OF (composite_text); + extent : planar_extent; +END_ENTITY; + + +ENTITY compound_representation_item + SUPERTYPE OF (ONEOF (point_and_vector, point_path, row_representation_item, table_representation_item)) + SUBTYPE OF (representation_item); + item_element : compound_item_definition; +END_ENTITY; + + +ENTITY compound_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'GEOMETRIC_REPRESENTATION_CONTEXT' + IN TYPEOF ( SELF.context_of_items ) ) AND ( + SELF.context_of_items\ + geometric_representation_context.coordinate_space_dimension =3 ); + WR2 : SIZEOF ( QUERY ( cbsr_i <* SELF.items | SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'EDGE_BASED_WIREFRAME_MODEL' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'FACE_BASED_SURFACE_MODEL' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MAPPED_ITEM' , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'AXIS2_PLACEMENT_3D']* TYPEOF ( cbsr_i ) ) <>1 ) ) =0; + WR3 : SIZEOF ( QUERY ( cbsr_i <* SELF.items | SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'EDGE_BASED_WIREFRAME_MODEL' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'FACE_BASED_SURFACE_MODEL' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MAPPED_ITEM']* TYPEOF ( cbsr_i ) ) =1 ) ) >0; + WR4 : SIZEOF ( QUERY ( cbsr_i <* SELF.items | ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MAPPED_ITEM' IN TYPEOF ( cbsr_i ) ) + AND ( SIZEOF ( ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'COMPOUND_SHAPE_REPRESENTATION' , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION']* TYPEOF ( + cbsr_i\ mapped_item.mapping_source ) ) <>1 ) ) ) =0; +END_ENTITY; + + +ENTITY concentricity_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) = 1; +END_ENTITY; + + +ENTITY concept_feature_operator; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY concept_feature_relationship; + name : label; + description : OPTIONAL text; + relating_product_concept_feature : product_concept_feature; + related_product_concept_feature : product_concept_feature; +END_ENTITY; + + +ENTITY concept_feature_relationship_with_condition + SUBTYPE OF (concept_feature_relationship); + conditional_operator : concept_feature_operator; +END_ENTITY; + + +ENTITY conditional_concept_feature + SUBTYPE OF (product_concept_feature); + condition : concept_feature_relationship_with_condition; +END_ENTITY; + + +ENTITY conductance_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONDUCTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY conductance_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.siemens); +END_ENTITY; + + +ENTITY configurable_item + SUBTYPE OF (configuration_item); + item_concept_feature : SET [1:?] OF product_concept_feature_association; +END_ENTITY; + + +ENTITY configuration_design; + configuration : configuration_item; + design : configuration_design_item; +DERIVE + description : text := get_description_value (SELF); + name : label := get_name_value (SELF); +UNIQUE + UR1 : configuration, design; +WHERE + WR1 : SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; + WR2 : SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY configuration_effectivity + SUBTYPE OF (product_definition_effectivity); + configuration : configuration_design; +UNIQUE + UR1: configuration, SELF\product_definition_effectivity.usage, SELF\effectivity.id; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_USAGE' IN + TYPEOF (SELF\product_definition_effectivity.usage); +END_ENTITY; + + +ENTITY configuration_item; + id : identifier; + name : label; + description : OPTIONAL text; + item_concept : product_concept; + purpose : OPTIONAL label; +END_ENTITY; + + +ENTITY configuration_item_hierarchical_relationship + SUBTYPE OF (configuration_item_relationship); +END_ENTITY; + + +ENTITY configuration_item_relationship; + name : label; + description : OPTIONAL text; + relating_configuration_item : configuration_item; + related_configuration_item : configuration_item; +END_ENTITY; + + +ENTITY configuration_item_revision_sequence + SUBTYPE OF (configuration_item_relationship); +END_ENTITY; + + +ENTITY configured_effectivity_assignment + SUBTYPE OF (effectivity_assignment); + items : SET [1:?] OF configured_effectivity_item; +WHERE + WR1 : (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EFFECTIVITY'] * TYPEOF(SELF.assigned_effectivity) ) = 1) + AND (SELF.assigned_effectivity.id = 'configuration validity'); + WR2 : SIZEOF(SELF.items) = 1; + WR3 : SIZEOF( QUERY( i <* SELF.items | NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(i)) + OR NOT (i\product_definition.frame_of_reference.name IN ['conceptual definition','part occurrence', 'functional definition','alternative definition']) )) = 0; + WR4 : SELF.role.name IN ['design', 'usage']; + WR5 : (SELF.role.name <> 'design') + OR (SIZEOF( QUERY( i <* SELF.items | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(i)) AND (i\product_definition.frame_of_reference.name = 'part occurrence') )) = 0); + WR6 : (SELF.role.name <> 'usage') OR (SIZEOF( QUERY( i <* SELF.items | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(i)) AND (i\product_definition.frame_of_reference.name = 'conceptual definition') )) = 0); + WR7 : SELF.role.description IN ['exception', 'inherited', 'local']; + WR8 : SIZEOF( QUERY( x <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'EFFECTIVITY_CONTEXT_ASSIGNMENT.ASSIGNED_EFFECTIVITY_ASSIGNMENT') | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONFIGURED_EFFECTIVITY_CONTEXT_ASSIGNMENT' IN TYPEOF(x) )) = 1; +END_ENTITY; + + +ENTITY configured_effectivity_context_assignment + SUBTYPE OF (effectivity_context_assignment); + items : SET [1:?] OF configured_effectivity_context_item; + SELF\effectivity_context_assignment.assigned_effectivity_assignment : configured_effectivity_assignment; +WHERE + WR1 : SIZEOF(SELF.items) = 1; +END_ENTITY; + + +ENTITY conic + SUPERTYPE OF (ONEOF (circle, ellipse, hyperbola, parabola)) + SUBTYPE OF (curve); + position : axis2_placement; +END_ENTITY; + + +ENTITY conical_stepped_hole_transition + SUBTYPE OF (geometric_representation_item); + transition_number : positive_integer; + cone_apex_angle : plane_angle_measure; + cone_base_radius : positive_length_measure; +END_ENTITY; + + +ENTITY conical_surface + SUBTYPE OF (elementary_surface); + radius : length_measure; + semi_angle : plane_angle_measure; +WHERE + WR1 : radius >= 0.0; +END_ENTITY; + + +ENTITY connected_edge_set + SUBTYPE OF (topological_representation_item); + ces_edges : SET [1:?] OF edge; +END_ENTITY; + + +ENTITY connected_face_set + SUPERTYPE OF (ONEOF (closed_shell, open_shell)) + SUBTYPE OF (topological_representation_item); + cfs_faces : SET [1:?] OF face; +END_ENTITY; + + +ENTITY connected_face_sub_set + SUBTYPE OF (connected_face_set); + parent_face_set : connected_face_set; +END_ENTITY; + + +ENTITY constructive_geometry_representation + SUBTYPE OF (representation); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(SELF.context_of_items)) AND ({2 <= SELF.context_of_items\geometric_representation_context. coordinate_space_dimension <= 3}); + WR2 : SIZEOF( QUERY( cgr_i <* SELF.items | SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLACEMENT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT'] * TYPEOF(cgr_i)) <> 1 )) = 0; + WR3 : SIZEOF( USEDIN( SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.REP_2') ) > 0; + WR4 : SIZEOF( USEDIN( SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION_MAP.MAPPED_REPRESENTATION') ) = 0; +END_ENTITY; + + +ENTITY constructive_geometry_representation_relationship + SUBTYPE OF (representation_relationship); + SELF\representation_relationship.rep_1 : constructive_geometry_representation_or_shape_represenation; + SELF\representation_relationship.rep_2 : constructive_geometry_representation; +WHERE + WR1 : (SELF.rep_1.context_of_items :=: SELF.rep_2.context_of_items) AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(SELF.rep_1.context_of_items)); + WR2 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION' IN TYPEOF(SELF)); +END_ENTITY; + + +ENTITY contact_ratio_representation + SUBTYPE OF (representation); +WHERE + WR1 : ( SIZEOF ( SELF.items ) =1 ) AND ( SIZEOF ( QUERY ( i <* + SELF.items | ( SIZEOF ( ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'MEASURE_REPRESENTATION_ITEM' , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'VALUE_RANGE']* TYPEOF ( i ) ) =1 ) AND ( i.name = + 'ratio value' ) ) ) =1 ); + WR2 : ( SIZEOF ( QUERY ( pdr <* USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) | pdr. name = + 'contact ratio reference' ) ) =1 ) AND ( SIZEOF ( QUERY ( + pdr <* USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) | ( pdr. name = + 'contact ratio reference' ) AND ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'PRODUCT_DEFINITION' IN TYPEOF ( pdr. + definition.definition ) ) ) ) =1 ); + WR3 : ( SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) ) =1 ) AND ( SIZEOF ( QUERY ( pdr + <* USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) | SIZEOF ( QUERY ( gpa <* USEDIN ( + pdr. definition , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'GENERAL_PROPERTY_ASSOCIATION.'+ + 'DERIVED_DEFINITION' ) | ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'GENERAL_PROPERTY' IN TYPEOF ( gpa. base_definition ) ) AND + ( gpa. base_definition.name ='surface_condition' ) ) ) =1 ) + ) =1 ); +END_ENTITY; + + +ENTITY context_dependent_invisibility + SUBTYPE OF (invisibility); + presentation_context : invisibility_context; +END_ENTITY; + + +ENTITY context_dependent_over_riding_styled_item + SUBTYPE OF (over_riding_styled_item); + style_context : LIST [1:?] OF style_context_select; +WHERE + WR1 : (SIZEOF(QUERY(sc <* SELF.style_context | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(sc)))= 1) OR +(SIZEOF(QUERY(sc <* SELF.style_context | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF(sc)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION_RELATIONSHIP' IN TYPEOF(sc)) )) + = SIZEOF(style_context)); +END_ENTITY; + + +ENTITY context_dependent_shape_representation; + representation_relation : shape_representation_relationship; + represented_product_relation : product_definition_shape; +DERIVE + description : text := get_description_value(SELF); + name : label := get_name_value(SELF); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP' IN TYPEOF(SELF.represented_product_relation.definition); + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; + WR3 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY context_dependent_unit + SUBTYPE OF (named_unit); + name : label; +END_ENTITY; + + +ENTITY contract; + name : label; + purpose : text; + kind : contract_type; +END_ENTITY; + + +ENTITY contract_assignment + ABSTRACT SUPERTYPE; + assigned_contract : contract; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY contract_relationship; + id : identifier; + name : label; + description : OPTIONAL text; + relating_contract : contract; + related_contract : contract; +END_ENTITY; + + +ENTITY contract_type; + description : label; +END_ENTITY; + + +ENTITY conversion_based_unit + SUBTYPE OF (named_unit); + name : label; + conversion_factor : measure_with_unit; +WHERE + WR1 : SELF\named_unit.dimensions = derive_dimensional_exponents(conversion_factor\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY coordinated_universal_time_offset; + hour_offset : INTEGER; + minute_offset : OPTIONAL INTEGER; + sense : ahead_or_behind; +DERIVE + actual_minute_offset : INTEGER := NVL(minute_offset,0); +WHERE + WR1 : { 0 <= hour_offset < 24 }; + WR2 : { 0 <= actual_minute_offset <= 59 }; + WR3 : NOT (((hour_offset <> 0) OR (actual_minute_offset <>0)) AND (sense = exact)); +END_ENTITY; + + +ENTITY csg_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3; + WR2 : SIZEOF ( +QUERY ( it <* SELF.items| ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CSG_SOLID', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_REPLICA', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REVOLVED_FACE_SOLID', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EXTRUDED_FACE_SOLID' ] * TYPEOF (it)) <> 1) )) = 0; + WR3 : SIZEOF ( +QUERY ( mi <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CSG_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0; + WR4 : SIZEOF ( +QUERY ( sr <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_REPLICA' IN TYPEOF (it)) )| ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CSG_SOLID', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REVOLVED_FACE_SOLID', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EXTRUDED_FACE_SOLID' ] * TYPEOF (sr\solid_replica.parent_solid)) = 0) )) = 0; + WR5 : SIZEOF ( +QUERY ( it <* SELF.items| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF (it)) )) > 0; +END_ENTITY; + + +ENTITY csg_solid + SUBTYPE OF (solid_model); + tree_root_expression : csg_select; +END_ENTITY; + + +ENTITY currency + ABSTRACT SUPERTYPE OF (ONEOF (externally_defined_currency, iso4217_currency)) + SUBTYPE OF (context_dependent_unit); +WHERE + WR1 : ((SELF\named_unit.dimensions.length_exponent = 0.0) AND + (SELF\named_unit.dimensions.mass_exponent = 0.0) AND + (SELF\named_unit.dimensions.time_exponent = 0.0) AND + (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND + (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND + (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND + (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0)); +END_ENTITY; + + +ENTITY currency_measure_with_unit + SUBTYPE OF (measure_with_unit); + SELF\measure_with_unit.unit_component : currency; +END_ENTITY; + + +ENTITY curve + SUPERTYPE OF (ONEOF (line, conic, pcurve, surface_curve, offset_curve_2d, offset_curve_3d, curve_replica)) + SUBTYPE OF (geometric_representation_item); +END_ENTITY; + + +ENTITY curve_bounded_surface + SUBTYPE OF (bounded_surface); + basis_surface : surface; + boundaries : SET [1:?] OF boundary_curve; + implicit_outer : BOOLEAN; +WHERE + WR1 : (NOT implicit_outer) OR + (SIZEOF (QUERY (temp <* boundaries | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OUTER_BOUNDARY_CURVE' IN TYPEOF(temp))) = 0); + WR2 : (NOT(implicit_outer)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_SURFACE' IN TYPEOF(basis_surface)); + WR3 : SIZEOF(QUERY(temp <* boundaries | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OUTER_BOUNDARY_CURVE' IN + TYPEOF(temp))) <= 1; + WR4 : SIZEOF(QUERY(temp <* boundaries | + (temp\composite_curve_on_surface.basis_surface [1] <> + SELF.basis_surface))) = 0; +END_ENTITY; + + +ENTITY curve_dimension + SUBTYPE OF (dimension_curve_directed_callout); +END_ENTITY; + + +ENTITY curve_replica + SUBTYPE OF (curve); + parent_curve : curve; + transformation : cartesian_transformation_operator; +WHERE + WR1 : transformation.dim = parent_curve.dim; + WR2 : acyclic_curve_replica (SELF, parent_curve); +END_ENTITY; + + +ENTITY curve_style + SUBTYPE OF (founded_item); + name : label; + curve_font : curve_font_or_scaled_curve_font_select; + curve_width : size_select; + curve_colour : colour; +END_ENTITY; + + +ENTITY curve_style_font + SUBTYPE OF (founded_item); + name : label; + pattern_list : LIST [1:?] OF curve_style_font_pattern; +END_ENTITY; + + +ENTITY curve_style_font_and_scaling + SUBTYPE OF (founded_item); + name : label; + curve_font : curve_style_font_select; + curve_font_scaling : REAL; +END_ENTITY; + + +ENTITY curve_style_font_pattern + SUBTYPE OF (founded_item); + visible_segment_length : positive_length_measure; + invisible_segment_length : positive_length_measure; +END_ENTITY; + + +ENTITY curve_style_rendering; + rendering_method : shading_curve_method; + rendering_properties : surface_rendering_properties; +END_ENTITY; + + +ENTITY curve_swept_solid_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF (QUERY (it <* SELF.items | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_AREA_SOLID', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_DISK_SOLID', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D'] * + TYPEOF(it)) = 1))) = 0; + WR2 : SIZEOF (QUERY (it <* SELF.items | + SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_AREA_SOLID', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_DISK_SOLID', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM'] * TYPEOF(it)) =1 )) > 0; + WR3 : SIZEOF (QUERY (mi <* QUERY (it <* items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_SWEPT_SOLID_SHAPE_REPRESENTATION' IN + TYPEOF(mi\mapped_item.mapping_source. + mapped_representation)))) = 0; + WR4 : SIZEOF (QUERY (scsas <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE_SWEPT_AREA_SOLID' IN + TYPEOF(it)) | + NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN + TYPEOF(scsas\surface_curve_swept_area_solid.directrix)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN + TYPEOF(scsas\surface_curve_swept_area_solid.directrix))))) = 0; +END_ENTITY; + + +ENTITY cylindrical_surface + SUBTYPE OF (elementary_surface); + radius : positive_length_measure; +END_ENTITY; + + +ENTITY cylindricity_tolerance + SUBTYPE OF (geometric_tolerance); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)); +END_ENTITY; + + +ENTITY data_environment; + name : label; + description : text; + elements : SET [1:?] OF property_definition_representation; +END_ENTITY; + + +ENTITY date + SUPERTYPE OF (ONEOF (calendar_date, ordinal_date, week_of_year_and_day_date, year_month)); + year_component : year_number; +END_ENTITY; + + +ENTITY date_and_time; + date_component : date; + time_component : local_time; +END_ENTITY; + + +ENTITY date_and_time_assignment + ABSTRACT SUPERTYPE; + assigned_date_and_time : date_and_time; + role : date_time_role; +END_ENTITY; + + +ENTITY date_assignment + ABSTRACT SUPERTYPE; + assigned_date : date; + role : date_role; +END_ENTITY; + + +ENTITY date_representation_item + SUBTYPE OF (representation_item, date); +END_ENTITY; + + +ENTITY date_role; + name : label; +DERIVE + description : text := get_description_value (SELF); +WHERE + WR1 : SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY date_time_representation_item + SUBTYPE OF (representation_item, date_and_time); +END_ENTITY; + + +ENTITY date_time_role; + name : label; +DERIVE + description : text := get_description_value (SELF); +WHERE + WR1 : SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY dated_effectivity + SUBTYPE OF (effectivity); + effectivity_end_date : OPTIONAL date_time_or_event_occurrence; + effectivity_start_date : date_time_or_event_occurrence; +END_ENTITY; + + +ENTITY datum + SUBTYPE OF (shape_aspect); + identification : identifier; +INVERSE + established_by_relationships: SET [1:?] OF shape_aspect_relationship FOR related_shape_aspect; +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMMON_DATUM' IN TYPEOF(SELF)) XOR + ((SIZEOF(QUERY(x <* SELF\datum.established_by_relationships | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DATUM_FEATURE' IN TYPEOF(x\shape_aspect_relationship.relating_shape_aspect)))) = 1) XOR + (SIZEOF(QUERY(x <* SELF\datum.established_by_relationships | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DATUM_TARGET' IN TYPEOF(x\shape_aspect_relationship.relating_shape_aspect)))) >= 1)); +END_ENTITY; + + +ENTITY datum_feature + SUBTYPE OF (shape_aspect); +INVERSE + feature_basis_relationship: SET [1:?] OF shape_aspect_relationship FOR relating_shape_aspect; +WHERE + WR1 : SIZEOF(QUERY(sar <* SELF\datum_feature.feature_basis_relationship + | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DATUM' IN TYPEOF + (sar\shape_aspect_relationship.related_shape_aspect)))) = 1; + WR2 : SELF\shape_aspect.product_definitional = TRUE; +END_ENTITY; + + +ENTITY datum_feature_callout + SUBTYPE OF (draughting_callout); +END_ENTITY; + + +ENTITY datum_reference; + precedence : INTEGER; + referenced_datum : datum; +WHERE + WR1 : precedence > 0; +END_ENTITY; + + +ENTITY datum_target + SUBTYPE OF (shape_aspect); + target_id : identifier; +INVERSE + target_basis_relationship: SET [1:?] OF shape_aspect_relationship FOR relating_shape_aspect; +WHERE + WR1 : SIZEOF(QUERY(sar <* SELF\datum_target.target_basis_relationship + | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DATUM' IN TYPEOF + (sar\shape_aspect_relationship.related_shape_aspect)))) = 1; + WR2 : SELF\shape_aspect.product_definitional = TRUE; +END_ENTITY; + + +ENTITY datum_target_callout + SUBTYPE OF (draughting_callout); +END_ENTITY; + + +ENTITY default_tolerance_table + SUBTYPE OF (representation); +WHERE + WR1 : SIZEOF( QUERY( i <* SELF.items | NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEFAULT_TOLERANCE_TABLE_CELL' IN TYPEOF(i)) )) = 0; + WR2 : (SIZEOF( QUERY( rr <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.REP_1') | rr.name < 'general tolerance definition' )) = 0) AND (SIZEOF( QUERY( rr <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.REP_1') | (rr.name = 'general tolerance definition') AND (rr.rep_2.name < 'default tolerance') )) = 0) AND (SIZEOF( USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.REP_2') ) = 0); +END_ENTITY; + + +ENTITY default_tolerance_table_cell + SUBTYPE OF (compound_representation_item); +WHERE + WR1 : SIZEOF(QUERY( x <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION.ITEMS') | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DEFAULT_TOLERANCE_TABLE' IN TYPEOF(x)))=1; + WR2 : default_tolerance_table_cell_wr2(SELF\compound_representation_item.item_element); + WR3 : default_tolerance_table_cell_wr3(SELF\compound_representation_item.item_element); + WR4 : default_tolerance_table_cell_wr4(SELF\compound_representation_item.item_element); + WR5 : default_tolerance_table_cell_wr5(SELF\compound_representation_item.item_element); +END_ENTITY; + + +ENTITY defined_symbol + SUBTYPE OF (geometric_representation_item); + definition : defined_symbol_select; + target : symbol_target; +END_ENTITY; + + +ENTITY definitional_representation + SUBTYPE OF (representation); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PARAMETRIC_REPRESENTATION_CONTEXT' IN + TYPEOF (SELF\representation.context_of_items ); +END_ENTITY; + + +ENTITY definitional_representation_relationship + SUBTYPE OF (representation_relationship); +WHERE + WR1 : acyclic_representation_relationship(SELF, + [SELF\representation_relationship.rep_2], + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'REPRESENTATION'); +END_ENTITY; + + +ENTITY definitional_representation_relationship_with_same_context + SUBTYPE OF (definitional_representation_relationship); +WHERE + WR1 : SELF\representation_relationship.rep_1.context_of_items :=: + SELF\representation_relationship.rep_2.context_of_items; +END_ENTITY; + + +ENTITY degenerate_pcurve + SUBTYPE OF (point); + basis_surface : surface; + reference_to_curve : definitional_representation; +WHERE + WR1 : SIZEOF(reference_to_curve\representation.items) = 1; + WR2 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE' IN TYPEOF + (reference_to_curve\representation.items[1]); + WR3 : reference_to_curve\representation. + items[1]\geometric_representation_item.dim =2; +END_ENTITY; + + +ENTITY degenerate_toroidal_surface + SUBTYPE OF (toroidal_surface); + select_outer : BOOLEAN; +WHERE + WR1 : major_radius < minor_radius; +END_ENTITY; + + +ENTITY derived_shape_aspect + SUPERTYPE OF (ONEOF (apex, centre_of_symmetry, geometric_alignment, geometric_intersection, parallel_offset, perpendicular_to, extension, tangent)) + SUBTYPE OF (shape_aspect); +INVERSE + deriving_relationships: SET [1:?] OF shape_aspect_relationship FOR relating_shape_aspect; +WHERE + WR1 : SIZEOF (QUERY (dr <* + SELF\derived_shape_aspect.deriving_relationships | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SHAPE_ASPECT_DERIVING_RELATIONSHIP' + IN TYPEOF (dr)))) = 0; +END_ENTITY; + + +ENTITY derived_unit + SUPERTYPE OF (ONEOF (absorbed_dose_unit, acceleration_unit, radioactivity_unit, area_unit, capacitance_unit, dose_equivalent_unit, electric_charge_unit, conductance_unit, electric_potential_unit, energy_unit, magnetic_flux_density_unit, force_unit, frequency_unit, illuminance_unit, inductance_unit, magnetic_flux_unit, power_unit, pressure_unit, resistance_unit, velocity_unit, volume_unit)); + elements : SET [1:?] OF derived_unit_element; +DERIVE + name : label := get_name_value(SELF); +WHERE + WR1 : (SIZEOF(elements) > 1) OR ((SIZEOF(elements) = 1) AND (elements[1].exponent <> 1.0)); + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY derived_unit_element; + unit : named_unit; + exponent : REAL; +END_ENTITY; + + +ENTITY description_attribute; + attribute_value : text; + described_item : description_attribute_select; +END_ENTITY; + + +ENTITY descriptive_representation_item + SUPERTYPE OF (ONEOF (tagged_text_item, uniform_resource_identifier)) + SUBTYPE OF (representation_item); + description : text; +END_ENTITY; + + +ENTITY design_context + SUBTYPE OF (product_definition_context); +WHERE + WR1 : SELF.life_cycle_stage = 'design'; +END_ENTITY; + + +ENTITY design_make_from_relationship + SUBTYPE OF (product_definition_relationship); +END_ENTITY; + + +ENTITY diameter_dimension + SUBTYPE OF (dimension_curve_directed_callout); +END_ENTITY; + + +ENTITY dielectric_constant_measure_with_unit + SUBTYPE OF (ratio_measure_with_unit); +END_ENTITY; + + +ENTITY dimension_callout + SUBTYPE OF (draughting_callout); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_DIRECTED_CALLOUT' + IN (TYPEOF (SELF))) XOR + (SIZEOF (QUERY(dce_1 <* SELF\draughting_callout.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_CURVE' + IN (TYPEOF(dce_1))))) = 0); + WR2 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_DIRECTED_CALLOUT' + IN (TYPEOF (SELF))) XOR + (SIZEOF (QUERY(dce_1 <* SELF\draughting_callout.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_CURVE' + IN (TYPEOF(dce_1))))) = 0); + WR3 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT' + IN (TYPEOF (SELF))) XOR + (SIZEOF (QUERY(dce_1 <* SELF\draughting_callout.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE' + IN (TYPEOF(dce_1))))) = 0); +END_ENTITY; + + +ENTITY dimension_callout_component_relationship + SUBTYPE OF (draughting_callout_relationship); +WHERE + WR1 : SELF.name IN ['prefix', 'suffix']; + WR2 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRUCTURED_DIMENSION_CALLOUT' + IN TYPEOF (SELF.relating_draughting_callout); + WR3 : SIZEOF (TYPEOF (SELF.related_draughting_callout) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_DIRECTED_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_DIRECTED_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRUCTURED_DIMENSION_CALLOUT']) = 0; + WR4 : SELF.related_draughting_callout.contents * + SELF.relating_draughting_callout.contents = + SELF.related_draughting_callout.contents; + WR5 : ((SELF.name = 'prefix') AND + (SIZEOF (QUERY (ato <* QUERY (con <* + SELF.related_draughting_callout.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(con))) | + NOT (ato.name = 'prefix text') + )) = 0)); + WR6 : ((SELF.name = 'suffix') AND + (SIZEOF (QUERY (ato <* QUERY (con <* + SELF.related_draughting_callout.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(con))) | + NOT (ato.name = 'suffix text') + )) = 0)); +END_ENTITY; + + +ENTITY dimension_callout_relationship + SUBTYPE OF (draughting_callout_relationship); +WHERE + WR1 : SELF.name IN ['primary', 'secondary']; + WR2 : SIZEOF (TYPEOF (SELF.relating_draughting_callout) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANGULAR_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIAMETER_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_DIRECTED_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINEAR_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORDINATE_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RADIUS_DIMENSION'])>=1; + WR3 : SIZEOF (TYPEOF (SELF.related_draughting_callout) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_DIRECTED_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_DIRECTED_CALLOUT']) = 0; + WR4 : SELF.related_draughting_callout.contents * + SELF.relating_draughting_callout.contents = + SELF.related_draughting_callout.contents; +END_ENTITY; + + +ENTITY dimension_curve + SUBTYPE OF (annotation_curve_occurrence); +WHERE + WR1 : (SIZEOF( + QUERY(dct <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'TERMINATOR_SYMBOL.ANNOTATED_CURVE') + | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DIMENSION_CURVE_TERMINATOR' IN TYPEOF(dct)) + )) + ) <= 2); + WR2 : SIZEOF( + QUERY( dcdc <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_CALLOUT.CONTENTS') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DIMENSION_CURVE_DIRECTED_CALLOUT' IN TYPEOF(dcdc))) + )>= 1; + WR3 : (SIZEOF( + QUERY(dct1 <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'TERMINATOR_SYMBOL.ANNOTATED_CURVE') + | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DIMENSION_CURVE_TERMINATOR' IN TYPEOF(dct1)) + AND (dct1\dimension_curve_terminator.role = dimension_extent_usage.origin))) + ) <= 1) + AND + (SIZEOF( + QUERY (dct2 <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'TERMINATOR_SYMBOL.ANNOTATED_CURVE') + | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DIMENSION_CURVE_TERMINATOR' IN TYPEOF(dct2)) + AND (dct2\dimension_curve_terminator.role = dimension_extent_usage.target))) + ) <= 1); +END_ENTITY; + + +ENTITY dimension_curve_directed_callout + SUBTYPE OF (draughting_callout); +WHERE + WR1 : SIZEOF(QUERY(d_c<*SELF\draughting_callout.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE' IN (TYPEOF(d_c))))=1; + WR2 : SIZEOF(SELF\draughting_callout.contents) >= 2; +END_ENTITY; + + +ENTITY dimension_curve_terminator + SUBTYPE OF (terminator_symbol); + role : dimension_extent_usage; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE' IN TYPEOF + (SELF\terminator_symbol.annotated_curve); +END_ENTITY; + + +ENTITY dimension_curve_terminator_to_projection_curve_associativity + SUBTYPE OF (annotation_occurrence_associativity); + SELF\annotation_occurrence_relationship.related_annotation_occurrence : projection_curve; + SELF\annotation_occurrence_relationship.relating_annotation_occurrence : dimension_curve_terminator; +END_ENTITY; + + +ENTITY dimension_pair + SUBTYPE OF (draughting_callout_relationship); +WHERE + WR1 : SELF.name IN ['chained', 'parallel']; + WR2 : SIZEOF (TYPEOF (SELF.relating_draughting_callout) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANGULAR_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIAMETER_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINEAR_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORDINATE_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RADIUS_DIMENSION'])=1; + WR3 : SIZEOF (TYPEOF (SELF.related_draughting_callout) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANGULAR_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIAMETER_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINEAR_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORDINATE_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RADIUS_DIMENSION'])=1; +END_ENTITY; + + +ENTITY dimension_related_tolerance_zone_element; + related_dimension : dimensional_location; + related_element : tolerance_zone_definition; +END_ENTITY; + + +ENTITY dimension_text_associativity + SUBTYPE OF (text_literal, mapped_item); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_DIMENSION_REPRESENTATION' + IN TYPEOF (SELF\mapped_item. + mapping_source.mapped_representation)); + WR2 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT' + IN TYPEOF (SELF\mapped_item.mapping_target)); + WR3 : SIZEOF (QUERY (ato <* QUERY (si <* + USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM.ITEM') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(si))) | + NOT (SIZEOF( QUERY (dc <* + USEDIN (ato, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_CALLOUT.CONTENTS') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT' + IN TYPEOF (dc))) + * [SELF\mapped_item.mapping_target]) = 1) + )) = 0; +END_ENTITY; + + +ENTITY dimensional_characteristic_representation; + dimension : dimensional_characteristic; + representation : shape_dimension_representation; +END_ENTITY; + + +ENTITY dimensional_exponents; + length_exponent : REAL; + mass_exponent : REAL; + time_exponent : REAL; + electric_current_exponent : REAL; + thermodynamic_temperature_exponent : REAL; + amount_of_substance_exponent : REAL; + luminous_intensity_exponent : REAL; +END_ENTITY; + + +ENTITY dimensional_location + SUPERTYPE OF (ONEOF (angular_location, dimensional_location_with_path)) + SUBTYPE OF (shape_aspect_relationship); +END_ENTITY; + + +ENTITY dimensional_location_with_path + SUBTYPE OF (dimensional_location); + path : shape_aspect; +END_ENTITY; + + +ENTITY dimensional_size + SUPERTYPE OF (ONEOF (angular_size, dimensional_size_with_path)); + applies_to : shape_aspect; + name : label; +WHERE + WR1 : applies_to.product_definitional = TRUE; +END_ENTITY; + + +ENTITY dimensional_size_with_path + SUBTYPE OF (dimensional_size); + path : shape_aspect; +END_ENTITY; + + +ENTITY directed_action + SUBTYPE OF (executed_action); + directive : action_directive; +END_ENTITY; + + +ENTITY directed_dimensional_location + SUBTYPE OF (dimensional_location); +END_ENTITY; + + +ENTITY direction + SUBTYPE OF (geometric_representation_item); + direction_ratios : LIST [2:3] OF REAL; +WHERE + WR1 : SIZEOF(QUERY(tmp <* direction_ratios | tmp <> 0.0)) > 0; +END_ENTITY; + + +ENTITY document; + id : identifier; + name : label; + description : OPTIONAL text; + kind : document_type; +INVERSE + representation_types: SET [0:?] OF document_representation_type FOR represented_document; +END_ENTITY; + + +ENTITY document_file + SUBTYPE OF (document, characterized_object); +WHERE + WR1 : SELF\characterized_object.name = ''; + WR2 : NOT EXISTS(SELF\characterized_object.description); + WR3 : SIZEOF( QUERY( drt <* SELF\document.representation_types | + drt.name IN ['digital','physical'])) = 1; +END_ENTITY; + + +ENTITY document_identifier + SUBTYPE OF (group); +UNIQUE + UR1: SELF\group.name, SELF\group.description; +END_ENTITY; + + +ENTITY document_identifier_assignment + SUBTYPE OF (group_assignment); + items : SET [1:?] OF document_identifier_assigned_item; + SELF\group_assignment.assigned_group : document_identifier; +END_ENTITY; + + +ENTITY document_product_association; + name : label; + description : OPTIONAL text; + relating_document : document; + related_product : product_or_formation_or_definition; +END_ENTITY; + + +ENTITY document_product_equivalence + SUBTYPE OF (document_product_association); +WHERE + WR1 : SELF\document_product_association.name = 'equivalence'; + WR2 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT' IN TYPEOF(SELF\document_product_association.related_product)) OR ((SELF\document_product_association.relating_document.kind. product_data_type = 'configuration controlled document') AND (SIZEOF( QUERY( prpc <* USEDIN(SELF\document_product_association.related_product,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.name = 'document' )) = 1)); + WR3 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_FORMATION' IN TYPEOF(SELF.related_product)) OR ((SELF\document_product_association.relating_document.kind.product_data_type = 'configuration controlled document version') AND (SIZEOF( QUERY( prpc <* USEDIN(SELF.related_product\product_definition_formation.of_product, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.name = 'document')) = 1)); + WR4 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(SELF.related_product)) OR ((SELF\document_product_association.relating_document.kind.product_data_type = 'configuration controlled document definition') AND (SIZEOF( QUERY( prpc <* USEDIN(SELF\document_product_association.related_product\product_definition.formation.of_product, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.name = 'document' )) = 1)); +END_ENTITY; + + +ENTITY document_reference + ABSTRACT SUPERTYPE; + assigned_document : document; + source : label; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY document_relationship; + name : label; + description : OPTIONAL text; + relating_document : document; + related_document : document; +END_ENTITY; + + +ENTITY document_representation_type; + name : label; + represented_document : document; +END_ENTITY; + + +ENTITY document_type; + product_data_type : label; +END_ENTITY; + + +ENTITY document_usage_constraint; + source : document; + subject_element : label; + subject_element_value : text; +END_ENTITY; + + +ENTITY document_usage_constraint_assignment + ABSTRACT SUPERTYPE; + assigned_document_usage : document_usage_constraint; + role : document_usage_role; +END_ENTITY; + + +ENTITY document_usage_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY dose_equivalent_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DOSE_EQUIVALENT_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY dose_equivalent_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.sievert); +END_ENTITY; + + +ENTITY double_offset_shelled_solid + SUBTYPE OF (shelled_solid); + thickness2 : length_measure; +WHERE + WR1 : thickness2 <> 0; + WR2 : SELF\shelled_solid.thickness <> thickness2; +END_ENTITY; + + +ENTITY draped_defined_transformation + SUBTYPE OF (transformation_with_derived_angle); +END_ENTITY; + + +ENTITY draughting_annotation_occurrence + SUBTYPE OF (annotation_occurrence); +WHERE + WR1 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_CURVE_OCCURRENCE' + IN TYPEOF (SELF))) OR + (SIZEOF (QUERY (sty <* SELF.styles | + NOT ((SIZEOF (sty.styles) = 1) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (sty.styles[1]))) )) = 0); + WR2 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE' + IN TYPEOF (SELF))) OR (SIZEOF (QUERY (sty <* SELF.styles | + NOT ((SIZEOF (sty.styles) = 1) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FILL_AREA_STYLE' + IN TYPEOF (sty.styles[1]))) )) = 0); + WR3 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE' + IN TYPEOF (SELF))) OR (SIZEOF (QUERY (bound <* + SELF.item\annotation_fill_area.boundaries | + NOT (SIZEOF (QUERY (si <* + USEDIN (bound, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'STYLED_ITEM.ITEM') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'ANNOTATION_CURVE_OCCURRENCE' IN TYPEOF (si)))) > 0))) = 0); + WR4 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE' + IN TYPEOF (SELF))) OR (SIZEOF (QUERY (sty <* SELF.styles | + NOT ((SIZEOF (sty.styles) = 1) AND + (SIZEOF (TYPEOF (sty.styles[1]) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SYMBOL_STYLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NULL_STYLE']) = 1)) )) = 0); + WR5 : (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE' + IN TYPEOF (SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL' + IN TYPEOF(SELF.item)))) OR + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_SYMBOL_REPRESENTATION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_SUBFIGURE_REPRESENTATION'] * + TYPEOF (SELF.item\mapped_item.mapping_source. + mapped_representation)) = 1); + WR6 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (SELF))) OR + (SIZEOF (QUERY (sty <* SELF.styles | + NOT ((SIZEOF (sty.styles) = 1) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_STYLE' + IN TYPEOF (sty.styles[1]))) )) = 0); + WR7 : (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (SELF))) OR + (SIZEOF (TYPEOF(SELF.item) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL']) = 1); + WR8 : (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT' + IN TYPEOF (SELF.item)))) OR (SIZEOF (QUERY (tl <* + SELF.item\composite_text.collected_text | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL' + IN TYPEOF (tl)) )) = 0); + WR9 : (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL' + IN TYPEOF (SELF.item)))) OR (SELF.item\text_literal.alignment + IN ['baseline left', 'baseline centre', 'baseline right']); + WR10 : (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT' + IN TYPEOF (SELF.item)))) OR + (SIZEOF (QUERY (tl <* QUERY (text <* SELF. + item\composite_text.collected_text + |('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL' IN TYPEOF(text))) | + NOT (tl\text_literal.alignment IN + ['baseline left', 'baseline centre', 'baseline right']) )) = 0); + WR11 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT' + IN TYPEOF (SELF.item))) OR check_text_alignment(SELF.item); + WR12 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT' + IN TYPEOF (SELF.item))) OR check_text_font(SELF.item); + WR13 : (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT' + IN TYPEOF (SELF.item)))) OR + (SIZEOF (QUERY (tl <* QUERY (text <* + SELF.item\composite_text.collected_text | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL' IN TYPEOF (text))) | + NOT (SIZEOF (TYPEOF(tl) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'TEXT_LITERAL_WITH_BLANKING_BOX', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'TEXT_LITERAL_WITH_ASSOCIATED_CURVES']) = 0) )) = 0); + WR14 : (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL_WITH_ASSOCIATED_CURVES' + IN TYPEOF (SELF.item)))) OR + (SIZEOF (QUERY (crv <* + SELF.item\text_literal_with_associated_curves. + associated_curves | + NOT (SIZEOF (QUERY (si <* USEDIN (crv, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM.ITEM') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_CURVE_OCCURRENCE' + IN TYPEOF (si)) )) > 0) )) = 0); + WR15 : (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT_WITH_ASSOCIATED_CURVES' + IN TYPEOF (SELF.item)))) OR + (SIZEOF (QUERY (crv <* + SELF.item\composite_text_with_associated_curves. + associated_curves | + NOT (SIZEOF (QUERY (si <* USEDIN (crv, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM.ITEM') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_CURVE_OCCURRENCE' + IN TYPEOF (si)) )) > 0) )) = 0); + WR16 : SIZEOF (QUERY (cs <* QUERY (sty <* SELF.styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' IN TYPEOF (sty.styles[1]))) + | NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE_WITH_UNIT' + IN TYPEOF (cs.styles[1]\curve_style.curve_width)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' + IN TYPEOF (cs.styles[1]\curve_style. + curve_width\measure_with_unit.value_component))))) = 0; + WR17 : SIZEOF (QUERY (fas <* QUERY (sty <* SELF.styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FILL_AREA_STYLE' + IN TYPEOF (sty.styles[1]))) | + NOT ((SIZEOF (QUERY (fs <* fas.styles[1]\fill_area_style.fill_styles + | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FILL_AREA_STYLE_TILES' + IN TYPEOF (fs)))) <= 1) + AND (SIZEOF (QUERY (fst <* QUERY (fs <* + fas.styles[1]\fill_area_style.fill_styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FILL_AREA_STYLE_TILES' + IN TYPEOF (fs))) | + NOT (SIZEOF (fst\fill_area_style_tiles.tiles) = 1) + )) = 0)) + )) = 0; + WR18 : SIZEOF (QUERY (fas <* QUERY (sty <* SELF.styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FILL_AREA_STYLE' + IN TYPEOF (sty.styles[1]))) | + NOT (SIZEOF (QUERY (fsh <* QUERY (fs <* + fas.styles[1]\fill_area_style.fill_styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FILL_AREA_STYLE_HATCHING' + IN TYPEOF (fs))) | + NOT (fsh\fill_area_style_hatching.point_of_reference_hatch_line :=: + fsh\fill_area_style_hatching.pattern_start) )) = 0) )) = 0; + WR19 : SIZEOF (QUERY (ts <* QUERY (sty <* SELF.styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_STYLE' + IN TYPEOF(sty.styles[1]))) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'TEXT_STYLE_WITH_BOX_CHARACTERISTICS' + IN TYPEOF (ts.styles[1])))) = 0; + WR20 : SIZEOF (QUERY (ts <* QUERY (sty <* SELF.styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_STYLE_WITH_BOX_CHARACTERISTICS' + IN TYPEOF (sty.styles[1]))) | + NOT (SIZEOF (ts.styles[1]\text_style_with_box_characteristics. + characteristics) = 4) )) = 0; +END_ENTITY; + + +ENTITY draughting_callout + SUPERTYPE OF ((ONEOF (datum_feature_callout, datum_target_callout, dimension_curve_directed_callout, draughting_elements, geometrical_tolerance_callout, leader_directed_callout, projection_directed_callout, structured_dimension_callout) ANDOR surface_condition_callout)) + SUBTYPE OF (geometric_representation_item); + contents : SET [1:?] OF draughting_callout_element; +WHERE + WR1 : (SIZEOF (QUERY (l_1 <* SELF\draughting_callout.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_CURVE' IN (TYPEOF(l_1)))) = 0) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_DIRECTED_CALLOUT' IN (TYPEOF(SELF))) AND + (SIZEOF (QUERY (l_1 <* SELF\draughting_callout.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_CURVE' IN (TYPEOF(l_1)))) = 0) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_DIRECTED_CALLOUT' IN (TYPEOF(SELF))) AND + (SIZEOF (QUERY (l_1 <* SELF\draughting_callout.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE' IN (TYPEOF(l_1)))) = 0) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT' IN (TYPEOF(SELF))); +END_ENTITY; + + +ENTITY draughting_callout_relationship; + name : label; + description : text; + relating_draughting_callout : draughting_callout; + related_draughting_callout : draughting_callout; +END_ENTITY; + + +ENTITY draughting_elements + SUBTYPE OF (draughting_callout); +WHERE + WR1 : SIZEOF (QUERY (l_c <* QUERY (con <* SELF.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_CURVE' IN TYPEOF(con))) | + NOT (SIZEOF (QUERY (ldc <* USEDIN (l_c, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DRAUGHTING_CALLOUT.CONTENTS') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_DIRECTED_CALLOUT' + IN TYPEOF (ldc)))) <= 1)))=0; + WR2 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT' + IN TYPEOF(SELF)) OR + (SIZEOF (QUERY (con <* SELF.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_CURVE' IN + TYPEOF (con)))) <= 2); + WR3 : SIZEOF (QUERY (rc <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT_' + + 'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF (rc)) AND + (rc.name = 'primary') )) <= 1; + WR4 : SIZEOF (QUERY (rc <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT_' + + 'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF (rc)) AND + (rc.name = 'secondary') )) <= 1; + WR5 : SIZEOF (QUERY (sec <* QUERY (rc <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT_' + + 'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF (rc)) AND + (rc.name = 'secondary') ) | + NOT (SIZEOF (QUERY (prim <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT_' + + 'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF (prim)) AND + (prim.name = 'primary') )) = 1))) = 0; +END_ENTITY; + + +ENTITY draughting_model + SUBTYPE OF (representation); + SELF\representation.items : SET [1:?] OF draughting_model_item_select; +UNIQUE + UR1: SELF\representation.name; +WHERE + WR1 : SIZEOF (QUERY (mi <* QUERY (it <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF(it))) | + NOT ( + SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_MODEL'] * + TYPEOF (mi\mapped_item.mapping_source. + mapped_representation)) = 1 + ))) = 0; + WR2 : SIZEOF (QUERY (smi <* QUERY (si <* QUERY (it <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' IN TYPEOF(it))) | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN + TYPEOF(si\styled_item.item))) | + (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION' IN + TYPEOF(smi\styled_item.item\mapped_item. + mapping_source.mapped_representation)) + AND + (SIZEOF (QUERY (sty <* smi\styled_item.styles | + (NOT (SIZEOF (QUERY (psa <* sty.styles | + (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' IN TYPEOF(psa))))) = 1 + )))) = 1))) + )) = 0; +END_ENTITY; + + +ENTITY draughting_model_item_association + SUBTYPE OF (item_identified_representation_usage); + SELF\item_identified_representation_usage.definition : shape_definition; + SELF\item_identified_representation_usage.identified_item : draughting_model_item_association_select; + SELF\item_identified_representation_usage.used_representation : draughting_model; +END_ENTITY; + + +ENTITY draughting_pre_defined_colour + SUBTYPE OF (pre_defined_colour); +WHERE + WR1 : SELF.name IN + ['red', + 'green', + 'blue', + 'yellow', + 'magenta', + 'cyan', + 'black', + 'white']; +END_ENTITY; + + +ENTITY draughting_pre_defined_curve_font + SUBTYPE OF (pre_defined_curve_font); +WHERE + WR1 : SELF.name IN + ['continuous', + 'chain', + 'chain double dash', + 'dashed', + 'dotted']; +END_ENTITY; + + +ENTITY draughting_pre_defined_text_font + SUBTYPE OF (pre_defined_text_font); +WHERE + WR1 : SELF.name[1:8] = 'ISO 3098'; +END_ENTITY; + + +ENTITY draughting_subfigure_representation + SUBTYPE OF (symbol_representation); +WHERE + WR1 : SIZEOF (QUERY (item <* SELF\representation.items | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT'] + * TYPEOF (item)) = 1))) = 0; + WR2 : SIZEOF (QUERY (item <* SELF\representation.items | + SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT'] * + TYPEOF (item)) = 1)) >= 1; + WR3 : SIZEOF (QUERY (srm <* QUERY (rm <* + USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'REPRESENTATION_MAP.MAPPED_REPRESENTATION') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SYMBOL_REPRESENTATION_MAP' + IN TYPEOF(rm))) | + NOT (SIZEOF (QUERY (a_s <* QUERY (mi <* srm.map_usage | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL' IN TYPEOF(mi))) + | NOT (SIZEOF (QUERY (aso <* + USEDIN (a_s, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'STYLED_ITEM.ITEM') | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SUBFIGURE_OCCURRENCE' + IN TYPEOF(aso)))) = 0))) = 0))) > 0; + WR4 : NOT (acyclic_mapped_item_usage (SELF)); + WR5 : SIZEOF (SELF.context_of_items.representations_in_context) = 1; +END_ENTITY; + + +ENTITY draughting_symbol_representation + SUBTYPE OF (symbol_representation); +UNIQUE + UR1: SELF\representation.name; +WHERE + WR1 : SIZEOF (QUERY (item <* SELF\representation.items | + NOT (SIZEOF (TYPEOF (item) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_CURVE_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT']) = 1) + )) = 0; + WR2 : SIZEOF (QUERY (item <* SELF\representation.items | + (SIZEOF (TYPEOF (item) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_CURVE_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE']) = 1) + )) >= 1; + WR3 : SIZEOF (QUERY (item <* SELF\representation.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SUBFIGURE_OCCURRENCE' + IN TYPEOF (item))) = 0; + WR4 : SIZEOF (QUERY (srm <* QUERY (rm <* + USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'REPRESENTATION_MAP.MAPPED_REPRESENTATION') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SYMBOL_REPRESENTATION_MAP' + IN TYPEOF(rm))) | + (SIZEOF (QUERY (a_s <* QUERY (mi <* srm.map_usage | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL' IN TYPEOF(mi))) | + NOT (SIZEOF (QUERY(aso <* + USEDIN(a_s, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'STYLED_ITEM.ITEM') | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE' + IN TYPEOF(aso)) + )) = 0) )) = 0) )) > 0; + WR5 : NOT (acyclic_mapped_item_usage (SELF)); + WR6 : SIZEOF (SELF.context_of_items.representations_in_context) = 1; +END_ENTITY; + + +ENTITY draughting_text_literal_with_delineation + SUBTYPE OF (text_literal_with_delineation); +WHERE + WR1 : SELF.delineation IN ['underline', 'overline']; +END_ENTITY; + + +ENTITY draughting_title; + items : SET [1:?] OF draughting_titled_item; + language : label; + contents : text; +END_ENTITY; + + +ENTITY drawing_definition; + drawing_number : identifier; + drawing_type : OPTIONAL label; +END_ENTITY; + + +ENTITY drawing_revision + SUBTYPE OF (presentation_set); + revision_identifier : identifier; + drawing_identifier : drawing_definition; + intended_scale : OPTIONAL text; +UNIQUE + UR1 : revision_identifier, drawing_identifier; +END_ENTITY; + + +ENTITY drawing_revision_sequence; + predecessor : drawing_revision; + successor : drawing_revision; +WHERE + WR1 : predecessor :<>: successor; +END_ENTITY; + + +ENTITY drawing_sheet_revision + SUBTYPE OF (presentation_area); + revision_identifier : identifier; +WHERE + WR1 : SIZEOF( QUERY(item <* SELF\representation.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN (TYPEOF(item))) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAWING_SHEET_REVISION' IN + (TYPEOF(item\mapped_item.mapping_source.mapped_representation)))))=0; +END_ENTITY; + + +ENTITY drawing_sheet_revision_sequence + SUBTYPE OF (representation_relationship); +WHERE + WR1 : SELF\representation_relationship.rep_1 :<>: + SELF\representation_relationship.rep_2; + WR2 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAWING_SHEET_REVISION' + IN TYPEOF (SELF\representation_relationship.rep_1); + WR3 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAWING_SHEET_REVISION' + IN TYPEOF (SELF\representation_relationship.rep_2); +END_ENTITY; + + +ENTITY drawing_sheet_revision_usage + SUBTYPE OF (area_in_set); + sheet_number : identifier; +UNIQUE + UR1: sheet_number, SELF\area_in_set.in_set; +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAWING_SHEET_REVISION' IN + TYPEOF(SELF\area_in_set.area)) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAWING_REVISION' + IN TYPEOF (SELF\area_in_set.in_set)); +END_ENTITY; + + +ENTITY edge + SUPERTYPE OF (ONEOF (edge_curve, oriented_edge, subedge)) + SUBTYPE OF (topological_representation_item); + edge_start : vertex; + edge_end : vertex; +END_ENTITY; + + +ENTITY edge_based_wireframe_model + SUBTYPE OF (geometric_representation_item); + ebwm_boundary : SET [1:?] OF connected_edge_set; +END_ENTITY; + + +ENTITY edge_based_wireframe_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF ( +QUERY ( it <* SELF.items| NOT ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_BASED_WIREFRAME_MODEL', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D' ] * TYPEOF (it)) = 1) )) = 0; + WR2 : SIZEOF ( +QUERY ( it <* SELF.items| ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_BASED_WIREFRAME_MODEL', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' ] * TYPEOF (it)) = 1) )) >= 1; + WR3 : SIZEOF ( +QUERY ( ebwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT ( SIZEOF ( +QUERY ( edges <* eb.ces_edges| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN TYPEOF (edges)) )) = 0) )) = 0) )) = 0; + WR4 : SIZEOF ( +QUERY ( ebwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT ( SIZEOF ( +QUERY ( pline_edges <* +QUERY ( edges <* eb.ces_edges| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF (edges\edge_curve.edge_geometry)) )| NOT ( SIZEOF (pline_edges\edge_curve.edge_geometry\polyline.points) > 2) )) = 0) )) = 0) )) = 0; + WR5 : SIZEOF ( +QUERY ( ebwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT ( SIZEOF ( +QUERY ( edges <* eb.ces_edges| NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (edges.edge_start)) AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (edges.edge_end))) )) = 0) )) = 0) )) = 0; + WR6 : SIZEOF ( +QUERY ( ebwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT ( SIZEOF ( +QUERY ( edges <* eb.ces_edges| NOT valid_wireframe_edge_curve(edges\edge_curve.edge_geometry) )) = 0) )) = 0) )) = 0; + WR7 : SIZEOF ( +QUERY ( ebwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT ( SIZEOF ( +QUERY ( edges <* eb.ces_edges| NOT (valid_wireframe_vertex_point(edges.edge_start\vertex_point.vertex_geometry) AND valid_wireframe_vertex_point(edges.edge_end\vertex_point.vertex_geometry)) )) = 0) )) = 0) )) = 0; + WR8 : SIZEOF ( +QUERY ( mi <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0; + WR9 : SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3; +END_ENTITY; + + +ENTITY edge_blended_solid + ABSTRACT SUPERTYPE OF ((track_blended_solid ANDOR ONEOF (solid_with_constant_radius_edge_blend, solid_with_variable_radius_edge_blend, solid_with_chamfered_edges))) + SUBTYPE OF (modified_solid); + blended_edges : LIST [1:?] OF UNIQUE edge_curve; +END_ENTITY; + + +ENTITY edge_curve + SUBTYPE OF (edge, geometric_representation_item); + edge_geometry : curve; + same_sense : BOOLEAN; +END_ENTITY; + + +ENTITY edge_loop + SUBTYPE OF (loop, path); +DERIVE + ne : INTEGER := SIZEOF(SELF\path.edge_list); +WHERE + WR1 : (SELF\path.edge_list[1].edge_start) :=: + (SELF\path.edge_list[ne].edge_end); +END_ENTITY; + + +ENTITY effectivity + SUPERTYPE OF (ONEOF (serial_numbered_effectivity, dated_effectivity, lot_effectivity, time_interval_based_effectivity)); + id : identifier; +DERIVE + description : text := get_description_value(SELF); + name : label := get_name_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY effectivity_assignment + ABSTRACT SUPERTYPE; + assigned_effectivity : effectivity; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY effectivity_context_assignment + ABSTRACT SUPERTYPE; + assigned_effectivity_assignment : effectivity_assignment; + role : effectivity_context_role; +END_ENTITY; + + +ENTITY effectivity_context_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY effectivity_relationship; + name : label; + description : OPTIONAL text; + related_effectivity : effectivity; + relating_effectivity : effectivity; +END_ENTITY; + + +ENTITY electric_charge_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELECTRIC_CHARGE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY electric_charge_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.coulomb); +END_ENTITY; + + +ENTITY electric_current_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELECTRIC_CURRENT_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY electric_current_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 1.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY electric_potential_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELECTRIC_POTENTIAL_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY electric_potential_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.volt); +END_ENTITY; + + +ENTITY elementary_brep_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF (QUERY (it <* SELF.items | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACETED_BREP', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D'] * + TYPEOF(it)) = 1))) = 0; + WR2 : SIZEOF (QUERY (it <* SELF.items | + SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM'] * TYPEOF(it)) =1 )) > 0; + WR3 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* msb_shells(msb) | + NOT (SIZEOF (QUERY(fcs <* csh.cfs_faces | + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE' IN TYPEOF(fcs)))) = 0 + ))) = 0 + ))) = 0; + WR4 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* msb_shells(msb) | + NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces | + NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELEMENTARY_SURFACE' IN + TYPEOF(fcs\face_surface.face_geometry)) + ))) = 0 + ))) = 0 + ))) = 0; + WR5 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* msb_shells(msb) | + NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces | + NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN + TYPEOF(oe.edge_element)))) = 0 + ))) = 0 + ))) = 0 + ))) = 0 + ))) = 0; + WR6 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* msb_shells(msb) | + NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces | + NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE'] * + TYPEOF(oe.edge_element\edge_curve.edge_geometry)) = 1 ) + )) = 0 + ))) = 0 + ))) = 0 + ))) = 0 + ))) = 0; + WR7 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* msb_shells(msb) | + NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces | + NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF(oe.edge_start)) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN + TYPEOF(oe.edge_end)) + ))) = 0 + ))) = 0 + ))) = 0 + ))) = 0 + ))) = 0; + WR8 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* msb_shells(msb) | + NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces | + NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN + TYPEOF(oe.edge_element\edge_curve.edge_geometry)) AND + (NOT (SIZEOF (oe\oriented_edge.edge_element\ + edge_curve.edge_geometry\polyline.points) >= 3)) + )) = 0 + ))) = 0 + ))) = 0 + ))) = 0 + ))) = 0; + WR9 : SIZEOF (QUERY (msb <* QUERY (it <* items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF + (msb\manifold_solid_brep.outer))) + = 0; + WR10 : SIZEOF (QUERY (brv <* QUERY (it <* items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BREP_WITH_VOIDS' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* brv\brep_with_voids.voids | + csh\oriented_closed_shell.orientation)) = 0))) = 0; + WR11 : SIZEOF (QUERY (mi <* QUERY (it <* items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELEMENTARY_BREP_SHAPE_REPRESENTATION' IN + TYPEOF(mi\mapped_item.mapping_source. + mapped_representation)))) = 0; + WR12 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* msb_shells(msb) | + NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces | + NOT (SIZEOF(QUERY (vlp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF(bnds.bound)) | + NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN + TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN + TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop. + loop_vertex\vertex_point.vertex_geometry)) + ))) = 0))) = 0))) = 0))) =0; +END_ENTITY; + + +ENTITY elementary_surface + SUPERTYPE OF (ONEOF (plane, cylindrical_surface, conical_surface, spherical_surface, toroidal_surface)) + SUBTYPE OF (surface); + position : axis2_placement_3d; +END_ENTITY; + + +ENTITY ellipse + SUBTYPE OF (conic); + semi_axis_1 : positive_length_measure; + semi_axis_2 : positive_length_measure; +END_ENTITY; + + +ENTITY energy_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ENERGY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY energy_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.joule); +END_ENTITY; + + +ENTITY entity_assertion + SUBTYPE OF (fact_type); +END_ENTITY; + + +ENTITY enum_reference_prefix + SUBTYPE OF (descriptive_representation_item); +END_ENTITY; + + +ENTITY environment; + syntactic_representation : generic_variable; + semantics : variable_semantics; +END_ENTITY; + + +ENTITY evaluated_characteristic + SUBTYPE OF (representation, representation_relationship); +UNIQUE + UR1: SELF\representation_relationship.rep_1, SELF\representation_relationship.rep_2; +WHERE + WR1 : SELF\representation_relationship.rep_1 <> + SELF\representation_relationship.rep_2; +END_ENTITY; + + +ENTITY evaluated_degenerate_pcurve + SUBTYPE OF (degenerate_pcurve); + equivalent_point : cartesian_point; +END_ENTITY; + + +ENTITY evaluation_product_definition + SUBTYPE OF (product_definition); +END_ENTITY; + + +ENTITY event_occurrence; + id : identifier; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY event_occurrence_assignment + ABSTRACT SUPERTYPE; + assigned_event_occurrence : event_occurrence; + role : event_occurrence_role; +END_ENTITY; + + +ENTITY event_occurrence_relationship; + name : label; + description : OPTIONAL text; + relating_event : event_occurrence; + related_event : event_occurrence; +END_ENTITY; + + +ENTITY event_occurrence_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY exclusive_product_concept_feature_category + SUBTYPE OF (product_concept_feature_category); +END_ENTITY; + + +ENTITY executed_action + SUBTYPE OF (action); +END_ENTITY; + + +ENTITY expanded_uncertainty + SUBTYPE OF (standard_uncertainty); + coverage_factor : REAL; +END_ENTITY; + + +ENTITY explicit_procedural_geometric_representation_item_relationship + SUBTYPE OF (explicit_procedural_representation_item_relationship); + SELF\representation_item_relationship.related_representation_item : geometric_representation_item; + SELF\representation_item_relationship.relating_representation_item : procedural_shape_representation_sequence; +WHERE + WR1 : NOT ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROCEDURAL_SHAPE_REPRESENTATION_SEQUENCE' + IN TYPEOF( + SELF\representation_item_relationship.related_representation_item)); +END_ENTITY; + + +ENTITY explicit_procedural_representation_item_relationship + SUBTYPE OF (representation_item_relationship); + SELF\representation_item_relationship.relating_representation_item : procedural_representation_sequence; +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROCEDURAL_REPRESENTATION_SEQUENCE' + IN TYPEOF( + SELF\representation_item_relationship.related_representation_item)); + WR2 : SIZEOF(QUERY(q <* using_representations( + SELF\representation_item_relationship.related_representation_item) | + item_in_context( + SELF\representation_item_relationship.relating_representation_item, + q.context_of_items))) > 0; +END_ENTITY; + + +ENTITY explicit_procedural_representation_relationship + SUBTYPE OF (representation_relationship); + SELF\representation_relationship.rep_1 : procedural_representation; +WHERE + WR1 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROCEDURAL_REPRESENTATION' + IN TYPEOF(SELF\representation_relationship.rep_2))) AND + (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VARIATIONAL_REPRESENTATION' + IN TYPEOF(SELF\representation_relationship.rep_2))); + WR2 : SELF\representation_relationship.rep_1.context_of_items :=: + SELF\representation_relationship.rep_2.context_of_items; +END_ENTITY; + + +ENTITY explicit_procedural_shape_representation_relationship + SUBTYPE OF (explicit_procedural_representation_relationship); + SELF\representation_relationship.rep_1 : procedural_shape_representation; + SELF\representation_relationship.rep_2 : shape_representation; +END_ENTITY; + + +ENTITY expression + ABSTRACT SUPERTYPE OF (ONEOF (numeric_expression, boolean_expression)) + SUBTYPE OF (generic_expression); +END_ENTITY; + + +ENTITY expression_conversion_based_unit + SUBTYPE OF (context_dependent_unit, variable_semantics); +INVERSE + associated_variable_environment: environment FOR semantics; +END_ENTITY; + + +ENTITY extension + SUBTYPE OF (derived_shape_aspect); +WHERE + WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1; +END_ENTITY; + + +ENTITY extent + SUBTYPE OF (characterized_object); +END_ENTITY; + + +ENTITY external_class_library + SUBTYPE OF (external_source); +END_ENTITY; + + +ENTITY external_identification_assignment + ABSTRACT SUPERTYPE + SUBTYPE OF (identification_assignment); + source : external_source; +END_ENTITY; + + +ENTITY external_source; + source_id : source_item; +DERIVE + description : text := get_description_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY external_source_relationship; + name : label; + description : OPTIONAL text; + relating_source : external_source; + related_source : external_source; +END_ENTITY; + + +ENTITY externally_defined_class + SUBTYPE OF (class, externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_colour + SUBTYPE OF (colour_specification, externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_context_dependent_unit + SUBTYPE OF (context_dependent_unit, externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_conversion_based_unit + SUBTYPE OF (conversion_based_unit, externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_currency + SUBTYPE OF (currency, externally_defined_context_dependent_unit); +END_ENTITY; + + +ENTITY externally_defined_curve_font + SUBTYPE OF (externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_dimension_definition + SUBTYPE OF (dimensional_size, externally_defined_item); +WHERE + WR1 : (SELF\externally_defined_item.item_id = 'external size dimension') AND (SELF\externally_defined_item.source.source_id = 'external size dimension specification'); + WR2 : 1 >= SIZEOF(QUERY ( adr <* USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.APPLIED_DOCUMENT_REFERENCE.ITEMS')| (adr.assigned_document.description = 'external size dimension specification') )); +END_ENTITY; + + +ENTITY externally_defined_general_property + SUBTYPE OF (general_property, externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_hatch_style + SUBTYPE OF (externally_defined_item, geometric_representation_item); +END_ENTITY; + + +ENTITY externally_defined_item; + item_id : source_item; + source : external_source; +END_ENTITY; + + +ENTITY externally_defined_item_relationship; + name : label; + description : OPTIONAL text; + relating_item : externally_defined_item; + related_item : externally_defined_item; +END_ENTITY; + + +ENTITY externally_defined_marker + SUBTYPE OF (externally_defined_symbol, pre_defined_marker); +END_ENTITY; + + +ENTITY externally_defined_picture_representation_item + SUBTYPE OF (picture_representation_item); +INVERSE + source: applied_external_identification_assignment FOR items; +WHERE + WR1 : NOT (SELF\representation_item.name IN pre_defined_picture_representation_types); +END_ENTITY; + + +ENTITY externally_defined_representation_item + SUBTYPE OF (representation_item, externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_string + SUBTYPE OF (externally_defined_representation_item); +END_ENTITY; + + +ENTITY externally_defined_symbol + SUBTYPE OF (externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_terminator_symbol + SUBTYPE OF (externally_defined_symbol); +END_ENTITY; + + +ENTITY externally_defined_text_font + SUBTYPE OF (externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_tile + SUBTYPE OF (externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_tile_style + SUBTYPE OF (externally_defined_item, geometric_representation_item); +END_ENTITY; + + +ENTITY extruded_area_solid + SUBTYPE OF (swept_area_solid); + extruded_direction : direction; + depth : positive_length_measure; +WHERE + WR1 : dot_product( + (SELF\swept_area_solid.swept_area.basis_surface\ + elementary_surface.position.p[3]), extruded_direction) <> 0.0; +END_ENTITY; + + +ENTITY extruded_face_solid + SUBTYPE OF (swept_face_solid); + extruded_direction : direction; + depth : positive_length_measure; +WHERE + WR1 : dot_product( + (SELF\swept_face_solid.swept_face.face_geometry\ + elementary_surface.position.p[3]), extruded_direction) <> 0.0; +END_ENTITY; + + +ENTITY extruded_face_solid_with_draft_angle + SUBTYPE OF (extruded_face_solid_with_trim_conditions); + draft_angle : plane_angle_measure; +WHERE + WR1 : draft_angle <> 0; +END_ENTITY; + + +ENTITY extruded_face_solid_with_multiple_draft_angles + SUBTYPE OF (extruded_face_solid_with_trim_conditions); + drafted_edges : LIST [2:?] OF SET [1:?] OF edge_curve; + draft_angles : LIST [2:?] OF plane_angle_measure; +WHERE + WR1 : SIZEOF(drafted_edges) = SIZEOF(draft_angles); + WR2 : SIZEOF(QUERY(q <* draft_angles | q = 0)) = 0; + WR3 : SIZEOF(QUERY(q <* drafted_edges | (SIZEOF(QUERY(r <* q | NOT + (SELF\swept_face_solid.swept_face IN + using_items(r,[])))) > 0))) = 0; +END_ENTITY; + + +ENTITY extruded_face_solid_with_trim_conditions + SUPERTYPE OF (ONEOF (extruded_face_solid_with_draft_angle, extruded_face_solid_with_multiple_draft_angles)) + SUBTYPE OF (extruded_face_solid); + first_trim_condition : trim_condition_select; + second_trim_condition : trim_condition_select; + first_trim_intent : trim_intent; + second_trim_intent : trim_intent; + first_offset : non_negative_length_measure; + second_offset : non_negative_length_measure; +WHERE + WR1 : NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE_ANGLE_MEASURE' + IN TYPEOF(first_trim_condition)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE_ANGLE_MEASURE' + IN TYPEOF(second_trim_condition))); + WR2 : NOT ((('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(first_trim_condition)) AND + ((first_trim_intent = trim_intent.offset) + OR (first_trim_intent = trim_intent.up_to_next))) OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(second_trim_condition)) AND + ((second_trim_intent = trim_intent.offset) + OR (second_trim_intent = trim_intent.up_to_next)))); + WR3 : NOT (((NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(first_trim_condition))) AND + ((first_trim_intent = trim_intent.blind) + OR (first_trim_intent = trim_intent.through_all))) OR + ((NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(second_trim_condition))) AND + ((second_trim_intent = trim_intent.blind) + OR (second_trim_intent = trim_intent.through_all)))); + WR4 : (((first_trim_intent = trim_intent.offset) + AND (first_offset > 0)) XOR + ((first_trim_intent <> trim_intent.offset) + AND (first_offset = 0))) AND + (((second_trim_intent = trim_intent.offset) + AND (second_offset > 0)) XOR + ((second_trim_intent <> trim_intent.offset) + AND (second_offset = 0))); + WR5 : NOT((('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(first_trim_condition)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(second_trim_condition))) AND + (first_trim_condition = second_trim_condition)); +END_ENTITY; + + +ENTITY face + SUPERTYPE OF (ONEOF (face_surface, subface, oriented_face)) + SUBTYPE OF (topological_representation_item); + bounds : SET [1:?] OF face_bound; +WHERE + WR1 : NOT (mixed_loop_type_set(list_to_set(list_face_loops(SELF)))); + WR2 : SIZEOF(QUERY(temp <* bounds | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_OUTER_BOUND' IN + TYPEOF(temp))) <= 1; +END_ENTITY; + + +ENTITY face_based_surface_model + SUBTYPE OF (geometric_representation_item); + fbsm_faces : SET [1:?] OF connected_face_set; +END_ENTITY; + + +ENTITY face_bound + SUBTYPE OF (topological_representation_item); + bound : loop; + orientation : BOOLEAN; +END_ENTITY; + + +ENTITY face_outer_bound + SUBTYPE OF (face_bound); +END_ENTITY; + + +ENTITY face_surface + SUBTYPE OF (face, geometric_representation_item); + face_geometry : surface; + same_sense : BOOLEAN; +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_SURFACE' IN TYPEOF(face_geometry)); +END_ENTITY; + + +ENTITY faceted_brep + SUBTYPE OF (manifold_solid_brep); +END_ENTITY; + + +ENTITY faceted_brep_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF ( +QUERY ( it <* items| NOT ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACETED_BREP', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D' ] * TYPEOF (it)) = 1) )) = 0; + WR2 : SIZEOF ( +QUERY ( it <* items| ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACETED_BREP', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' ] * TYPEOF (it)) = 1) )) > 0; + WR3 : SIZEOF ( +QUERY ( fbrep <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACETED_BREP' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( csh <* msb_shells(fbrep)| NOT ( SIZEOF ( +QUERY ( fcs <* csh\connected_face_set.cfs_faces| NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE' IN TYPEOF (fcs)) AND (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE' IN TYPEOF (fcs\face_surface.face_geometry)) AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF (fcs\face_surface.face_geometry\elementary_surface.position.location)))) )) = 0) )) = 0) )) = 0; + WR4 : SIZEOF ( +QUERY ( fbrep <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACETED_BREP' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( csh <* msb_shells(fbrep)| NOT ( SIZEOF ( +QUERY ( fcs <* csh\connected_face_set.cfs_faces| NOT ( SIZEOF ( +QUERY ( bnds <* fcs.bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_OUTER_BOUND' IN TYPEOF (bnds)) )) = 1) )) = 0) )) = 0) )) = 0; + WR5 : SIZEOF ( +QUERY ( msb <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF (it)) )| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF (msb\manifold_solid_brep.outer)) )) = 0; + WR6 : SIZEOF ( +QUERY ( brv <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BREP_WITH_VOIDS' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( csh <* brv\brep_with_voids.voids| csh\oriented_closed_shell.orientation )) = 0) )) = 0; + WR7 : SIZEOF ( +QUERY ( mi <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACETED_BREP_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0; +END_ENTITY; + + +ENTITY fact_type + SUBTYPE OF (property_definition); +END_ENTITY; + + +ENTITY fill_area_style + SUBTYPE OF (founded_item); + name : label; + fill_styles : SET [1:?] OF fill_style_select; +WHERE + WR1 : SIZEOF(QUERY(fill_style <* SELF.fill_styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'FILL_AREA_STYLE_COLOUR' IN + TYPEOF(fill_style) + )) <= 1; +END_ENTITY; + + +ENTITY fill_area_style_colour; + name : label; + fill_colour : colour; +END_ENTITY; + + +ENTITY fill_area_style_hatching + SUBTYPE OF (geometric_representation_item); + hatch_line_appearance : curve_style; + start_of_next_hatch_line : one_direction_repeat_factor; + point_of_reference_hatch_line : cartesian_point; + pattern_start : cartesian_point; + hatch_line_angle : plane_angle_measure; +END_ENTITY; + + +ENTITY fill_area_style_tile_coloured_region + SUBTYPE OF (geometric_representation_item); + closed_curve : curve_or_annotation_curve_occurrence; + region_colour : colour; +WHERE + WR1 : (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE' IN TYPEOF (closed_curve))) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCLE' IN TYPEOF (closed_curve)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELLIPSE' IN TYPEOF (closed_curve)) OR + ( ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' IN TYPEOF (closed_curve)) + AND (closed_curve\b_spline_curve.closed_curve = TRUE) ) OR + ( ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE' IN TYPEOF (closed_curve)) + AND (closed_curve\composite_curve.closed_curve = TRUE) ) OR + ( ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF (closed_curve)) + AND (closed_curve\polyline.points[LOINDEX(closed_curve\polyline.points)] = + closed_curve\polyline.points[HIINDEX(closed_curve\polyline.points)]) ); +END_ENTITY; + + +ENTITY fill_area_style_tile_curve_with_style + SUBTYPE OF (geometric_representation_item); + styled_curve : annotation_curve_occurrence; +END_ENTITY; + + +ENTITY fill_area_style_tile_symbol_with_style + SUBTYPE OF (geometric_representation_item); + symbol : annotation_symbol_occurrence; +END_ENTITY; + + +ENTITY fill_area_style_tiles + SUBTYPE OF (geometric_representation_item); + tiling_pattern : two_direction_repeat_factor; + tiles : SET [1:?] OF fill_area_style_tile_shape_select; + tiling_scale : positive_ratio_measure; +END_ENTITY; + + +ENTITY flat_pattern_ply_representation_relationship + SUBTYPE OF (shape_representation_relationship); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION' IN + (TYPEOF (SELF\representation_relationship.rep_1) * + TYPEOF (SELF\representation_relationship.rep_2)); + WR2 : SELF\representation_relationship.rep_1. + context_of_items\geometric_representation_context. + coordinate_space_dimension = 3; +END_ENTITY; + + +ENTITY flatness_tolerance + SUBTYPE OF (geometric_tolerance); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)); +END_ENTITY; + + +ENTITY force_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FORCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY force_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.newton); +END_ENTITY; + + +ENTITY forward_chaining_rule + SUBTYPE OF (rule_definition); +END_ENTITY; + + +ENTITY forward_chaining_rule_premise + SUBTYPE OF (property_definition, property_definition_representation, representation); +END_ENTITY; + + +ENTITY founded_item + SUPERTYPE OF (ONEOF (character_glyph_style_outline, character_glyph_style_stroke, curve_style, curve_style_font, curve_style_font_and_scaling, curve_style_font_pattern, fill_area_style, point_style, presentation_style_assignment, surface_side_style, surface_style_boundary, surface_style_control_grid, surface_style_fill_area, surface_style_parameter_line, surface_style_segmentation_curve, surface_style_silhouette, surface_style_usage, symbol_style, text_style)); +DERIVE + users : SET [0:?] OF founded_item_select := using_items(SELF,[]); +WHERE + WR1 : SIZEOF(users) > 0; + WR2 : NOT(SELF IN users); +END_ENTITY; + + +ENTITY frequency_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FREQUENCY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY frequency_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.hertz); +END_ENTITY; + + +ENTITY func + SUBTYPE OF (compound_representation_item); +END_ENTITY; + + +ENTITY functional_breakdown_context + SUBTYPE OF (breakdown_context); +END_ENTITY; + + +ENTITY functional_element_usage + SUBTYPE OF (breakdown_element_usage); +END_ENTITY; + + +ENTITY functionally_defined_transformation; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY general_material_property + SUBTYPE OF (general_property); +WHERE + WR1 : SIZEOF( QUERY( gpa <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GENERAL_PROPERTY_ASSOCIATION.BASE_DEFINITION') | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MATERIAL_PROPERTY' IN TYPEOF(gpa.derived_definition)) )) = 0; +END_ENTITY; + + +ENTITY general_property; + id : identifier; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY general_property_association; + name : label; + description : OPTIONAL text; + base_definition : general_property; + derived_definition : derived_property_select; +WHERE + WR1 : SIZEOF(USEDIN(derived_definition, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GENERAL_PROPERTY_ASSOCIATION.' + 'DERIVED_DEFINITION')) = 1; + WR2 : derived_definition.name = base_definition.name; +END_ENTITY; + + +ENTITY general_property_relationship; + name : label; + description : OPTIONAL text; + relating_property : general_property; + related_property : general_property; +END_ENTITY; + + +ENTITY generic_character_glyph_symbol + ABSTRACT SUPERTYPE + SUBTYPE OF (symbol_representation); +END_ENTITY; + + +ENTITY generic_expression + ABSTRACT SUPERTYPE OF (ONEOF (simple_generic_expression, unary_generic_expression, binary_generic_expression, multiple_arity_generic_expression)); +WHERE + WR1 : is_acyclic(SELF); +END_ENTITY; + + +ENTITY generic_literal + ABSTRACT SUPERTYPE + SUBTYPE OF (simple_generic_expression); +END_ENTITY; + + +ENTITY generic_variable + ABSTRACT SUPERTYPE + SUBTYPE OF (simple_generic_expression); +INVERSE + interpretation: environment FOR syntactic_representation; +END_ENTITY; + + +ENTITY geometric_alignment + SUBTYPE OF (derived_shape_aspect); +WHERE + WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)> 1; +END_ENTITY; + + +ENTITY geometric_curve_set + SUBTYPE OF (geometric_set); +WHERE + WR1 : SIZEOF(QUERY(temp <* SELF\geometric_set.elements | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE' IN TYPEOF(temp))) = 0; +END_ENTITY; + + +ENTITY geometric_intersection + SUBTYPE OF (derived_shape_aspect); +WHERE + WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)> 1; +END_ENTITY; + + +ENTITY geometric_item_specific_usage + SUBTYPE OF (item_identified_representation_usage); + SELF\item_identified_representation_usage.definition : geometric_item_specific_usage_select; + SELF\item_identified_representation_usage.identified_item : geometric_representation_item; + SELF\item_identified_representation_usage.used_representation : shape_representation; +END_ENTITY; + + +ENTITY geometric_model_element_relationship + SUBTYPE OF (geometric_representation_item, representation_item_relationship); + SELF\representation_item_relationship.related_representation_item : geometric_representation_item; + SELF\representation_item_relationship.relating_representation_item : geometric_representation_item; +UNIQUE + UR1 : relating_representation_item, related_representation_item; +WHERE + WR1 : SELF\representation_item_relationship.relating_representation_item :<>: + SELF\representation_item_relationship.related_representation_item; +END_ENTITY; + + +ENTITY geometric_representation_context + SUBTYPE OF (representation_context); + coordinate_space_dimension : dimension_count; +END_ENTITY; + + +ENTITY geometric_representation_item + SUPERTYPE OF (ONEOF (point, direction, vector, placement, cartesian_transformation_operator, curve, surface, edge_curve, face_surface, poly_loop, vertex_point, solid_model, boolean_result, sphere, right_circular_cone, right_circular_cylinder, torus, block, right_angular_wedge, half_space_solid, shell_based_surface_model, face_based_surface_model, shell_based_wireframe_model, edge_based_wireframe_model, geometric_set, camera_model, camera_model_d3_multi_clipping_intersection, camera_model_d3_multi_clipping_union, light_source)) + SUBTYPE OF (representation_item); +DERIVE + dim : dimension_count := dimension_of(SELF); +WHERE + WR1 : SIZEOF (QUERY (using_rep <* using_representations (SELF) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN + TYPEOF (using_rep.context_of_items)))) = 0; +END_ENTITY; + + +ENTITY geometric_set + SUBTYPE OF (geometric_representation_item); + elements : SET [1:?] OF geometric_set_select; +END_ENTITY; + + +ENTITY geometric_tolerance; + name : label; + description : text; + magnitude : measure_with_unit; + toleranced_shape_aspect : shape_aspect; +WHERE + WR1 : ('NUMBER' IN TYPEOF + (magnitude\measure_with_unit.value_component)) AND + (magnitude\measure_with_unit.value_component >= 0.0); +END_ENTITY; + + +ENTITY geometric_tolerance_relationship; + name : label; + description : text; + relating_geometric_tolerance : geometric_tolerance; + related_geometric_tolerance : geometric_tolerance; +END_ENTITY; + + +ENTITY geometric_tolerance_with_datum_reference + SUBTYPE OF (geometric_tolerance); + datum_system : SET [1:?] OF datum_reference; +END_ENTITY; + + +ENTITY geometric_tolerance_with_defined_unit + SUBTYPE OF (geometric_tolerance); + unit_size : measure_with_unit; +WHERE + WR1 : ('NUMBER' IN TYPEOF + (unit_size\measure_with_unit.value_component)) AND + (unit_size\measure_with_unit.value_component > 0.0); +END_ENTITY; + + +ENTITY geometrical_tolerance_callout + SUBTYPE OF (draughting_callout); +END_ENTITY; + + +ENTITY geometrically_bounded_2d_wireframe_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SELF.context_of_items\geometric_representation_context. + coordinate_space_dimension = 2; + WR2 : SIZEOF (QUERY (item <* SELF.items | + NOT (SIZEOF (TYPEOF (item) * +['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET', +'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_2D', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM']) = 1) + )) = 0; + WR3 : SIZEOF (QUERY (item <* SELF.items | + SIZEOF (TYPEOF (item) * +['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM']) = 1 + )) >= 1; + WR4 : SIZEOF (QUERY (mi <* QUERY (item <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF (item))) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'GEOMETRICALLY_BOUNDED_2D_WIREFRAME_REPRESENTATION' + IN TYPEOF + (mi\mapped_item.mapping_source.mapped_representation)) + )) = 0; + WR5 : SIZEOF (QUERY (gcs <* QUERY (item <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET' + IN TYPEOF (item))) | + NOT (SIZEOF (QUERY (elem <* gcs\geometric_set.elements | + NOT (SIZEOF (TYPEOF (elem) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELLIPSE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_2D', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TRIMMED_CURVE']) = + 1) + )) = 0) + )) = 0; + WR6 : SIZEOF (QUERY (gcs <* QUERY (item <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET' + IN TYPEOF (item))) | + NOT (SIZEOF (QUERY (crv <* + QUERY (elem <* gcs\geometric_set.elements | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE' + IN TYPEOF (elem))) | + NOT (valid_basis_curve_in_2d_wireframe + (crv)) + )) = 0) + )) = 0; + WR7 : SIZEOF (QUERY (gcs <* QUERY (item <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET' + IN TYPEOF (item))) | + NOT (SIZEOF (QUERY (pnt <* + QUERY (elem <* gcs\geometric_set.elements | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT' + IN TYPEOF(elem))) | + NOT (SIZEOF (TYPEOF (pnt) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE']) + = 1) + )) = 0) + )) = 0; +END_ENTITY; + + +ENTITY geometrically_bounded_surface_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF(QUERY(it <* SELF.items | NOT (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_SET', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D'] * TYPEOF(it)) = 1))) = 0; + WR2 : SIZEOF(QUERY(it <* SELF.items | SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_SET', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM'] * TYPEOF(it)) = 1)) > 0; + WR3 : SIZEOF(QUERY(mi <* QUERY(it <* SELF.items | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)) | NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRICALLY_BOUNDED_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 | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_SET' IN TYPEOF(mr_it)))) > 0)))) = 0; + WR4 : SIZEOF(QUERY(gs <* QUERY(it <* SELF.items | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_SET' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(pnt <* QUERY(gsel <* gs\geometric_set.elements | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT' IN TYPEOF(gsel)) | NOT (gbsf_check_point(pnt)))) = 0))) = 0; + WR5 : SIZEOF(QUERY(gs <* QUERY(it <* SELF.items | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_SET' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(cv <* QUERY(gsel <* gs\geometric_set.elements | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE' IN TYPEOF(gsel)) | NOT (gbsf_check_curve(cv)))) = 0))) = 0; + WR6 : SIZEOF(QUERY(gs <* QUERY(it <* SELF.items | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_SET' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(sf <* QUERY(gsel <* gs\geometric_set.elements | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE' IN TYPEOF(gsel)) | NOT (gbsf_check_surface(sf)))) = 0))) = 0; + WR7 : SIZEOF(QUERY(gs <* QUERY(it <* SELF.items | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_SET' IN TYPEOF(it)) | SIZEOF(QUERY(gsel <* gs\geometric_set.elements | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE' IN TYPEOF(gsel))) > 0)) > 0; +END_ENTITY; + + +ENTITY geometrically_bounded_wireframe_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF ( +QUERY ( it <* SELF.items| NOT ( SIZEOF ( TYPEOF (it) * [ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' ]) = 1) )) = 0; + WR2 : SIZEOF ( +QUERY ( it <* SELF.items| ( SIZEOF ( TYPEOF (it) * [ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' ]) = 1) )) >= 1; + WR3 : SIZEOF ( +QUERY ( gcs <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( crv <* +QUERY ( elem <* gcs\geometric_set.elements| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE' IN TYPEOF (elem)) )| NOT valid_geometrically_bounded_wf_curve(crv) )) = 0) )) = 0; + WR4 : SIZEOF ( +QUERY ( gcs <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( pnts <* +QUERY ( elem <* gcs\geometric_set.elements| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT' IN TYPEOF (elem)) )| NOT valid_geometrically_bounded_wf_point(pnts) )) = 0) )) = 0; + WR5 : SIZEOF ( +QUERY ( gcs <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( cnc <* +QUERY ( elem <* gcs\geometric_set.elements| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC' IN TYPEOF (elem)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF (cnc\conic.position)) )) = 0) )) = 0; + WR6 : SIZEOF ( +QUERY ( gcs <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( pline <* +QUERY ( elem <* gcs\geometric_set.elements| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF (elem)) )| NOT ( SIZEOF (pline\polyline.points) > 2) )) = 0) )) = 0; + WR7 : SIZEOF ( +QUERY ( mi <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0; +END_ENTITY; + + +ENTITY global_assignment + SUBTYPE OF (representation_item_relationship); +END_ENTITY; + + +ENTITY global_uncertainty_assigned_context + SUBTYPE OF (representation_context); + uncertainty : SET [1:?] OF uncertainty_measure_with_unit; +END_ENTITY; + + +ENTITY global_unit_assigned_context + SUBTYPE OF (representation_context); + units : SET [1:?] OF unit; +END_ENTITY; + + +ENTITY ground_fact + SUBTYPE OF (atomic_formula); +END_ENTITY; + + +ENTITY group; + name : label; + description : OPTIONAL text; +DERIVE + id : identifier := get_id_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY group_assignment + ABSTRACT SUPERTYPE; + assigned_group : group; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY group_relationship; + name : label; + description : OPTIONAL text; + relating_group : group; + related_group : group; +END_ENTITY; + + +ENTITY half_space_solid + SUBTYPE OF (geometric_representation_item); + base_surface : surface; + agreement_flag : BOOLEAN; +END_ENTITY; + + +ENTITY hardness_representation + SUBTYPE OF (representation); +WHERE + WR1 : ( {2<= SIZEOF ( SELF.items ) <=4} ) AND ( SIZEOF ( QUERY ( + i <* items | ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF ( i ) ) AND ( + i.name IN [ 'measuring method' , 'measuring position' ] ) ) + ) + SIZEOF ( QUERY ( i <* items | ( SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MEASURE_REPRESENTATION_ITEM' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'VALUE_RANGE']* TYPEOF ( i ) ) =1 ) + AND ( i.name IN ['depth' , 'hardness'] ) ) ) = SIZEOF ( + SELF.items ) ); + WR2 : SIZEOF ( QUERY ( i <* SELF.items | i.name = + 'measuring method' ) ) =1; + WR3 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='hardness' ) ) + =1; + WR4 : SIZEOF ( QUERY ( i <* SELF.items | i.name = + 'measuring position' ) ) <=1; + WR5 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='depth' ) ) + <=1; + WR6 : ( SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) ) =1 ) AND ( SIZEOF ( QUERY ( pdr + <* USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) | SIZEOF ( QUERY ( gpa <* USEDIN ( + pdr. definition , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'GENERAL_PROPERTY_ASSOCIATION.'+ + 'DERIVED_DEFINITION' ) | ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'GENERAL_PROPERTY' IN TYPEOF ( gpa. base_definition ) ) AND + ( gpa. base_definition.name ='surface_condition' ) ) ) =1 ) + ) =1 ); +END_ENTITY; + + +ENTITY hidden_element_over_riding_styled_item + SUBTYPE OF (context_dependent_over_riding_styled_item); + SELF\styled_item.item : camera_image; + SELF\context_dependent_over_riding_styled_item.style_context : LIST [1:1] OF presentation_view; +INVERSE + container: SET [1:?] OF presentation_view FOR items; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CAMERA_MODEL_D3_WITH_HLHSR' IN TYPEOF + (SELF.item\mapped_item.mapping_source.mapping_origin); +END_ENTITY; + + +ENTITY hyperbola + SUBTYPE OF (conic); + semi_axis : positive_length_measure; + semi_imag_axis : positive_length_measure; +END_ENTITY; + + +ENTITY id_attribute; + attribute_value : identifier; + identified_item : id_attribute_select; +END_ENTITY; + + +ENTITY identification_assignment + ABSTRACT SUPERTYPE; + assigned_id : identifier; + role : identification_role; +END_ENTITY; + + +ENTITY identification_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY illuminance_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ILLUMINANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY illuminance_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.lux); +END_ENTITY; + + +ENTITY included_text_block + SUBTYPE OF (mapped_item); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRUCTURED_TEXT_REPRESENTATION' IN TYPEOF(SELF\mapped_item.mapping_source.mapped_representation); +END_ENTITY; + + +ENTITY inclusion_product_concept_feature + SUBTYPE OF (conditional_concept_feature); +WHERE + WR1 : NOT ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PACKAGE_PRODUCT_CONCEPT_FEATURE' IN TYPEOF ( SELF ) ); + WR2 : SIZEOF (QUERY + ( cfr <* USEDIN + ( SELF ,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP.RELATING_PRODUCT_CONCEPT_FEATURE' ) + | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN TYPEOF( cfr ) + ) + ) + + SIZEOF(QUERY + ( cfr <* USEDIN + (SELF , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP.RELATED_PRODUCT_CONCEPT_FEATURE' ) + | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN TYPEOF(cfr) + ) + )= 0; + WR3 : SELF.condition.conditional_operator.name = 'implication'; +END_ENTITY; + + +ENTITY indirectly_selected_elements + SUBTYPE OF (user_selected_elements); + indirectly_picked_items : SET [1:?] OF representation_item; +END_ENTITY; + + +ENTITY indirectly_selected_shape_elements + SUBTYPE OF (indirectly_selected_elements, user_selected_shape_elements); +WHERE + WR1 : SIZEOF(QUERY(q <* + SELF\indirectly_selected_elements.indirectly_picked_items + | NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION_ITEM' + IN TYPEOF(q)))) = 0; +END_ENTITY; + + +ENTITY inductance_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INDUCTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY inductance_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.henry); +END_ENTITY; + + +ENTITY information_right + SUBTYPE OF (action_method); +END_ENTITY; + + +ENTITY information_usage_right + SUBTYPE OF (action_method); +END_ENTITY; + + +ENTITY instance_usage_context_assignment + SUBTYPE OF (product_definition_context); + items : SET [1:?] OF instance_usage_context_select; +END_ENTITY; + + +ENTITY instanced_feature + SUBTYPE OF (shape_aspect, shape_feature_definition); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN + TYPEOF(SELF\shape_aspect.of_shape.definition); + WR2 : SELF\shape_aspect.product_definitional; +END_ENTITY; + + +ENTITY int_literal + SUBTYPE OF (literal_number); + SELF\literal_number.the_value : INTEGER; +END_ENTITY; + + +ENTITY integer_representation_item + SUBTYPE OF (representation_item, int_literal); +END_ENTITY; + + +ENTITY intersection_curve + SUBTYPE OF (surface_curve); +WHERE + WR1 : SIZEOF(SELF\surface_curve.associated_geometry) = 2; + WR2 : associated_surface(SELF\surface_curve.associated_geometry[1]) <> + associated_surface(SELF\surface_curve.associated_geometry[2]); +END_ENTITY; + + +ENTITY interval_expression + SUBTYPE OF (boolean_expression, multiple_arity_generic_expression); +DERIVE + interval_high : generic_expression := SELF\multiple_arity_generic_expression.operands[3]; + interval_item : generic_expression := SELF\multiple_arity_generic_expression.operands[2]; + interval_low : generic_expression := SELF\multiple_arity_generic_expression.operands[1]; +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EXPRESSION' + IN TYPEOF(interval_low)) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EXPRESSION' + IN TYPEOF(interval_item) ) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EXPRESSION' + IN TYPEOF(interval_high)); + WR2 : (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_EXPRESSION' + IN TYPEOF (SELF.interval_low)) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_EXPRESSION' + IN TYPEOF (SELF.interval_high)) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_EXPRESSION' + IN TYPEOF (SELF.interval_item))) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_EXPRESSION' + IN TYPEOF(SELF.interval_low)) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NUMERIC_EXPRESSION' + IN TYPEOF(SELF.interval_item)) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NUMERIC_EXPRESSION' + IN TYPEOF(SELF.interval_high))); +END_ENTITY; + + +ENTITY invisibility; + invisible_items : SET [1:?] OF invisible_item; +END_ENTITY; + + +ENTITY iso4217_currency + SUBTYPE OF (currency); +END_ENTITY; + + +ENTITY item_defined_transformation; + name : label; + description : OPTIONAL text; + transform_item_1 : representation_item; + transform_item_2 : representation_item; +END_ENTITY; + + +ENTITY item_identified_representation_usage; + name : label; + description : OPTIONAL text; + definition : represented_definition; + used_representation : representation; + identified_item : representation_item; +WHERE + WR1 : SELF.used_representation IN using_representations(SELF.identified_item); +END_ENTITY; + + +ENTITY known_source + SUBTYPE OF (external_source, pre_defined_item); +END_ENTITY; + + +ENTITY laid_defined_transformation + SUBTYPE OF (transformation_with_derived_angle); +END_ENTITY; + + +ENTITY laminate_table + SUPERTYPE OF (ONEOF (part_laminate_table, zone_structural_makeup)) + SUBTYPE OF (product_definition); +END_ENTITY; + + +ENTITY language + SUBTYPE OF (group); +WHERE + WR1 : SELF\group.name <> ''; +END_ENTITY; + + +ENTITY leader_curve + SUBTYPE OF (annotation_curve_occurrence); +WHERE + WR1 : SIZEOF( + QUERY(ldc <* USEDIN( SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_CALLOUT.CONTENTS') + | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'LEADER_DIRECTED_CALLOUT' IN TYPEOF(ldc))) >= 1; +END_ENTITY; + + +ENTITY leader_directed_callout + SUBTYPE OF (draughting_callout); +WHERE + WR1 : SIZEOF (QUERY (l_1 <* SELF\draughting_callout.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_CURVE' IN (TYPEOF(l_1)))) >= 1; + WR2 : SIZEOF(SELF\draughting_callout.contents) >=2; +END_ENTITY; + + +ENTITY leader_directed_dimension + SUBTYPE OF (leader_directed_callout); +WHERE + WR1 : SIZEOF (QUERY (con <* SELF.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_CURVE' IN TYPEOF (con)))=1; +END_ENTITY; + + +ENTITY leader_terminator + SUBTYPE OF (terminator_symbol); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_CURVE' IN TYPEOF + (SELF\terminator_symbol.annotated_curve); +END_ENTITY; + + +ENTITY length_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY length_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 1.0) AND + (SELF\named_unit.dimensions.mass_exponent = 0.0) AND + (SELF\named_unit.dimensions.time_exponent = 0.0) AND + (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND + (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND + (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND + (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY light_source + SUPERTYPE OF (ONEOF (light_source_ambient, light_source_directional, light_source_positional, light_source_spot)) + SUBTYPE OF (geometric_representation_item); + light_colour : colour; +WHERE + WR1 : SIZEOF(USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'STYLED_ITEM.ITEM')) = 0; +END_ENTITY; + + +ENTITY light_source_ambient + SUBTYPE OF (light_source); +END_ENTITY; + + +ENTITY light_source_directional + SUBTYPE OF (light_source); + orientation : direction; +END_ENTITY; + + +ENTITY light_source_positional + SUBTYPE OF (light_source); + position : cartesian_point; + constant_attenuation : REAL; + distance_attenuation : REAL; +END_ENTITY; + + +ENTITY light_source_spot + SUBTYPE OF (light_source); + position : cartesian_point; + orientation : direction; + concentration_exponent : REAL; + constant_attenuation : REAL; + distance_attenuation : REAL; + spread_angle : positive_plane_angle_measure; +END_ENTITY; + + +ENTITY limits_and_fits; + form_variance : label; + zone_variance : label; + grade : label; + source : text; +END_ENTITY; + + +ENTITY line + SUBTYPE OF (curve); + pnt : cartesian_point; + dir : vector; +WHERE + WR1 : dir.dim = pnt.dim; +END_ENTITY; + + +ENTITY line_profile_tolerance + SUBTYPE OF (geometric_tolerance); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)) OR ( SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 3); + WR2 : SIZEOF ( +QUERY ( sar <* USEDIN (SELF\geometric_tolerance.toleranced_shape_aspect, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| (sar.name IN [ 'affected plane association', 'resulting intersection curve association' ]) )) = 1; +END_ENTITY; + + +ENTITY linear_dimension + SUBTYPE OF (dimension_curve_directed_callout); +END_ENTITY; + + +ENTITY literal_conjunction + SUBTYPE OF (simple_clause); +END_ENTITY; + + +ENTITY literal_disjunction + SUBTYPE OF (simple_clause); +END_ENTITY; + + +ENTITY literal_number + ABSTRACT SUPERTYPE OF (ONEOF (int_literal, real_literal)) + SUBTYPE OF (simple_numeric_expression, generic_literal); + the_value : NUMBER; +END_ENTITY; + + +ENTITY local_time; + hour_component : hour_in_day; + minute_component : OPTIONAL minute_in_hour; + second_component : OPTIONAL second_in_minute; + zone : coordinated_universal_time_offset; +WHERE + WR1 : valid_time (SELF); +END_ENTITY; + + +ENTITY logical_literal + SUBTYPE OF (generic_literal); + lit_value : LOGICAL; +END_ENTITY; + + +ENTITY logical_representation_item + SUBTYPE OF (representation_item, logical_literal); +END_ENTITY; + + +ENTITY loop + SUPERTYPE OF (ONEOF (vertex_loop, edge_loop, poly_loop)) + SUBTYPE OF (topological_representation_item); +END_ENTITY; + + +ENTITY loss_tangent_measure_with_unit + SUBTYPE OF (ratio_measure_with_unit); +END_ENTITY; + + +ENTITY lot_effectivity + SUBTYPE OF (effectivity); + effectivity_lot_id : identifier; + effectivity_lot_size : measure_with_unit; +END_ENTITY; + + +ENTITY luminous_flux_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LUMINOUS_FLUX_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY luminous_flux_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.lumen); +END_ENTITY; + + +ENTITY luminous_intensity_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LUMINOUS_INTENSITY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY luminous_intensity_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 1.0); +END_ENTITY; + + +ENTITY magnetic_flux_density_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAGNETIC_FLUX_DENSITY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY magnetic_flux_density_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.tesla); +END_ENTITY; + + +ENTITY magnetic_flux_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAGNETIC_FLUX_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY magnetic_flux_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.weber); +END_ENTITY; + + +ENTITY make_from_usage_option + SUBTYPE OF (product_definition_usage); + ranking : INTEGER; + ranking_rationale : text; + quantity : measure_with_unit; +WHERE + WR1 : (NOT ('NUMBER' IN TYPEOF(quantity.value_component))) + OR (quantity.value_component > 0); +END_ENTITY; + + +ENTITY manifold_solid_brep + SUBTYPE OF (solid_model); + outer : closed_shell; +END_ENTITY; + + +ENTITY manifold_subsurface_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF (QUERY (it <* SELF.items | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D'] * + TYPEOF(it)) = 1))) = 0; + WR2 : SIZEOF (QUERY (it <* SELF.items | + SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM'] * TYPEOF(it)) =1 )) > 0; + WR3 : SIZEOF (QUERY (mi <* QUERY (it <* items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SUBSURFACE_SHAPE_REPRESENTATION' IN + TYPEOF(mi\mapped_item.mapping_source. + mapped_representation)))) = 0; + WR4 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OPEN_SHELL' IN TYPEOF(cfss)))) = 0; + WR5 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT( (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN + TYPEOF(cfss\connected_face_sub_set.parent_face_set))AND + (SIZEOF(QUERY(fac <* cfss\connected_face_sub_set.parent_face_set\connected_face_set.cfs_faces | NOT + advanced_face_properties(fac))) = 0)) OR + (SIZEOF(QUERY(fac <* cfss\connected_face_sub_set.parent_face_set\connected_face_set.cfs_faces | NOT + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF(fac)))) = 0) + ))) = 0; + WR6 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + ( SIZEOF (QUERY (fac <* cfss\connected_face_set.cfs_faces | NOT + advanced_face_properties(fac))) = 0))) = 0; + WR7 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND + NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN + TYPEOF(oe.edge_element)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBEDGE' IN + TYPEOF(oe.edge_element)) ))) = 0 + ))) = 0 + ))) = 0 + ))) = 0; + WR8 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND + NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF(oe.edge_start)) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN + TYPEOF(oe.edge_end)) + ))) = 0 + ))) = 0 + ))) = 0 + ))) = 0; + WR9 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND + ( NOT (SIZEOF(QUERY (bnds <* fcs.bounds | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP'] * + TYPEOF(bnds.bound)) = 1 ) + )) = 0) + ))) = 0 + ))) = 0; + WR10 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND + ( NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' ] * + TYPEOF(oe.edge_element\edge_curve.edge_geometry)) = 1 ) + )) = 0 + ))) = 0 + )))) = 0 + ))) = 0; + WR11 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND + (NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN + TYPEOF(oe.edge_element\edge_curve.edge_geometry)) AND + (NOT ((SIZEOF (QUERY (sc_ag <* + oe.edge_element\edge_curve.edge_geometry\ + surface_curve.associated_geometry | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN + TYPEOF(sc_ag)))) = 0))) + )) = 0 + ))) = 0 + )))) = 0 + ))) = 0; + WR12 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND + (NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN + TYPEOF(oe.edge_element\edge_curve.edge_geometry)) AND + (NOT (SIZEOF (oe\oriented_edge.edge_element\ + edge_curve.edge_geometry\polyline.points) >= 3)) + )) = 0 + ))) = 0 + )))) = 0 + ))) = 0; +END_ENTITY; + + +ENTITY manifold_surface_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF (QUERY (it <* SELF.items | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D'] * TYPEOF (it)) = 1))) = 0; + WR2 : SIZEOF (QUERY (it <* SELF.items | + SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM'] * TYPEOF (it)) = 1)) > 0; + WR3 : SIZEOF (QUERY (mi <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL' + IN TYPEOF (mr_it)))) > 0 )))) = 0; + WR4 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (sh <* + sbsm\shell_based_surface_model.sbsm_boundary | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OPEN_SHELL', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_CLOSED_SHELL', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CLOSED_SHELL'] + * TYPEOF (sh)) = 1))) = 0))) = 0; + WR5 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE' IN TYPEOF (fa)) )) = 0))) + = 0))) = 0; + WR6 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (bnds <* fa.bounds | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP'] + * TYPEOF (bnds.bound)) = 1))) = 0)))) = 0))) = 0))) = 0; + WR8 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items| + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN TYPEOF + (oe.edge_element)))) = 0))) = 0)))) = 0))) = 0))) = 0; + WR9 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe_cv <* QUERY (oe <* + elp_fbnds\path.edge_list | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN TYPEOF (oe.edge_element)) | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list| + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF + (oe.edge_element.edge_start)) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN + TYPEOF (oe.edge_element.edge_end))))) + = 0))) = 0)))) = 0))) = 0))) = 0; + WR12 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list | + NOT ((SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEGENERATE_PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_SURFACE'] * TYPEOF + (oe.edge_element.edge_start\vertex_point.vertex_geometry)) = 1) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEGENERATE_PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF + (vlp_fbnds\vertex_loop.loop_vertex)))) = 0)))) = 0))) + = 0))) = 0; + WR14 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEGENERATE_PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_SURFACE'] * TYPEOF + (vlp_fbnds\vertex_loop.loop_vertex\vertex_point.vertex_geometry)) + = 1))) = 0)))) = 0))) = 0))) = 0; +END_ENTITY; + + +ENTITY mapped_item + SUBTYPE OF (representation_item); + mapping_source : representation_map; + mapping_target : representation_item; +WHERE + WR1 : acyclic_mapped_representation(SELF); +END_ENTITY; + + +ENTITY mass_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MASS_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY mass_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 1.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY material_designation; + name : label; + definitions : SET [1:?] OF characterized_definition; +END_ENTITY; + + +ENTITY material_designation_characterization; + name : label; + description : text; + designation : material_designation; + property : characterized_material_property; +END_ENTITY; + + +ENTITY material_property + SUBTYPE OF (property_definition); +UNIQUE + UR1: SELF\property_definition.name, SELF\property_definition.definition; +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CHARACTERIZED_OBJECT' IN + TYPEOF(SELF\property_definition.definition)) OR + (SIZEOF(bag_to_set(USEDIN(SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) - + QUERY(temp <* bag_to_set(USEDIN(SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'MATERIAL_PROPERTY_REPRESENTATION' IN + TYPEOF(temp)))) = 0); +END_ENTITY; + + +ENTITY material_property_representation + SUBTYPE OF (property_definition_representation); + dependent_environment : data_environment; +END_ENTITY; + + +ENTITY measure_qualification; + name : label; + description : text; + qualified_measure : measure_with_unit; + qualifiers : SET [1:?] OF value_qualifier; +WHERE + WR1 : SIZEOF(QUERY(temp <* qualifiers | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRECISION_QUALIFIER' + IN TYPEOF(temp))) < 2; + WR2 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION_ITEM' + IN TYPEOF(SELF\measure_qualification.qualified_measure)); +END_ENTITY; + + +ENTITY measure_representation_item + SUBTYPE OF (representation_item, measure_with_unit); +END_ENTITY; + + +ENTITY measure_with_unit + SUPERTYPE OF (ONEOF (length_measure_with_unit, mass_measure_with_unit, time_measure_with_unit, electric_current_measure_with_unit, thermodynamic_temperature_measure_with_unit, celsius_temperature_measure_with_unit, amount_of_substance_measure_with_unit, luminous_intensity_measure_with_unit, plane_angle_measure_with_unit, solid_angle_measure_with_unit, area_measure_with_unit, volume_measure_with_unit, ratio_measure_with_unit, acceleration_measure_with_unit, capacitance_measure_with_unit, electric_charge_measure_with_unit, conductance_measure_with_unit, electric_potential_measure_with_unit, energy_measure_with_unit, magnetic_flux_density_measure_with_unit, force_measure_with_unit, frequency_measure_with_unit, illuminance_measure_with_unit, inductance_measure_with_unit, luminous_flux_measure_with_unit, magnetic_flux_measure_with_unit, power_measure_with_unit, pressure_measure_with_unit, resistance_measure_with_unit, velocity_measure_with_unit, absorbed_dose_measure_with_unit, radioactivity_measure_with_unit, dose_equivalent_measure_with_unit)); + value_component : measure_value; + unit_component : unit; +WHERE + WR1 : valid_units(SELF); +END_ENTITY; + + +ENTITY mechanical_context + SUBTYPE OF (product_context); +WHERE + WR1 : SELF.discipline_type = 'mechanical'; +END_ENTITY; + + +ENTITY mechanical_design_and_draughting_relationship + SUBTYPE OF (definitional_representation_relationship_with_same_context); + SELF\representation_relationship.rep_1 : mechanical_design_and_draughting_relationship_select; + SELF\representation_relationship.rep_2 : mechanical_design_and_draughting_relationship_select; +WHERE + WR1 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'DRAUGHTING_MODEL' IN TYPEOF(rep_2)) OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'DRAUGHTING_MODEL' IN TYPEOF(rep_1)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'SHAPE_REPRESENTATION' IN TYPEOF(rep_1))); + WR2 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION' IN TYPEOF(rep_2)) OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION' IN TYPEOF(rep_1)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'SHAPE_REPRESENTATION' IN TYPEOF(rep_1))); + WR3 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION' IN TYPEOF(rep_2)) OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION' IN TYPEOF(rep_1)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'SHAPE_REPRESENTATION' IN TYPEOF(rep_1))); +END_ENTITY; + + +ENTITY mechanical_design_geometric_presentation_area + SUBTYPE OF (presentation_area); + SELF\representation.items : SET [1:?] OF mechanical_design_geometric_presentation_area_items; +WHERE + WR1 : SIZEOF(QUERY(it1 <* SELF.items | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(it1)) + OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_VIEW' + IN TYPEOF + (it1\mapped_item.mapping_source.mapped_representation)))) = 0; + WR2 : SIZEOF(QUERY(pv <* QUERY(mi1 <* QUERY(it1 <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(it1)) | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_VIEW' + IN TYPEOF + (mi1\mapped_item.mapping_source.mapped_representation)) | + -- search in all presentation_views for axis2_placements and + -- mapped_items and for the subtype of mapped_item + -- camera_image_3d_with_scale; the latter shall reference + -- a mechanical_design_geometric_presentation_representation; + -- the supertype mapped_item shall reference presentation_view. + NOT (SIZEOF(QUERY(it2 <* pv\mapped_item.mapping_source. + mapped_representation\representation.items | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT' + IN TYPEOF(it2)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(it2)) AND NOT + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(it2))) AND NOT ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_VIEW' + IN TYPEOF + (it2\mapped_item.mapping_source.mapped_representation))) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(it2)) + AND NOT ( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION' + IN TYPEOF (it2\mapped_item.mapping_source.mapped_representation) )) + ))) = 0))) = 0; + WR3 : (SIZEOF(QUERY(ps <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') | ((ps.size\planar_extent.size_in_x <= 0) + OR + (ps.size\planar_extent.size_in_y <= 0)))) = 0) + AND + (SIZEOF(QUERY(ais <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AREA_IN_SET.AREA') | + (SIZEOF(QUERY(ps <* USEDIN (ais, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') | + ((ps.size\planar_extent.size_in_x <= 0) + OR + (ps.size\planar_extent.size_in_y <= 0)))) > 0))) = 0); + WR4 : (SIZEOF(QUERY(ps <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_2D' IN TYPEOF (ps.size.placement)))) = 1) + AND + (SIZEOF(QUERY(ps <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_3D' IN TYPEOF (ps.size.placement)))) = 0) + OR + ((SIZEOF(QUERY(ais <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AREA_IN_SET.AREA') | + (SIZEOF(QUERY(ps <* USEDIN (ais, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_2D' IN TYPEOF (ps.size.placement)))) = 1))) = 1) + AND + (SIZEOF(QUERY(ais <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AREA_IN_SET.AREA') | + (SIZEOF(QUERY(ps <* USEDIN (ais, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_3D' IN TYPEOF (ps.size.placement)))) = 0))) = 1)); +END_ENTITY; + + +ENTITY mechanical_design_geometric_presentation_representation + SUBTYPE OF (representation); + SELF\representation.items : SET [1:?] OF mechanical_design_geometric_presentation_representation_items; +WHERE + WR1 : SIZEOF(QUERY(mi <* QUERY(it <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(it))) | NOT (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SHAPE_REPRESENTATION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION'] + * TYPEOF(mi\mapped_item.mapping_source.mapped_representation)) + = 1))) = 0; + WR2 : SIZEOF(QUERY(smi <* QUERY(si <* QUERY(it <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it))) | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(si\styled_item.item))) | NOT ( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SHAPE_REPRESENTATION' IN TYPEOF (smi\styled_item. + item\mapped_item.mapping_source.mapped_representation))) )) = 0; + WR3 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(pss <* psa.styles | NOT (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_STYLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE'] + * TYPEOF(pss)) = 1))) = 0))) = 0))) = 0; + WR4 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | + NOT (SIZEOF(QUERY(psbc <* QUERY(psa <* si\styled_item.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_STYLE_BY_CONTEXT' IN TYPEOF(psa)) | NOT (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION'] + * TYPEOF(psbc\presentation_style_by_context.style_context)) + = 1))) = 0))) = 0; + WR5 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ps <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_STYLE' + IN TYPEOF(pss)) | NOT + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF (ps\point_style.marker_size)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_COLOUR'] + * TYPEOF(ps\point_style.marker_colour)) + = 1)))) = 0))) = 0))) = 0; + WR6 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(cs <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF(pss)) | NOT((SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_COLOUR'] + * TYPEOF(cs\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF (cs\curve_style.curve_width)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_FONT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] + * TYPEOF(cs\curve_style.curve_font)) = 1)))) = 0))) = 0))) = 0; + WR7 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF(pss)) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_SIDE_STYLE' IN TYPEOF + (ssu\surface_style_usage.style)))) = 0))) = 0))) = 0; + WR8 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + NOT (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_PARAMETER_LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_CONTROL_GRID', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_SILHOUETTE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_SEGMENTATION_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_FILL_AREA', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_BOUNDARY'] + * TYPEOF(sses)) = 1))) = 0))) = 0))) = 0))) = 0; + WR9 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sspl <* QUERY(sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_PARAMETER_LINE' IN TYPEOF(sses)) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF + (sspl\surface_style_parameter_line.style_of_parameter_lines)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_COLOUR'] + * TYPEOF(sspl\surface_style_parameter_line. + style_of_parameter_lines\curve_style.curve_colour)) = 1) + AND ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sspl\surface_style_parameter_line. + style_of_parameter_lines\curve_style.curve_width)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_FONT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] + * TYPEOF(sspl\surface_style_parameter_line. + style_of_parameter_lines\curve_style.curve_font)) = 1)))) + = 0))) = 0))) = 0))) = 0; + WR10 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sscg <* QUERY(sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_CONTROL_GRID' IN TYPEOF(sses)) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (sscg\surface_style_control_grid.style_of_control_grid)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_COLOUR'] + * TYPEOF(sscg\surface_style_control_grid. + style_of_control_grid\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sscg\surface_style_control_grid. + style_of_control_grid\curve_style.curve_width)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_FONT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] + * TYPEOF(sscg\surface_style_control_grid. + style_of_control_grid\curve_style.curve_font)) = 1)))) + = 0))) = 0))) = 0))) = 0; + WR11 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | + NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sssh <* QUERY(sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_SILHOUETTE' IN TYPEOF(sses)) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (sssh\surface_style_silhouette.style_of_silhouette)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_COLOUR'] + * TYPEOF(sssh\surface_style_silhouette. + style_of_silhouette\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sssh\surface_style_silhouette.style_of_silhouette\curve_style. + curve_width)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_FONT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] + * TYPEOF(sssh\surface_style_silhouette. + style_of_silhouette\curve_style.curve_font)) = 1)))) + = 0))) = 0))) = 0))) = 0; + WR12 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sssc <* QUERY(sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_SEGMENTATION_CURVE' IN TYPEOF(sses)) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF + (sssc\surface_style_segmentation_curve.style_of_segmentation_curve)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_COLOUR'] + * TYPEOF(sssc\surface_style_segmentation_curve. + style_of_segmentation_curve\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sssc\surface_style_segmentation_curve. + style_of_segmentation_curve\curve_style.curve_width)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_FONT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] + * TYPEOF(sssc\surface_style_segmentation_curve. + style_of_segmentation_curve\curve_style.curve_font)) = 1)))) + = 0))) = 0))) = 0))) = 0; + WR13 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(ssbd <* QUERY(sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_BOUNDARY' IN TYPEOF(sses)) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (ssbd\surface_style_boundary.style_of_boundary)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_COLOUR'] + * TYPEOF(ssbd\surface_style_boundary. + style_of_boundary\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF (ssbd\surface_style_boundary. + style_of_boundary\curve_style.curve_width)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_FONT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] + * TYPEOF(ssbd\surface_style_boundary. + style_of_boundary\curve_style.curve_font)) = 1)))) = 0))) + = 0))) = 0))) = 0; +END_ENTITY; + + +ENTITY mechanical_design_presentation_representation_with_draughting + SUBTYPE OF (representation); + SELF\representation.items : SET [1:?] OF camera_model_d3; +END_ENTITY; + + +ENTITY mechanical_design_shaded_presentation_area + SUBTYPE OF (presentation_area); +WHERE + WR1 : SIZEOF (QUERY (it1 <* SELF.items | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT' + IN TYPEOF (it1)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF (it1)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_VIEW' + IN TYPEOF + (it1\mapped_item.mapping_source.mapped_representation)))))) = 0; + WR2 : SIZEOF (QUERY (pv <* QUERY (mi1 <* QUERY (it1 <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF (it1)) | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_VIEW' + IN TYPEOF + (mi1\mapped_item.mapping_source.mapped_representation)) | + (* search in all presentation_views for axis2_placements and + mapped_items and for the subtype of mapped_item, + camera_image_3d_with_scale; the latter shall reference + a mechanical_design_geometric_presentation_representation; + the supertype mapped_item shall reference presentation_view. *) + NOT (SIZEOF(QUERY(it2 <* pv\mapped_item.mapping_source. + mapped_representation\representation.items | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT' + IN TYPEOF(it2)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(it2)) AND NOT + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(it2))) AND NOT ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_VIEW' + IN TYPEOF + (it2\mapped_item.mapping_source.mapped_representation))) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(it2)) + AND NOT ( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION' + IN TYPEOF (it2\mapped_item.mapping_source.mapped_representation) )) + ))) = 0))) = 0; + WR3 : (SIZEOF (QUERY(ps <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') | + NOT ((ps.size\planar_extent.size_in_x > 0) + AND (ps.size\planar_extent.size_in_y > 0)) )) = 0) + AND + (* check secondly for presentation_set, via area_in_set *) + (SIZEOF (QUERY(pset <* QUERY(ais <* + USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AREA_IN_SET.AREA') + | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SET' IN TYPEOF (ais.in_set)) | + (* after having collected all presentation_set, check their sizes *) + SIZEOF (QUERY(psize <* USEDIN(pset, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') + | NOT ((psize.size\planar_extent.size_in_x > 0) + AND (psize.size\planar_extent.size_in_y > 0)) )) = 0)) = 0); + WR4 : (SIZEOF(QUERY( psize <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') + | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_2D' + IN TYPEOF (psize.size.placement))) = 1) + AND + (* check secondly for presentation_set, via area_in_set *) + (SIZEOF (QUERY(pset <* QUERY(ais <* + USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AREA_IN_SET.AREA') + | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SET' IN TYPEOF (ais.in_set)) | + (* after having collected all presentation_set, check their + dimension *) + SIZEOF (QUERY(psize <* USEDIN(pset, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') + | NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_2D' + IN TYPEOF (psize.size.placement)) )) = 0)) = 0); + WR5 : SIZEOF (QUERY (pv <* QUERY (mi1 <* QUERY (it1 <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF (it1)) | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_VIEW' + IN TYPEOF + (mi1\mapped_item.mapping_source.mapped_representation)) | + (* search in all presentation_views for + mapped_items and for the subtype of mapped_item, + camera_image_3d_with_scale; the latter shall reference + a camera_usage that shall have as its mapping_origin either + camera_model_d3, camera_model_d3_with_hlhsr, or + camera_model_with_light_sources. *) + NOT (SIZEOF(QUERY(ci <* pv\mapped_item.mapping_source. + mapped_representation\representation.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(ci)) + AND + (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CAMERA_MODEL_D3', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CAMERA_MODEL_D3_WITH_HLHSR', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CAMERA_MODEL_WITH_LIGHT_SOURCES'] * TYPEOF + (ci\mapped_item.mapping_source.mapping_origin)) + = 1))) = 0))) = 0; +END_ENTITY; + + +ENTITY mechanical_design_shaded_presentation_representation + SUBTYPE OF (representation); +WHERE + WR1 : SIZEOF(QUERY(it <* SELF.items | + NOT (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CAMERA_MODEL_D3'] + * TYPEOF(it)) = 1))) = 0; + WR2 : SIZEOF(QUERY(mi <* QUERY(it <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(it))) | NOT (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SHAPE_REPRESENTATION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION'] + * TYPEOF(mi\mapped_item.mapping_source.mapped_representation)) + = 1))) = 0; + WR3 : SIZEOF(QUERY(smi <* QUERY(si <* QUERY(it <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it))) | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(si\styled_item.item))) | NOT ( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SHAPE_REPRESENTATION' IN TYPEOF (smi\styled_item. + item\mapped_item.mapping_source.mapped_representation))) )) = 0; + WR4 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (pss <* psa.styles | + NOT (SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_STYLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE'] + * TYPEOF (pss)) = 1))) = 0))) = 0))) = 0; + WR5 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psbc <* QUERY (psa <* si\styled_item.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'PRESENTATION_STYLE_BY_CONTEXT' IN TYPEOF (psa)) | + NOT (SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION'] + * TYPEOF (psbc\presentation_style_by_context.style_context)) = 1))) + = 0))) = 0; + WR6 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ps <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_STYLE' + IN TYPEOF (pss)) | + NOT ( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MARKER_TYPE' + IN TYPEOF (ps\point_style.marker)) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF + (ps\point_style.marker_size)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (ps\point_style.marker_colour)) = 1)))) = 0))) = 0))) = 0; + WR7 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (cs <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (pss)) | + NOT ( + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (cs\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF + (cs\curve_style.curve_width)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CURVE_STYLE_FONT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF + (cs\curve_style.curve_font)) = 1)))) = 0))) = 0))) = 0; + WR8 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_SIDE_STYLE' + IN TYPEOF (ssu\surface_style_usage.style)) )) = 0))) = 0 ))) = 0; + WR9 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + NOT (SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_PARAMETER_LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_CONTROL_GRID', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_SILHOUETTE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_SEGMENTATION_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_BOUNDARY', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_FILL_AREA', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_RENDERING'] * TYPEOF (sses)) = 1))) = 0))) = 0))) + = 0))) = 0; + WR10 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (ssfa <* QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_FILL_AREA' + IN TYPEOF (sses)) | + NOT (SIZEOF (QUERY (fss <* + ssfa\surface_style_fill_area.fill_area.fill_styles | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'FILL_AREA_STYLE_COLOUR' IN TYPEOF (fss)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (fss\fill_area_style_colour.fill_colour)) = 1)))) = 0))) = 0))) + = 0))) = 0))) = 0; + WR11 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (sspl <* QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_PARAMETER_LINE' IN TYPEOF (sses)) | + NOT (( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' IN TYPEOF + (sspl\surface_style_parameter_line.style_of_parameter_lines)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sspl\surface_style_parameter_line. + style_of_parameter_lines\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sspl\surface_style_parameter_line. + style_of_parameter_lines\curve_style.curve_width)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CURVE_STYLE_FONT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF + (sspl\surface_style_parameter_line. + style_of_parameter_lines\curve_style.curve_font)) = 1)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_RENDERING' + IN TYPEOF + (sspl\surface_style_parameter_line.style_of_parameter_lines)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sspl\surface_style_parameter_line.style_of_parameter_lines\ + curve_style_rendering.rendering_properties.rendered_colour)) + = 1))) )) = 0))) = 0))) = 0))) = 0; + WR12 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (sscg <* QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_CONTROL_GRID' IN TYPEOF (sses)) | + NOT (( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (sscg\surface_style_control_grid.style_of_control_grid)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sscg\surface_style_control_grid. + style_of_control_grid\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sscg\surface_style_control_grid. + style_of_control_grid\curve_style.curve_width)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CURVE_STYLE_FONT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF + (sscg\surface_style_control_grid. + style_of_control_grid\curve_style.curve_font)) = 1)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_RENDERING' + IN TYPEOF (sscg\surface_style_control_grid.style_of_control_grid)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sscg\surface_style_control_grid.style_of_control_grid\ + curve_style_rendering.rendering_properties.rendered_colour)) + = 1))) )) = 0))) = 0))) = 0))) = 0; + WR13 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (sssh <* QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_SILHOUETTE' IN TYPEOF (sses)) | + NOT (( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (sssh\surface_style_silhouette.style_of_silhouette)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sssh\surface_style_silhouette. + style_of_silhouette\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sssh\surface_style_silhouette. + style_of_silhouette\curve_style.curve_width)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CURVE_STYLE_FONT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF + (sssh\surface_style_silhouette. + style_of_silhouette\curve_style.curve_font)) = 1)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_RENDERING' + IN TYPEOF (sssh\surface_style_silhouette.style_of_silhouette)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sssh\surface_style_silhouette.style_of_silhouette\ + curve_style_rendering.rendering_properties.rendered_colour)) + = 1))) )) = 0))) = 0))) = 0))) = 0; + WR14 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (sssc <* QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_SEGMENTATION_CURVE' IN TYPEOF (sses)) | + NOT (( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF + (sssc\surface_style_segmentation_curve.style_of_segmentation_curve)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sssc\surface_style_segmentation_curve. + style_of_segmentation_curve\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sssc\surface_style_segmentation_curve. + style_of_segmentation_curve\curve_style.curve_width)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CURVE_STYLE_FONT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF + (sssc\surface_style_segmentation_curve. + style_of_segmentation_curve\curve_style.curve_font)) = 1)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_RENDERING' + IN TYPEOF (sssc\surface_style_segmentation_curve. + style_of_segmentation_curve)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sssc\surface_style_segmentation_curve.style_of_segmentation_curve\ + curve_style_rendering.rendering_properties.rendered_colour)) + = 1))) )) = 0))) = 0))) = 0))) = 0; + WR15 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (ssbd <* QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_BOUNDARY' IN TYPEOF (sses)) | + NOT (( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (ssbd\surface_style_boundary.style_of_boundary)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (ssbd\surface_style_boundary. + style_of_boundary\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF + (ssbd\surface_style_boundary. + style_of_boundary\curve_style.curve_width)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CURVE_STYLE_FONT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF + (ssbd\surface_style_boundary. + style_of_boundary\curve_style.curve_font)) = 1)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_RENDERING' + IN TYPEOF (ssbd\surface_style_boundary.style_of_boundary)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (ssbd\surface_style_boundary.style_of_boundary\ + curve_style_rendering.rendering_properties.rendered_colour)) + = 1))) )) = 0))) = 0))) = 0))) = 0; + WR16 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (ssre <* QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_RENDERING' IN TYPEOF (sses)) | + NOT + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (ssre\surface_style_rendering.surface_colour)) = 1))) + = 0))) = 0))) = 0))) = 0; +END_ENTITY; + + +ENTITY min_and_major_ply_orientation_basis + SUBTYPE OF (representation_item_relationship, geometric_representation_item); + SELF\representation_item_relationship.related_representation_item : axis2_placement_3d; + SELF\representation_item_relationship.relating_representation_item : axis2_placement_3d; +DERIVE + major_orientation_basis : axis2_placement_3d := SELF\representation_item_relationship.related_representation_item; + minor_orientation_basis : axis2_placement_3d := SELF\representation_item_relationship.relating_representation_item; +END_ENTITY; + + +ENTITY modified_geometric_tolerance + SUBTYPE OF (geometric_tolerance); + modifier : limit_condition; +END_ENTITY; + + +ENTITY modified_solid + ABSTRACT SUPERTYPE OF (ONEOF (edge_blended_solid, sculptured_solid, shelled_solid, modified_solid_with_placed_configuration)) + SUBTYPE OF (solid_model); + rationale : text; + base_solid : base_solid_select; +END_ENTITY; + + +ENTITY modified_solid_with_placed_configuration + ABSTRACT SUPERTYPE OF (ONEOF (solid_with_depression, solid_with_protrusion, solid_with_shape_element_pattern)) + SUBTYPE OF (modified_solid); + placing : axis2_placement_3d; +END_ENTITY; + + +ENTITY moments_of_inertia_representation + SUBTYPE OF (representation); +WHERE + WR1 : (SIZEOF(SELF.items) = 1) AND + (SIZEOF( QUERY( i <* SELF.items | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'COMPOUND_REPRESENTATION_ITEM' IN TYPEOF(i)) AND + (i.name = 'moments of inertia matrix') )) = 1); + WR2 : SIZEOF( QUERY( i <* SELF.items | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'COMPOUND_REPRESENTATION_ITEM' IN TYPEOF(i)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'LIST_REPRESENTATION_ITEM' IN TYPEOF(i\compound_representation_item.item_element)) AND + value_range_aggregate_rep_item (i\compound_representation_item.item_element) )) = 1; +END_ENTITY; + + +ENTITY multi_language_attribute_assignment + SUBTYPE OF (attribute_value_assignment); + items : SET [1:?] OF multi_language_attribute_item; +DERIVE + translation_language : language := language_indication[1]\attribute_classification_assignment.assigned_class; +INVERSE + language_indication: SET [1:1] OF attribute_language_assignment FOR items; +WHERE + WR1 : (SELF\attribute_value_assignment.role.name = 'alternate language'); + WR2 : SIZEOF( QUERY( ala <* language_indication | + (ala\attribute_classification_assignment.attribute_name = 'attribute_value') AND + (ala\attribute_classification_assignment.role.name='translated') )) = 1; + WR3 : SELF\attribute_value_assignment.attribute_name <> ''; + WR4 : SIZEOF(QUERY(ci <* items | +SIZEOF(QUERY(ata <* USEDIN(ci, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | +(ata\attribute_value_assignment.attribute_name = SELF\attribute_value_assignment.attribute_name) AND +(ata.translation_language :=: translation_language) ))>1 )) =0; + WR5 : SIZEOF(QUERY(ci <* items | +SIZEOF(QUERY(ata <* USEDIN(ci, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | + (ata\attribute_classification_assignment.role.name='primary') AND + (ata\attribute_classification_assignment.attribute_name= SELF\attribute_value_assignment.attribute_name) AND + (ata\attribute_classification_assignment.assigned_class :=: translation_language) ))>0 )) =0; +END_ENTITY; + + +ENTITY multiple_arity_boolean_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (boolean_expression, multiple_arity_generic_expression); + SELF\multiple_arity_generic_expression.operands : LIST [2:?] OF boolean_expression; +END_ENTITY; + + +ENTITY multiple_arity_generic_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (generic_expression); + operands : LIST [2:?] OF generic_expression; +END_ENTITY; + + +ENTITY multiple_arity_numeric_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (numeric_expression, multiple_arity_generic_expression); + SELF\multiple_arity_generic_expression.operands : LIST [2:?] OF numeric_expression; +END_ENTITY; + + +ENTITY name_assignment + ABSTRACT SUPERTYPE; + assigned_name : label; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY name_attribute; + attribute_value : label; + named_item : name_attribute_select; +END_ENTITY; + + +ENTITY named_unit + SUPERTYPE OF ((ONEOF (si_unit, conversion_based_unit, context_dependent_unit) ANDOR ONEOF (length_unit, mass_unit, time_unit, electric_current_unit, thermodynamic_temperature_unit, amount_of_substance_unit, luminous_flux_unit, luminous_intensity_unit, plane_angle_unit, solid_angle_unit, ratio_unit))); + dimensions : dimensional_exponents; +END_ENTITY; + + +ENTITY next_assembly_usage_occurrence + SUBTYPE OF (assembly_component_usage); +END_ENTITY; + + +ENTITY non_manifold_surface_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF (QUERY (it <* SELF.items | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D'] * TYPEOF (it)) = 1))) + = 0; + WR2 : SIZEOF (QUERY (it <* SELF.items | + SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM'] * TYPEOF (it)) = 1)) > 0; + WR3 : SIZEOF (QUERY (mi <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'NON_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 | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' + IN TYPEOF (mr_it)))) > 0 )))) = 0; + WR4 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_FACE'] * TYPEOF (fa)) = 1))) + = 0))) = 0))) = 0; + WR5 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (f_sf <* QUERY (fa <* cfs.cfs_faces | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE' IN TYPEOF (fa))) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (f_sf)) + OR + (nmsf_surface_check(f_sf\face_surface.face_geometry))))) = 0))) + = 0))) = 0; + WR6 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (o_fa <* QUERY (fa <* cfs.cfs_faces | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_FACE' IN TYPEOF (fa))) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF + (o_fa\oriented_face.face_element)) + OR + (nmsf_surface_check + (o_fa\oriented_face.face_element\face_surface.face_geometry))))) + = 0))) = 0))) = 0; + WR7 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (bnds <* fa.bounds | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP'] + * TYPEOF (bnds.bound)) = 1))) = 0)))) = 0))) = 0))) = 0; + WR8 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items| + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN TYPEOF + (oe.edge_element)))) = 0))) = 0)))) = 0))) = 0))) = 0; + WR9 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe_cv <* QUERY (oe <* + elp_fbnds\path.edge_list | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN TYPEOF (oe.edge_element)) | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE'] * + TYPEOF (oe_cv.edge_element\edge_curve.edge_geometry)) + = 1))) = 0))) = 0)))) = 0))) = 0))) = 0; + WR10 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list | + NOT (nmsf_curve_check (oe.edge_element\edge_curve.edge_geometry)))) + = 0))) = 0)))) = 0))) = 0))) = 0; + WR11 : SIZEOF (QUERY(fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list| + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF + (oe.edge_element.edge_start)) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN + TYPEOF (oe.edge_element.edge_end))))) + = 0))) = 0)))) = 0))) = 0))) = 0; + WR12 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list | + NOT ((SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEGENERATE_PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_SURFACE'] * TYPEOF + (oe.edge_element.edge_start\vertex_point.vertex_geometry)) = 1) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEGENERATE_PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_SURFACE'] * TYPEOF + (oe.edge_element.edge_end\vertex_point.vertex_geometry)) = 1 + )))) = 0))) = 0)))) = 0))) = 0))) = 0; + WR13 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF + (vlp_fbnds\vertex_loop.loop_vertex)))) = 0)))) = 0))) + = 0))) = 0; + WR14 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEGENERATE_PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_SURFACE'] * TYPEOF + (vlp_fbnds\vertex_loop.loop_vertex\vertex_point.vertex_geometry)) + = 1))) = 0)))) = 0))) = 0))) = 0; +END_ENTITY; + + +ENTITY null_representation_item + SUBTYPE OF (representation_item); +END_ENTITY; + + +ENTITY numeric_expression + ABSTRACT SUPERTYPE OF (ONEOF (simple_numeric_expression, unary_numeric_expression, binary_numeric_expression, multiple_arity_numeric_expression)) + SUBTYPE OF (expression); +DERIVE + is_int : LOGICAL := is_int_expr (SELF); + sql_mappable : LOGICAL := is_SQL_mappable (SELF); +END_ENTITY; + + +ENTITY object_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY offset_curve_2d + SUBTYPE OF (curve); + basis_curve : curve; + distance : length_measure; + self_intersect : LOGICAL; +WHERE + WR1 : basis_curve.dim = 2; +END_ENTITY; + + +ENTITY offset_curve_3d + SUBTYPE OF (curve); + basis_curve : curve; + distance : length_measure; + self_intersect : LOGICAL; + ref_direction : direction; +WHERE + WR1 : (basis_curve.dim = 3) AND (ref_direction.dim = 3); +END_ENTITY; + + +ENTITY offset_surface + SUBTYPE OF (surface); + basis_surface : surface; + distance : length_measure; + self_intersect : LOGICAL; +END_ENTITY; + + +ENTITY one_direction_repeat_factor + SUBTYPE OF (geometric_representation_item); + repeat_factor : vector; +END_ENTITY; + + +ENTITY open_shell + SUBTYPE OF (connected_face_set); +END_ENTITY; + + +ENTITY ordinal_date + SUBTYPE OF (date); + day_component : day_in_year_number; +WHERE + WR1 : (NOT leap_year(SELF.year_component) AND { 1 <= day_component <= 365 }) OR (leap_year(SELF.year_component) AND { 1 <= day_component <= 366 }); +END_ENTITY; + + +ENTITY ordinate_dimension + SUBTYPE OF (projection_directed_callout); +END_ENTITY; + + +ENTITY organization; + id : OPTIONAL identifier; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY organization_assignment + ABSTRACT SUPERTYPE; + assigned_organization : organization; + role : organization_role; +END_ENTITY; + + +ENTITY organization_relationship; + name : label; + description : OPTIONAL text; + relating_organization : organization; + related_organization : organization; +END_ENTITY; + + +ENTITY organization_role; + name : label; +DERIVE + description : text := get_description_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY organizational_address + SUBTYPE OF (address); + organizations : SET [1:?] OF organization; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY organizational_project; + name : label; + description : OPTIONAL text; + responsible_organizations : SET [1:?] OF organization; +DERIVE + id : identifier := get_id_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY organizational_project_assignment + ABSTRACT SUPERTYPE; + assigned_organizational_project : organizational_project; + role : organizational_project_role; +END_ENTITY; + + +ENTITY organizational_project_relationship; + name : label; + description : OPTIONAL text; + relating_organizational_project : organizational_project; + related_organizational_project : organizational_project; +END_ENTITY; + + +ENTITY organizational_project_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY oriented_closed_shell + SUBTYPE OF (closed_shell); + closed_shell_element : closed_shell; + orientation : BOOLEAN; +DERIVE + SELF\connected_face_set.cfs_faces : SET [1:?] OF face := conditional_reverse(SELF.orientation, + SELF.closed_shell_element.cfs_faces); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_CLOSED_SHELL' + IN TYPEOF (SELF.closed_shell_element)); +END_ENTITY; + + +ENTITY oriented_edge + SUBTYPE OF (edge); + edge_element : edge; + orientation : BOOLEAN; +DERIVE + SELF\edge.edge_end : vertex := boolean_choose (SELF.orientation, + SELF.edge_element.edge_end, + SELF.edge_element.edge_start); + SELF\edge.edge_start : vertex := boolean_choose (SELF.orientation, + SELF.edge_element.edge_start, + SELF.edge_element.edge_end); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_EDGE' IN TYPEOF (SELF.edge_element)); +END_ENTITY; + + +ENTITY oriented_face + SUBTYPE OF (face); + face_element : face; + orientation : BOOLEAN; +DERIVE + SELF\face.bounds : SET [1:?] OF face_bound := conditional_reverse(SELF.orientation,SELF.face_element.bounds); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_FACE' IN TYPEOF (SELF.face_element)); +END_ENTITY; + + +ENTITY oriented_open_shell + SUBTYPE OF (open_shell); + open_shell_element : open_shell; + orientation : BOOLEAN; +DERIVE + SELF\connected_face_set.cfs_faces : SET [1:?] OF face := conditional_reverse(SELF.orientation, + SELF.open_shell_element.cfs_faces); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_OPEN_SHELL' + IN TYPEOF (SELF.open_shell_element)); +END_ENTITY; + + +ENTITY oriented_path + SUBTYPE OF (path); + path_element : path; + orientation : BOOLEAN; +DERIVE + SELF\path.edge_list : LIST [1:?] OF UNIQUE oriented_edge := conditional_reverse(SELF.orientation, + SELF.path_element.edge_list); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_PATH' IN TYPEOF (SELF.path_element)); +END_ENTITY; + + +ENTITY oriented_surface + SUBTYPE OF (surface); + orientation : BOOLEAN; +END_ENTITY; + + +ENTITY outer_boundary_curve + SUBTYPE OF (boundary_curve); +END_ENTITY; + + +ENTITY over_riding_styled_item + SUBTYPE OF (styled_item); + over_ridden_style : styled_item; +END_ENTITY; + + +ENTITY package_product_concept_feature + SUBTYPE OF (product_concept_feature); +WHERE + WR1 : NOT ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONDITIONAL_CONCEPT_FEATURE' IN TYPEOF ( SELF ) ); + WR2 : SIZEOF ( QUERY + ( + cfr <* USEDIN ( SELF , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP.' +'RELATING_PRODUCT_CONCEPT_FEATURE' ) + | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN TYPEOF (cfr ) ) + AND + ( SIZEOF ( QUERY + ( + ipcf <* USEDIN ( cfr , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONDITIONAL_CONCEPT_FEATURE.' + 'CONDITION' ) + | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'INCLUSION_PRODUCT_CONCEPT_FEATURE' IN TYPEOF ( ipcf ) + ) + )= 1 + ) + ) + )>0; +END_ENTITY; + + +ENTITY parabola + SUBTYPE OF (conic); + focal_dist : length_measure; +WHERE + WR1 : focal_dist <> 0.0; +END_ENTITY; + + +ENTITY parallel_offset + SUBTYPE OF (derived_shape_aspect); + offset : measure_with_unit; +WHERE + WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1; +END_ENTITY; + + +ENTITY parallelism_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) < 3; +END_ENTITY; + + +ENTITY parametric_representation_context + SUBTYPE OF (representation_context); +END_ENTITY; + + +ENTITY part_laminate_table + SUPERTYPE OF (ONEOF (composite_assembly_table, ply_laminate_table)) + SUBTYPE OF (laminate_table); +END_ENTITY; + + +ENTITY partial_document_with_structured_text_representation_assignment + SUBTYPE OF (applied_document_usage_constraint_assignment, characterized_object); +END_ENTITY; + + +ENTITY path + SUPERTYPE OF (ONEOF (edge_loop, oriented_path)) + SUBTYPE OF (topological_representation_item); + edge_list : LIST [1:?] OF UNIQUE oriented_edge; +WHERE + WR1 : path_head_to_tail(SELF); +END_ENTITY; + + +ENTITY pcurve + SUBTYPE OF (curve); + basis_surface : surface; + reference_to_curve : definitional_representation; +WHERE + WR1 : SIZEOF(reference_to_curve\representation.items) = 1; + WR2 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE' IN TYPEOF + (reference_to_curve\representation.items[1]); + WR3 : reference_to_curve\representation.items[1]\ + geometric_representation_item.dim =2; +END_ENTITY; + + +ENTITY percentage_laminate_definition + SUBTYPE OF (product_definition); +WHERE + WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.' + + 'RELATING_PRODUCT_DEFINITION') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN + TYPEOF (pdr))) > 0; +END_ENTITY; + + +ENTITY percentage_laminate_table + SUBTYPE OF (zone_structural_makeup); +END_ENTITY; + + +ENTITY percentage_ply_definition + SUBTYPE OF (product_definition); +WHERE + WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PERCENTAGE_LAMINATE_DEFINITION' + IN TYPEOF (pdr.related_product_definition)) AND + (pdr.name = 'makeup and properties'))) = 0; +END_ENTITY; + + +ENTITY perpendicular_to + SUBTYPE OF (derived_shape_aspect); +WHERE + WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1; +END_ENTITY; + + +ENTITY perpendicularity_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 3; +END_ENTITY; + + +ENTITY person; + id : identifier; + last_name : OPTIONAL label; + first_name : OPTIONAL label; + middle_names : OPTIONAL LIST [1:?] OF label; + prefix_titles : OPTIONAL LIST [1:?] OF label; + suffix_titles : OPTIONAL LIST [1:?] OF label; +WHERE + WR1 : EXISTS(last_name) OR EXISTS(first_name); +END_ENTITY; + + +ENTITY person_and_organization; + the_person : person; + the_organization : organization; +DERIVE + description : text := get_description_value(SELF); + name : label := get_name_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY person_and_organization_address + SUBTYPE OF (organizational_address, personal_address); + SELF\organizational_address.organizations : SET [1:1] OF organization; + SELF\personal_address.people : SET [1:1] OF person; +WHERE + WR1 : SIZEOF(QUERY(pao <* USEDIN (SELF\personal_address.people[1], 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PERSON_AND_ORGANIZATION.THE_PERSON') | pao.the_organization :=: SELF\organizational_address.organizations[1])) = 1; +END_ENTITY; + + +ENTITY person_and_organization_assignment + ABSTRACT SUPERTYPE; + assigned_person_and_organization : person_and_organization; + role : person_and_organization_role; +END_ENTITY; + + +ENTITY person_and_organization_role; + name : label; +DERIVE + description : text := get_description_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY personal_address + SUBTYPE OF (address); + people : SET [1:?] OF person; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY physical_breakdown_context + SUBTYPE OF (breakdown_context); +END_ENTITY; + + +ENTITY physical_element_usage + SUBTYPE OF (breakdown_element_usage); +END_ENTITY; + + +ENTITY picture_representation + SUBTYPE OF (presentation_view); + SELF\representation.items : SET [2:?] OF picture_representation_item_select; +INVERSE + size: presentation_size FOR unit; +WHERE + WR1: SIZEOF(QUERY(item <* items | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' IN TYPEOF(item))) = 1; + WR2: SIZEOF (QUERY (se <* QUERY (item <* SELF.items | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' IN TYPEOF (item))) + | NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PICTURE_REPRESENTATION_ITEM' + IN TYPEOF (se\styled_item.item)) )) = 0; +END_ENTITY; + + +ENTITY picture_representation_item + ABSTRACT SUPERTYPE OF (ONEOF (externally_defined_picture_representation_item, predefined_picture_representation_item)) + SUBTYPE OF (bytes_representation_item); +END_ENTITY; + + +ENTITY placed_datum_target_feature + SUBTYPE OF (datum_target); +DERIVE + representation_associations : SET [0:?] OF property_definition_representation := get_shape_aspect_property_definition_representations(SELF); +WHERE + WR1 : SELF.description IN ['point','line','rectangle','circle', 'circular line']; + WR2 : SIZEOF (QUERY (pdr <* representation_associations | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation) )) = 1; + WR3 : valid_datum_target_parameters(SELF); +END_ENTITY; + + +ENTITY placed_feature + SUBTYPE OF (shape_aspect); +END_ENTITY; + + +ENTITY placement + SUPERTYPE OF (ONEOF (axis1_placement, axis2_placement_2d, axis2_placement_3d)) + SUBTYPE OF (geometric_representation_item); + location : cartesian_point; +END_ENTITY; + + +ENTITY planar_box + SUBTYPE OF (planar_extent); + placement : axis2_placement; +END_ENTITY; + + +ENTITY planar_extent + SUBTYPE OF (geometric_representation_item); + size_in_x : length_measure; + size_in_y : length_measure; +END_ENTITY; + + +ENTITY plane + SUBTYPE OF (elementary_surface); +END_ENTITY; + + +ENTITY plane_angle_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE_ANGLE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY plane_angle_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY plus_minus_tolerance; + range : tolerance_method_definition; + toleranced_dimension : dimensional_characteristic; +UNIQUE + UR1 : toleranced_dimension; +END_ENTITY; + + +ENTITY ply_laminate_definition + SUBTYPE OF (product_definition); +WHERE + WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.' + + 'RELATING_PRODUCT_DEFINITION') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN + TYPEOF (pdr))) = 1; +END_ENTITY; + + +ENTITY ply_laminate_sequence_definition + SUBTYPE OF (product_definition); +WHERE + WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.' + + 'RELATING_PRODUCT_DEFINITION') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN + TYPEOF (pdr))) > 0; +END_ENTITY; + + +ENTITY ply_laminate_table + SUBTYPE OF (part_laminate_table); +END_ENTITY; + + +ENTITY point + SUPERTYPE OF (ONEOF (cartesian_point, point_on_curve, point_on_surface, point_replica, degenerate_pcurve)) + SUBTYPE OF (geometric_representation_item); +END_ENTITY; + + +ENTITY point_and_vector + SUBTYPE OF (compound_representation_item, geometric_representation_item); + SELF\compound_representation_item.item_element : point_and_vector_members; +END_ENTITY; + + +ENTITY point_on_curve + SUBTYPE OF (point); + basis_curve : curve; + point_parameter : parameter_value; +END_ENTITY; + + +ENTITY point_on_surface + SUBTYPE OF (point); + basis_surface : surface; + point_parameter_u : parameter_value; + point_parameter_v : parameter_value; +END_ENTITY; + + +ENTITY point_path + SUBTYPE OF (compound_representation_item, geometric_representation_item); + SELF\compound_representation_item.item_element : point_path_members; +END_ENTITY; + + +ENTITY point_replica + SUBTYPE OF (point); + parent_pt : point; + transformation : cartesian_transformation_operator; +WHERE + WR1 : transformation.dim = parent_pt.dim; + WR2 : acyclic_point_replica (SELF,parent_pt); +END_ENTITY; + + +ENTITY point_style + SUBTYPE OF (founded_item); + name : label; + marker : marker_select; + marker_size : size_select; + marker_colour : colour; +END_ENTITY; + + +ENTITY polar_complex_number_literal + SUBTYPE OF (generic_literal); + radius : REAL; + angle : REAL; +WHERE + WR1 : radius >= 0; + WR2 : { 0 <= angle < 2*PI }; +END_ENTITY; + + +ENTITY poly_loop + SUBTYPE OF (loop, geometric_representation_item); + polygon : LIST [3:?] OF UNIQUE cartesian_point; +END_ENTITY; + + +ENTITY polyline + SUBTYPE OF (bounded_curve); + points : LIST [2:?] OF cartesian_point; +END_ENTITY; + + +ENTITY position_tolerance + SUBTYPE OF (geometric_tolerance); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)) OR ( SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 3); +END_ENTITY; + + +ENTITY positioned_sketch + SUBTYPE OF (geometric_representation_item); + sketch_basis : sketch_basis_select; + auxiliary_elements : SET [0:?] OF auxiliary_geometric_representation_item; +WHERE + WR1 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_BOUNDED_SURFACE' IN + TYPEOF(sketch_basis)) AND NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE' IN + TYPEOF(sketch_basis\curve_bounded_surface.basis_surface))); + WR2 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE' IN TYPEOF(sketch_basis)) AND + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE' IN TYPEOF(sketch_basis\face_surface.face_geometry))); + WR3 : SIZEOF(QUERY(q <* auxiliary_elements | (SIZEOF(TYPEOF(q) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT','AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE']) = 0))) = 0; + WR4 : SIZEOF(QUERY(q <* auxiliary_elements | + q\geometric_representation_item.dim <> 3)) = 0; +END_ENTITY; + + +ENTITY power_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POWER_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY power_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.watt); +END_ENTITY; + + +ENTITY pre_defined_colour + SUBTYPE OF (pre_defined_item, colour); +END_ENTITY; + + +ENTITY pre_defined_curve_font + SUBTYPE OF (pre_defined_item); +END_ENTITY; + + +ENTITY pre_defined_dimension_symbol + SUBTYPE OF (pre_defined_symbol); +WHERE + WR1 : SELF.name IN [ 'arc length' , 'conical taper' , 'counterbore' , 'countersink' , 'depth' , 'diameter' , 'plus minus' , 'radius' , 'slope' , 'spherical diameter' , 'spherical radius' , 'square']; +END_ENTITY; + + +ENTITY pre_defined_geometrical_tolerance_symbol + SUBTYPE OF (pre_defined_symbol); +WHERE + WR1 : SELF.name IN ['angularity' , 'basic dimension' , 'blanked datum reference' , 'circular runout' , 'circularity' , 'concentricity' , 'cylindricity' , 'datum target identification' , 'diameter' , 'filled datum reference' , 'flatness' , 'least material condition' , 'maximum material condition' , 'parallelism' , 'perpendicularity' , 'position' , 'profile of a line' , 'profile of a surface' , 'projected tolerance zone' , 'regardless of feature size' , 'straightness' , 'symmetry' , 'total runout' ]; +END_ENTITY; + + +ENTITY pre_defined_item; + name : label; +END_ENTITY; + + +ENTITY pre_defined_marker + SUBTYPE OF (pre_defined_item); +END_ENTITY; + + +ENTITY pre_defined_point_marker_symbol + SUBTYPE OF (pre_defined_marker, pre_defined_symbol); +WHERE + WR1 : SELF.name IN ['asterisk','circle','dot','plus','square','triangle','x']; +END_ENTITY; + + +ENTITY pre_defined_surface_condition_symbol + SUBTYPE OF (pre_defined_symbol); +WHERE + WR1 : SELF.name IN ['000' , '010' , '020' , '030' , '040' , '050' , '060' , '070' , '001' , '011' , '021' , '031' , '041' , '051' , '061' , '071' , '100' , '110' , '120' , '130' , '140' , '150' , '160' , '170' , '101' , '111' , '121' , '131' , '141' , '151' , '161' , '171' , '200' , '210' , '220' , '230' , '240' , '250' , '260' , '270' , '201' , '211' , '221' , '231' , '241' , '251' , '261' , '271']; +END_ENTITY; + + +ENTITY pre_defined_surface_side_style + SUBTYPE OF (pre_defined_item); +END_ENTITY; + + +ENTITY pre_defined_symbol + SUBTYPE OF (pre_defined_item); +END_ENTITY; + + +ENTITY pre_defined_terminator_symbol + SUBTYPE OF (pre_defined_symbol); +WHERE + WR1 : SELF.name IN ['blanked arrow', 'blanked box', 'blanked dot', 'blanked triangle', 'dimension origin', 'filled arrow', 'filled box', 'filled dot', 'integral symbol', 'open arrow', 'slash', 'unfilled arrow', 'unfilled triangle', 'filled triangle']; +END_ENTITY; + + +ENTITY pre_defined_text_font + SUBTYPE OF (pre_defined_item); +END_ENTITY; + + +ENTITY pre_defined_tile + SUBTYPE OF (pre_defined_item); +END_ENTITY; + + +ENTITY precision_qualifier; + precision_value : INTEGER; +END_ENTITY; + + +ENTITY predefined_picture_representation_item + SUBTYPE OF (picture_representation_item); +WHERE + WR1 : SELF\representation_item.name IN pre_defined_picture_representation_types; +END_ENTITY; + + +ENTITY presentation_area + SUBTYPE OF (presentation_representation); +WHERE + WR1 : ((SIZEOF (QUERY (ais <* USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AREA_IN_SET.AREA') | + SIZEOF (USEDIN (ais, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT')) =1)) > 0) OR + (SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT')) =1)); +END_ENTITY; + + +ENTITY presentation_layer_assignment; + name : label; + description : text; + assigned_items : SET [1:?] OF layered_item; +END_ENTITY; + + +ENTITY presentation_representation + SUPERTYPE OF (ONEOF (presentation_area, presentation_view)) + SUBTYPE OF (representation); + SELF\representation.context_of_items : geometric_representation_context; +WHERE + WR1 : SELF\representation. + context_of_items\geometric_representation_context. + coordinate_space_dimension = 2; + WR2 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_AREA' IN TYPEOF (SELF)) + OR + (SIZEOF (QUERY (prr <* USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'REPRESENTATION_RELATIONSHIP.REP_2') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_REPRESENTATION' IN + TYPEOF (prr\representation_relationship.rep_1))) > 0) + OR + (SIZEOF(QUERY( rm <* USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'REPRESENTATION_MAP.'+ + 'MAPPED_REPRESENTATION') | + SIZEOF(QUERY( mi <* USEDIN(rm, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'MAPPED_ITEM.'+ + 'MAPPING_SOURCE') | + SIZEOF(QUERY( rep <* using_representations (mi) | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'PRESENTATION_REPRESENTATION' IN + TYPEOF (rep))) > 0 + )) > 0)) + > 0); +END_ENTITY; + + +ENTITY presentation_set; +INVERSE + areas: SET [1:?] OF area_in_set FOR in_set; +END_ENTITY; + + +ENTITY presentation_size; + unit : presentation_size_assignment_select; + size : planar_box; +UNIQUE + UR1 : unit; +WHERE + WR1 : (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_REPRESENTATION' + IN TYPEOF (SELF.unit)) AND + item_in_context (SELF.size, + SELF.unit\representation.context_of_items) + ) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AREA_IN_SET' + IN TYPEOF (SELF.unit)) AND + (SIZEOF (QUERY ( ais <* SELF.unit\area_in_set.in_set.areas | + NOT item_in_context (SELF.size, ais.area\representation. + context_of_items) )) = 0)); +END_ENTITY; + + +ENTITY presentation_style_assignment + SUBTYPE OF (founded_item); + styles : SET [1:?] OF presentation_style_select; +WHERE + WR1 : SIZEOF (QUERY (style1 <* SELF.styles | + NOT (SIZEOF (QUERY (style2 <* (SELF.styles - style1) | + NOT ((TYPEOF (style1) <> TYPEOF (style2)) OR + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_USAGE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'EXTERNALLY_DEFINED_STYLE'] * + TYPEOF (style1)) = 1) + ))) = 0 + ))) = 0; + WR2 : SIZEOF (QUERY (style1 <* SELF.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' IN + TYPEOF(style1) + )) <= 2; + WR3 : SIZEOF (QUERY (style1 <* SELF.styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF (style1)) AND + (SIZEOF (QUERY (style2 <* (SELF.styles - style1) | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF (style2)) AND + ((style1\surface_style_usage.side = both) OR + (style2\surface_style_usage.side = both) OR + (style1\surface_style_usage.side = style2\surface_style_usage.side)) )) > 0))) = 0; +END_ENTITY; + + +ENTITY presentation_style_by_context + SUBTYPE OF (presentation_style_assignment); + style_context : style_context_select; +END_ENTITY; + + +ENTITY presentation_view + SUBTYPE OF (presentation_representation); +END_ENTITY; + + +ENTITY presented_item + ABSTRACT SUPERTYPE; +END_ENTITY; + + +ENTITY presented_item_representation; + presentation : presentation_representation_select; + item : presented_item; +END_ENTITY; + + +ENTITY pressure_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESSURE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY pressure_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.pascal); +END_ENTITY; + + +ENTITY procedural_representation + SUBTYPE OF (representation); + SELF\representation.items : SET [1:?] OF procedural_representation_sequence; +END_ENTITY; + + +ENTITY procedural_representation_sequence + SUBTYPE OF (representation_item); + elements : LIST [1:?] OF representation_item; + suppressed_items : SET [0:?] OF representation_item; + rationale : text; +WHERE + WR1 : SIZEOF(QUERY(q <* suppressed_items | NOT (q IN elements))) = 0; +END_ENTITY; + + +ENTITY procedural_shape_representation + SUBTYPE OF (procedural_representation, shape_representation); + SELF\representation.items : SET [1:?] OF procedural_shape_representation_sequence; +END_ENTITY; + + +ENTITY procedural_shape_representation_sequence + SUBTYPE OF (geometric_representation_item, procedural_representation_sequence); +WHERE + WR1 : SIZEOF(QUERY(q <* SELF\procedural_representation_sequence.elements + | NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION_ITEM' + IN TYPEOF(q)))) = 0; +END_ENTITY; + + +ENTITY product; + id : identifier; + name : label; + description : OPTIONAL text; + frame_of_reference : SET [1:?] OF product_context; +END_ENTITY; + + +ENTITY product_category; + name : label; + description : OPTIONAL text; +DERIVE + id : identifier := get_id_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY product_class + SUBTYPE OF (product_concept, characterized_object); +END_ENTITY; + + +ENTITY product_concept; + id : identifier; + name : label; + description : OPTIONAL text; + market_context : product_concept_context; +UNIQUE + UR1 : id; +END_ENTITY; + + +ENTITY product_concept_context + SUBTYPE OF (application_context_element); + market_segment_type : label; +END_ENTITY; + + +ENTITY product_concept_feature; + id : identifier; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY product_concept_feature_association; + name : label; + description : OPTIONAL text; + concept : product_concept; + feature : product_concept_feature; +END_ENTITY; + + +ENTITY product_concept_feature_category + SUBTYPE OF (group); +WHERE + WR1 : SIZEOF(QUERY + ( + aga <* USEDIN( SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GROUP_ASSIGNMENT.ASSIGNED_GROUP' ) + | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'APPLIED_GROUP_ASSIGNMENT' IN TYPEOF(aga)) + AND + ( + ( aga.role.name <> 'specification category member' ) + OR + ( SIZEOF(QUERY + ( + i <* aga.items + | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'PRODUCT_CONCEPT_FEATURE' IN TYPEOF ( i ) ) + AND + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'CONDITIONAL_CONCEPT_FEATURE' IN TYPEOF (i)) + ) + ) <> SIZEOF (aga.items) + ) + ) + ) + ) =0; +END_ENTITY; + + +ENTITY product_concept_feature_category_usage + SUBTYPE OF (group_assignment); + items : SET [1:?] OF category_usage_item; + SELF\group_assignment.assigned_group : product_concept_feature_category; +WHERE + WR1 : SELF.role.name IN [ 'mandatory category usage', 'optional category usage' ]; +END_ENTITY; + + +ENTITY product_concept_relationship; + name : label; + description : OPTIONAL text; + relating_product_concept : product_concept; + related_product_concept : product_concept; +END_ENTITY; + + +ENTITY product_context + SUBTYPE OF (application_context_element); + discipline_type : label; +END_ENTITY; + + +ENTITY product_definition + SUPERTYPE OF (ONEOF (composite_assembly_definition, composite_assembly_sequence_definition, laminate_table, percentage_laminate_definition, percentage_ply_definition, ply_laminate_definition, ply_laminate_sequence_definition, thickness_laminate_definition)); + id : identifier; + description : OPTIONAL text; + formation : product_definition_formation; + frame_of_reference : product_definition_context; +DERIVE + name : label := get_name_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY product_definition_context + SUBTYPE OF (application_context_element); + life_cycle_stage : label; +END_ENTITY; + + +ENTITY product_definition_context_association; + definition : product_definition; + frame_of_reference : product_definition_context; + role : product_definition_context_role; +END_ENTITY; + + +ENTITY product_definition_context_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY product_definition_effectivity + SUBTYPE OF (effectivity); + usage : product_definition_relationship; +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'EFFECTIVITY_ASSIGNMENT.ASSIGNED_EFFECTIVITY')) = 0; +END_ENTITY; + + +ENTITY product_definition_element_relationship + SUBTYPE OF (group); +END_ENTITY; + + +ENTITY product_definition_formation; + id : identifier; + description : OPTIONAL text; + of_product : product; +UNIQUE + UR1 : id, of_product; +END_ENTITY; + + +ENTITY product_definition_formation_relationship; + id : identifier; + name : label; + description : OPTIONAL text; + relating_product_definition_formation : product_definition_formation; + related_product_definition_formation : product_definition_formation; +END_ENTITY; + + +ENTITY product_definition_formation_with_specified_source + SUBTYPE OF (product_definition_formation); + make_or_buy : source; +END_ENTITY; + + +ENTITY product_definition_group_assignment + SUBTYPE OF (group_assignment); + items : SET [1:1] OF product_definition_or_product_definition_relationship; + SELF\group_assignment.assigned_group : product_definition_element_relationship; +END_ENTITY; + + +ENTITY product_definition_occurrence_relationship; + name : label; + description : OPTIONAL text; + occurrence : product_definition; + occurrence_usage : assembly_component_usage; +WHERE + WR1 : occurrence_usage.relating_product_definition :<>: + occurrence; + WR2 : occurrence_usage.related_product_definition :<>: + occurrence; + WR3 : occurrence.formation :=: + occurrence_usage.related_product_definition.formation; +END_ENTITY; + + +ENTITY product_definition_relationship; + id : identifier; + name : label; + description : OPTIONAL text; + relating_product_definition : product_definition; + related_product_definition : product_definition; +END_ENTITY; + + +ENTITY product_definition_shape + SUBTYPE OF (property_definition); +UNIQUE + UR1: SELF\property_definition.definition; +WHERE + WR1 : SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CHARACTERIZED_PRODUCT_DEFINITION', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CHARACTERIZED_OBJECT'] * TYPEOF(SELF\property_definition.definition)) > 0; +END_ENTITY; + + +ENTITY product_definition_substitute; + description : OPTIONAL text; + context_relationship : product_definition_relationship; + substitute_definition : product_definition; +DERIVE + name : label := get_name_value(SELF); +WHERE + WR1 : context_relationship.related_product_definition :<>: substitute_definition; + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY product_definition_usage + SUPERTYPE OF (ONEOF (make_from_usage_option, assembly_component_usage)) + SUBTYPE OF (product_definition_relationship); +UNIQUE + UR1: SELF\product_definition_relationship.id, + SELF\product_definition_relationship.relating_product_definition, + SELF\product_definition_relationship.related_product_definition; + WHERE + WR1 : acyclic_product_definition_relationship + (SELF, + [SELF\product_definition_relationship.related_product_definition], + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_USAGE'); +END_ENTITY; + + +ENTITY product_definition_with_associated_documents + SUBTYPE OF (product_definition); + documentation_ids : SET [1:?] OF document; +END_ENTITY; + + +ENTITY product_identification + SUBTYPE OF (configuration_item, characterized_object); + SELF\configuration_item.item_concept : product_class; +WHERE + WR1 : SIZEOF(QUERY + ( cd <* USEDIN ( SELF ,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONFIGURATION_DESIGN.CONFIGURATION' ) + | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'PRODUCT_DEFINITION_FORMATION' IN TYPEOF ( cd. design ) ) + AND + ( SIZEOF ( QUERY + ( + prpc <* USEDIN ( cd. design\product_definition_formation.of_product , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') + | + prpc. name IN ['part' , 'raw material' , 'tool'] ) ) >0 + ) + ) + ) <=1; + WR2 : NOT ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'CONFIGURABLE_ITEM' IN TYPEOF( SELF ) ) + XOR ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'PRODUCT_SPECIFICATION' IN TYPEOF ( SELF ) ); +END_ENTITY; + + +ENTITY product_material_composition_relationship + SUBTYPE OF (product_definition_relationship); + class : label; + constituent_amount : SET [1:?] OF characterized_product_composition_value; + composition_basis : label; + determination_method : text; +END_ENTITY; + + +ENTITY product_related_product_category + SUBTYPE OF (product_category); + products : SET [1:?] OF product; +END_ENTITY; + + +ENTITY product_specification + SUBTYPE OF (product_identification, configurable_item); +END_ENTITY; + + +ENTITY projected_zone_definition + SUBTYPE OF (tolerance_zone_definition); + projection_end : shape_aspect; + projected_length : measure_with_unit; +WHERE + WR1 : ('NUMBER' IN TYPEOF + (projected_length\measure_with_unit.value_component)) AND + (projected_length\measure_with_unit.value_component > 0.0); + WR2 : (derive_dimensional_exponents + (projected_length\measure_with_unit.unit_component)= + dimensional_exponents(1,0,0,0,0,0,0)); +END_ENTITY; + + +ENTITY projection_curve + SUBTYPE OF (annotation_curve_occurrence); +END_ENTITY; + + +ENTITY projection_directed_callout + SUBTYPE OF (draughting_callout); +WHERE + WR1 : SIZEOF(QUERY(p_1<*SELF\draughting_callout.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_CURVE' IN (TYPEOF(p_1))))=1; + WR2 : SIZEOF(SELF\draughting_callout.contents) >=2; +END_ENTITY; + + +ENTITY promissory_usage_occurrence + SUBTYPE OF (assembly_component_usage); +END_ENTITY; + + +ENTITY property_definition; + name : label; + description : OPTIONAL text; + definition : characterized_definition; +DERIVE + id : identifier := get_id_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY property_definition_relationship; + name : label; + description : text; + relating_property_definition : property_definition; + related_property_definition : property_definition; +END_ENTITY; + + +ENTITY property_definition_representation; + definition : represented_definition; + used_representation : representation; +DERIVE + description : text := get_description_value(SELF); + name : label := get_name_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY qualified_representation_item + SUBTYPE OF (representation_item); + qualifiers : SET [1:?] OF value_qualifier; +WHERE + WR1 : SIZEOF(QUERY(temp <* qualifiers | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRECISION_QUALIFIER' + IN TYPEOF(temp))) < 2; +END_ENTITY; + + +ENTITY qualitative_uncertainty + SUBTYPE OF (uncertainty_qualifier); + uncertainty_value : text; +END_ENTITY; + + +ENTITY quantified_assembly_component_usage + SUBTYPE OF (assembly_component_usage); + quantity : measure_with_unit; +WHERE + WR1 : (NOT ('NUMBER' IN TYPEOF(quantity.value_component))) + OR (quantity.value_component > 0); +END_ENTITY; + + +ENTITY quasi_uniform_curve + SUBTYPE OF (b_spline_curve); +END_ENTITY; + + +ENTITY quasi_uniform_surface + SUBTYPE OF (b_spline_surface); +END_ENTITY; + + +ENTITY radioactivity_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RADIOACTIVITY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY radioactivity_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.becquerel); +END_ENTITY; + + +ENTITY radius_dimension + SUBTYPE OF (dimension_curve_directed_callout); +WHERE + WR1 : SIZEOF (QUERY (con <* SELF.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_CURVE' IN TYPEOF (con)))<=1; +END_ENTITY; + + +ENTITY range_characteristic + SUBTYPE OF (representation, descriptive_representation_item); +WHERE + WR1 : NOT(SELF\representation.name IN ['tolerance', 'minimum tolerance', 'maximum tolerance', + 'nominal tolerance', 'plus minus tolerance', 'symmetrical tolerance', 'statistical tolerance']); +END_ENTITY; + + +ENTITY ratio_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RATIO_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY ratio_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY rational_b_spline_curve + SUBTYPE OF (b_spline_curve); + weights_data : LIST [2:?] OF REAL; +DERIVE + weights : ARRAY [0:upper_index_on_control_points] OF REAL := list_to_array(weights_data,0, + upper_index_on_control_points); +WHERE + WR1 : SIZEOF(weights_data) = SIZEOF(SELF\b_spline_curve. + control_points_list); + WR2 : curve_weights_positive(SELF); +END_ENTITY; + + +ENTITY rational_b_spline_surface + SUBTYPE OF (b_spline_surface); + weights_data : LIST [2:?] OF LIST [2:?] OF REAL; +DERIVE + weights : ARRAY [0:u_upper] OF ARRAY [0:v_upper] OF REAL := make_array_of_array(weights_data,0,u_upper,0,v_upper); +WHERE + WR1 : (SIZEOF(weights_data) = + SIZEOF(SELF\b_spline_surface.control_points_list)) + AND (SIZEOF(weights_data[1]) = + SIZEOF(SELF\b_spline_surface.control_points_list[1])); + WR2 : surface_weights_positive(SELF); +END_ENTITY; + + +ENTITY rational_representation_item + SUBTYPE OF (representation_item, slash_expression); +WHERE + WR1 : SIZEOF( QUERY( operand <* SELF\binary_generic_expression.operands | + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INT_LITERAL' IN TYPEOF(operand)))) = 0; +END_ENTITY; + + +ENTITY real_literal + SUBTYPE OF (literal_number); + SELF\literal_number.the_value : REAL; +END_ENTITY; + + +ENTITY real_representation_item + SUBTYPE OF (representation_item, real_literal); +END_ENTITY; + + +ENTITY rectangular_composite_surface + SUBTYPE OF (bounded_surface); + segments : LIST [1:?] OF LIST [1:?] OF surface_patch; +DERIVE + n_u : INTEGER := SIZEOF(segments); + n_v : INTEGER := SIZEOF(segments[1]); +WHERE + WR1 : SIZEOF(QUERY (s <* segments | n_v <> SIZEOF (s))) = 0; + WR2 : constraints_rectangular_composite_surface(SELF); +END_ENTITY; + + +ENTITY rectangular_trimmed_surface + SUBTYPE OF (bounded_surface); + basis_surface : surface; + u1 : parameter_value; + u2 : parameter_value; + v1 : parameter_value; + v2 : parameter_value; + usense : BOOLEAN; + vsense : BOOLEAN; +WHERE + WR1 : u1 <> u2; + WR2 : v1 <> v2; + WR3 : (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELEMENTARY_SURFACE' IN TYPEOF(basis_surface)) + AND (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE' IN TYPEOF(basis_surface)))) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_OF_REVOLUTION' IN TYPEOF(basis_surface)) + OR (usense = (u2 > u1)); + WR4 : (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SPHERICAL_SURFACE' IN TYPEOF(basis_surface)) + OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TOROIDAL_SURFACE' IN TYPEOF(basis_surface))) + OR (vsense = (v2 > v1)); +END_ENTITY; + + +ENTITY referenced_modified_datum + SUBTYPE OF (datum_reference); + modifier : limit_condition; +END_ENTITY; + + +ENTITY relative_event_occurrence + SUBTYPE OF (event_occurrence); + base_event : event_occurrence; + offset : time_measure_with_unit; +END_ENTITY; + + +ENTITY rep_item_group + SUBTYPE OF (group, representation_item); +WHERE + WR1 : SIZEOF(USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRESENTATION_LAYER_ASSIGNMENT.' + 'ASSIGNED_ITEMS')) > 0; + WR2 : SIZEOF(QUERY(r <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION.' + 'ITEMS') | r.name = 'group representation')) > 0; + WR3 : SIZEOF(QUERY(ga <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GROUP_ASSIGNMENT.' + 'ASSIGNED_GROUP') | ga.role.name <> 'group membership')) = 0; + WR4 : SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_REPRESENTATION_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'TOPOLOGICAL_REPRESENTATION_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'MAPPED_ITEM','AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'STYLED_ITEM'] * TYPEOF(SELF)) = 1; +END_ENTITY; + + +ENTITY reparametrised_composite_curve_segment + SUBTYPE OF (composite_curve_segment); + param_length : parameter_value; +WHERE + WR1 : param_length > 0.0; +END_ENTITY; + + +ENTITY representation; + name : label; + items : SET [1:?] OF representation_item; + context_of_items : representation_context; +DERIVE + description : text := get_description_value (SELF); + id : identifier := get_id_value (SELF); +WHERE + WR1 : SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) + <= 1; + WR2 : SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) + <= 1; +END_ENTITY; + + +ENTITY representation_context; + context_identifier : identifier; + context_type : text; +INVERSE + representations_in_context: SET [1:?] OF representation FOR context_of_items; +END_ENTITY; + + +ENTITY representation_item + SUPERTYPE OF (ONEOF (binary_representation_item, compound_representation_item, mapped_item, value_representation_item, mapped_item, styled_item, boolean_representation_item, date_representation_item, date_time_representation_item, integer_representation_item, logical_representation_item, rational_representation_item, real_representation_item)); + name : label; +WHERE + WR1 : SIZEOF(using_representations(SELF)) > 0; +END_ENTITY; + + +ENTITY representation_item_relationship; + name : label; + description : OPTIONAL text; + relating_representation_item : representation_item; + related_representation_item : representation_item; +END_ENTITY; + + +ENTITY representation_map; + mapping_origin : representation_item; + mapped_representation : representation; +INVERSE + map_usage: SET [1:?] OF mapped_item FOR mapping_source; +WHERE + WR1 : item_in_context(SELF.mapping_origin, + SELF.mapped_representation.context_of_items); +END_ENTITY; + + +ENTITY representation_relationship; + name : label; + description : OPTIONAL text; + rep_1 : representation; + rep_2 : representation; +END_ENTITY; + + +ENTITY representation_relationship_with_transformation + SUBTYPE OF (representation_relationship); + transformation_operator : transformation; +WHERE + WR1 : SELF\representation_relationship.rep_1.context_of_items + :<>: SELF\representation_relationship.rep_2.context_of_items; +END_ENTITY; + + +ENTITY requirement_assigned_object + SUBTYPE OF (group_assignment); + items : SET [1:1] OF requirement_assigned_item; + SELF\group_assignment.assigned_group : requirement_assignment; +END_ENTITY; + + +ENTITY requirement_assignment + SUBTYPE OF (characterized_object, group); +END_ENTITY; + + +ENTITY requirement_source + SUBTYPE OF (group); +END_ENTITY; + + +ENTITY requirement_view_definition_relationship + SUBTYPE OF (product_definition_relationship); +END_ENTITY; + + +ENTITY resistance_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RESISTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY resistance_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.ohm); +END_ENTITY; + + +ENTITY revolved_area_solid + SUBTYPE OF (swept_area_solid); + axis : axis1_placement; + angle : plane_angle_measure; +DERIVE + axis_line : line := representation_item('')|| + geometric_representation_item()|| curve()|| + line(axis.location, representation_item('')|| + geometric_representation_item()|| + vector(axis.z, 1.0)); +END_ENTITY; + + +ENTITY revolved_face_solid + SUBTYPE OF (swept_face_solid); + axis : axis1_placement; + angle : plane_angle_measure; +DERIVE + axis_line : line := representation_item('')|| + geometric_representation_item()|| curve()|| + line(axis.location, representation_item('')|| + geometric_representation_item()|| + vector(axis.z, 1.0)); +END_ENTITY; + + +ENTITY revolved_face_solid_with_trim_conditions + SUBTYPE OF (revolved_face_solid); + first_trim_condition : trim_condition_select; + second_trim_condition : trim_condition_select; +WHERE + WR1 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(first_trim_condition)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(second_trim_condition))); + WR2 : NOT((('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE_ANGLE_MEASURE' + IN TYPEOF(first_trim_condition)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE_ANGLE_MEASURE' + IN TYPEOF(second_trim_condition))) AND + (first_trim_condition = second_trim_condition)); +END_ENTITY; + + +ENTITY right_angular_wedge + SUBTYPE OF (geometric_representation_item); + position : axis2_placement_3d; + x : positive_length_measure; + y : positive_length_measure; + z : positive_length_measure; + ltx : length_measure; +WHERE + WR1 : ((0.0 <= ltx) AND (ltx < x)); +END_ENTITY; + + +ENTITY right_circular_cone + SUBTYPE OF (geometric_representation_item); + position : axis1_placement; + height : positive_length_measure; + radius : length_measure; + semi_angle : plane_angle_measure; +WHERE + WR1 : radius >= 0.0; +END_ENTITY; + + +ENTITY right_circular_cylinder + SUBTYPE OF (geometric_representation_item); + position : axis1_placement; + height : positive_length_measure; + radius : positive_length_measure; +END_ENTITY; + + +ENTITY right_to_usage_association + SUBTYPE OF (action_method_relationship); + SELF\action_method_relationship.related_method : information_right; + SELF\action_method_relationship.relating_method : information_usage_right; +DERIVE + right_applied : information_right := SELF\action_method_relationship.related_method; + right_usage : information_usage_right := SELF\action_method_relationship.relating_method; +END_ENTITY; + + +ENTITY role_association; + role : object_role; + item_with_role : role_select; +END_ENTITY; + + +ENTITY roundness_tolerance + SUBTYPE OF (geometric_tolerance); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)); +END_ENTITY; + + +ENTITY row_representation_item + SUBTYPE OF (compound_representation_item); + SELF\compound_representation_item.item_element : list_representation_item; +END_ENTITY; + + +ENTITY row_value + SUBTYPE OF (compound_representation_item); +END_ENTITY; + + +ENTITY row_variable + SUBTYPE OF (abstract_variable); +END_ENTITY; + + +ENTITY rule_action + SUBTYPE OF (action); +END_ENTITY; + + +ENTITY rule_condition + SUBTYPE OF (atomic_formula); +END_ENTITY; + + +ENTITY rule_definition + SUBTYPE OF (rule_software_definition); +END_ENTITY; + + +ENTITY rule_set + SUBTYPE OF (rule_software_definition); +END_ENTITY; + + +ENTITY rule_set_group + SUBTYPE OF (rule_software_definition); +END_ENTITY; + + +ENTITY rule_software_definition + SUBTYPE OF (product_definition); +END_ENTITY; + + +ENTITY rule_superseded_assignment + SUBTYPE OF (action_assignment); + items : SET [1:?] OF rule_superseded_item; +END_ENTITY; + + +ENTITY rule_supersedence + SUBTYPE OF (rule_action); +END_ENTITY; + + +ENTITY ruled_surface_swept_area_solid + SUBTYPE OF (surface_curve_swept_area_solid); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF(SELF.reference_surface)) AND + (SELF.reference_surface\b_spline_surface.u_degree = 1); + WR2 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(SELF.directrix)) OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' IN TYPEOF(SELF.directrix\surface_curve.curve_3d)) + AND + (SELF.directrix\surface_curve.curve_3d\b_spline_curve.degree = + SELF.reference_surface\b_spline_surface.v_degree)); +END_ENTITY; + + +ENTITY runout_zone_definition + SUBTYPE OF (tolerance_zone_definition); + orientation : runout_zone_orientation; +END_ENTITY; + + +ENTITY runout_zone_orientation; + angle : measure_with_unit; +END_ENTITY; + + +ENTITY runout_zone_orientation_reference_direction + SUBTYPE OF (runout_zone_orientation); + orientation_defining_relationship : shape_aspect_relationship; +END_ENTITY; + + +ENTITY satisfied_requirement + SUBTYPE OF (group_assignment); + items : SET [1:1] OF product_definition; + SELF\group_assignment.assigned_group : satisfies_requirement; +END_ENTITY; + + +ENTITY satisfies_requirement + SUBTYPE OF (group); +END_ENTITY; + + +ENTITY satisfying_item + SUBTYPE OF (group_assignment); + items : SET [1:1] OF requirement_satisfaction_item; + SELF\group_assignment.assigned_group : satisfies_requirement; +END_ENTITY; + + +ENTITY scalar_variable + SUBTYPE OF (abstract_variable); +END_ENTITY; + + +ENTITY scattering_parameter + SUBTYPE OF (polar_complex_number_literal); +WHERE + WR1 : SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\polar_complex_number_literal || + SELF\scattering_parameter))) = 0; +END_ENTITY; + + +ENTITY sculptured_solid + SUBTYPE OF (modified_solid); + sculpturing_element : generalized_surface_select; + positive_side : BOOLEAN; +END_ENTITY; + + +ENTITY seam_curve + SUBTYPE OF (surface_curve); +WHERE + WR1 : SIZEOF(SELF\surface_curve.associated_geometry) = 2; + WR2 : associated_surface(SELF\surface_curve.associated_geometry[1]) = + associated_surface(SELF\surface_curve.associated_geometry[2]); + WR3 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN + TYPEOF(SELF\surface_curve.associated_geometry[1]); + WR4 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN + TYPEOF(SELF\surface_curve.associated_geometry[2]); +END_ENTITY; + + +ENTITY security_classification; + name : label; + purpose : text; + security_level : security_classification_level; +END_ENTITY; + + +ENTITY security_classification_assignment + ABSTRACT SUPERTYPE; + assigned_security_classification : security_classification; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY security_classification_level; + name : label; +END_ENTITY; + + +ENTITY serial_numbered_effectivity + SUBTYPE OF (effectivity); + effectivity_start_id : identifier; + effectivity_end_id : OPTIONAL identifier; +END_ENTITY; + + +ENTITY shape_aspect; + name : label; + description : OPTIONAL text; + of_shape : product_definition_shape; + product_definitional : LOGICAL; +DERIVE + id : identifier := get_id_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY shape_aspect_associativity + SUBTYPE OF (shape_aspect_relationship); +WHERE + WR1 : SELF.relating_shape_aspect.product_definitional; + WR2 : NOT (SELF.related_shape_aspect.product_definitional); +END_ENTITY; + + +ENTITY shape_aspect_deriving_relationship + SUBTYPE OF (shape_aspect_relationship); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DERIVED_SHAPE_ASPECT' IN +TYPEOF + (SELF\SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT); +END_ENTITY; + + +ENTITY shape_aspect_relationship; + name : label; + description : OPTIONAL text; + relating_shape_aspect : shape_aspect; + related_shape_aspect : shape_aspect; +DERIVE + id : identifier := get_id_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY shape_definition_representation + SUBTYPE OF (property_definition_representation); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(SELF.definition)) OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_DEFINITION' IN TYPEOF(SELF.definition.definition)); + WR2 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION' IN TYPEOF(SELF.used_representation); +END_ENTITY; + + +ENTITY shape_dimension_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF (QUERY (temp <* SELF\representation.items | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' + IN TYPEOF (temp)))) = 0; + WR2 : SIZEOF (SELF\representation.items) <= 3; + WR3 : SIZEOF (QUERY (pos_mri <* QUERY (real_mri <* + SELF\representation.items | 'REAL' IN TYPEOF + (real_mri\measure_with_unit.value_component) ) | + NOT (pos_mri\measure_with_unit.value_component > 0.0 ))) = 0; +END_ENTITY; + + +ENTITY shape_feature_definition + SUBTYPE OF (characterized_object); +END_ENTITY; + + +ENTITY shape_representation + SUBTYPE OF (representation); +END_ENTITY; + + +ENTITY shape_representation_relationship + SUBTYPE OF (representation_relationship); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION' IN (TYPEOF(SELF\representation_relationship.rep_1) + TYPEOF(SELF\representation_relationship.rep_2)); +END_ENTITY; + + +ENTITY shape_representation_with_parameters + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF( QUERY( i <* SELF.items | SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLACEMENT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM'] * TYPEOF(i)) = 1 )) = SIZEOF(SELF.items); +END_ENTITY; + + +ENTITY shell_based_surface_model + SUBTYPE OF (geometric_representation_item); + sbsm_boundary : SET [1:?] OF shell; +WHERE + WR1 : constraints_geometry_shell_based_surface_model(SELF); +END_ENTITY; + + +ENTITY shell_based_wireframe_model + SUBTYPE OF (geometric_representation_item); + sbwm_boundary : SET [1:?] OF shell; +WHERE + WR1 : constraints_geometry_shell_based_wireframe_model(SELF); +END_ENTITY; + + +ENTITY shell_based_wireframe_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF ( +QUERY ( it <* SELF.items| NOT ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D' ] * TYPEOF (it)) = 1) )) = 0; + WR2 : SIZEOF ( +QUERY ( it <* SELF.items| ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' ] * TYPEOF (it)) = 1) )) >= 1; + WR3 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( ws <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF ( +QUERY ( eloop <* +QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (wsb)) )| NOT ( SIZEOF ( +QUERY ( el <* eloop\path.edge_list| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN TYPEOF (el.edge_element)) )) = 0) )) = 0) )) = 0) )) = 0; + WR4 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( ws <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF ( +QUERY ( eloop <* +QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (wsb)) )| NOT ( SIZEOF ( +QUERY ( pline_el <* +QUERY ( el <* eloop\path.edge_list| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF (el.edge_element\edge_curve.edge_geometry)) )| NOT ( SIZEOF (pline_el.edge_element\edge_curve.edge_geometry\polyline.points) > 2) )) = 0) )) = 0) )) = 0) )) = 0; + WR5 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( ws <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF ( +QUERY ( eloop <* +QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (wsb)) )| NOT ( SIZEOF ( +QUERY ( el <* eloop\path.edge_list| NOT valid_wireframe_edge_curve(el.edge_element\edge_curve.edge_geometry) )) = 0) )) = 0) )) = 0) )) = 0; + WR6 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( ws <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF ( +QUERY ( eloop <* +QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (wsb)) )| NOT ( SIZEOF ( +QUERY ( el <* eloop\path.edge_list| NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (el.edge_element.edge_start)) AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (el.edge_element.edge_end))) )) = 0) )) = 0) )) = 0) )) = 0; + WR7 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( ws <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF ( +QUERY ( eloop <* +QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (wsb)) )| NOT ( SIZEOF ( +QUERY ( el <* eloop\path.edge_list| NOT (valid_wireframe_vertex_point(el.edge_element.edge_start\vertex_point.vertex_geometry) AND valid_wireframe_vertex_point(el.edge_element.edge_end\vertex_point.vertex_geometry)) )) = 0) )) = 0) )) = 0) )) = 0; + WR8 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( ws <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF ( +QUERY ( vloop <* +QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF (wsb)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (vloop\vertex_loop.loop_vertex)) )) = 0) )) = 0) )) = 0; + WR9 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( ws <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF ( +QUERY ( vloop <* +QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF (wsb)) )| NOT valid_wireframe_vertex_point(vloop\vertex_loop.loop_vertex\vertex_point.vertex_geometry) )) = 0) )) = 0) )) = 0; + WR10 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( vs <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_SHELL' IN TYPEOF (sb)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (vs\vertex_shell.vertex_shell_extent.loop_vertex)) )) = 0) )) = 0; + WR11 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( vs <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_SHELL' IN TYPEOF (sb)) )| NOT valid_wireframe_vertex_point(vs\vertex_shell.vertex_shell_extent.loop_vertex\vertex_point.vertex_geometry) )) = 0) )) = 0; + WR12 : SIZEOF ( +QUERY ( mi <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'SHELL_BASED_WIREFRAME_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0; + WR13 : SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3; +END_ENTITY; + + +ENTITY shelled_solid + SUPERTYPE OF (ONEOF (double_offset_shelled_solid, complex_shelled_solid)) + SUBTYPE OF (modified_solid); + deleted_face_set : SET [1:?] OF face_surface; + thickness : length_measure; +WHERE + WR1 : thickness <> 0; +END_ENTITY; + + +ENTITY si_absorbed_dose_unit + SUBTYPE OF (absorbed_dose_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.gray; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_capacitance_unit + SUBTYPE OF (capacitance_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.farad; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_conductance_unit + SUBTYPE OF (conductance_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.siemens; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_dose_equivalent_unit + SUBTYPE OF (dose_equivalent_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.sievert; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_electric_charge_unit + SUBTYPE OF (electric_charge_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.coulomb; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_electric_potential_unit + SUBTYPE OF (electric_potential_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.volt; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_energy_unit + SUBTYPE OF (energy_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.joule; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_force_unit + SUBTYPE OF (force_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.newton; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_frequency_unit + SUBTYPE OF (frequency_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.hertz; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_illuminance_unit + SUBTYPE OF (illuminance_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.lux; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_inductance_unit + SUBTYPE OF (inductance_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.henry; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_magnetic_flux_density_unit + SUBTYPE OF (magnetic_flux_density_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.tesla; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_magnetic_flux_unit + SUBTYPE OF (magnetic_flux_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.weber; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_power_unit + SUBTYPE OF (power_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.watt; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_pressure_unit + SUBTYPE OF (pressure_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.pascal; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_radioactivity_unit + SUBTYPE OF (radioactivity_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.becquerel; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_resistance_unit + SUBTYPE OF (resistance_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.ohm; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_unit + SUBTYPE OF (named_unit); + prefix : OPTIONAL si_prefix; + name : si_unit_name; +DERIVE + SELF\named_unit.dimensions : dimensional_exponents := dimensions_for_si_unit(name); +WHERE + WR1 : NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MASS_UNIT' IN TYPEOF(SELF)) AND + (SIZEOF(USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DERIVED_UNIT_ELEMENT.UNIT')) > 0)) OR + (prefix = si_prefix.kilo); +END_ENTITY; + + +ENTITY simple_boolean_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (boolean_expression, simple_generic_expression); +END_ENTITY; + + +ENTITY simple_clause + SUBTYPE OF (compound_representation_item); +END_ENTITY; + + +ENTITY simple_generic_expression + ABSTRACT SUPERTYPE OF (ONEOF (generic_literal, generic_variable)) + SUBTYPE OF (generic_expression); +END_ENTITY; + + +ENTITY simple_numeric_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (numeric_expression, simple_generic_expression); +END_ENTITY; + + +ENTITY slash_expression + SUBTYPE OF (binary_numeric_expression); +END_ENTITY; + + +ENTITY smeared_material_definition + SUBTYPE OF (zone_structural_makeup); +END_ENTITY; + + +ENTITY solid_angle_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_ANGLE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY solid_angle_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY solid_curve_font + SUBTYPE OF (pre_defined_curve_font); +END_ENTITY; + + +ENTITY solid_model + SUPERTYPE OF (ONEOF (csg_solid, manifold_solid_brep, swept_face_solid, swept_area_solid, swept_disk_solid, solid_replica)) + SUBTYPE OF (geometric_representation_item); +END_ENTITY; + + +ENTITY solid_replica + SUBTYPE OF (solid_model); + parent_solid : solid_model; + transformation : cartesian_transformation_operator_3d; +WHERE + WR1 : acyclic_solid_replica(SELF, parent_solid); + WR2 : parent_solid\geometric_representation_item.dim = 3; +END_ENTITY; + + +ENTITY solid_with_angle_based_chamfer + SUBTYPE OF (solid_with_chamfered_edges); + offset_distance : positive_length_measure; + left_offset : BOOLEAN; + offset_angle : positive_plane_angle_measure; +END_ENTITY; + + +ENTITY solid_with_chamfered_edges + ABSTRACT SUPERTYPE OF (ONEOF (solid_with_single_offset_chamfer, solid_with_double_offset_chamfer, solid_with_angle_based_chamfer)) + SUBTYPE OF (edge_blended_solid); +END_ENTITY; + + +ENTITY solid_with_circular_pattern + SUPERTYPE OF (solid_with_incomplete_circular_pattern) + SUBTYPE OF (solid_with_shape_element_pattern); + replicate_count : positive_integer; + angular_spacing : plane_angle_measure; + radial_alignment : BOOLEAN; + reference_point : point; +END_ENTITY; + + +ENTITY solid_with_circular_pocket + SUBTYPE OF (solid_with_pocket); + pocket_radius : positive_length_measure; +WHERE + WR1 : SELF\solid_with_pocket.floor_blend_radius <= pocket_radius; +END_ENTITY; + + +ENTITY solid_with_circular_protrusion + SUBTYPE OF (solid_with_protrusion); + protrusion_radius : positive_length_measure; +END_ENTITY; + + +ENTITY solid_with_conical_bottom_round_hole + SUBTYPE OF (solid_with_stepped_round_hole); + semi_apex_angle : positive_plane_angle_measure; + tip_radius : non_negative_length_measure; +WHERE + WR1 : tip_radius < + SELF\solid_with_stepped_round_hole.segment_radii[segments]; +END_ENTITY; + + +ENTITY solid_with_constant_radius_edge_blend + SUBTYPE OF (edge_blended_solid); + radius : positive_length_measure; +END_ENTITY; + + +ENTITY solid_with_curved_slot + SUBTYPE OF (solid_with_slot); + slot_centreline : bounded_curve; +END_ENTITY; + + +ENTITY solid_with_depression + ABSTRACT SUPERTYPE OF ((solid_with_through_depression ANDOR ONEOF (solid_with_hole, solid_with_pocket, solid_with_slot, solid_with_groove))) + SUBTYPE OF (modified_solid_with_placed_configuration); + depth : positive_length_measure; +END_ENTITY; + + +ENTITY solid_with_double_offset_chamfer + SUBTYPE OF (solid_with_chamfered_edges); + left_offset_distance : positive_length_measure; + right_offset_distance : positive_length_measure; +END_ENTITY; + + +ENTITY solid_with_flat_bottom_round_hole + SUBTYPE OF (solid_with_stepped_round_hole); + fillet_radius : non_negative_length_measure; +WHERE + WR1 : fillet_radius < + SELF\solid_with_stepped_round_hole.segment_radii[segments]; +END_ENTITY; + + +ENTITY solid_with_general_pocket + SUBTYPE OF (solid_with_pocket); + profile : positioned_sketch; + reference_point : point; +WHERE + WR1 : SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_BOUNDED_SURFACE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE'] * TYPEOF(profile.sketch_basis)) = 1; + WR2 : profile IN using_items(reference_point,[]); +END_ENTITY; + + +ENTITY solid_with_general_protrusion + SUBTYPE OF (solid_with_protrusion); + profile : positioned_sketch; + reference_point : point; +WHERE + WR1 : SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_BOUNDED_SURFACE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE'] * TYPEOF(profile.sketch_basis)) = 1; + WR2 : profile IN using_items(reference_point,[]); +END_ENTITY; + + +ENTITY solid_with_groove + SUBTYPE OF (solid_with_depression); + groove_radius : positive_length_measure; + groove_width : positive_length_measure; + draft_angle : plane_angle_measure; + floor_fillet_radius : non_negative_length_measure; + external_groove : BOOLEAN; +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION' + IN TYPEOF(SELF)); +END_ENTITY; + + +ENTITY solid_with_hole + ABSTRACT SUPERTYPE OF (solid_with_stepped_round_hole) + SUBTYPE OF (solid_with_depression); +END_ENTITY; + + +ENTITY solid_with_incomplete_circular_pattern + SUBTYPE OF (solid_with_circular_pattern); + omitted_instances : SET [1:?] OF positive_integer; +WHERE + WR1 : SIZEOF(omitted_instances) < + SELF\solid_with_circular_pattern.replicate_count; + WR2 : SIZEOF(QUERY(q <* omitted_instances | q > + SELF\solid_with_circular_pattern.replicate_count)) = 0; +END_ENTITY; + + +ENTITY solid_with_incomplete_rectangular_pattern + SUBTYPE OF (solid_with_rectangular_pattern); + omitted_instances : SET [1:?] OF LIST [2:2] OF positive_integer; +WHERE + WR1 : NOT([1,1] IN omitted_instances); + WR2 : SIZEOF(omitted_instances) < + ((SELF\solid_with_rectangular_pattern.row_count * + SELF\solid_with_rectangular_pattern.column_count) - 1); + WR3 : SIZEOF(QUERY(q <* omitted_instances | + ((q[1] > SELF\solid_with_rectangular_pattern.row_count) OR + (q[2] > SELF\solid_with_rectangular_pattern.column_count)))) = 0; +END_ENTITY; + + +ENTITY solid_with_pocket + ABSTRACT SUPERTYPE OF (ONEOF (solid_with_rectangular_pocket, solid_with_circular_pocket, solid_with_general_pocket)) + SUBTYPE OF (solid_with_depression); + floor_blend_radius : non_negative_length_measure; + draft_angle : plane_angle_measure; +END_ENTITY; + + +ENTITY solid_with_protrusion + ABSTRACT SUPERTYPE OF (ONEOF (solid_with_circular_protrusion, solid_with_rectangular_protrusion, solid_with_general_protrusion)) + SUBTYPE OF (modified_solid_with_placed_configuration); + protrusion_height : positive_length_measure; + protrusion_draft_angle : plane_angle_measure; +END_ENTITY; + + +ENTITY solid_with_rectangular_pattern + SUPERTYPE OF (solid_with_incomplete_rectangular_pattern) + SUBTYPE OF (solid_with_shape_element_pattern); + row_count : positive_integer; + column_count : positive_integer; + row_spacing : length_measure; + column_spacing : length_measure; +WHERE + WR1 : (row_count * column_count) > 1; +END_ENTITY; + + +ENTITY solid_with_rectangular_pocket + SUBTYPE OF (solid_with_pocket); + pocket_length : positive_length_measure; + pocket_width : positive_length_measure; + corner_radius : non_negative_length_measure; +WHERE + WR1 : (corner_radius < pocket_width/2) + AND (corner_radius < pocket_length/2); +END_ENTITY; + + +ENTITY solid_with_rectangular_protrusion + SUBTYPE OF (solid_with_protrusion); + protrusion_length : positive_length_measure; + protrusion_width : positive_length_measure; + protrusion_corner_radius : non_negative_length_measure; +WHERE + WR1 : (protrusion_corner_radius <= protrusion_width/2) + AND (protrusion_corner_radius <= protrusion_length/2); +END_ENTITY; + + +ENTITY solid_with_shape_element_pattern + ABSTRACT SUPERTYPE OF (ONEOF (solid_with_circular_pattern, solid_with_rectangular_pattern)) + SUBTYPE OF (modified_solid_with_placed_configuration); + replicated_element : modified_solid_with_placed_configuration; +END_ENTITY; + + +ENTITY solid_with_single_offset_chamfer + SUBTYPE OF (solid_with_chamfered_edges); + offset_distance : positive_length_measure; +END_ENTITY; + + +ENTITY solid_with_slot + ABSTRACT SUPERTYPE OF ((ONEOF (solid_with_trapezoidal_section_slot, solid_with_tee_section_slot) AND ONEOF (solid_with_straight_slot, solid_with_curved_slot))) + SUBTYPE OF (solid_with_depression); + slot_width : positive_length_measure; + closed_ends : LIST [2:2] OF LOGICAL; + end_exit_faces : LIST [2:2] OF SET [0:?] OF face_surface; +WHERE + WR1 : NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION' IN + TYPEOF(SELF)) AND (closed_ends = [FALSE,FALSE])); + WR2 : NOT(((closed_ends[1] = TRUE) AND (SIZEOF(end_exit_faces[1]) <> 0)) + OR ((closed_ends[2] = TRUE) AND (SIZEOF(end_exit_faces[2]) <> 0))); +END_ENTITY; + + +ENTITY solid_with_spherical_bottom_round_hole + SUBTYPE OF (solid_with_stepped_round_hole); + sphere_radius : positive_length_measure; +WHERE + WR1 : sphere_radius >= + SELF\solid_with_stepped_round_hole.segment_radii[segments]; +END_ENTITY; + + +ENTITY solid_with_stepped_round_hole + SUPERTYPE OF ((solid_with_stepped_round_hole_and_conical_transitions ANDOR ONEOF (solid_with_flat_bottom_round_hole, solid_with_conical_bottom_round_hole, solid_with_spherical_bottom_round_hole))) + SUBTYPE OF (solid_with_hole); + segments : positive_integer; + segment_radii : LIST [1:segments] OF positive_length_measure; + segment_depths : LIST [1:segments] OF positive_length_measure; +DERIVE + SELF\solid_with_depression.depth : positive_length_measure := compute_total_depth(SELF); +WHERE + WR1 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION' + IN TYPEOF(SELF)) AND (SIZEOF(TYPEOF(SELF) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_FLAT_BOTTOM_ROUND_HOLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_SPHERICAL_BOTTOM_ROUND_HOLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_FLAT_BOTTOM_ROUND_HOLE']) + <> 0)); +END_ENTITY; + + +ENTITY solid_with_stepped_round_hole_and_conical_transitions + SUBTYPE OF (solid_with_stepped_round_hole); + conical_transitions : SET [1:?] OF conical_stepped_hole_transition; +WHERE + WR1 : SIZEOF (conical_transitions) <= + (SELF\solid_with_stepped_round_hole.segments + 1); + WR2 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION' + IN TYPEOF(SELF)) XOR (SIZEOF(conical_transitions) <= + SELF\solid_with_stepped_round_hole.segments); + WR3 : validate_countersink_radii(SELF); +END_ENTITY; + + +ENTITY solid_with_straight_slot + SUBTYPE OF (solid_with_slot); + slot_length : positive_length_measure; +END_ENTITY; + + +ENTITY solid_with_tee_section_slot + SUBTYPE OF (solid_with_slot); + tee_section_width : positive_length_measure; + collar_depth : positive_length_measure; +WHERE + WR1 : collar_depth < SELF\solid_with_depression.depth; + WR2 : tee_section_width > SELF\solid_with_slot.slot_width; +END_ENTITY; + + +ENTITY solid_with_through_depression + SUBTYPE OF (solid_with_depression); + exit_faces : SET [1:?] OF face_surface; +WHERE + WR1 : SIZEOF(TYPEOF(SELF) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_HOLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_POCKET', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_SLOT']) = 1; +END_ENTITY; + + +ENTITY solid_with_trapezoidal_section_slot + SUBTYPE OF (solid_with_slot); + draft_angle : plane_angle_measure; + floor_fillet_radius : non_negative_length_measure; +END_ENTITY; + + +ENTITY solid_with_variable_radius_edge_blend + SUBTYPE OF (edge_blended_solid, track_blended_solid); + point_list : LIST [2:?] OF point; + radius_list : LIST [2:?] OF positive_length_measure; + edge_function_list : LIST [1:?] OF blend_radius_variation_type; +WHERE + WR1 : SIZEOF(point_list) = SIZEOF(radius_list); + WR2 : SIZEOF(edge_function_list) = SIZEOF(radius_list) - 1; + WR3 : NOT((point_list[1] = point_list[HIINDEX(point_list)]) AND NOT + (radius_list[1] = radius_list[HIINDEX(radius_list)])); +END_ENTITY; + + +ENTITY source_for_requirement + SUBTYPE OF (group_assignment); + items : SET [1:1] OF requirement_source_item; + SELF\group_assignment.assigned_group : requirement_source; +END_ENTITY; + + +ENTITY sourced_requirement + SUBTYPE OF (group_assignment); + items : SET [1:1] OF product_definition; + SELF\group_assignment.assigned_group : requirement_source; +END_ENTITY; + + +ENTITY specification_definition + SUBTYPE OF (product_definition); +END_ENTITY; + + +ENTITY specified_higher_usage_occurrence + SUBTYPE OF (assembly_component_usage); + upper_usage : assembly_component_usage; + next_usage : next_assembly_usage_occurrence; +UNIQUE + UR1 : upper_usage, next_usage; +WHERE + WR1 : SELF :<>: upper_usage; + WR2 : SELF\product_definition_relationship.relating_product_definition + :=: upper_usage.relating_product_definition; + WR3 : SELF\product_definition_relationship.related_product_definition + :=: next_usage.related_product_definition; + WR4 : (upper_usage.related_product_definition :=: + next_usage.relating_product_definition) OR + (SIZEOF (QUERY (pdr <* USEDIN (upper_usage.related_product_definition, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP.' + + 'RELATED_PRODUCT_DEFINITION') | + pdr.relating_product_definition :=: + next_usage.relating_product_definition)) = 1); + WR5 : SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NEXT_ASSEMBLY_USAGE_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SPECIFIED_HIGHER_USAGE_OCCURRENCE'] + * TYPEOF(upper_usage)) = 1; +END_ENTITY; + + +ENTITY sphere + SUBTYPE OF (geometric_representation_item); + radius : positive_length_measure; + centre : point; +END_ENTITY; + + +ENTITY spherical_surface + SUBTYPE OF (elementary_surface); + radius : positive_length_measure; +END_ENTITY; + + +ENTITY standard_uncertainty + SUPERTYPE OF (expanded_uncertainty) + SUBTYPE OF (uncertainty_qualifier); + uncertainty_value : REAL; +END_ENTITY; + + +ENTITY start_request + SUBTYPE OF (action_request_assignment); + items : SET [1:?] OF start_request_item; +END_ENTITY; + + +ENTITY start_work + SUBTYPE OF (action_assignment); + items : SET [1:?] OF work_item; +END_ENTITY; + + +ENTITY straightness_tolerance + SUBTYPE OF (geometric_tolerance); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)); +END_ENTITY; + + +ENTITY structured_dimension_callout + SUBTYPE OF (draughting_callout); +WHERE + WR1 : SIZEOF (TYPEOF (SELF) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DATUM_FEATURE_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DATUM_TARGET_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRICAL_TOLERANCE_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_DIRECTED_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_DIRECTED_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT']) = 0; + WR2 : SIZEOF (QUERY (ato <* QUERY (con <* SELF.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (con))) | + NOT (ato.name IN + ['dimension value', 'tolerance value', 'unit text', + 'prefix text', 'suffix text']))) = 0; + WR3 : SIZEOF (QUERY (ato <* QUERY (con <* SELF.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (con))) | + (ato.name = 'dimension value') + )) >= 1; + WR4 : SIZEOF (QUERY (dcr <* USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_CALLOUT_RELATIONSHIP.' + + 'RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN TYPEOF (dcr)) AND + (dcr.name = 'prefix') )) <= 1; + WR5 : SIZEOF (QUERY (dcr <* USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_CALLOUT_RELATIONSHIP.' + + 'RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN TYPEOF (dcr)) AND + (dcr.name = 'suffix') )) <= 1; + WR6 : NOT((SIZEOF (QUERY (ato <* QUERY (con <* SELF.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(con)) ) | + (ato.name = 'prefix text') + )) > 0)) OR + (SIZEOF (QUERY (dcr <* USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_CALLOUT_RELATIONSHIP.' + + 'RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN TYPEOF (dcr)) AND + (dcr.name = 'prefix') )) = 1); + WR7 : NOT(SIZEOF (QUERY (ato <* QUERY (con <* SELF.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(con))) | + (ato.name = 'suffix text') + )) > 0) OR + (SIZEOF (QUERY (dcr <* USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_CALLOUT_RELATIONSHIP.' + + 'RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN TYPEOF (dcr)) AND + (dcr.name = 'suffix') )) = 1); +END_ENTITY; + + +ENTITY structured_text_composition + SUBTYPE OF (compound_representation_item); +END_ENTITY; + + +ENTITY structured_text_representation + SUBTYPE OF (representation); + SELF\representation.items : SET [1:?] OF string_representation_item_select; +END_ENTITY; + + +ENTITY styled_item + SUBTYPE OF (representation_item); + styles : SET [1:?] OF presentation_style_assignment; + item : representation_item; +WHERE + WR1 : (SIZEOF(SELF.styles) = 1) + XOR + (SIZEOF(QUERY(pres_style <* SELF.styles | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_STYLE_BY_CONTEXT' IN + TYPEOF(pres_style)) + )) = 0); +END_ENTITY; + + +ENTITY subedge + SUBTYPE OF (edge); + parent_edge : edge; +END_ENTITY; + + +ENTITY subface + SUBTYPE OF (face); + parent_face : face; +WHERE + WR1 : NOT (mixed_loop_type_set(list_to_set(list_face_loops(SELF)) + + list_to_set(list_face_loops(parent_face)))); +END_ENTITY; + + +ENTITY supplied_part_relationship + SUBTYPE OF (product_definition_relationship); +END_ENTITY; + + +ENTITY surface + SUPERTYPE OF (ONEOF (elementary_surface, swept_surface, bounded_surface, offset_surface, surface_replica)) + SUBTYPE OF (geometric_representation_item); +END_ENTITY; + + +ENTITY surface_condition_callout + SUBTYPE OF (draughting_callout); +WHERE + WR1 : SIZEOF ( QUERY ( c <* SELF.contents | SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'ANNOTATION_CURVE_OCCURRENCE' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'ANNOTATION_SYMBOL_OCCURRENCE' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'ANNOTATION_TEXT_OCCURRENCE']* TYPEOF + ( c ) ) <>1 ) ) =0; +END_ENTITY; + + +ENTITY surface_curve + SUPERTYPE OF ((ONEOF (intersection_curve, seam_curve) ANDOR bounded_surface_curve)) + SUBTYPE OF (curve); + curve_3d : curve; + associated_geometry : LIST [1:2] OF pcurve_or_surface; + master_representation : preferred_surface_curve_representation; +DERIVE + basis_surface : SET [1:2] OF surface := get_basis_surface(SELF); +WHERE + WR1 : curve_3d.dim = 3; + WR2 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(associated_geometry[1])) OR + (master_representation <> pcurve_s1); + WR3 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(associated_geometry[2])) OR + (master_representation <> pcurve_s2); + WR4 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(curve_3d)); +END_ENTITY; + + +ENTITY surface_curve_swept_area_solid + SUBTYPE OF (swept_area_solid); + directrix : curve; + start_param : REAL; + end_param : REAL; + reference_surface : surface; +WHERE + WR1 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN TYPEOF(directrix))) OR + (reference_surface IN (directrix\surface_curve.basis_surface)); +END_ENTITY; + + +ENTITY surface_of_linear_extrusion + SUBTYPE OF (swept_surface); + extrusion_axis : vector; +END_ENTITY; + + +ENTITY surface_of_revolution + SUBTYPE OF (swept_surface); + axis_position : axis1_placement; +DERIVE + axis_line : line := representation_item('')|| + geometric_representation_item()|| curve()|| + line(axis_position.location, representation_item('')|| + geometric_representation_item()|| + vector(axis_position.z, 1.0)); +END_ENTITY; + + +ENTITY surface_patch + SUBTYPE OF (founded_item); + parent_surface : bounded_surface; + u_transition : transition_code; + v_transition : transition_code; + u_sense : BOOLEAN; + v_sense : BOOLEAN; +INVERSE + using_surfaces: BAG [1:?] OF rectangular_composite_surface FOR segments; +WHERE + WR1 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_BOUNDED_SURFACE' + IN TYPEOF(parent_surface))); +END_ENTITY; + + +ENTITY surface_profile_tolerance + SUBTYPE OF (geometric_tolerance); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)) OR ( SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 3); +END_ENTITY; + + +ENTITY surface_rendering_properties; + rendered_colour : colour; +END_ENTITY; + + +ENTITY surface_replica + SUBTYPE OF (surface); + parent_surface : surface; + transformation : cartesian_transformation_operator_3d; +WHERE + WR1 : acyclic_surface_replica(SELF, parent_surface); +END_ENTITY; + + +ENTITY surface_side_style + SUBTYPE OF (founded_item); + name : label; + styles : SET [1:7] OF surface_style_element_select; +WHERE + WR1 : SIZEOF(QUERY( style1 <* SELF.styles | + SIZEOF(QUERY( style2 <* SELF.styles - style1 | + TYPEOF(style1) = TYPEOF(style2) + )) > 0 + )) = 0; +END_ENTITY; + + +ENTITY surface_style_boundary + SUBTYPE OF (founded_item); + style_of_boundary : curve_or_render; +END_ENTITY; + + +ENTITY surface_style_control_grid + SUBTYPE OF (founded_item); + style_of_control_grid : curve_or_render; +END_ENTITY; + + +ENTITY surface_style_fill_area + SUBTYPE OF (founded_item); + fill_area : fill_area_style; +END_ENTITY; + + +ENTITY surface_style_parameter_line + SUBTYPE OF (founded_item); + style_of_parameter_lines : curve_or_render; + direction_counts : SET [1:2] OF direction_count_select; +WHERE + WR1 : (HIINDEX(SELF.direction_counts) = 1) + XOR + (TYPEOF(SELF.direction_counts[1]) <> + TYPEOF(SELF.direction_counts[2])); +END_ENTITY; + + +ENTITY surface_style_reflectance_ambient; + ambient_reflectance : REAL; +END_ENTITY; + + +ENTITY surface_style_reflectance_ambient_diffuse + SUBTYPE OF (surface_style_reflectance_ambient); + diffuse_reflectance : REAL; +END_ENTITY; + + +ENTITY surface_style_reflectance_ambient_diffuse_specular + SUBTYPE OF (surface_style_reflectance_ambient_diffuse); + specular_reflectance : REAL; + specular_exponent : REAL; + specular_colour : colour; +END_ENTITY; + + +ENTITY surface_style_rendering; + rendering_method : shading_surface_method; + surface_colour : colour; +END_ENTITY; + + +ENTITY surface_style_rendering_with_properties + SUBTYPE OF (surface_style_rendering); + properties : SET [1:2] OF rendering_properties_select; +WHERE + WR1 : (HIINDEX(SELF.properties) = 1) + XOR + (TYPEOF(SELF.properties[1]) <> TYPEOF(SELF.properties[2])); +END_ENTITY; + + +ENTITY surface_style_segmentation_curve + SUBTYPE OF (founded_item); + style_of_segmentation_curve : curve_or_render; +END_ENTITY; + + +ENTITY surface_style_silhouette + SUBTYPE OF (founded_item); + style_of_silhouette : curve_or_render; +END_ENTITY; + + +ENTITY surface_style_transparent; + transparency : REAL; +WHERE + WR1 : {0.0 <= transparency <= 1.0}; +END_ENTITY; + + +ENTITY surface_style_usage + SUBTYPE OF (founded_item); + side : surface_side; + style : surface_side_style_select; +END_ENTITY; + + +ENTITY surface_texture_representation + SUBTYPE OF (representation); +WHERE + WR1 : SIZEOF ( QUERY ( i <* SELF.items | SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MEASURE_REPRESENTATION_ITEM' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'VALUE_RANGE' , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DESCRIPTIVE_REPRESENTATION_ITEM']* TYPEOF ( i ) ) <>1 ) ) + =0; + WR2 : ( SIZEOF ( QUERY ( i <* SELF.items | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF ( i ) ) ) =1 ) + AND ( SIZEOF ( QUERY ( i <* SELF.items | ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'DESCRIPTIVE_REPRESENTATION_ITEM' IN + TYPEOF ( i ) ) AND ( i.name = 'measuring method' ) ) ) =1 ); + WR3 : SIZEOF ( QUERY ( i <* SELF.items | SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MEASURE_REPRESENTATION_ITEM' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'VALUE_RANGE']* TYPEOF ( i ) ) =1 ) ) + >0; + WR4 : ( SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'REPRESENTATION_RELATIONSHIP.'+ + 'REP_1' ) ) <=1 ) AND ( SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'REPRESENTATION_RELATIONSHIP.'+ + 'REP_2' ) ) =0 ) AND ( SIZEOF ( QUERY ( rr <* USEDIN ( SELF + , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'REPRESENTATION_RELATIONSHIP.'+ + 'REP_1' ) | rr. rep_2.name = 'measuring direction' ) ) = + SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'REPRESENTATION_RELATIONSHIP.'+ + 'REP_1' ) ) ); + WR5 : ( SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) ) =1 ) AND ( SIZEOF ( QUERY ( pdr + <* USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) | SIZEOF ( QUERY ( gpa <* USEDIN ( + pdr. definition , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'GENERAL_PROPERTY_ASSOCIATION.'+ + 'DERIVED_DEFINITION' ) | ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'GENERAL_PROPERTY' IN TYPEOF ( gpa. base_definition ) ) AND + ( gpa. base_definition.name ='surface_condition' ) ) ) =1 ) + ) =1 ); +END_ENTITY; + + +ENTITY surfaced_open_shell + SUBTYPE OF (open_shell); +WHERE + WR1 : SIZEOF(QUERY(q <* SELF\connected_face_set.cfs_faces | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE' IN TYPEOF(q)))) = 0; +END_ENTITY; + + +ENTITY swept_area_solid + SUPERTYPE OF (ONEOF (revolved_area_solid, extruded_area_solid, surface_curve_swept_area_solid)) + SUBTYPE OF (solid_model); + swept_area : curve_bounded_surface; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE' IN TYPEOF(swept_area.basis_surface); +END_ENTITY; + + +ENTITY swept_disk_solid + SUBTYPE OF (solid_model); + directrix : curve; + radius : positive_length_measure; + inner_radius : OPTIONAL positive_length_measure; + start_param : REAL; + end_param : REAL; +WHERE + WR1 : directrix.dim = 3; + WR2 : (NOT EXISTS(inner_radius)) OR (radius > inner_radius); +END_ENTITY; + + +ENTITY swept_face_solid + SUPERTYPE OF (ONEOF (extruded_face_solid, revolved_face_solid)) + SUBTYPE OF (solid_model); + swept_face : face_surface; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE' IN TYPEOF(swept_face.face_geometry); +END_ENTITY; + + +ENTITY swept_surface + SUPERTYPE OF (ONEOF (surface_of_linear_extrusion, surface_of_revolution)) + SUBTYPE OF (surface); + swept_curve : curve; +END_ENTITY; + + +ENTITY symbol + SUBTYPE OF (representation_item); +END_ENTITY; + + +ENTITY symbol_colour; + colour_of_symbol : colour; +END_ENTITY; + + +ENTITY symbol_representation + SUBTYPE OF (representation); +END_ENTITY; + + +ENTITY symbol_representation_map + SUBTYPE OF (representation_map); + SELF\representation_map.mapped_representation : symbol_representation; + SELF\representation_map.mapping_origin : axis2_placement; +END_ENTITY; + + +ENTITY symbol_style + SUBTYPE OF (founded_item); + name : label; + style_of_symbol : symbol_style_select; +END_ENTITY; + + +ENTITY symbol_target + SUBTYPE OF (geometric_representation_item); + placement : axis2_placement; + x_scale : positive_ratio_measure; + y_scale : positive_ratio_measure; +END_ENTITY; + + +ENTITY symmetric_shape_aspect + SUBTYPE OF (shape_aspect); +INVERSE + basis_relationships: SET [1:?] OF shape_aspect_relationship FOR relating_shape_aspect; +WHERE + WR1 : SIZEOF (QUERY (x<*SELF\symmetric_shape_aspect.basis_relationships | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CENTRE_OF_SYMMETRY' IN TYPEOF + (x\shape_aspect_relationship.related_shape_aspect)))>=1; +END_ENTITY; + + +ENTITY symmetry_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 3; +END_ENTITY; + + +ENTITY table_representation_item + SUBTYPE OF (compound_representation_item); +WHERE + WR1 : SIZEOF(QUERY(itet <* SELF\compound_representation_item.item_element | + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ROW_REPRESENTATION_ITEM' IN TYPEOF(itet)) + )) = 0; +END_ENTITY; + + +ENTITY tactile_appearance_representation + SUBTYPE OF (representation); +WHERE + WR1 : SIZEOF ( QUERY ( i <* SELF.items | SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MEASURE_REPRESENTATION_ITEM' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'VALUE_RANGE']* TYPEOF ( i ) ) <>1 )) =0; + WR2 : SIZEOF ( QUERY ( i <* SELF.items | name ='depth' ) ) <=1; + WR3 : ( SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) ) =1 ) AND ( SIZEOF ( QUERY ( pdr + <* USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) | SIZEOF ( QUERY ( gpa <* USEDIN ( + pdr. definition , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'GENERAL_PROPERTY_ASSOCIATION.'+ + 'DERIVED_DEFINITION' ) | ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'GENERAL_PROPERTY' IN TYPEOF ( gpa. base_definition ) ) AND + ( gpa. base_definition.name ='surface_condition' ) ) ) =1 )) =1 ); +END_ENTITY; + + +ENTITY tagged_text_format + SUBTYPE OF (representation_context); +END_ENTITY; + + +ENTITY tagged_text_item + SUBTYPE OF (descriptive_representation_item); +END_ENTITY; + + +ENTITY tangent + SUBTYPE OF (derived_shape_aspect); +WHERE + WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1; +END_ENTITY; + + +ENTITY terminator_symbol + SUBTYPE OF (annotation_symbol_occurrence); + annotated_curve : annotation_curve_occurrence; +END_ENTITY; + + +ENTITY text_font; + id : identifier; + name : label; + description : text; +INVERSE + glyphs: SET [1:?] OF character_glyph_font_usage FOR font; +END_ENTITY; + + +ENTITY text_font_family; + id : identifier; + name : label; + description : text; +INVERSE + fonts: SET [1:?] OF text_font_in_family FOR family; +END_ENTITY; + + +ENTITY text_font_in_family; + font : text_font; + family : text_font_family; +END_ENTITY; + + +ENTITY text_literal + SUBTYPE OF (geometric_representation_item); + literal : presentable_text; + placement : axis2_placement; + alignment : text_alignment; + path : text_path; + font : font_select; +END_ENTITY; + + +ENTITY text_literal_with_associated_curves + SUBTYPE OF (text_literal); + associated_curves : SET [1:?] OF curve; +END_ENTITY; + + +ENTITY text_literal_with_blanking_box + SUBTYPE OF (text_literal); + blanking : planar_box; +END_ENTITY; + + +ENTITY text_literal_with_delineation + SUBTYPE OF (text_literal); + delineation : text_delineation; +END_ENTITY; + + +ENTITY text_literal_with_extent + SUBTYPE OF (text_literal); + extent : planar_extent; +END_ENTITY; + + +ENTITY text_string_representation + SUBTYPE OF (representation); + SELF\representation.items : SET [1:?] OF text_string_representation_item; +WHERE + WR1 : SIZEOF ( + QUERY (item <* SELF\representation.items | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_CHARACTER', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEFINED_CHARACTER_GLYPH', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT'] * + TYPEOF (item)) = 0) + )) >= 1; + WR2 : SIZEOF ( + QUERY (a2p <* + QUERY (item <* SELF\representation.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT' IN TYPEOF (item)) | + NOT ((SIZEOF ( + QUERY (at <* + QUERY (item <* SELF\representation.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'ANNOTATION_TEXT' IN TYPEOF (item)) | + (at\mapped_item.mapping_target :=: a2p))) >= 1) OR + (SIZEOF ( + QUERY (atc <* + QUERY (item <* SELF\representation.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'ANNOTATION_TEXT_CHARACTER' IN TYPEOF (item)) | + (atc\mapped_item.mapping_target :=: a2p))) >= 1) + ))) = 0; +END_ENTITY; + + +ENTITY text_style + SUBTYPE OF (founded_item); + name : label; + character_appearance : character_style_select; +END_ENTITY; + + +ENTITY text_style_for_defined_font; + text_colour : colour; +END_ENTITY; + + +ENTITY text_style_with_box_characteristics + SUBTYPE OF (text_style); + characteristics : SET [1:4] OF box_characteristic_select; +WHERE + WR1 : SIZEOF( QUERY( c1 <* SELF.characteristics | + SIZEOF( QUERY( c2 <* SELF.characteristics - c1 | + TYPEOF (c1) = TYPEOF (c2) + )) > 0 + )) = 0; +END_ENTITY; + + +ENTITY text_style_with_mirror + SUBTYPE OF (text_style); + mirror_placement : axis2_placement; +END_ENTITY; + + +ENTITY text_style_with_spacing + SUBTYPE OF (text_style); + character_spacing : character_spacing_select; +END_ENTITY; + + +ENTITY thermal_resistance_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.THERMAL_RESISTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY thermal_resistance_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = + dimensional_exponents ( -1.0, -1.0, -3.0, 0.0, 1.0, 0.0, 0.0 ); +END_ENTITY; + + +ENTITY thermodynamic_temperature_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.THERMODYNAMIC_TEMPERATURE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY thermodynamic_temperature_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 1.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY thickened_face_solid + SUBTYPE OF (solid_model); + base_element : generalized_surface_select; + offset1 : length_measure; + offset2 : length_measure; +WHERE + WR1 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE' IN TYPEOF(base_element)) AND + (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_SURFACE' IN TYPEOF(base_element)))); + WR2 : offset1 <> offset2; +END_ENTITY; + + +ENTITY thickness_laminate_definition + SUBTYPE OF (product_definition); +WHERE + WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.' + + 'RELATING_PRODUCT_DEFINITION') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN + TYPEOF (pdr))) = 1; +END_ENTITY; + + +ENTITY thickness_laminate_table + SUBTYPE OF (zone_structural_makeup); +END_ENTITY; + + +ENTITY time_interval; + id : identifier; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY time_interval_assignment + ABSTRACT SUPERTYPE; + assigned_time_interval : time_interval; + role : time_interval_role; +END_ENTITY; + + +ENTITY time_interval_based_effectivity + SUBTYPE OF (effectivity); + effectivity_period : time_interval; +END_ENTITY; + + +ENTITY time_interval_relationship; + name : label; + description : OPTIONAL text; + relating_time_interval : time_interval; + related_time_interval : time_interval; +END_ENTITY; + + +ENTITY time_interval_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY time_interval_with_bounds + SUBTYPE OF (time_interval); + primary_bound : OPTIONAL date_time_or_event_occurrence; + secondary_bound : OPTIONAL date_time_or_event_occurrence; + duration : OPTIONAL time_measure_with_unit; +WHERE + WR1 : NOT (EXISTS(secondary_bound) AND EXISTS(duration)); + WR2 : EXISTS(primary_bound) OR EXISTS(secondary_bound); +END_ENTITY; + + +ENTITY time_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TIME_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY time_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 1.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY tolerance_value; + lower_bound : measure_with_unit; + upper_bound : measure_with_unit; +DERIVE + lbvc : REAL := lower_bound\measure_with_unit.value_component; + ubvc : REAL := upper_bound\measure_with_unit.value_component; +WHERE + WR1 : ubvc > lbvc; + WR2 : upper_bound\measure_with_unit.unit_component = + lower_bound\measure_with_unit.unit_component; +END_ENTITY; + + +ENTITY tolerance_zone + SUBTYPE OF (shape_aspect); + defining_tolerance : SET [1:?] OF geometric_tolerance; + form : tolerance_zone_form; +END_ENTITY; + + +ENTITY tolerance_zone_definition + SUPERTYPE OF (ONEOF (projected_zone_definition, runout_zone_definition)); + zone : tolerance_zone; + boundaries : SET [1:?] OF shape_aspect; +END_ENTITY; + + +ENTITY tolerance_zone_form; + name : label; +END_ENTITY; + + +ENTITY topological_representation_item + SUPERTYPE OF (ONEOF (vertex, edge, face_bound, face, vertex_shell, wire_shell, connected_edge_set, connected_face_set, (loop ANDOR path))) + SUBTYPE OF (representation_item); +END_ENTITY; + + +ENTITY toroidal_surface + SUBTYPE OF (elementary_surface); + major_radius : positive_length_measure; + minor_radius : positive_length_measure; +END_ENTITY; + + +ENTITY torus + SUBTYPE OF (geometric_representation_item); + position : axis1_placement; + major_radius : positive_length_measure; + minor_radius : positive_length_measure; +WHERE + WR1 : major_radius > minor_radius; +END_ENTITY; + + +ENTITY total_runout_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 2; +END_ENTITY; + + +ENTITY track_blended_solid + ABSTRACT SUPERTYPE OF (track_blended_solid_with_end_conditions) + SUBTYPE OF (edge_blended_solid); +WHERE + WR1 : check_continuous_edges(SELF\edge_blended_solid.blended_edges); +END_ENTITY; + + +ENTITY track_blended_solid_with_end_conditions + SUBTYPE OF (track_blended_solid); + end_conditions : LIST [2:2] OF blend_end_condition_select; +WHERE + WR1 : SIZEOF(TYPEOF(SELF) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_CONSTANT_RADIUS_EDGE_BLEND', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_VARIABLE_RADIUS_EDGE_BLEND', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_CHAMFERED_EDGES']) = 1; + WR2 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX' IN TYPEOF(end_conditions[1])) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX' IN TYPEOF(end_conditions[2]))); + WR3 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX' IN TYPEOF(end_conditions[1])) + AND (NOT ((end_conditions[1] + :=: SELF\edge_blended_solid.blended_edges[1].edge_start) + XOR (end_conditions[1] + :=: SELF\edge_blended_solid.blended_edges[1].edge_end)))); + WR4 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX' IN TYPEOF(end_conditions[2])) + AND (NOT ((end_conditions[2] + :=: SELF\edge_blended_solid.blended_edges[HIINDEX( + SELF\edge_blended_solid.blended_edges)].edge_start) + XOR (end_conditions[2] + :=: SELF\edge_blended_solid.blended_edges[HIINDEX( + SELF\edge_blended_solid.blended_edges)].edge_end)))); +END_ENTITY; + + +ENTITY transformation_with_derived_angle + SUPERTYPE OF (ONEOF (draped_defined_transformation, laid_defined_transformation)) + SUBTYPE OF (item_defined_transformation); + SELF\item_defined_transformation.transform_item_1 : angle_direction_reference_with_a2p3d_select; + SELF\item_defined_transformation.transform_item_2 : axis2_placement_3d; +DERIVE + orientation_angle : plane_angle_measure := derive_angle ( + SELF\item_defined_transformation.transform_item_1, + SELF\item_defined_transformation.transform_item_2); +WHERE + WR1 : (SELF\item_defined_transformation.transform_item_1\ + axis2_placement_3d.p[3].direction_ratios[1] = + SELF\item_defined_transformation.transform_item_2\ + axis2_placement_3d.p[3].direction_ratios[1]) + AND + (SELF\item_defined_transformation.transform_item_1\ + axis2_placement_3d.p[3].direction_ratios[2] = + SELF\item_defined_transformation.transform_item_2\ + axis2_placement_3d.p[3].direction_ratios[2]) + AND + (SELF\item_defined_transformation.transform_item_1\ + axis2_placement_3d.p[3].direction_ratios[3] = + SELF\item_defined_transformation.transform_item_2\ + axis2_placement_3d.p[3].direction_ratios[3]); +END_ENTITY; + + +ENTITY trimmed_curve + SUBTYPE OF (bounded_curve); + basis_curve : curve; + trim_1 : SET [1:2] OF trimming_select; + trim_2 : SET [1:2] OF trimming_select; + sense_agreement : BOOLEAN; + master_representation : trimming_preference; +WHERE + WR1 : (HIINDEX(trim_1) = 1) OR (TYPEOF(trim_1[1]) <> TYPEOF(trim_1[2])); + WR2 : (HIINDEX(trim_2) = 1) OR (TYPEOF(trim_2[1]) <> TYPEOF(trim_2[2])); +END_ENTITY; + + +ENTITY two_direction_repeat_factor + SUBTYPE OF (one_direction_repeat_factor); + second_repeat_factor : vector; +END_ENTITY; + + +ENTITY type_qualifier; + name : label; +END_ENTITY; + + +ENTITY unary_generic_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (generic_expression); + operand : generic_expression; +END_ENTITY; + + +ENTITY unary_numeric_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (numeric_expression, unary_generic_expression); + SELF\unary_generic_expression.operand : numeric_expression; +END_ENTITY; + + +ENTITY uncertainty_assigned_representation + SUBTYPE OF (representation); + uncertainty : SET [1:?] OF uncertainty_measure_with_unit; +END_ENTITY; + + +ENTITY uncertainty_measure_with_unit + SUBTYPE OF (measure_with_unit); + name : label; + description : OPTIONAL text; +WHERE + WR1 : valid_measure_value (SELF\measure_with_unit.value_component); +END_ENTITY; + + +ENTITY uncertainty_qualifier + SUPERTYPE OF (ONEOF (standard_uncertainty, qualitative_uncertainty)); + measure_name : label; + description : text; +END_ENTITY; + + +ENTITY uniform_curve + SUBTYPE OF (b_spline_curve); +END_ENTITY; + + +ENTITY uniform_resource_identifier + SUBTYPE OF (descriptive_representation_item); +END_ENTITY; + + +ENTITY uniform_surface + SUBTYPE OF (b_spline_surface); +END_ENTITY; + + +ENTITY usage_association + SUBTYPE OF (action_method_relationship); + SELF\action_method_relationship.related_method : information_usage_right; + SELF\action_method_relationship.relating_method : information_usage_right; +DERIVE + related : information_usage_right := SELF\action_method_relationship.related_method; + relating : information_usage_right := SELF\action_method_relationship.relating_method; +END_ENTITY; + + +ENTITY user_defined_curve_font + SUBTYPE OF (curve_style_font, mapped_item); +END_ENTITY; + + +ENTITY user_defined_marker + SUBTYPE OF (mapped_item, pre_defined_marker); +END_ENTITY; + + +ENTITY user_defined_terminator_symbol + SUBTYPE OF (mapped_item, pre_defined_symbol); +END_ENTITY; + + +ENTITY user_selected_elements + SUBTYPE OF (representation_item); + picked_items : SET [1:?] OF representation_item; +END_ENTITY; + + +ENTITY user_selected_shape_elements + SUBTYPE OF (user_selected_elements); +WHERE + WR1 : SIZEOF(QUERY(q <* + SELF\user_selected_elements.picked_items | NOT + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION_ITEM' + IN TYPEOF(q)))) = 0; +END_ENTITY; + + +ENTITY value_range + SUBTYPE OF (compound_representation_item); +WHERE + WR1 : ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'SET_REPRESENTATION_ITEM' IN TYPEOF ( item_element ) ) AND value_range_wr1 ( item_element ); + WR2 : value_range_wr2 ( item_element ); + WR3 : value_range_wr3 ( item_element ); +END_ENTITY; + + +ENTITY value_representation_item + SUBTYPE OF (representation_item); + value_component : measure_value; +WHERE + WR1 : SIZEOF (QUERY (rep <* using_representations (SELF) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GLOBAL_UNIT_ASSIGNED_CONTEXT' + IN TYPEOF (rep.context_of_items) + ))) = 0; +END_ENTITY; + + +ENTITY variable_semantics + ABSTRACT SUPERTYPE; +END_ENTITY; + + +ENTITY variational_representation_item + ABSTRACT SUPERTYPE OF (auxiliary_geometric_representation_item) + SUBTYPE OF (representation_item); +WHERE + WR1 : SIZEOF(QUERY(q <* using_representations(SELF) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VARIATIONAL_REPRESENTATION' + IN TYPEOF(q)))) = 0; + WR2 : SIZEOF(QUERY(q <* using_representations(SELF) | + NOT (SELF IN q.items))) = 0; +END_ENTITY; + + +ENTITY vector + SUBTYPE OF (geometric_representation_item); + orientation : direction; + magnitude : length_measure; +WHERE + WR1 : magnitude >= 0.0; +END_ENTITY; + + +ENTITY vector_style + SUBTYPE OF (curve_style, pre_defined_terminator_symbol); +END_ENTITY; + + +ENTITY velocity_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VELOCITY_UNIT' IN TYPEOF (SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY velocity_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = + dimensional_exponents ( 1.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0 ); +END_ENTITY; + + +ENTITY versioned_action_request; + id : identifier; + version : label; + purpose : text; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY vertex + SUBTYPE OF (topological_representation_item); +END_ENTITY; + + +ENTITY vertex_loop + SUBTYPE OF (loop); + loop_vertex : vertex; +END_ENTITY; + + +ENTITY vertex_point + SUBTYPE OF (vertex, geometric_representation_item); + vertex_geometry : point; +END_ENTITY; + + +ENTITY vertex_shell + SUBTYPE OF (topological_representation_item); + vertex_shell_extent : vertex_loop; +END_ENTITY; + + +ENTITY view_volume + SUBTYPE OF (founded_item); + projection_type : central_or_parallel; + projection_point : cartesian_point; + view_plane_distance : length_measure; + front_plane_distance : length_measure; + front_plane_clipping : BOOLEAN; + back_plane_distance : length_measure; + back_plane_clipping : BOOLEAN; + view_volume_sides_clipping : BOOLEAN; + view_window : planar_box; +END_ENTITY; + + +ENTITY visual_appearance_representation + SUBTYPE OF (representation); +WHERE + WR1 : ( {3<= SIZEOF ( SELF.items ) <=9} ) AND ( SIZEOF ( QUERY ( + i <* items | ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF ( i ) ) AND ( + i.name IN [ 'colour id' , 'colour name' , 'lustre' , 'pattern' , 'transparency', 'orientation'] ) ) + ) + SIZEOF ( QUERY ( i <* items | ( SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MEASURE_REPRESENTATION_ITEM' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'VALUE_RANGE']* TYPEOF ( i ) ) =1 ) + AND ( i.name IN ['refraction index' , 'opacity'] ) ) + ) + SIZEOF ( QUERY ( i <* items | ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'DOCUMENT_FILE' IN TYPEOF ( i ) ) + AND ( i.name IN [ 'texture map' ] ) ) ) + = SIZEOF ( SELF.items ) ); + WR2 : SIZEOF ( QUERY ( i <* SELF.items | i.name = 'colour id' )) =1; + WR3 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='lustre' ) )=1; + WR4 : SIZEOF ( QUERY ( i <* SELF.items | i.name = 'colour name') ) <=1; + WR5 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='pattern' ) )<=1; + WR6 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='transparency') ) <=1; + WR7 : SIZEOF ( QUERY ( i <* SELF.items | i.name = 'texture map') ) <=1; + WR8 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='refraction index' ) )<=1; + WR9 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='opacity') ) <=1; + WR10 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='orientation') ) <=1; + WR11 : ( SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) ) =1 ) AND ( SIZEOF ( QUERY ( pdr + <* USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) | SIZEOF ( QUERY ( gpa <* USEDIN ( + pdr. definition , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'GENERAL_PROPERTY_ASSOCIATION.'+ + 'DERIVED_DEFINITION' ) | ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'GENERAL_PROPERTY' IN TYPEOF ( gpa. base_definition ) ) AND + ( gpa. base_definition.name ='surface_condition' ) ) ) =1 )) =1 ); +END_ENTITY; + + +ENTITY volume_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VOLUME_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY volume_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = + dimensional_exponents ( 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ); +END_ENTITY; + + +ENTITY week_of_year_and_day_date + SUBTYPE OF (date); + week_component : week_in_year_number; + day_component : OPTIONAL day_in_week_number; +END_ENTITY; + + +ENTITY wire_shell + SUBTYPE OF (topological_representation_item); + wire_shell_extent : SET [1:?] OF loop; +WHERE + WR1 : NOT mixed_loop_type_set(wire_shell_extent); +END_ENTITY; + + +ENTITY year_month + SUBTYPE OF (date); + month_component : month_in_year_number; +END_ENTITY; + + +ENTITY zone_structural_makeup + SUPERTYPE OF (ONEOF ((smeared_material_definition AND thickness_laminate_table), (smeared_material_definition AND percentage_laminate_table), thickness_laminate_table, percentage_laminate_table, smeared_material_definition)) + SUBTYPE OF (laminate_table); +END_ENTITY; + + +RULE alternative_solution_requires_solution_definition FOR (product_definition_formation); + LOCAL + solution_versions: SET OF product_definition_formation := []; + END_LOCAL; + solution_versions := QUERY( pdf <* product_definition_formation | + SIZEOF( QUERY( prpc <* USEDIN(pdf.of_product, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | + prpc.name = 'alternative solution')) = 1); +WHERE + WR1 : SIZEOF( QUERY( pdf <* solution_versions | + SIZEOF( QUERY( pd <* USEDIN(pdf, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.PRODUCT_DEFINITION.FORMATION') | + pd.frame_of_reference.name = 'alternative definition')) <> 1))= 0; +END_RULE; + +RULE application_protocol_definition_required FOR (application_context); + +WHERE + WR1 : SIZEOF( QUERY( ac <* application_context | + (SIZEOF (QUERY (apd <* USEDIN(ac,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.APPLICATION_PROTOCOL_DEFINITION.APPLICATION') | + apd.application_interpreted_model_schema_name = 'ap203_configuration_controlled_3d_design_of_mechanical_parts_and_assemblies' + )) > 0) + )) > 0; +END_RULE; + +RULE breakdown_element_requires_product_definition FOR (product_definition_formation); + +WHERE + WR1 : SIZEOF ( QUERY ( pdf <* product_definition_formation | + ( SIZEOF ( QUERY ( prpc <* USEDIN ( pdf.of_product , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS' ) | + prpc.name = 'functionality' ) ) = 1 ) AND + ( SIZEOF ( QUERY ( pd <* USEDIN ( pdf ,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION.FORMATION') | + pd.frame_of_reference.name = 'functional definition' ) ) <1 ) ) ) = 0; + WR2 : SIZEOF ( QUERY ( pdf <* product_definition_formation | + ( SIZEOF ( QUERY ( prpc <* USEDIN ( pdf.of_product , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS' ) | + prpc.name = 'conceptual design' ) ) = 1 ) AND + ( SIZEOF (QUERY ( pd <* USEDIN ( pdf , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION.FORMATION' ) | + pd.frame_of_reference.name = 'conceptual definition' ) ) <1) ) ) = 0; +END_RULE; + +RULE compatible_dimension FOR (cartesian_point, direction, representation_context, geometric_representation_context); + +WHERE + WR1 : SIZEOF(QUERY(x <* cartesian_point| SIZEOF(QUERY + (y <* geometric_representation_context | item_in_context(x,y) AND + (HIINDEX(x.coordinates) <> y.coordinate_space_dimension))) > 0 )) =0; + WR2 : SIZEOF(QUERY(x <* direction | SIZEOF( QUERY + (y <* geometric_representation_context | item_in_context(x,y) AND + (HIINDEX(x.direction_ratios) <> y.coordinate_space_dimension))) + > 0 )) = 0; +END_RULE; + +RULE component_class_for_assembly_select FOR (composite_assembly_sequence_definition, next_assembly_usage_occurrence, product_related_product_category); + LOCAL + i,j,k : INTEGER :=0; + dkuhr : LOGICAL :=TRUE; + nnauo : INTEGER :=0; + nprpc : INTEGER :=0; + rp : product; + END_LOCAL; + REPEAT i:= LOINDEX (composite_assembly_sequence_definition) TO + HIINDEX (composite_assembly_sequence_definition); + nnauo := 0; + REPEAT j:= LOINDEX (next_assembly_usage_occurrence) TO + HIINDEX (next_assembly_usage_occurrence); + IF (composite_assembly_sequence_definition[i] = + next_assembly_usage_occurrence[j].relating_product_definition) THEN + rp := next_assembly_usage_occurrence[j].related_product_definition. + formation.of_product; + nprpc := 0; + REPEAT k:= LOINDEX (product_related_product_category) TO + HIINDEX (product_related_product_category); + IF ((rp IN product_related_product_category[k].products) AND + (product_related_product_category[k].name IN ['ply', + 'ply laminate', 'filament laminate', 'processed core', + 'composite assembly'])) THEN + nprpc := nprpc + 1; + END_IF; + END_REPEAT; + IF (nprpc = 1) THEN + nnauo := nnauo + 1; + ELSE + dkuhr := FALSE; + ESCAPE; + END_IF; + END_IF; + END_REPEAT; + IF (dkuhr = FALSE) THEN + ESCAPE; + END_IF; + IF(nnauo = 0) THEN + dkuhr := FALSE; + ESCAPE; + END_IF; + END_REPEAT; +WHERE + WR1 : dkuhr; +END_RULE; + +RULE consistent_uncertainty FOR (global_uncertainty_assigned_context, qualified_representation_item, uncertainty_assigned_representation); + +WHERE + WR1 : SIZEOF ( QUERY ( guac <* global_uncertainty_assigned_context | + SIZEOF ( QUERY ( u1 <* guac.uncertainty | + SIZEOF ( QUERY ( u2 <* guac.uncertainty | u2.name = u1.name ) ) >1 ) ) >0 ) ) = 0; + WR2 : SIZEOF ( QUERY ( uar <* uncertainty_assigned_representation | + SIZEOF ( QUERY ( u1<* uar.uncertainty | + SIZEOF ( QUERY ( u2 <* uar.uncertainty | u2.name = u1.name ) ) >1 ) ) >0 ) ) = 0; + WR3 : SIZEOF ( QUERY ( qri <* qualified_representation_item | + SIZEOF ( QUERY ( u1 <* qri.qualifiers | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.UNCERTAINTY_QUALIFIER' IN TYPEOF ( u1 ) ) AND + ( SIZEOF ( QUERY ( u2 <* qri.qualifiers | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.UNCERTAINTY_QUALIFIER' IN TYPEOF ( u2 ) ) AND + ( u2\uncertainty_qualifier.measure_name = u1\uncertainty_qualifier.measure_name ) ) + ) >1 ) ) ) >0 ) ) = 0; +END_RULE; + +RULE constraint_definition_requires_constraint_category FOR (product_definition); + LOCAL + constraint_definitions: SET OF product_definition := []; + END_LOCAL; + constraint_definitions := QUERY( pd <* product_definition | + (pd.frame_of_reference.name = 'design constraint definition')); +WHERE + WR1 : SIZEOF ( QUERY ( pd <* constraint_definitions | + ( SIZEOF ( QUERY ( prpc <* USEDIN ( pd.formation.of_product , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS' ) | + prpc. name ='requirement' ) ) =0 ) ) ) =0; +END_RULE; + +RULE design_constraint_requires_product_definition FOR (product_definition_formation); + +WHERE + WR1 : SIZEOF ( QUERY ( pdf <* product_definition_formation | ( + SIZEOF ( QUERY ( prpc <* USEDIN ( pdf.of_product , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS' ) | + prpc.name = 'requirement' ) ) >0 ) AND + ( SIZEOF ( QUERY ( pd <* USEDIN ( pdf , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION.FORMATION') | + pd.frame_of_reference.name = 'design constraint definition' ) ) <1 ) ) ) = 0; +END_RULE; + +RULE draughting_model_items_constraint FOR (draughting_model); + +WHERE + WR1 : SIZEOF(QUERY(dm <* draughting_model | + NOT(SIZEOF(QUERY(it1 <* dm\representation.items | + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_OCCURRENCE' IN TYPEOF(it1)) + AND + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DRAUGHTING_ANNOTATION_OCCURRENCE' IN TYPEOF(it1))) + )) = 0) + )) = 0; + WR2 : SIZEOF(QUERY(dm <* draughting_model | + NOT(SIZEOF(QUERY(it1 <* dm\representation.items | + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT' IN TYPEOF(it1)) + AND + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_ELEMENTS' IN TYPEOF(it1))) + )) = 0) + )) = 0; +END_RULE; + +RULE external_version_assignments_are_valid FOR (applied_external_identification_assignment); + +WHERE + WR1 : SIZEOF(QUERY(aia <* applied_external_identification_assignment | + NOT external_version_assignment_is_valid(aia)))=0; +END_RULE; + +RULE material_for_coating_layer FOR (shape_aspect); + LOCAL + coating_layers: SET OF shape_aspect := []; + END_LOCAL; + coating_layers:= QUERY( r <* shape_aspect | + (r.name = 'coating layer') ); +WHERE + WR1 : SIZEOF( QUERY( r <* coating_layers | + SIZEOF(USEDIN(r , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MATERIAL_DESIGNATION.DEFINITIONS'))<>1 + )) = 0; +END_RULE; + +RULE plib_property_reference_requires_name_scope FOR (externally_defined_general_property); + LOCAL + known_sourced_properties : SET OF externally_defined_general_property; + END_LOCAL; + known_sourced_properties := QUERY( edc <* externally_defined_general_property | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'KNOWN_SOURCE' IN TYPEOF(edc.source) ); +WHERE + WR1 : SIZEOF ( QUERY ( edgp <* known_sourced_properties | + ( SIZEOF ( QUERY ( edir <* USEDIN ( edgp, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'EXTERNALLY_DEFINED_ITEM_RELATIONSHIP.RELATING_ITEM' )| + ( edir.name = 'name scope' ) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'EXTERNALLY_DEFINED_CLASS' IN TYPEOF ( edir.related_item ) ) AND + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'KNOWN_SOURCE' IN TYPEOF ( edir.related_item.source ) ) ) ) <>1 ) ) ) = 0; +END_RULE; + +RULE plib_property_reference_requires_version FOR (externally_defined_general_property); + LOCAL + plib_properties : SET OF externally_defined_general_property := []; + END_LOCAL; + plib_properties := QUERY ( edgp <* externally_defined_general_property | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'KNOWN_SOURCE' IN TYPEOF ( edgp.source ) ) AND + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'KNOWN_SOURCE' + '.NAME' = 'ISO 13584 library' ) ); +WHERE + WR1 : SIZEOF( QUERY( edgp <* plib_properties | + (SIZEOF( QUERY( edir <* USEDIN(edgp, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.ITEMS') | + (edir.role.name = 'version') )) <> 1) )) = 0; +END_RULE; + +RULE ply_reference FOR (ply_laminate_sequence_definition, next_assembly_usage_occurrence, product_related_product_category); + LOCAL + i,j,k : INTEGER; + dkuhr : LOGICAL := TRUE; + nnauo : INTEGER; + nprpc : INTEGER := 0; + rp : product; + END_LOCAL; + REPEAT i:= LOINDEX (ply_laminate_sequence_definition) TO + HIINDEX (ply_laminate_sequence_definition); + nnauo := 0; + REPEAT j:= LOINDEX (next_assembly_usage_occurrence) TO + HIINDEX (next_assembly_usage_occurrence); + IF (ply_laminate_sequence_definition[i] = + next_assembly_usage_occurrence[j].relating_product_definition) THEN + rp := next_assembly_usage_occurrence[j].related_product_definition. + formation.of_product; + nprpc := 0; + REPEAT k:= LOINDEX (product_related_product_category) TO + HIINDEX (product_related_product_category); + IF ((product_related_product_category[k].name = 'ply') AND + (rp IN product_related_product_category[k].products)) THEN + nprpc := nprpc + 1; + END_IF; + END_REPEAT; + IF (nprpc = 1) THEN + nnauo := nnauo + 1; + ELSE + dkuhr := FALSE; + ESCAPE; + END_IF; + END_IF; + END_REPEAT; + IF (dkuhr = FALSE) THEN + ESCAPE; + END_IF; + IF(nnauo = 0) THEN + dkuhr := FALSE; + ESCAPE; + END_IF; + END_REPEAT; +WHERE + WR1 : dkuhr; +END_RULE; + +RULE ply_stock_material_select FOR (product_related_product_category, make_from_usage_option); + LOCAL + i,j,k,kp : INTEGER; + dkuhr : LOGICAL; + nmfuo : INTEGER; + nprpc : INTEGER := 0; + rp : product; + END_LOCAL; + + dkuhr := TRUE; + REPEAT kp:= LOINDEX (product_related_product_category) TO + HIINDEX (product_related_product_category); + + IF (product_related_product_category[kp].name = 'ply') THEN + REPEAT i:= LOINDEX (product_related_product_category[kp].products) TO + HIINDEX (product_related_product_category[kp].products); + + nmfuo := 0; + REPEAT j:= LOINDEX (make_from_usage_option) TO + HIINDEX (make_from_usage_option); + + rp := make_from_usage_option[j].related_product_definition. + formation.of_product; + + IF (product_related_product_category[kp].products[i] = rp) THEN + + REPEAT k:= LOINDEX (product_related_product_category) TO + HIINDEX (product_related_product_category); + + IF ((rp IN product_related_product_category[k].products) AND + (product_related_product_category[k].name IN + ['isotropic material', 'filament assembly', + 'discontinuous fiber assembly'])) THEN + nprpc := nprpc + 1; + END_IF; + + END_REPEAT; + + IF (nprpc = 1) THEN + nmfuo := nmfuo + 1; + ELSE + dkuhr := FALSE; + ESCAPE; + END_IF; + + END_IF; + + END_REPEAT; + + IF (dkuhr = FALSE) THEN + ESCAPE; + END_IF; + IF(nmfuo <> 1) THEN + dkuhr := FALSE; + ESCAPE; + END_IF; + + END_REPEAT; + END_IF; + + END_REPEAT; +WHERE + WR1 : dkuhr; +END_RULE; + +RULE product_concept_feature_requires_category FOR (product_concept_feature); + +WHERE + WR1 : SIZEOF ( QUERY ( pcf <* product_concept_feature | +(SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'INCLUSION_PRODUCT_CONCEPT_FEATURE', +'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONDITIONAL_CONCEPT_FEATURE'] * TYPEOF(pcf)) = 0) AND +(SIZEOF ( QUERY ( aga <* USEDIN ( pcf , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'APPLIED_GROUP_ASSIGNMENT.' + 'ITEMS' ) | +( aga.role.name = 'specification category member' ) AND +('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRODUCT_CONCEPT_FEATURE_CATEGORY' IN TYPEOF ( aga.assigned_group )))) <>1 ) ) ) = 0; +END_RULE; + +RULE product_definition_replacement_requires_effectivity_assignment FOR (product_definition_relationship); + +WHERE + WR1 : SIZEOF( QUERY( pdr <* product_definition_relationship | + (pdr.name = 'definition replacement') AND + (SIZEOF( USEDIN(pdr,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.APPLIED_EFFECTIVITY_ASSIGNMENT.ITEMS') ) = 0) )) + = 0; +END_RULE; + +RULE restrict_alternative_definition FOR (product_definition); + LOCAL + solution_definitions: SET OF product_definition := []; + END_LOCAL; + solution_definitions := QUERY( pd <* product_definition | + (pd.frame_of_reference.name = 'alternative definition')); +WHERE + WR1 : SIZEOF ( QUERY ( pd <* solution_definitions | + ( SIZEOF ( QUERY ( pdr <* USEDIN ( pd , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION' ) | + pdr.name = 'solution alternative definition' ) ) <>1 ) ) ) = 0; + WR2 : SIZEOF ( QUERY ( pd <* solution_definitions | + NOT ( pd.name IN ['technical' , 'supplier' , 'technical supplier' , ''] ) ) ) = 0; + WR3 : SIZEOF ( QUERY ( pd <* solution_definitions | + ( pd.name IN ['supplier' , 'technical supplier'] ) AND ( + SIZEOF ( QUERY ( aoa <* USEDIN ( pd.formation , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS' ) | + aoa.role.name = 'supplier' )) <>1 ) )) = 0; +END_RULE; + +RULE restrict_assembly_category FOR (product_definition); + LOCAL + assembly_definitions: SET OF product_definition := []; + END_LOCAL; + assembly_definitions := QUERY( pd <* product_definition | + SIZEOF( QUERY( pdca <* USEDIN( pd, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION') | + pdca.frame_of_reference.name= 'assembly definition')) > 0 ); +WHERE + WR1 : SIZEOF( QUERY( pd <* assembly_definitions | + NOT ('assembly' IN categories_of_product(pd.formation.of_product)) ))= 0; +END_RULE; + +RULE restrict_centre_of_mass_representation FOR (representation); + +WHERE + WR1 : SIZEOF ( QUERY ( r <* representation | + ( r.name ='centre of mass' ) AND + ( ( SIZEOF ( r.items ) <>1 ) OR + (SIZEOF ( QUERY ( i <* r.items | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'POINT' IN TYPEOF ( i ) ) AND + ( i.name = 'centre point' ) )) <>1 ) ) ) ) + =0; +END_RULE; + +RULE restrict_classification_assignments FOR (applied_classification_assignment); + +WHERE + WR1 : SIZEOF(QUERY(aia <* applied_classification_assignment | + NOT class_assignment_is_valid(aia)))=0; +END_RULE; + +RULE restrict_collection_category FOR (product_definition); + LOCAL + collection_definitions: SET OF product_definition := []; + END_LOCAL; + collection_definitions := QUERY( pd <* product_definition | + SIZEOF( QUERY( pdca <* USEDIN( pd, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION') | + pdca.frame_of_reference.name= 'collection definition')) > 0 ); +WHERE + WR1 : SIZEOF( QUERY( pd <* collection_definitions | + NOT ('collection' IN categories_of_product(pd.formation.of_product)) ))= 0; +END_RULE; + +RULE restrict_concept_feature_operator FOR (concept_feature_operator); + +WHERE + WR1 : SIZEOF ( QUERY ( cfo <* concept_feature_operator | NOT + ( cfo.name IN ['and' , 'or' , 'oneof' , 'not' , 'implication'] ) ) ) = 0; + WR2 : SIZEOF ( QUERY ( cfo <* concept_feature_operator | (cfo.name = 'implication' ) AND + ( SIZEOF ( QUERY (cfrwc <* USEDIN ( cfo , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION.' + + 'CONDITIONAL_OPERATOR' ) | + SIZEOF ( QUERY ( ccf <* USEDIN( cfrwc , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONDITIONAL_CONCEPT_FEATURE.CONDITION' ) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'INCLUSION_PRODUCT_CONCEPT_FEATURE' IN TYPEOF ( ccf )))) >0 )) >0 ))) = 0; + WR3 : SIZEOF( QUERY (cfo <* concept_feature_operator | (cfo.name = 'not') + AND (SIZEOF(QUERY(cfrwc <* USEDIN(cfo, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION.CONDITIONAL_OPERATOR') | + cfrwc.related_product_concept_feature :<>: cfrwc.relating_product_concept_feature)) >0 ))) = 0; +END_RULE; + +RULE restrict_configuration_design_for_class_breakdown_association FOR (configuration_design); + +WHERE + WR1 : SIZEOF ( QUERY ( cd <* configuration_design | + ( cd.name ='functionality' ) AND + ( NOT ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF ( cd. design ) ) OR + ( cd.design\product_definition.frame_of_reference.name<> 'functional definition' ) ) + ) ) =0; + WR2 : SIZEOF ( QUERY ( cd <* configuration_design | + ( cd.name='realization' ) AND + ( NOT ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF ( cd.design ) ) OR + ( cd.design\product_definition.frame_of_reference.name<> 'conceptual definition' ) ) + ) ) =0; + WR3 : SIZEOF ( QUERY ( cd <* configuration_design | + ( cd.name IN ['functionality' , 'realization'] ) AND + ( NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_CLASS' IN TYPEOF ( cd.configuration.item_concept ) ) ) + ) ) =0; +END_RULE; + +RULE restrict_configuration_design_for_design_constraint FOR (configuration_design); + +WHERE + WR1 : SIZEOF ( QUERY (cd <* configuration_design | + (cd.name = 'design constraint usage') AND + (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF ( cd.design ) ) OR + (cd.design\product_definition.frame_of_reference.name <> 'design constraint definition')))) = 0; +END_RULE; + +RULE restrict_group_relationship_for_classification_hierarchy FOR (group_relationship); + +WHERE + WR1 : SIZEOF( QUERY( gr <* group_relationship | + (gr\group_relationship.name = 'class hierarchy') AND + (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CLASS' IN TYPEOF(gr\group_relationship.related_group)) OR + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CLASS' IN TYPEOF(gr\group_relationship.relating_group))) )) = 0; +END_RULE; + +RULE restrict_group_relationship_for_specification_category FOR (group_relationship); + +WHERE + WR1 : SIZEOF( QUERY( gr <* group_relationship | + (gr.name = 'specification category hierarchy') AND + (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY' IN TYPEOF(gr.related_group)) + OR NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY' IN TYPEOF(gr.relating_group))) )) = 0; +END_RULE; + +RULE restrict_language_assignment_per_attribute FOR (attribute_language_assignment); + +WHERE + WR1 : SIZEOF ( QUERY ( ala1 <* attribute_language_assignment | + SIZEOF(QUERY( it <* ala1.items | + SIZEOF ( QUERY ( ala2 <* USEDIN ( it ,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS' ) | + ( ala1\attribute_classification_assignment.attribute_name = ala2\attribute_classification_assignment.attribute_name ) AND + ( ala1\attribute_classification_assignment.assigned_class :=: ala2\attribute_classification_assignment.assigned_class ) + )) >1 + )) >0 + )) =0; +END_RULE; + +RULE restrict_part_occurrence FOR (product_definition); + LOCAL + part_occurrences: SET OF product_definition := QUERY(pd <* product_definition | + ( pd.frame_of_reference.name = 'part occurrence' )); + END_LOCAL; +WHERE + WR1 : SIZEOF ( QUERY ( pd <* part_occurrences | + ( NOT( pd.name IN + ['single instance' , 'selected instance' ,'quantified instance' , 'specified instance' ] ) ) ) ) = 0; + WR2 : SIZEOF ( QUERY ( pd <* part_occurrences | + (SIZEOF ( QUERY ( pdr <* USEDIN ( pd , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION' ) | + pdr.name = 'definition usage' ) ) <>1 ) AND + ( SIZEOF ( QUERY ( cd <* USEDIN ( pd , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONFIGURATION_DESIGN.DESIGN' ) | + ( cd.name = 'occurrence usage definition' ) AND + ( NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRODUCT_IDENTIFICATION' IN TYPEOF( cd.configuration ) ) ) ) ) <>1 ) ) ) = 0; + WR3 : SIZEOF ( QUERY ( pd <* part_occurrences | + (SIZEOF ( QUERY ( cd <* USEDIN ( pd , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION' ) | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' +'PRODUCT_DEFINITION_USAGE' IN TYPEOF ( cd ) ) ) ) = 0 )AND + ( SIZEOF ( USEDIN ( pd , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRODUCT_DEFINITION_OCCURRENCE_RELATIONSHIP.OCCURRENCE' ) ) = 0 ) ) ) = 0; + WR4 : SIZEOF ( QUERY ( pd <* part_occurrences | + ( pd.name = 'selected instance' ) AND + NOT valid_selected_instance_representation(pd) ))=0; + WR5 : SIZEOF ( QUERY ( pd <* part_occurrences | + ( pd.name = 'quantified instance' ) AND + ( SIZEOF ( QUERY (ppd <* USEDIN ( pd , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' +'PROPERTY_DEFINITION.DEFINITION' ) | + ( ppd.name ='occurrence quantity' ) AND + ( SIZEOF ( QUERY ( pdr <*USEDIN ( ppd , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' +'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION' ) | ( + pdr.used_representation.name = 'quantity' ) AND + (SIZEOF ( pdr.used_representation.items ) = 1 ) AND + (SIZEOF ( QUERY ( i <* pdr.used_representation.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'MEASURE_REPRESENTATION_ITEM' IN TYPEOF ( i ) ) AND + ( i.name = 'quantity measure' ) ) ) = 1)))= 1 )))= 0 )))= 0; + WR6 : SIZEOF ( QUERY ( pd <* part_occurrences | + ( pd.name = 'specified instance' ) AND + ( SIZEOF ( QUERY ( + pdor <* USEDIN ( pd , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' +'PRODUCT_DEFINITION_OCCURRENCE_RELATIONSHIP.OCCURRENCE' ) | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' +'SPECIFIED_HIGHER_USAGE_OCCURRENCE' IN TYPEOF ( pdor.occurrence_usage ) ) ) = 0 ) ) ) = 0; +END_RULE; + +RULE restrict_part_occurrence_category FOR (product_definition); + LOCAL + part_occurrences: SET OF product_definition := QUERY( pd <* product_definition |( + pd.frame_of_reference.name = 'part occurrence')); + END_LOCAL; +WHERE + WR1 : SIZEOF( QUERY( pd <* part_occurrences | + (SIZEOF( QUERY( prpc <* USEDIN(pd.formation.of_product, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | + prpc.name IN ['part','raw material','tool'] )) = 0 ) )) = 0; +END_RULE; + +RULE restrict_product_definitions_for_base_element FOR (product_definition_relationship); + +WHERE + WR1 : SIZEOF ( QUERY ( pdr <* product_definition_relationship | + ( pdr. name = 'solution alternative definition' ) AND + ( NOT( pdr. relating_product_definition.frame_of_reference.name + IN [ 'alternative definition' , 'functional definition' , 'conceptual definition' ] ) OR + ( pdr.related_product_definition.frame_of_reference.name<>'alternative definition' ) ) ) ) =0; +END_RULE; + +RULE restrict_product_definitions_for_collection FOR (product_definition_relationship); + +WHERE + WR1 : SIZEOF ( QUERY ( pdr <* product_definition_relationship | + ( pdr. name = 'collection membership' ) AND + ( ( pdr.relating_product_definition.frame_of_reference.name<>'part definition' ) OR + ( pdr.related_product_definition.frame_of_reference.name<>'part occurrence' ) OR + ( SIZEOF ( QUERY ( pdca <* USEDIN (pdr.relating_product_definition , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION') | + ( pdca.role.name = 'part definition type' ) AND + ( pdca.frame_of_reference.name = 'collection definition' ) )) =0 ) ) ) ) =0; +END_RULE; + +RULE restrict_product_definitions_for_definition_usage FOR (product_definition_relationship); + +WHERE + WR1 : SIZEOF ( QUERY ( pdr <* product_definition_relationship | + ( pdr.name = 'definition usage' ) AND + ( ( pdr.relating_product_definition.frame_of_reference.name<> 'part definition' ) OR + ( pdr.related_product_definition.frame_of_reference.name<>'part occurrence' )))) =0; +END_RULE; + +RULE restrict_product_definitions_for_design_constraint_association FOR (product_definition_relationship); + +WHERE + WR1 : SIZEOF ( QUERY ( pdr <* product_definition_relationship | + ( pdr. name = 'design constraint association' ) AND + ( (pdr. relating_product_definition.frame_of_reference.name<>'design constraint definition' ) OR + NOT ( pdr.related_product_definition.frame_of_reference.name IN + ['alternative definition' , 'functional definition' ,'conceptual definition' ] ) ) ) ) =0; +END_RULE; + +RULE restrict_product_definitions_for_part_definition_relationship FOR (product_definition_relationship); + +WHERE + WR1 : SIZEOF ( QUERY ( pdr <* product_definition_relationship | + ( pdr.name IN [ 'geometrical relationship' , 'definition replacement' ] ) AND + ( ( pdr.relating_product_definition.frame_of_reference.name <>'part definition' ) OR + ( pdr.related_product_definition.frame_of_reference.name <>'part definition' ) ) ) ) =0; +END_RULE; + +RULE restrict_representation_for_surface_condition FOR (property_definition_representation); + +WHERE + WR1 : SIZEOF(QUERY(pdr <* property_definition_representation | + NOT surface_condition_correlation(pdr.definition, pdr.used_representation) ))=0; +END_RULE; + +RULE restrict_treatment_result FOR (representation); + LOCAL + treatment_results: SET OF representation := []; + END_LOCAL; + treatment_results:= QUERY( r <* representation | + (r.name = 'treatment result') ); +WHERE + WR1 : (SIZEOF( QUERY( r <* treatment_results | (SIZEOF(r.items) > 2) )) = 0) AND + (SIZEOF( QUERY( r <* treatment_results | + (SIZEOF( QUERY( i <* r.items | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) )) > 0) )) = 0); + WR2 : SIZEOF( QUERY( r <* treatment_results | + (SIZEOF( QUERY( i <* r.items | i.name = 'result' )) = 0) )) = 0; + WR3 : SIZEOF( QUERY( r <* treatment_results | + (SIZEOF( QUERY( i <* r.items | i.name = 'purpose' )) > 1) )) = 0; +END_RULE; + +RULE selected_instance_usage_requires_representation FOR (assembly_component_usage); + LOCAL + selected_instance_usages: SET OF assembly_component_usage := QUERY( acr <* assembly_component_usage| + (acr.name = 'selected instance usage')); + END_LOCAL; +WHERE + WR1 : SIZEOF ( QUERY ( acr <* selected_instance_usages | + NOT valid_selected_instance_representation(acr) ))=0; +END_RULE; + +RULE solution_definition_requires_solution_category FOR (product_definition); + LOCAL + solution_definitions: SET OF product_definition := []; + END_LOCAL; + solution_definitions := QUERY( pd <* product_definition | + (pd.frame_of_reference.name = 'alternative definition')); +WHERE + WR1 : SIZEOF( QUERY( pd <* solution_definitions | + (SIZEOF( QUERY( prpc <* USEDIN(pd.formation.of_product, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | + prpc.name = 'alternative solution')) = 0 ) )) = 0; +END_RULE; + +RULE stock_material_reference FOR (percentage_ply_definition, make_from_usage_option, product_related_product_category); + LOCAL + i,j,k : INTEGER; + dkuhr : LOGICAL; + nmfuo : INTEGER; + nprpc : INTEGER; + rp : product; + END_LOCAL; + dkuhr := TRUE; + REPEAT i:= LOINDEX (percentage_ply_definition) TO + HIINDEX (percentage_ply_definition); + nmfuo := 0; + REPEAT j:= LOINDEX (make_from_usage_option) TO + HIINDEX (make_from_usage_option); + IF (percentage_ply_definition[i] = + make_from_usage_option[j].relating_product_definition) THEN + rp := make_from_usage_option[j].related_product_definition. + formation.of_product; + nprpc := 0; + REPEAT k:= LOINDEX (product_related_product_category) TO + HIINDEX (product_related_product_category); + IF ((rp IN product_related_product_category[k].products) AND + (product_related_product_category[k].name IN + ['anisotropic material', 'isotropic material', 'stock core', + 'filament assembly', 'discontinuous fiber assembly'])) THEN + nprpc := nprpc + 1; + END_IF; + END_REPEAT; + IF (nprpc = 1) THEN + nmfuo := nmfuo + 1; + ELSE + dkuhr := FALSE; + ESCAPE; + END_IF; + END_IF; + END_REPEAT; + IF (dkuhr = FALSE) THEN + ESCAPE; + END_IF; + IF(nmfuo = 0) THEN + dkuhr := FALSE; + ESCAPE; + END_IF; + END_REPEAT; +WHERE + WR1 : dkuhr; +END_RULE; + +RULE styled_curve FOR (styled_item); + +WHERE + WR1 : SIZEOF( QUERY( si <* styled_item | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE' IN TYPEOF (si.item)) AND (SIZEOF (QUERY (psa <* si.styles | (SIZEOF (QUERY (cs <* psa.styles | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' IN TYPEOF (cs)) )) > 0) )) <> 1) )) = 0; +END_RULE; + +RULE subtype_exclusiveness_geometric_tolerance FOR (geometric_tolerance); + +WHERE + WR1 : SIZEOF(QUERY (gt <* geometric_tolerance | NOT (type_check_function(gt, ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANGULARITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCULAR_RUNOUT_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COAXIALITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONCENTRICITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CYLINDRICITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FLATNESS_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE_PROFILE_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PARALLELISM_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PERPENDICULARITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITION_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ROUNDNESS_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRAIGHTNESS_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_PROFILE_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SYMMETRY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TOTAL_RUNOUT_TOLERANCE'] , 3)))) = 0; +END_RULE; + +RULE subtype_exclusiveness_representation_item FOR (representation_item); + +WHERE + WR1 : SIZEOF(QUERY (cri <* representation_item | + NOT (type_check_function(cri,['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VALUE_REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOUND_REPRESENTATION_ITEM'] , 3)))) = 0; +END_RULE; + +RULE subtype_mandatory_geometric_tolerance FOR (geometric_tolerance); + +WHERE + WR1 : SIZEOF(QUERY (gt <* geometric_tolerance | NOT (type_check_function(gt, ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANGULARITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCULAR_RUNOUT_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COAXIALITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONCENTRICITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CYLINDRICITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FLATNESS_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE_PROFILE_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PARALLELISM_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PERPENDICULARITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITION_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ROUNDNESS_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRAIGHTNESS_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_PROFILE_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SYMMETRY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TOTAL_RUNOUT_TOLERANCE'] , 0)))) = 0; +END_RULE; + +RULE text_font_usage FOR (externally_defined_text_font, pre_defined_text_font); + +WHERE + WR1 : SIZEOF (QUERY (pdtf <* pre_defined_text_font | SIZEOF (USEDIN (pdtf, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL.FONT')) = 0 )) = 0; + WR2 : SIZEOF (QUERY (edtf <* externally_defined_text_font | SIZEOF (USEDIN (edtf, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL.FONT')) = 0 )) = 0; +END_RULE; + +RULE thickness_laminate_table_component_select FOR (thickness_laminate_definition, next_assembly_usage_occurrence, product_related_product_category); + LOCAL + i,j,k : INTEGER; + dkuhr : LOGICAL; + nnauo : INTEGER; + nprpc : INTEGER; + rp : product; + END_LOCAL; + dkuhr := TRUE; + REPEAT i:= LOINDEX (thickness_laminate_definition) TO + HIINDEX (thickness_laminate_definition); + nnauo := 0; + REPEAT j:= LOINDEX (next_assembly_usage_occurrence) TO + HIINDEX (next_assembly_usage_occurrence); + IF (thickness_laminate_definition[i] = + next_assembly_usage_occurrence[j].relating_product_definition) THEN + rp := next_assembly_usage_occurrence[j].related_product_definition. + formation.of_product; + nprpc := 0; + REPEAT k:= LOINDEX (product_related_product_category) TO + HIINDEX (product_related_product_category); + IF ((rp IN product_related_product_category[k].products) AND + (product_related_product_category[k].name IN + ['ply', 'filament laminate', 'processed core'])) THEN + nprpc := nprpc + 1; + END_IF; + END_REPEAT; + IF (nprpc = 1) THEN + nnauo := nnauo + 1; + ELSE + dkuhr := FALSE; + ESCAPE; + END_IF; + END_IF; + END_REPEAT; + IF (dkuhr = FALSE) THEN + ESCAPE; + END_IF; + IF (nnauo <> 1) THEN + dkuhr := FALSE; + ESCAPE; + END_IF; + END_REPEAT; +WHERE + WR1 : dkuhr; +END_RULE; + +RULE validate_dependently_instantiable_entity_data_types FOR (action_method_role, annotation_text, attribute_value_role, auxiliary_geometric_representation_item, binary_numeric_expression, boolean_expression, bounded_curve, bounded_surface, cartesian_transformation_operator, comparison_expression, concept_feature_relationship, concept_feature_relationship_with_condition, connected_edge_set, document_usage_constraint, edge_blended_solid, effectivity_context_role, event_occurrence_role, explicit_procedural_representation_item_relationship, expression, founded_item, generic_expression, generic_variable, indirectly_selected_elements, interval_expression, literal_number, local_time, loop, modified_solid_with_placed_configuration, multiple_arity_boolean_expression, multiple_arity_generic_expression, multiple_arity_numeric_expression, numeric_expression, one_direction_repeat_factor, oriented_open_shell, oriented_path, positioned_sketch, procedural_representation, procedural_representation_sequence, product_definition_context_role, product_definition_effectivity, runout_zone_orientation, simple_boolean_expression, simple_generic_expression, simple_numeric_expression, solid_with_depression, solid_with_hole, solid_with_pocket, solid_with_protrusion, solid_with_shape_element_pattern, solid_with_slot, swept_area_solid, symbol_target, tolerance_zone_form, two_direction_repeat_factor, unary_generic_expression, unary_numeric_expression, user_selected_elements, variational_representation_item, view_volume); +LOCAL + number_of_input_instances : INTEGER; + previous_in_chain : LIST OF GENERIC := []; + set_of_input_types : SET OF STRING := []; + all_instances : SET OF GENERIC := []; +END_LOCAL; + + all_instances := all_instances + action_method_role + annotation_text + attribute_value_role + auxiliary_geometric_representation_item + binary_numeric_expression + boolean_expression + bounded_curve + bounded_surface + cartesian_transformation_operator + comparison_expression + concept_feature_relationship + concept_feature_relationship_with_condition + connected_edge_set + document_usage_constraint + edge_blended_solid + effectivity_context_role + event_occurrence_role + explicit_procedural_representation_item_relationship + expression + founded_item + generic_expression + generic_variable + indirectly_selected_elements + interval_expression + literal_number + local_time + loop + modified_solid_with_placed_configuration + multiple_arity_boolean_expression + multiple_arity_generic_expression + multiple_arity_numeric_expression + numeric_expression + one_direction_repeat_factor + oriented_open_shell + oriented_path + positioned_sketch + procedural_representation + procedural_representation_sequence + product_definition_context_role + product_definition_effectivity + runout_zone_orientation + simple_boolean_expression + simple_generic_expression + simple_numeric_expression + solid_with_depression + solid_with_hole + solid_with_pocket + solid_with_protrusion + solid_with_shape_element_pattern + solid_with_slot + swept_area_solid + symbol_target + tolerance_zone_form + two_direction_repeat_factor + unary_generic_expression + unary_numeric_expression + user_selected_elements + variational_representation_item + view_volume;-- +number_of_input_instances := SIZEOF(all_instances); +(* Collect all type strings of all FOR instances into one set. *) +REPEAT i:=1 TO number_of_input_instances; + set_of_input_types := set_of_input_types + TYPEOF(all_instances[i]); +END_REPEAT; +WHERE + WR1 : dependently_instantiated(all_instances, set_of_input_types, + previous_in_chain); +END_RULE; + +FUNCTION acyclic + (arg1: generic_expression; arg2: SET [0:?] OF generic_expression) : BOOLEAN; +LOCAL + result: BOOLEAN := TRUE; +END_LOCAL; + +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SIMPLE_GENERIC_EXPRESSION' + IN TYPEOF (arg1)) +THEN + RETURN (TRUE); +END_IF; + +IF arg1 IN arg2 +THEN + RETURN (FALSE); +END_IF; + +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.UNARY_GENERIC_EXPRESSION' + IN TYPEOF (arg1) +THEN + RETURN + (acyclic(arg1\unary_generic_expression.operand,arg2+[arg1])); +END_IF; + +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BINARY_GENERIC_EXPRESSION' + IN TYPEOF (arg1) +THEN + RETURN + (acyclic(arg1\binary_generic_expression.operands[1],arg2+[arg1]) + AND + acyclic(arg1\binary_generic_expression.operands[2],arg2+[arg1])); +END_IF; + +IF +'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MULTIPLE_ARITY_GENERIC_EXPRESSION' + IN TYPEOF (arg1) +THEN + result := TRUE; + REPEAT i := 1 TO + SIZEOF (arg1\multiple_arity_generic_expression.operands); + result := result AND + acyclic(arg1\multiple_arity_generic_expression.operands[i], arg2+[arg1]); + END_REPEAT; + + RETURN (result); +END_IF; + RETURN (result); +END_FUNCTION; + +FUNCTION acyclic_composite_text + (start_composite: composite_text; child_text: SET [1:?] OF text_or_character) : LOGICAL; + LOCAL + i : INTEGER; + local_composite_text : SET [0:?] OF composite_text; + local_annotation_text : SET [0:?] OF annotation_text; + local_children : SET [0:?] OF text_or_character; + END_LOCAL; + + local_composite_text := QUERY (child <* child_text | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT' + IN TYPEOF (child))); + + IF (SIZEOF (local_composite_text) > 0) + THEN + REPEAT i := 1 TO HIINDEX (local_composite_text); + IF (start_composite :=: local_composite_text[i]) + THEN + RETURN (FALSE); + END_IF; + END_REPEAT; + END_IF; + + local_children := child_text; + + IF (SIZEOF (local_composite_text)) > 0 THEN + REPEAT i := 1 TO HIINDEX (local_composite_text); + local_children := local_children + + local_composite_text[i].collected_text; + END_REPEAT; + END_IF; + + local_annotation_text := QUERY (child <* child_text | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT' + IN TYPEOF (child))); + + IF (SIZEOF (local_annotation_text) > 0) THEN + REPEAT i := 1 TO HIINDEX (local_annotation_text); + local_children := local_children + + QUERY (item <* local_annotation_text[i]\mapped_item. + mapping_source.mapped_representation.items | + SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT'] * + TYPEOF(item)) > 0); + END_REPEAT; + END_IF; + + IF (local_children :<>: child_text) THEN + RETURN (acyclic_composite_text (start_composite, local_children)); + ELSE + RETURN (TRUE); + END_IF; +END_FUNCTION; + +FUNCTION acyclic_curve_replica + (rep: curve_replica; parent: curve) : BOOLEAN; +IF NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA') IN TYPEOF(parent)) THEN + RETURN (TRUE); + END_IF; + (* Return TRUE if the parent is not of type curve_replica *) + IF (parent :=: rep) THEN + RETURN (FALSE); + (* Return FALSE if the parent is the same curve_replica, otherwise, + call function again with the parents own parent_curve. *) + ELSE + RETURN(acyclic_curve_replica(rep, + parent\curve_replica.parent_curve)); + END_IF; +END_FUNCTION; + +FUNCTION acyclic_mapped_item_usage + (rep: representation) : BOOLEAN; + LOCAL + items : SET OF representation_item; + END_LOCAL; + + items := QUERY (item <* rep.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (item)); + IF SIZEOF (items) = 0 + THEN + RETURN (FALSE); + ELSE + REPEAT i := 1 TO HIINDEX (items); + IF items[i]\mapped_item.mapping_source.mapped_representation :=: rep + THEN + RETURN (TRUE); + ELSE + RETURN (acyclic_mapped_item_usage(items[i]\ + mapped_item.mapping_source.mapped_representation)); + END_IF; + END_REPEAT; + RETURN (FALSE); + END_IF; +END_FUNCTION; + +FUNCTION acyclic_mapped_representation + (mi: mapped_item) : BOOLEAN; + LOCAL + rms : SET OF representation_map; + mis : SET OF mapped_item; + rs1, rs2 : SET OF representation; + END_LOCAL; + + rs1 := using_representations(mi); + rs2 := []; + -- loop as long as there are elements in rs1 + REPEAT WHILE SIZEOF(rs1) > 0; + REPEAT i := 1 TO HIINDEX(rs1); + -- Determine the set of representation_map that reference the parent_set + rms := bag_to_set(USEDIN(rs1[i], 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION_MAP.MAPPED_REPRESENTATION')); + IF SIZEOF(rms) > 0 THEN + REPEAT j := 1 TO HIINDEX(rms); + mis := bag_to_set(USEDIN(rms[i], 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM.MAPPING_SOURCE')); + IF SIZEOF(mis) > 0 THEN + REPEAT j := 1 TO HIINDEX(mis); + -- check mis members for instance equal with mi. If so then there is a cycle + IF mis[i] :=: mi THEN + RETURN (FALSE); + END_IF; + rs2 := rs2 + using_representations(mis[i]); + END_REPEAT; + END_IF; + END_REPEAT; + END_IF; + END_REPEAT; + rs1 := rs2; + rs2 := []; + END_REPEAT; + RETURN (TRUE); +END_FUNCTION; + +FUNCTION acyclic_point_replica + (rep: point_replica; parent: point) : BOOLEAN; +IF NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_REPLICA') IN TYPEOF(parent)) THEN + RETURN (TRUE); + END_IF; + (* Return TRUE if the parent is not of type point_replica *) + IF (parent :=: rep) THEN + RETURN (FALSE); + (* Return FALSE if the parent is the same point_replica, otherwise, + call function again with the parents own parent_pt. *) + ELSE RETURN(acyclic_point_replica(rep, parent\point_replica.parent_pt)); + END_IF; +END_FUNCTION; + +FUNCTION acyclic_product_definition_relationship + (relation: product_definition_relationship; relatives: SET [1:?] OF product_definition; specific_relation: STRING) : BOOLEAN; + LOCAL + x : SET OF product_definition_relationship; + END_LOCAL; + + IF relation.relating_product_definition IN relatives THEN + RETURN (FALSE); + END_IF; + x := QUERY(pd <* bag_to_set(USEDIN(relation.relating_product_definition, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRODUCT_DEFINITION_RELATIONSHIP.' + 'RELATED_PRODUCT_DEFINITION')) | specific_relation IN TYPEOF(pd)); + REPEAT i := 1 TO HIINDEX(x); + IF NOT acyclic_product_definition_relationship(x[i], relatives + relation.relating_product_definition, specific_relation) THEN + RETURN (FALSE); + END_IF; + END_REPEAT; + RETURN (TRUE); +END_FUNCTION; + +FUNCTION acyclic_representation_relationship + (relation: representation_relationship; relatives: SET [1:?] OF representation; specific_relation: STRING) : BOOLEAN; + LOCAL + x : SET OF representation_relationship; + END_LOCAL; + + IF relation.rep_1 IN relatives THEN + RETURN (FALSE); + END_IF; + x := QUERY(r <* bag_to_set(USEDIN(relation.rep_1, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.' + 'REP_2')) | specific_relation IN TYPEOF(r)); + REPEAT i := 1 TO HIINDEX(x); + IF NOT acyclic_representation_relationship(x[i], relatives + relation.rep_1, specific_relation) THEN + RETURN (FALSE); + END_IF; + END_REPEAT; + RETURN (TRUE); +END_FUNCTION; + +FUNCTION acyclic_solid_replica + (rep: solid_replica; parent: solid_model) : BOOLEAN; +IF NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_REPLICA') IN TYPEOF(parent)) THEN + RETURN (TRUE); + END_IF; + (* Return TRUE if the parent is not of type solid_replica. *) + IF (parent :=: rep) THEN + RETURN (FALSE); + (* Return FALSE if the parent is the same solid_replica, otherwise, + call function again with the parents own parent_solid. *) + ELSE RETURN(acyclic_solid_replica(rep, + parent\solid_replica.parent_solid)); + END_IF; +END_FUNCTION; + +FUNCTION acyclic_surface_replica + (rep: surface_replica; parent: surface) : BOOLEAN; +IF NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_REPLICA') IN TYPEOF(parent)) THEN + RETURN (TRUE); + END_IF; + (* Return TRUE if the parent is not of type surface_replica *) + IF (parent :=: rep) THEN + RETURN (FALSE); + (* Return FALSE if the parent is the same surface_replica, otherwise, + call function again with the parents own parent_surface. *) + ELSE RETURN(acyclic_surface_replica(rep, + parent\surface_replica.parent_surface)); + END_IF; +END_FUNCTION; + +FUNCTION advanced_face_properties + (testface: face) : BOOLEAN; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF(testface) THEN + RETURN (TRUE); +END_IF; +(* if testface is a subface recursively test the parent_face, +return FALSE for all other types of face *) +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBFACE' IN TYPEOF(testface)) THEN + RETURN(advanced_face_properties(testface\subface.parent_face)); + ELSE RETURN (FALSE); +END_IF; +END_FUNCTION; + +FUNCTION aspect_ratio + (p: planar_box) : positive_ratio_measure; +IF (p.size_in_x > 0.) AND (p.size_in_y > 0.) THEN + RETURN (p.size_in_x / p.size_in_y); + ELSE + RETURN (?); + END_IF; +END_FUNCTION; + +FUNCTION associated_surface + (arg: pcurve_or_surface) : surface; + LOCAL + surf : surface; + END_LOCAL; + + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(arg) THEN + surf := arg\pcurve.basis_surface; + ELSE + surf := arg; + END_IF; + RETURN(surf); +END_FUNCTION; + +FUNCTION bag_to_set + (the_bag: BAG [0:?] OF GENERIC: intype) : SET [0:?] OF GENERIC: intype; + LOCAL + the_set : SET OF GENERIC:intype := []; + END_LOCAL; + + IF SIZEOF(the_bag) > 0 THEN + REPEAT i := 1 TO HIINDEX(the_bag); + the_set := the_set + the_bag[i]; + END_REPEAT; + END_IF; + RETURN (the_set); +END_FUNCTION; + +FUNCTION base_axis + (dim: INTEGER; axis1: direction; axis2: direction; axis3: direction) : LIST [2:3] OF direction; + LOCAL + u : LIST [2:3] OF direction; + factor : REAL; + d1, d2 : direction; + END_LOCAL; + + IF (dim = 3) THEN + d1 := NVL(normalise(axis3), dummy_gri || direction([0.0,0.0,1.0])); + d2 := first_proj_axis(d1,axis1); + u := [d2, second_proj_axis(d1,d2,axis2), d1]; + ELSE + IF EXISTS(axis1) THEN + d1 := normalise(axis1); + u := [d1, orthogonal_complement(d1)]; + IF EXISTS(axis2) THEN + factor := dot_product(axis2,u[2]); + IF (factor < 0.0) THEN + u[2].direction_ratios[1] := -u[2].direction_ratios[1]; + u[2].direction_ratios[2] := -u[2].direction_ratios[2]; + END_IF; + END_IF; + ELSE + IF EXISTS(axis2) THEN + d1 := normalise(axis2); + u := [orthogonal_complement(d1), d1]; + u[1].direction_ratios[1] := -u[1].direction_ratios[1]; + u[1].direction_ratios[2] := -u[1].direction_ratios[2]; + ELSE + u := [dummy_gri || direction([1.0, 0.0]), dummy_gri || + direction([0.0, 1.0])]; + END_IF; + END_IF; + END_IF; + RETURN(u); +END_FUNCTION; + +FUNCTION boolean_choose + (b: BOOLEAN; choice1: GENERIC: item; choice2: GENERIC: item) : GENERIC: item; +IF b THEN + RETURN (choice1); + ELSE + RETURN (choice2); + END_IF; +END_FUNCTION; + +FUNCTION build_2axes + (ref_direction: direction) : LIST [2:2] OF direction; + LOCAL + d : direction := NVL(normalise(ref_direction), + dummy_gri || direction([1.0,0.0])); + END_LOCAL; + + RETURN([d, orthogonal_complement(d)]); +END_FUNCTION; + +FUNCTION build_axes + (axis: direction; ref_direction: direction) : LIST [3:3] OF direction; + LOCAL + d1, d2 : direction; + END_LOCAL; + d1 := NVL(normalise(axis), dummy_gri || direction([0.0,0.0,1.0])); + d2 := first_proj_axis(d1, ref_direction); + RETURN([d2, normalise(cross_product(d1,d2))\vector.orientation, d1]); +END_FUNCTION; + +FUNCTION categories_of_product + (obj: product) : SET [0:?] OF STRING; +LOCAL + category_assignments: BAG OF product_category; + categories: SET OF STRING:=[]; +END_LOCAL; +category_assignments := USEDIN(obj, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'); +REPEAT i := LOINDEX(category_assignments) TO HIINDEX(category_assignments) BY 1; + categories := categories + category_assignments[i].name; +END_REPEAT; +RETURN(categories); +END_FUNCTION; + +FUNCTION cc_design_person_and_organization_correlation + (e: cc_design_person_and_organization_assignment) : BOOLEAN; + LOCAL + po_role : STRING; + END_LOCAL; + po_role := e\person_and_organization_assignment.role.name; + CASE po_role OF + 'request_recipient' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CHANGE_REQUEST', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'START_REQUEST'] * + TYPEOF (x)) = 1)) + THEN RETURN(FALSE); + END_IF; + 'initiator' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CHANGE_REQUEST', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'START_REQUEST', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'START_WORK', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CHANGE'] * + TYPEOF (x)) = 1)) + THEN RETURN(FALSE); + END_IF; + 'creator' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_FORMATION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION'] * + TYPEOF (x)) = 1)) + THEN RETURN (FALSE); + END_IF; + 'part_supplier' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_FORMATION' + IN TYPEOF (x))) + THEN RETURN(FALSE); + END_IF; + 'design_supplier' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_FORMATION' + IN TYPEOF (x))) + THEN RETURN(FALSE); + END_IF; + 'design_owner' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT' + IN TYPEOF (x))) + THEN RETURN(FALSE); + END_IF; + 'configuration_manager' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CONFIGURATION_ITEM' + IN TYPEOF (x))) + THEN RETURN(FALSE); + END_IF; + 'contractor' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONTRACT' + IN TYPEOF (x))) + THEN RETURN(FALSE); + END_IF; + 'classification_officer' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SECURITY_CLASSIFICATION' + IN TYPEOF (x))) THEN + RETURN(FALSE); + END_IF; + OTHERWISE : RETURN(TRUE); + END_CASE; + RETURN (TRUE); +END_FUNCTION; + +FUNCTION check_continuous_edges + (edges: LIST [0:?] OF UNIQUE edge_curve) : BOOLEAN; + LOCAL + i : INTEGER; + next_vertex : vertex; + END_LOCAL; + + -- first check whether there is only one edge in the list: in this + -- case there is no connectivity to be checked. + + IF (SIZEOF(edges) = 1) + THEN RETURN(TRUE); + END_IF; + + -- otherwise, establish the matching vertices of edges 1 and 2 in + -- the list, and determine the vertex of edge 2 to which edge 3, + -- must be connected, if there are more than two edges in the list. + + IF ((edges[2].edge_start :=: edges[1].edge_end) + XOR (edges[2].edge_start :=: edges[1].edge_start)) + THEN next_vertex := edges[2].edge_end; + ELSE + IF ((edges[2].edge_end :=: edges[1].edge_end) + XOR (edges[2].edge_end :=: edges[1].edge_start)) + THEN next_vertex := edges[2].edge_start; + ELSE RETURN(FALSE); -- no match between any vertices of edges 1 and 2 + END_IF; + END_IF; + + -- exit if there are only two edges and they are connected + + IF (SIZEOF(edges) = 2) + THEN RETURN(TRUE); + END_IF; + + -- otherwise, check that any remaining edges are connected in list order. + + REPEAT i := 3 TO HIINDEX(edges); + IF (edges[i].edge_start :=: next_vertex) + THEN next_vertex := edges[i].edge_end; + ELSE + IF (edges[i].edge_end :=: next_vertex) + THEN next_vertex := edges[i].edge_start; + ELSE RETURN(FALSE); -- no match is found. + END_IF; + END_IF; + END_REPEAT; + RETURN(TRUE); +END_FUNCTION; + +FUNCTION check_text_alignment + (ct: composite_text) : BOOLEAN; + LOCAL + a : SET OF text_alignment := []; + END_LOCAL; + + -- create a set of all the alignments + REPEAT i := 1 TO HIINDEX (ct.collected_text); + a := a + [ct.collected_text[i]\text_literal.alignment]; + END_REPEAT; + + -- if there is more than one element in the set + -- then not all alignments were the same + RETURN (SIZEOF(a) = 1); +END_FUNCTION; + +FUNCTION check_text_font + (ct: composite_text) : BOOLEAN; + LOCAL + f : SET OF font_select := []; + END_LOCAL; + + -- build a set of all the fonts + REPEAT i := 1 TO HIINDEX (ct.collected_text); + f := f + [ct.collected_text[i]\text_literal.font]; + END_REPEAT; + + -- if there is more than one element in the set + -- then not all fonts were the same + RETURN (SIZEOF(f) <= 1); +END_FUNCTION; + +FUNCTION class_assignment_is_valid + (aia: applied_classification_assignment) : BOOLEAN; +LOCAL + item: classification_item; + role: classification_role; +END_LOCAL; + +role:= aia\classification_assignment.role; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' +'CLASS_SYSTEM' IN TYPEOF(aia\classification_assignment.assigned_class)) THEN + IF(role\classification_role.name <> 'class system membership') THEN + RETURN(FALSE); + END_IF; + REPEAT i:=LOINDEX(aia\applied_classification_assignment.items) TO HIINDEX(aia\applied_classification_assignment.items); + item:= aia\applied_classification_assignment.items[i]; + + IF (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CLASS_SYSTEM_ITEM'] * TYPEOF(item))=0) THEN +-- item invalid if item does not belong to the types that may have a class_system + RETURN(FALSE); + END_IF; + END_REPEAT; +END_IF; + +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' +'CHARACTERIZED_CLASS' IN TYPEOF(aia\classification_assignment.assigned_class)) THEN + IF NOT(role\classification_role.name IN ['definitional','non-definitional','']) THEN + RETURN(FALSE); + END_IF; + + + REPEAT i:=LOINDEX(aia\applied_classification_assignment.items) TO HIINDEX(aia\applied_classification_assignment.items); + item:= aia\applied_classification_assignment.items[i]; + + IF (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CLASSIFIED_ITEM'] * TYPEOF(item))=0) THEN +-- item invalid if item does not belong to the types that may have a characterized_class + RETURN(FALSE); + END_IF; + END_REPEAT; +END_IF; + + IF + (role\classification_role.name = 'definitional') + THEN + IF NOT + (SIZEOF(QUERY(it <* aia\applied_classification_assignment.items | NOT + (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_FORMATION', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION'] * TYPEOF(it)) = 1) + )) = 0 ) + THEN + RETURN(FALSE); + END_IF; + END_IF; + +RETURN(TRUE); +END_FUNCTION; + +FUNCTION closed_shell_reversed + (a_shell: closed_shell) : oriented_closed_shell; + LOCAL + the_reverse : oriented_closed_shell; + END_LOCAL; + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF (a_shell) ) THEN + the_reverse := dummy_tri || + connected_face_set ( + a_shell\connected_face_set.cfs_faces) || + closed_shell () || oriented_closed_shell( + a_shell\oriented_closed_shell.closed_shell_element, + NOT(a_shell\oriented_closed_shell.orientation)); + ELSE + the_reverse := dummy_tri || + connected_face_set ( + a_shell\connected_face_set.cfs_faces) || + closed_shell () || oriented_closed_shell (a_shell, FALSE); + END_IF; + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION compute_total_depth + (swsrh: solid_with_stepped_round_hole) : positive_length_measure; +LOCAL +i : positive_integer; +n : positive_integer := swsrh.segments; +td : positive_length_measure := swsrh.segment_depths[1]; +END_LOCAL; + +IF n = 1 +THEN RETURN(td); +ELSE + REPEAT i := 2 TO n; + td := td + swsrh.segment_depths[i]; + END_REPEAT; +END_IF; +RETURN(td); +END_FUNCTION; + +FUNCTION conditional_reverse + (p: BOOLEAN; an_item: reversible_topology) : reversible_topology; +IF p THEN + RETURN (an_item); + ELSE + RETURN (topology_reversed (an_item)); + END_IF; +END_FUNCTION; + +FUNCTION constraints_composite_curve_on_surface + (c: composite_curve_on_surface) : BOOLEAN; + LOCAL + n_segments : INTEGER := SIZEOF(c.segments); + END_LOCAL; + + REPEAT k := 1 TO n_segments; + IF (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN + TYPEOF(c\composite_curve.segments[k].parent_curve))) AND + (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN + TYPEOF(c\composite_curve.segments[k].parent_curve))) AND + (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE_ON_SURFACE' IN + TYPEOF(c\composite_curve.segments[k].parent_curve))) THEN + RETURN (FALSE); + END_IF; + END_REPEAT; + RETURN(TRUE); +END_FUNCTION; + +FUNCTION constraints_geometry_shell_based_surface_model + (m: shell_based_surface_model) : BOOLEAN; + LOCAL + result : BOOLEAN := TRUE; + END_LOCAL; + + REPEAT j := 1 TO SIZEOF(m.sbsm_boundary); + IF (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OPEN_SHELL' IN + TYPEOF(m.sbsm_boundary[j])) AND + (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CLOSED_SHELL' IN + TYPEOF(m.sbsm_boundary[j])))) + THEN + result := FALSE; + RETURN(result); + (* A surface model is composed of OPEN_ and CLOSED_SHELLs. *) + END_IF; + END_REPEAT; + RETURN(result); +END_FUNCTION; + +FUNCTION constraints_geometry_shell_based_wireframe_model + (m: shell_based_wireframe_model) : BOOLEAN; + LOCAL + result : BOOLEAN := TRUE; + END_LOCAL; + + REPEAT j := 1 TO SIZEOF(m.sbwm_boundary); + IF (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN + TYPEOF(m.sbwm_boundary[j])) AND + (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_SHELL' IN + TYPEOF(m.sbwm_boundary[j])))) + THEN + result := FALSE; + RETURN(result); + (* A wireframe model is composed of WIRE_ and VERTEX_SHELLs *) + END_IF; + END_REPEAT; + RETURN(result); +END_FUNCTION; + +FUNCTION constraints_param_b_spline + (degree: INTEGER; up_knots: INTEGER; up_cp: INTEGER; knot_mult: LIST [0:?] OF INTEGER; knots: LIST [0:?] OF parameter_value) : BOOLEAN; + LOCAL + result : BOOLEAN := TRUE; + k, sum : INTEGER; + END_LOCAL; + + (* Find sum of knot multiplicities. *) + sum := knot_mult[1]; + + REPEAT i := 2 TO up_knots; + sum := sum + knot_mult[i]; + END_REPEAT; + + (* Check limits holding for all B-spline parametrisations *) + IF (degree < 1) OR (up_knots < 2) OR (up_cp < degree) OR + (sum <> (degree + up_cp + 2)) THEN + result := FALSE; + RETURN(result); + END_IF; + + k := knot_mult[1]; + + IF (k < 1) OR (k > degree + 1) THEN + result := FALSE; + RETURN(result); + END_IF; + + REPEAT i := 2 TO up_knots; + IF (knot_mult[i] < 1) OR (knots[i] <= knots[i-1]) THEN + result := FALSE; + RETURN(result); + END_IF; + + k := knot_mult[i]; + + IF (i < up_knots) AND (k > degree) THEN + result := FALSE; + RETURN(result); + END_IF; + + IF (i = up_knots) AND (k > degree + 1) THEN + result := FALSE; + RETURN(result); + END_IF; + END_REPEAT; + RETURN(result); +END_FUNCTION; + +FUNCTION constraints_rectangular_composite_surface + (s: rectangular_composite_surface) : BOOLEAN; +REPEAT i := 1 TO s.n_u; + REPEAT j := 1 TO s.n_v; + IF NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF + (s.segments[i][j].parent_surface)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RECTANGULAR_TRIMMED_SURFACE' IN TYPEOF + (s.segments[i][j].parent_surface))) THEN + RETURN(FALSE); + END_IF; + END_REPEAT; + END_REPEAT; + + (* Check the transition codes, omitting the last row or column *) + REPEAT i := 1 TO s.n_u-1; + REPEAT j := 1 TO s.n_v; + IF s.segments[i][j].u_transition = discontinuous THEN + RETURN(FALSE); + END_IF; + END_REPEAT; + END_REPEAT; + + REPEAT i := 1 TO s.n_u; + REPEAT j := 1 TO s.n_v-1; + IF s.segments[i][j].v_transition = discontinuous THEN + RETURN(FALSE); + END_IF; + END_REPEAT; + END_REPEAT; + RETURN(TRUE); +END_FUNCTION; + +FUNCTION control_characters_free + (s: STRING) : BOOLEAN; + LOCAL + ch : STRING; + END_LOCAL; + + REPEAT i:=1 TO LENGTH(s); + ch := s[i]; + IF (ch = '\x9') OR (ch = '\xA') OR (ch = '\xD') THEN + RETURN(FALSE); + END_IF; + END_REPEAT; + RETURN (TRUE); +END_FUNCTION; + +FUNCTION cross_product + (arg1: direction; arg2: direction) : vector; + LOCAL + mag : REAL; + res : direction; + v1,v2 : LIST[3:3] OF REAL; + result : vector; + END_LOCAL; + + IF ( NOT EXISTS (arg1) OR (arg1.dim = 2)) OR + ( NOT EXISTS (arg2) OR (arg2.dim = 2)) THEN + RETURN(?); + ELSE + BEGIN + v1 := normalise(arg1).direction_ratios; + v2 := normalise(arg2).direction_ratios; + res := dummy_gri || direction([(v1[2]*v2[3] - v1[3]*v2[2]), + (v1[3]*v2[1] - v1[1]*v2[3]), (v1[1]*v2[2] - v1[2]*v2[1])]); + mag := 0.0; + REPEAT i := 1 TO 3; + mag := mag + res.direction_ratios[i]*res.direction_ratios[i]; + END_REPEAT; + IF (mag > 0.0) THEN + result := dummy_gri || vector(res, SQRT(mag)); + ELSE + result := dummy_gri || vector(arg1, 0.0); + END_IF; + RETURN(result); + END; + END_IF; +END_FUNCTION; + +FUNCTION curve_weights_positive + (b: rational_b_spline_curve) : BOOLEAN; + LOCAL + result : BOOLEAN := TRUE; + END_LOCAL; + + REPEAT i := 0 TO b.upper_index_on_control_points; + IF b.weights[i] <= 0.0 THEN + result := FALSE; + RETURN(result); + END_IF; + END_REPEAT; + RETURN(result); +END_FUNCTION; + +FUNCTION default_tolerance_table_cell_wr2 + (agg: compound_item_definition) : BOOLEAN; +BEGIN +IF SIZEOF(agg) <= 5 THEN + RETURN(TRUE); +ELSE + RETURN(FALSE); +END_IF; +END; +END_FUNCTION; + +FUNCTION default_tolerance_table_cell_wr3 + (agg: compound_item_definition) : BOOLEAN; +BEGIN +IF (SIZEOF(QUERY ( i <* agg | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) + AND (i\representation_item.name = 'significant number of digits')) )) = 1) OR +((SIZEOF(QUERY ( i <* agg | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND + (i\representation_item.name = 'lower limit')) )) = 1) AND +(SIZEOF( QUERY ( i <* agg | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND + (i\representation_item.name = 'upper limit')) )) = 1)) THEN + RETURN(TRUE); +ELSE + RETURN(FALSE); +END_IF; +END; +END_FUNCTION; + +FUNCTION default_tolerance_table_cell_wr4 + (agg: compound_item_definition) : BOOLEAN; +BEGIN +IF (SIZEOF(QUERY ( i <* agg | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND + (i\representation_item.name = 'plus minus tolerance value')) )) = 1) OR +((SIZEOF(QUERY ( i <* agg | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND ( + i\representation_item.name = 'lower tolerance value')) )) = 1) AND +(SIZEOF( QUERY ( i <* agg | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND ( + i\representation_item.name = 'upper tolerance value')) )) = 1)) THEN + RETURN(TRUE); +ELSE + RETURN(FALSE); +END_IF; +END; +END_FUNCTION; + +FUNCTION default_tolerance_table_cell_wr5 + (agg: compound_item_definition) : BOOLEAN; +BEGIN +IF (SIZEOF(QUERY ( i <* agg | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) )) <= 1) AND +(SIZEOF(QUERY ( i <* agg | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) )) = + SIZEOF(QUERY ( i <* agg | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND + (i\representation_item.name = 'cell description'))) )) +THEN + RETURN(TRUE); +ELSE + RETURN(FALSE); +END_IF; +END; +END_FUNCTION; + +FUNCTION dependently_instantiated + (set_of_input_instances: SET [0:?] OF GENERIC: igen; set_of_input_types: SET [0:?] OF STRING; previous_in_chain: LIST [0:?] OF GENERIC: cgen) : BOOLEAN; +LOCAL + number_of_input_instances : INTEGER; + number_of_referring_instances : INTEGER; + bag_of_referring_instances : BAG OF GENERIC:igen := []; + dependently_instantiated_flag : BOOLEAN; + previous_in_chain_plus : LIST OF GENERIC:cgen := []; + result : BOOLEAN := true; + set_of_types : SET OF STRING := []; +END_LOCAL; + +IF EXISTS(set_of_input_instances) THEN + number_of_input_instances := SIZEOF(set_of_input_instances); + (* Add the declared type of bag_of_referring_instances to the set of + types of the REFERENCEd instances for the subset comparison later. + *) + set_of_input_types := set_of_input_types + 'GENERIC'; + REPEAT i:=1 TO number_of_input_instances; + (* Determine all references to the current input instance. *) + bag_of_referring_instances := USEDIN (set_of_input_instances[i] , ''); + IF EXISTS(bag_of_referring_instances) THEN + number_of_referring_instances := SIZEOF(bag_of_referring_instances); + dependently_instantiated_flag := false; + REPEAT j:=1 TO number_of_referring_instances; + (* Determine the type strings of the current referencing instance. + *) + set_of_types := TYPEOF(bag_of_referring_instances[j]); + (* If the referencing instance is of one of the types of the + only dependently instantiable select items, the current input + instance may still be invalidly instantiated. + Otherwise it is OK, and the next input instance is tested. + *) + IF set_of_types <= set_of_input_types THEN -- subset operator + (* The referring instance is of one of the restricted types. + However, it may itself be referred to by a valid instance; + then also the current instance would be valid. + Thus, call this function recursively with the referring + instance as input. + To avoid an infinite loop in case a set of instances + reference each other in a closed loop, test first whether + the current referencing instance is in the list of + previously processed chain members. + *) + IF NOT (bag_of_referring_instances[j] IN previous_in_chain) THEN + previous_in_chain_plus := previous_in_chain + + set_of_input_instances[i]; + IF dependently_instantiated([bag_of_referring_instances[j]], + set_of_input_types, + previous_in_chain_plus) THEN + dependently_instantiated_flag := true; + ESCAPE; -- dependently instantiated; next input instance + ELSE + (* Not dependently instantiated: go to next referring + instance. *) + SKIP; + END_IF; + END_IF; + ELSE + dependently_instantiated_flag := true; + ESCAPE; -- dependently instantiated; take next input instance + END_IF; + END_REPEAT; + IF NOT dependently_instantiated_flag THEN + RETURN(false); + END_IF; + ELSE + RETURN(false); -- not referenced at all => invalidly instantiated + END_IF; + END_REPEAT; +ELSE + RETURN(false); -- no input +END_IF; + +RETURN(true); +END_FUNCTION; + +FUNCTION derive_angle + (placement_1: axis2_placement_3d; placement_2: axis2_placement_3d) : plane_angle_measure; + LOCAL + v1 : direction; + v2 : direction; + mag_v1 : REAL; + mag_v2 : REAL; + theta : plane_angle_measure; + END_LOCAL; + v1 := placement_1.p[1]; + v2 := placement_2.p[1]; + mag_v1 := SQRT (v1.direction_ratios[1]*v1.direction_ratios[1] + + v1.direction_ratios[2]*v1.direction_ratios[2]); + mag_v2 := SQRT (v2.direction_ratios[1]*v2.direction_ratios[1] + + v2.direction_ratios[2]*v2.direction_ratios[2]); + IF ((mag_v1 = 0.0) OR (mag_v2 = 0.0)) THEN + theta := 0.0; + RETURN (theta); + END_IF; + theta := ACOS ((v1.direction_ratios[1]*v2.direction_ratios[1] + + v1.direction_ratios[2]*v2.direction_ratios[2]) / + (mag_v1*mag_v2)); + RETURN (theta); +END_FUNCTION; + +FUNCTION derive_dimensional_exponents + (x: unit) : dimensional_exponents; + LOCAL + result : dimensional_exponents := dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + END_LOCAL; + + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DERIVED_UNIT' IN TYPEOF(x) THEN + REPEAT i := LOINDEX(x\derived_unit.elements) TO HIINDEX(x\derived_unit.elements); + result.length_exponent := result.length_exponent + + (x\derived_unit.elements[i]\derived_unit_element.exponent * + x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.length_exponent); + result.mass_exponent := result.mass_exponent + + (x\derived_unit.elements[i]\derived_unit_element.exponent * + x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.mass_exponent); + result.time_exponent := result.time_exponent + + (x\derived_unit.elements[i]\derived_unit_element.exponent * + x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.time_exponent); + result.electric_current_exponent := result.electric_current_exponent + + (x\derived_unit.elements[i]\derived_unit_element.exponent * + x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.electric_current_exponent); + result.thermodynamic_temperature_exponent := result.thermodynamic_temperature_exponent + + (x\derived_unit.elements[i]\derived_unit_element.exponent * + x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.thermodynamic_temperature_exponent); + result.amount_of_substance_exponent := result.amount_of_substance_exponent + + (x\derived_unit.elements[i]\derived_unit_element.exponent * + x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.amount_of_substance_exponent); + result.luminous_intensity_exponent := result.luminous_intensity_exponent + + (x\derived_unit.elements[i]\derived_unit_element.exponent * + x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.luminous_intensity_exponent); + END_REPEAT; + ELSE + result := x\named_unit.dimensions; + END_IF; + RETURN (result); +END_FUNCTION; + +FUNCTION dimension_of + (item: geometric_representation_item) : dimension_count; + LOCAL + x : SET OF representation; + y : representation_context; + dim : dimension_count; + END_LOCAL; + -- For cartesian_point, direction, or vector dimension is determined by + -- counting components. + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF(item) THEN + dim := SIZEOF(item\cartesian_point.coordinates); + RETURN(dim); + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIRECTION' IN TYPEOF(item) THEN + dim := SIZEOF(item\direction.direction_ratios); + RETURN(dim); + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VECTOR' IN TYPEOF(item) THEN + dim := SIZEOF(item\vector.orientation\direction.direction_ratios); + RETURN(dim); + END_IF; + -- For all other types of geometric_representation_item dim is obtained + -- via context. + -- Find the set of representation in which the item is used. + + x := using_representations(item); + + -- Determines the dimension_count of the + -- geometric_representation_context. Note that the + -- RULE compatible_dimension ensures that the context_of_items + -- is of type geometric_representation_context and has + -- the same dimension_count for all values of x. + -- The SET x is non-empty since this is required by WR1 of + -- representation_item. + y := x[1].context_of_items; + dim := y\geometric_representation_context.coordinate_space_dimension; + RETURN (dim); +END_FUNCTION; + +FUNCTION dimensions_for_si_unit + (n: si_unit_name) : dimensional_exponents; +CASE n OF + metre: + RETURN (dimensional_exponents(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)); + gram: + RETURN (dimensional_exponents(0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0)); + second: + RETURN (dimensional_exponents(0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0)); + ampere: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0)); + kelvin: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0)); + mole: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0)); + candela: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0)); + radian: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)); + steradian: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)); + hertz: + RETURN (dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0)); + newton: + RETURN (dimensional_exponents(1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0)); + pascal: + RETURN (dimensional_exponents(-1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0)); + joule: + RETURN (dimensional_exponents(2.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0)); + watt: + RETURN (dimensional_exponents(2.0, 1.0, -3.0, 0.0, 0.0, 0.0, 0.0)); + coulomb: + RETURN (dimensional_exponents(0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0)); + volt: + RETURN (dimensional_exponents(2.0, 1.0, -3.0, -1.0, 0.0, 0.0, 0.0)); + farad: + RETURN (dimensional_exponents(-2.0, -1.0, 4.0, 1.0, 0.0, 0.0, 0.0)); + ohm: + RETURN (dimensional_exponents(2.0, 1.0, -3.0, -2.0, 0.0, 0.0, 0.0)); + siemens: + RETURN (dimensional_exponents(-2.0, -1.0, 3.0, 2.0, 0.0, 0.0, 0.0)); + weber: + RETURN (dimensional_exponents(2.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0)); + tesla: + RETURN (dimensional_exponents(0.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0)); + henry: + RETURN (dimensional_exponents(2.0, 1.0, -2.0, -2.0, 0.0, 0.0, 0.0)); + degree_Celsius: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0)); + lumen: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0)); + lux: + RETURN (dimensional_exponents(-2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0)); + becquerel: + RETURN (dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0)); + gray: + RETURN (dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0)); + sievert: + RETURN (dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0)); + OTHERWISE: + RETURN (?); + END_CASE; +END_FUNCTION; + +FUNCTION dot_product + (arg1: direction; arg2: direction) : REAL; + LOCAL + scalar : REAL; + vec1, vec2: direction; + ndim : INTEGER; + END_LOCAL; + + IF NOT EXISTS (arg1) OR NOT EXISTS (arg2) THEN + scalar := ?; + (* When function is called with invalid data an indeterminate result + is returned *) + ELSE + IF (arg1.dim <> arg2.dim) THEN + scalar := ?; + (* When function is called with invalid data an indeterminate result + is returned *) + ELSE + BEGIN + vec1 := normalise(arg1); + vec2 := normalise(arg2); + ndim := arg1.dim; + scalar := 0.0; + REPEAT i := 1 TO ndim; + scalar := scalar + + vec1.direction_ratios[i]*vec2.direction_ratios[i]; + END_REPEAT; + END; + END_IF; + END_IF; + RETURN (scalar); +END_FUNCTION; + +FUNCTION edge_reversed + (an_edge: edge) : oriented_edge; + LOCAL + the_reverse : oriented_edge; + END_LOCAL; + + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_EDGE' IN TYPEOF (an_edge) ) THEN + the_reverse := dummy_tri || + edge(an_edge.edge_end, an_edge.edge_start) || + oriented_edge(an_edge\oriented_edge.edge_element, + NOT (an_edge\oriented_edge.orientation)) ; + ELSE + the_reverse := dummy_tri || + edge(an_edge.edge_end, an_edge.edge_start) || + oriented_edge(an_edge, FALSE); + END_IF; + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION external_version_assignment_is_valid + (aia: applied_external_identification_assignment) : BOOLEAN; + LOCAL + item: identification_item; + role: identification_role; + END_LOCAL; + role:= aia.role; + IF role.name='version' THEN + REPEAT i:=LOINDEX(aia.items) TO HIINDEX(aia.items); + item:= aia.items[i]; + IF (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'EXTERNALLY_VERSIONED_ITEM']*TYPEOF(item))=0) THEN + -- item invalid if item does not belong to versionable types + RETURN(FALSE); + END_IF; + END_REPEAT; + RETURN(TRUE); + ELSE -- case where aia does not convey a version id + RETURN(TRUE); + END_IF; +END_FUNCTION; + +FUNCTION face_bound_reversed + (a_face_bound: face_bound) : face_bound; + LOCAL + the_reverse : face_bound ; + END_LOCAL; + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_OUTER_BOUND' IN TYPEOF (a_face_bound) ) THEN + the_reverse := dummy_tri || + face_bound(a_face_bound\face_bound.bound, + NOT (a_face_bound\face_bound.orientation)) + || face_outer_bound() ; + ELSE + the_reverse := dummy_tri || + face_bound(a_face_bound.bound, NOT(a_face_bound.orientation)); + END_IF; + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION face_reversed + (a_face: face) : oriented_face; + LOCAL + the_reverse : oriented_face ; + END_LOCAL; + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_FACE' IN TYPEOF (a_face) ) THEN + the_reverse := dummy_tri || + face(set_of_topology_reversed(a_face.bounds)) || + oriented_face(a_face\oriented_face.face_element, + NOT (a_face\oriented_face.orientation)) ; + ELSE + the_reverse := dummy_tri || + face(set_of_topology_reversed(a_face.bounds)) || + oriented_face(a_face, FALSE) ; + END_IF; + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION first_proj_axis + (z_axis: direction; arg: direction) : direction; + LOCAL + x_axis : direction; + v : direction; + z : direction; + x_vec : vector; + END_LOCAL; + + IF (NOT EXISTS(z_axis)) THEN + RETURN (?) ; + ELSE + z := normalise(z_axis); + IF NOT EXISTS(arg) THEN + IF ((z.direction_ratios <> [1.0,0.0,0.0]) AND + (z.direction_ratios <> [-1.0,0.0,0.0])) THEN + v := dummy_gri || direction([1.0,0.0,0.0]); + ELSE + v := dummy_gri || direction([0.0,1.0,0.0]); + END_IF; + ELSE + IF (arg.dim <> 3) THEN + RETURN (?) ; + END_IF; + IF ((cross_product(arg,z).magnitude) = 0.0) THEN + RETURN (?); + ELSE + v := normalise(arg); + END_IF; + END_IF; + x_vec := scalar_times_vector(dot_product(v, z), z); + x_axis := vector_difference(v, x_vec).orientation; + x_axis := normalise(x_axis); + END_IF; + RETURN(x_axis); +END_FUNCTION; + +FUNCTION gbsf_check_curve + (cv: representation_item) : BOOLEAN; +IF SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_CURVE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D'] * TYPEOF(cv)) > 1 THEN + RETURN (FALSE); + END_IF; + IF SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCLE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELLIPSE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TRIMMED_CURVE'] * TYPEOF(cv)) = 1 THEN + RETURN (TRUE); + ELSE + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE' IN TYPEOF(cv)) AND (cv\composite_curve.self_intersect = FALSE) OR (cv\composite_curve.self_intersect = UNKNOWN)) THEN + RETURN (SIZEOF(QUERY(seg <* cv\composite_curve.segments | NOT (gbsf_check_curve(seg.parent_curve)))) = 0); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA' IN TYPEOF(cv) THEN + RETURN (gbsf_check_curve(cv\curve_replica.parent_curve)); + ELSE + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF(cv)) AND ((cv\offset_curve_3d.self_intersect = FALSE) OR (cv\offset_curve_3d.self_intersect = UNKNOWN)) AND (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF(cv\offset_curve_3d.basis_curve)))) THEN + RETURN (gbsf_check_curve(cv\offset_curve_3d.basis_curve)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(cv) THEN + RETURN ((gbsf_check_curve(cv\pcurve.reference_to_curve\representation.items[1])) AND (gbsf_check_surface(cv\pcurve.basis_surface))); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF(cv) THEN + IF (SIZEOF(cv\polyline.points) >= 3) THEN + RETURN (TRUE); + END_IF; + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN TYPEOF(cv) THEN + IF gbsf_check_curve(cv\surface_curve.curve_3d) THEN + REPEAT i := 1 TO SIZEOF(cv\surface_curve.associated_geometry); + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE' IN TYPEOF(cv\surface_curve.associated_geometry[i]) THEN + IF NOT gbsf_check_surface(cv\surface_curve.associated_geometry[i]) THEN + RETURN (FALSE); + END_IF; + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(cv\surface_curve.associated_geometry[i]) THEN + IF NOT gbsf_check_curve(cv\surface_curve.associated_geometry[i]) THEN + RETURN (FALSE); + END_IF; + END_IF; + END_IF; + END_REPEAT; + RETURN (TRUE); + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION gbsf_check_point + (pnt: point) : BOOLEAN; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF(pnt) THEN + RETURN (TRUE); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE' IN TYPEOF(pnt) THEN + RETURN (gbsf_check_curve(pnt\point_on_curve.basis_curve)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_SURFACE' IN TYPEOF(pnt) THEN + RETURN (gbsf_check_surface(pnt\point_on_surface.basis_surface)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEGENERATE_PCURVE' IN TYPEOF(pnt) THEN + RETURN ((gbsf_check_curve(pnt\degenerate_pcurve.reference_to_curve\representation.items[1])) AND (gbsf_check_surface(pnt\degenerate_pcurve.basis_surface))); + END_IF; + END_IF; + END_IF; + END_IF; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION gbsf_check_surface + (sf: surface) : BOOLEAN; +IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF(sf)) AND (sf\b_spline_surface.self_intersect = FALSE) OR (sf\b_spline_surface.self_intersect = UNKNOWN)) THEN + RETURN (TRUE); + ELSE + IF SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SPHERICAL_SURFACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TOROIDAL_SURFACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_BOUNDED_SURFACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RECTANGULAR_TRIMMED_SURFACE'] * TYPEOF(sf)) = 1 THEN + RETURN (TRUE); + ELSE + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_SURFACE' IN TYPEOF(sf)) AND (sf\offset_surface.self_intersect = FALSE) OR (sf\offset_surface.self_intersect = UNKNOWN)) THEN + RETURN (gbsf_check_surface(sf\offset_surface.basis_surface)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RECTANGULAR_COMPOSITE_SURFACE' IN TYPEOF(sf) THEN + REPEAT i := 1 TO SIZEOF(sf\rectangular_composite_surface.segments); + REPEAT j := 1 TO SIZEOF(sf\rectangular_composite_surface.segments[i]); + IF NOT (gbsf_check_surface(sf\rectangular_composite_surface.segments[i][j].parent_surface)) THEN + RETURN (FALSE); + END_IF; + END_REPEAT; + END_REPEAT; + RETURN (TRUE); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_REPLICA' IN TYPEOF(sf) THEN + RETURN (gbsf_check_surface(sf\surface_replica.parent_surface)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_OF_REVOLUTION' IN TYPEOF(sf) THEN + RETURN (gbsf_check_curve(sf\swept_surface.swept_curve)); + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION get_basis_surface + (c: curve_on_surface) : SET [0:2] OF surface; + LOCAL + surfs : SET[0:2] OF surface; + n : INTEGER; + END_LOCAL; + surfs := []; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF (c) THEN + surfs := [c\pcurve.basis_surface]; + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN TYPEOF (c) THEN + n := SIZEOF(c\surface_curve.associated_geometry); + REPEAT i := 1 TO n; + surfs := surfs + + associated_surface(c\surface_curve.associated_geometry[i]); + END_REPEAT; + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE_ON_SURFACE' IN TYPEOF (c) THEN + (* For a composite_curve_on_surface the basis_surface is the intersection + of the basis_surfaces of all the segments. *) + n := SIZEOF(c\composite_curve.segments); + surfs := get_basis_surface( + c\composite_curve.segments[1].parent_curve); + IF n > 1 THEN + REPEAT i := 2 TO n; + surfs := surfs * get_basis_surface( + c\composite_curve.segments[i].parent_curve); + END_REPEAT; + END_IF; + + END_IF; + RETURN(surfs); +END_FUNCTION; + +FUNCTION get_description_value + (obj: description_attribute_select) : text; + LOCAL + description_bag : BAG OF description_attribute := (USEDIN(obj, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.' + 'DESCRIBED_ITEM')); + END_LOCAL; + + IF SIZEOF(description_bag) = 1 THEN + RETURN (description_bag[1].attribute_value); + ELSE + RETURN (?); + END_IF; +END_FUNCTION; + +FUNCTION get_id_value + (obj: id_attribute_select) : identifier; + LOCAL + id_bag : BAG OF id_attribute := (USEDIN(obj, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.' + 'IDENTIFIED_ITEM')); + END_LOCAL; + + IF SIZEOF(id_bag) = 1 THEN + RETURN (id_bag[1].attribute_value); + ELSE + RETURN (?); + END_IF; +END_FUNCTION; + +FUNCTION get_name_value + (obj: name_attribute_select) : label; + LOCAL + name_bag : BAG OF name_attribute := (USEDIN(obj, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.' + 'NAMED_ITEM')); + END_LOCAL; + + IF SIZEOF(name_bag) = 1 THEN + RETURN (name_bag[1].attribute_value); + ELSE + RETURN (?); + END_IF; +END_FUNCTION; + +FUNCTION get_role + (obj: role_select) : object_role; + LOCAL + role_bag : BAG OF role_association := (USEDIN(obj, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.' + 'ITEM_WITH_ROLE')); + END_LOCAL; + + IF SIZEOF(role_bag) = 1 THEN + RETURN (role_bag[1].role); + ELSE + RETURN (?); + END_IF; +END_FUNCTION; + +FUNCTION get_shape_aspect_property_definition_representations + (s_a_instance: shape_aspect) : SET [0:?] OF property_definition_representation; +LOCAL +pd_set : SET OF property_definition := []; +pdr_set : SET OF property_definition_representation := [] ; +END_LOCAL; +pd_set := bag_to_set(USEDIN(s_a_instance, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROPERTY_DEFINITION.DEFINITION')); +IF (SIZEOF(pd_set) < 1) THEN +RETURN (pdr_set); +END_IF; +REPEAT i := 1 TO HIINDEX(pd_set); +pdr_set := pdr_set + (QUERY(pdr <* USEDIN(pd_set[i], 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PROPERTY_DEFINITION_REPRESENTATION.' + 'DEFINITION') | +'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF(pdr))); +END_REPEAT; +RETURN (pdr_set); +END_FUNCTION; + +FUNCTION is_acyclic + (arg: generic_expression) : BOOLEAN; +RETURN (acyclic (arg, [])); +END_FUNCTION; + +FUNCTION is_int_expr + (arg: numeric_expression) : LOGICAL; +LOCAL + i: INTEGER := 0; +END_LOCAL; + +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INT_LITERAL' IN TYPEOF(arg) +THEN + RETURN (TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REAL_LITERAL' IN TYPEOF(arg) +THEN + RETURN (FALSE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INT_NUMERIC_VARIABLE' IN TYPEOF(arg) +THEN + RETURN (TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REAL_NUMERIC_VARIABLE' IN TYPEOF(arg) +THEN + RETURN (FALSE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ABS_FUNCTION' IN TYPEOF(arg) +THEN + RETURN (is_int_expr(arg\unary_numeric_expression.operand)); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MINUS_FUNCTION' IN TYPEOF(arg) +THEN + RETURN (is_int_expr(arg\unary_numeric_expression.operand)); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SIN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COS_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TAN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ASIN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ACOS_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ATAN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EXP_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LOG_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LOG2_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LOG10_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SQUARE_ROOT_FUNCTION' + IN TYPEOF(arg)) +THEN + RETURN (FALSE); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLUS_EXPRESSION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MULT_EXPRESSION' + IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAXIMUM_FUNCTION' + IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MINIMUM_FUNCTION' + IN TYPEOF(arg)) +THEN + REPEAT i :=1 TO SIZEOF ( + arg\multiple_arity_numeric_expression.operands); + IF NOT + is_int_expr(arg\multiple_arity_numeric_expression.operands[i]) + THEN + RETURN (FALSE); + END_IF; + END_REPEAT; + RETURN (TRUE); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MINUS_EXPRESSION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POWER_EXPRESSION' + IN TYPEOF(arg)) +THEN + RETURN (is_int_expr(arg\binary_numeric_expression.operands[1]) + AND is_int_expr(arg\binary_numeric_expression.operands[2])); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIV_EXPRESSION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MOD_EXPRESSION' IN TYPEOF(arg)) +THEN + RETURN(TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SLASH_EXPRESSION' IN TYPEOF(arg) +THEN + RETURN (FALSE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_FUNCTION' IN TYPEOF(arg) +THEN + RETURN (TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VALUE_FUNCTION' IN TYPEOF(arg) +THEN + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INT_VALUE_FUNCTION' + IN TYPEOF(arg) + THEN + RETURN (TRUE); + ELSE + RETURN (FALSE); + END_IF; +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INTEGER_DEFINED_FUNCTION' + IN TYPEOF(arg) +THEN + RETURN(TRUE) ; +END_IF; +IF'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REAL_DEFINED_FUNCTION' IN TYPEOF(arg) +THEN + RETURN(FALSE) ; +END_IF ; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOOLEAN_DEFINED_FUNCTION' + IN TYPEOF(arg) +THEN + RETURN(FALSE) ; +END_IF ; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_DEFINED_FUNCTION' + IN TYPEOF(arg) +THEN + RETURN (FALSE) ; +END_IF ; + +RETURN (FALSE); +END_FUNCTION; + +FUNCTION is_SQL_mappable + (arg: expression) : LOGICAL; +LOCAL + i: INTEGER; +END_LOCAL; + +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SIMPLE_NUMERIC_EXPRESSION' + IN TYPEOF (arg) +THEN + RETURN (TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SQL_MAPPABLE_DEFINED_FUNCTION' + IN TYPEOF (arg) +THEN + RETURN (TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MINUS_FUNCTION' IN TYPEOF(arg) +THEN + RETURN (is_SQL_mappable(arg\unary_numeric_expression.operand)); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ABS_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SIN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COS_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TAN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ASIN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ACOS_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ATAN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EXP_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LOG_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LOG2_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LOG10_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SQUARE_ROOT_FUNCTION' + IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VALUE_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_FUNCTION' + IN TYPEOF(arg)) +THEN + RETURN (FALSE); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLUS_EXPRESSION' IN TYPEOF(arg)) + OR('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MULT_EXPRESSION' IN TYPEOF(arg)) + OR('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAXIMUM_FUNCTION' + IN TYPEOF(arg)) + OR('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MINIMUM_FUNCTION' + IN TYPEOF(arg)) +THEN + REPEAT i :=1 TO SIZEOF ( + arg\multiple_arity_numeric_expression.operands); + IF NOT is_SQL_mappable( + arg\multiple_arity_numeric_expression.operands[i]) + THEN + RETURN (FALSE); + END_IF; + END_REPEAT; +RETURN (TRUE); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MINUS_EXPRESSION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SLASH_EXPRESSION' IN + TYPEOF(arg)) +THEN + RETURN (is_SQL_mappable( + arg\binary_numeric_expression.operands[1]) + AND is_SQL_mappable(arg\binary_numeric_expression.operands[2])); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIV_EXPRESSION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MOD_EXPRESSION' IN TYPEOF(arg)) + OR('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POWER_EXPRESSION' + IN TYPEOF(arg)) +THEN + RETURN (FALSE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SIMPLE_BOOLEAN_EXPRESSION' + IN TYPEOF (arg) +THEN + RETURN (TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NOT_EXPRESSION' IN TYPEOF (arg) +THEN + RETURN (is_SQL_mappable (arg\UNARY_GENERIC_EXPRESSION.OPERAND)); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ODD_FUNCTION'IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.XOR_EXPRESSION' + IN TYPEOF (arg)) +THEN + RETURN (FALSE); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AND_EXPRESSION' IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OR_EXPRESSION' IN TYPEOF (arg)) +THEN + REPEAT i:=1 TO SIZEOF ( + arg\MULTIPLE_ARITY_BOOLEAN_EXPRESSION.OPERANDS); + IF NOT is_SQL_mappable ( + arg\MULTIPLE_ARITY_BOOLEAN_EXPRESSION.OPERANDS[i]) + THEN + RETURN (FALSE); + END_IF; + END_REPEAT; + RETURN (TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EQUALS_EXPRESSION' IN TYPEOF (arg) +THEN + RETURN(is_SQL_mappable ( + arg\BINARY_GENERIC_EXPRESSION.OPERANDS [1]) + AND is_SQL_mappable( + arg\BINARY_GENERIC_EXPRESSION.OPERANDS [2])); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPARISON_EQUAL' IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPARISON_GREATER' + IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPARISON_GREATER_EQUAL' + IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPARISON_LESS' + IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPARISON_LESS_EQUAL' + IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPARISON_NOT_EQUAL' + IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LIKE_EXPRESSION' + IN TYPEOF (arg)) +THEN + RETURN (is_SQL_mappable (arg\COMPARISON_EXPRESSION.OPERANDS[1]) + AND is_SQL_mappable (arg\COMPARISON_EXPRESSION.OPERANDS[2])); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INTERVAL_EXPRESSION' IN TYPEOF(arg) +THEN + RETURN (is_SQL_mappable(arg\interval_expression.interval_low) + AND is_SQL_mappable(arg\interval_expression.interval_high) + AND is_SQL_mappable(arg\interval_expression.interval_item)); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NUMERIC_DEFINED_FUNCTION' + IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOOLEAN_DEFINED_FUNCTION' + IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_DEFINED_FUNCTION' + IN TYPEOF(arg)) +THEN + RETURN (FALSE) ; +END_IF; + +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SIMPLE_STRING_EXPRESSION' + IN TYPEOF(ARG) +THEN + RETURN (TRUE); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INDEX_EXPRESSION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBSTRING_EXPRESSION' + IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONCAT_EXPRESSION' + IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FORMAT_FUNCTION' + IN TYPEOF(arg)) +THEN + RETURN (FALSE); +END_IF; + + RETURN (FALSE); +END_FUNCTION; + +FUNCTION item_in_context + (item: representation_item; cntxt: representation_context) : BOOLEAN; + LOCAL + y : BAG OF representation_item; + END_LOCAL; + -- If there is one or more representation using both the item + -- and cntxt return true. + IF SIZEOF(USEDIN(item,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION.ITEMS') + * cntxt.representations_in_context) > 0 THEN + RETURN (TRUE); + -- Determine the bag of representation_items that reference + -- item + ELSE y := QUERY(z <* USEDIN (item , '') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(z)); + -- Ensure that the bag is not empty + IF SIZEOF(y) > 0 THEN + -- For each element in the bag + REPEAT i := 1 TO HIINDEX(y); + -- Check to see it is an item in the input cntxt. + IF item_in_context(y[i], cntxt) THEN + RETURN (TRUE); + END_IF; + END_REPEAT; + END_IF; + END_IF; + -- Return false when all possible branches have been checked + -- with no success. + RETURN (FALSE); +END_FUNCTION; + +FUNCTION leap_year + (year: year_number) : BOOLEAN; +IF ((((year MOD 4) = 0) AND ((year MOD 100) <> 0)) OR ((year MOD 400) = 0)) THEN + RETURN (TRUE); + ELSE + RETURN (FALSE); + END_IF; +END_FUNCTION; + +FUNCTION list_face_loops + (f: face) : LIST [0:?] OF loop; + LOCAL + loops : LIST[0:?] OF loop := []; + END_LOCAL; + + REPEAT i := 1 TO SIZEOF(f.bounds); + loops := loops +(f.bounds[i].bound); + END_REPEAT; + + RETURN(loops); +END_FUNCTION; + +FUNCTION list_of_topology_reversed + (a_list: list_of_reversible_topology_item) : list_of_reversible_topology_item; + LOCAL + the_reverse : list_of_reversible_topology_item; + END_LOCAL; + + the_reverse := []; + REPEAT i := 1 TO SIZEOF (a_list); + the_reverse := topology_reversed (a_list [i]) + the_reverse; + END_REPEAT; + + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION list_to_array + (lis: LIST [0:?] OF GENERIC: T; low: INTEGER; u: INTEGER) : ARRAY [low:u] OF GENERIC: T; + LOCAL + n : INTEGER; + res : ARRAY [low:u] OF GENERIC : T; + END_LOCAL; + + n := SIZEOF(lis); + IF (n <> (u-low +1)) THEN + RETURN(?); + ELSE + res := [lis[1] : n]; + REPEAT i := 2 TO n; + res[low+i-1] := lis[i]; + END_REPEAT; + RETURN(res); + END_IF; +END_FUNCTION; + +FUNCTION list_to_set + (l: LIST [0:?] OF GENERIC: T) : SET [0:?] OF GENERIC: T; + LOCAL + s : SET OF GENERIC:T := []; + END_LOCAL; + + REPEAT i := 1 TO SIZEOF(l); + s := s + l[i]; + END_REPEAT; + + RETURN(s); +END_FUNCTION; + +FUNCTION make_array_of_array + (lis: LIST [1:?] OF LIST [1:?] OF GENERIC: T; low1: INTEGER; u1: INTEGER; low2: INTEGER; u2: INTEGER) : ARRAY [low1:u1] OF ARRAY [low2:u2] OF GENERIC: T; + LOCAL + res : ARRAY[low1:u1] OF ARRAY [low2:u2] OF GENERIC : T; + END_LOCAL; + +(* Check input dimensions for consistency *) + IF (u1-low1+1) <> SIZEOF(lis) THEN + RETURN (?); + END_IF; + IF (u2 - low2 + 1 ) <> SIZEOF(lis[1]) THEN + RETURN (?) ; + END_IF; +(* Initialise res with values from lis[1] *) + res := [list_to_array(lis[1], low2, u2) : (u1-low1 + 1)]; + REPEAT i := 2 TO HIINDEX(lis); + IF (u2-low2+1) <> SIZEOF(lis[i]) THEN + RETURN (?); + END_IF; + res[low1+i-1] := list_to_array(lis[i], low2, u2); + END_REPEAT; + + RETURN (res); +END_FUNCTION; + +FUNCTION mixed_loop_type_set + (l: SET [0:?] OF loop) : LOGICAL; + LOCAL + poly_loop_type: LOGICAL; + END_LOCAL; + IF(SIZEOF(l) <= 1) THEN + RETURN(FALSE); + END_IF; + poly_loop_type := ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLY_LOOP' IN TYPEOF(l[1])); + REPEAT i := 2 TO SIZEOF(l); + IF(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLY_LOOP' IN TYPEOF(l[i])) <> poly_loop_type) + THEN + RETURN(TRUE); + END_IF; + END_REPEAT; + RETURN(FALSE); +END_FUNCTION; + +FUNCTION msb_shells + (brep: manifold_solid_brep) : SET [1:?] OF closed_shell; + LOCAL + return_set: SET[1:?] OF closed_shell := [brep.outer]; + END_LOCAL; + + IF SIZEOF(QUERY(msbtype <* TYPEOF(brep) | + msbtype LIKE '*BREP_WITH_VOIDS')) >= 1 + THEN + return_set := return_set + brep\brep_with_voids.voids; + END_IF; + RETURN(return_set); +END_FUNCTION; + +FUNCTION msf_curve_check + (cv: representation_item) : BOOLEAN; +IF SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D'] * TYPEOF(cv)) > 1 THEN + RETURN(FALSE); +END_IF; + +(* b_spline_curves shall not self-intersect + *) +IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 + + (* conics and lines are valid curve types + *) + IF SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE'] + * TYPEOF (cv)) = 1 THEN + RETURN(TRUE); + ELSE + + (* a curve_replica shall reference a valid curve + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA' IN TYPEOF(cv) THEN + RETURN (msf_curve_check(cv\curve_replica.parent_curve)); + ELSE + + (* an offset_curve_3d shall not self-intersect and + shall reference a valid curve; a polyline is not a + valid basis_curve + *) + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF (cv)) + AND + ((cv\offset_curve_3d.self_intersect = FALSE) OR + (cv\offset_curve_3d.self_intersect = UNKNOWN)) + AND + (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF + (cv\offset_curve_3d.basis_curve)))) THEN + RETURN (msf_curve_check(cv\offset_curve_3d.basis_curve)); + ELSE + + (* a pcurve shall reference a valid curve and a valid + basis_surface + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 + + (* a surface_curve references a curve_3d and one or + two pcurves or one or two surfaces or one of + each; all of these references shall be valid + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN TYPEOF(cv) THEN + + (* if the curve reference is correct, check also the rest + *) + IF msf_curve_check(cv\surface_curve.curve_3d) THEN + REPEAT i := 1 TO SIZEOF + (cv\surface_curve.associated_geometry); + + (* do for one or two associated_geometrys: + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 + + (* a polyline shall have at least 3 points + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 is returned if the input parameter cv is not a valid curve. + *) +RETURN (FALSE); +END_FUNCTION; + +FUNCTION msf_surface_check + (surf: surface) : BOOLEAN; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELEMENTARY_SURFACE' IN TYPEOF(surf) THEN + RETURN(TRUE); + ELSE + + (* a swept_surface shall have a valid sweeping curve + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_SURFACE' IN TYPEOF (surf) THEN + RETURN (msf_curve_check(surf\swept_surface.swept_curve)); + ELSE + + (* an offset_surface shall not self-intersect and shall + reference a valid surface + *) + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 + + (* a surface_replica shall have a valid parent surface + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_REPLICA' IN TYPEOF(surf) THEN + RETURN(msf_surface_check(surf\surface_replica.parent_surface)); + ELSE + + (* a b_spline_surface shall not self-intersect + *) + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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; + +FUNCTION nmsf_curve_check + (cv: representation_item) : BOOLEAN; +IF SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D'] * TYPEOF(cv)) > 1 + THEN RETURN(FALSE); + ELSE + + (* b_spline_curves shall not self-intersect + *) + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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 + + (* conics and lines are valid curve types + *) + IF SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE'] * TYPEOF (cv)) = 1 THEN + RETURN(TRUE); + ELSE + + (* a curve_replica shall reference a valid curve + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA' IN TYPEOF(cv) THEN + RETURN (nmsf_curve_check(cv\curve_replica.parent_curve)); + ELSE + + (* an offset_curve_3d shall not self-intersect and + shall reference a valid curve; a polyline is not a + valid basis_curve + *) + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF (cv)) + AND + ((cv\offset_curve_3d.self_intersect = FALSE) OR + (cv\offset_curve_3d.self_intersect = UNKNOWN)) + AND + (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF + (cv\offset_curve_3d.basis_curve)))) THEN + RETURN (nmsf_curve_check(cv\offset_curve_3d.basis_curve)); + ELSE + + (* a pcurve shall reference a valid curve and a valid + basis_surface + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(cv) THEN + RETURN ((nmsf_curve_check + (cv\pcurve.reference_to_curve\representation.items[1])) + AND + (nmsf_surface_check(cv\pcurve.basis_surface))); + ELSE + + (* a surface_curve references a curve_3d and one or + two pcurves or one or two surfaces or one of + each; all of these references shall be valid + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN TYPEOF(cv) THEN + + (* if the curve reference is correct, check also the rest + *) + IF nmsf_curve_check(cv\surface_curve.curve_3d) THEN + REPEAT i := 1 TO SIZEOF + (cv\surface_curve.associated_geometry); + + (* do for one or two associated_geometrys: + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE' IN + TYPEOF (cv\surface_curve.associated_geometry[i]) THEN + IF NOT nmsf_surface_check + (cv\surface_curve.associated_geometry[i]) THEN + RETURN(FALSE); + END_IF; + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF + (cv\surface_curve.associated_geometry[i]) THEN + IF NOT nmsf_curve_check + (cv\surface_curve.associated_geometry[i]) THEN + RETURN(FALSE); + END_IF; + END_IF; + END_IF; + END_REPEAT; + RETURN(TRUE); + END_IF; + ELSE + + (* a polyline shall have at least 3 points + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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; + END_IF; + (* FALSE is returned if the input parameter cv is not a valid curve. + *) + RETURN (FALSE); +END_FUNCTION; + +FUNCTION nmsf_surface_check + (surf: surface) : BOOLEAN; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELEMENTARY_SURFACE' IN TYPEOF(surf) THEN + RETURN(TRUE); + ELSE + + (* a swept_surface shall have a valid sweeping curve + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_SURFACE' IN TYPEOF (surf) THEN + RETURN (nmsf_curve_check(surf\swept_surface.swept_curve)); + ELSE + + (* an offset_surface shall not self-intersect and shall + reference a valid surface + *) + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_SURFACE' IN TYPEOF (surf)) AND + (surf\offset_surface.self_intersect = FALSE) OR + (surf\offset_surface.self_intersect = UNKNOWN)) THEN + RETURN (nmsf_surface_check(surf\offset_surface.basis_surface)); + ELSE + + (* a surface_replica shall have a valid parent surface + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_REPLICA' IN TYPEOF(surf) THEN + RETURN(nmsf_surface_check(surf\surface_replica.parent_surface)); + ELSE + + (* a b_spline_surface shall not self-intersect + *) + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.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; + +FUNCTION normalise + (arg: vector_or_direction) : vector_or_direction; + LOCAL + ndim : INTEGER; + v : direction; + result : vector_or_direction; + vec : vector; + mag : REAL; + END_LOCAL; + + IF NOT EXISTS (arg) THEN + result := ?; + (* When function is called with invalid data a NULL result is returned *) + ELSE + ndim := arg.dim; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VECTOR' IN TYPEOF(arg) THEN + BEGIN + v := dummy_gri || direction(arg\vector.orientation.direction_ratios); + IF arg.magnitude = 0.0 THEN + RETURN(?); + ELSE + vec := dummy_gri || vector (v, 1.0); + END_IF; + END; + ELSE + v := dummy_gri || direction (arg.direction_ratios); + END_IF; + mag := 0.0; + REPEAT i := 1 TO ndim; + mag := mag + v.direction_ratios[i]*v.direction_ratios[i]; + END_REPEAT; + IF mag > 0.0 THEN + mag := SQRT(mag); + REPEAT i := 1 TO ndim; + v.direction_ratios[i] := v.direction_ratios[i]/mag; + END_REPEAT; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VECTOR' IN TYPEOF(arg) THEN + vec.orientation := v; + result := vec; + ELSE + result := v; + END_IF; + ELSE + RETURN(?); + END_IF; + END_IF; + RETURN (result); +END_FUNCTION; + +FUNCTION open_shell_reversed + (a_shell: open_shell) : oriented_open_shell; + LOCAL + the_reverse : oriented_open_shell; + END_LOCAL; + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_OPEN_SHELL' IN TYPEOF (a_shell) ) THEN + the_reverse := dummy_tri || + connected_face_set ( + a_shell\connected_face_set.cfs_faces) || + open_shell () || oriented_open_shell( + a_shell\oriented_open_shell.open_shell_element, + (NOT (a_shell\oriented_open_shell.orientation))); + ELSE + the_reverse := dummy_tri || + connected_face_set ( + a_shell\connected_face_set.cfs_faces) || + open_shell () || oriented_open_shell (a_shell, FALSE); + END_IF; + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION orthogonal_complement + (vec: direction) : direction; + LOCAL + result : direction ; + END_LOCAL; + + IF (vec.dim <> 2) OR NOT EXISTS (vec) THEN + RETURN(?); + ELSE + result := dummy_gri || direction([-vec.direction_ratios[2], + vec.direction_ratios[1]]); + RETURN(result); + END_IF; +END_FUNCTION; + +FUNCTION path_head_to_tail + (a_path: path) : LOGICAL; + LOCAL + n : INTEGER; + p : LOGICAL := TRUE; + END_LOCAL; + + n := SIZEOF (a_path.edge_list); + REPEAT i := 2 TO n; + p := p AND (a_path.edge_list[i-1].edge_end :=: + a_path.edge_list[i].edge_start); + END_REPEAT; + + RETURN (p); +END_FUNCTION; + +FUNCTION path_reversed + (a_path: path) : oriented_path; + LOCAL + the_reverse : oriented_path ; + END_LOCAL; + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_PATH' IN TYPEOF (a_path) ) THEN + the_reverse := dummy_tri || + path(list_of_topology_reversed (a_path.edge_list)) || + oriented_path(a_path\oriented_path.path_element, + NOT(a_path\oriented_path.orientation)) ; + ELSE + the_reverse := dummy_tri || + path(list_of_topology_reversed (a_path.edge_list)) || + oriented_path(a_path, FALSE); + END_IF; + + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION scalar_times_vector + (scalar: REAL; vec: vector_or_direction) : vector; + LOCAL + v : direction; + mag : REAL; + result : vector; + END_LOCAL; + + IF NOT EXISTS (scalar) OR NOT EXISTS (vec) THEN + RETURN (?) ; + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VECTOR' IN TYPEOF (vec) THEN + v := dummy_gri || direction(vec\vector.orientation.direction_ratios); + mag := scalar * vec.magnitude; + ELSE + v := dummy_gri || direction(vec.direction_ratios); + mag := scalar; + END_IF; + IF (mag < 0.0 ) THEN + REPEAT i := 1 TO SIZEOF(v.direction_ratios); + v.direction_ratios[i] := -v.direction_ratios[i]; + END_REPEAT; + mag := -mag; + END_IF; + result := dummy_gri || vector(normalise(v), mag); + END_IF; + RETURN (result); +END_FUNCTION; + +FUNCTION second_proj_axis + (z_axis: direction; x_axis: direction; arg: direction) : direction; + LOCAL + y_axis : vector; + v : direction; + temp : vector; + END_LOCAL; + + IF NOT EXISTS(arg) THEN + v := dummy_gri || direction([0.0,1.0,0.0]); + ELSE + v := arg; + END_IF; + + temp := scalar_times_vector(dot_product(v, z_axis), z_axis); + y_axis := vector_difference(v, temp); + temp := scalar_times_vector(dot_product(v, x_axis), x_axis); + y_axis := vector_difference(y_axis, temp); + y_axis := normalise(y_axis); + RETURN(y_axis.orientation); +END_FUNCTION; + +FUNCTION set_of_topology_reversed + (a_set: set_of_reversible_topology_item) : set_of_reversible_topology_item; + LOCAL + the_reverse : set_of_reversible_topology_item; + END_LOCAL; + + the_reverse := []; + REPEAT i := 1 TO SIZEOF (a_set); + the_reverse := the_reverse + topology_reversed (a_set [i]); + END_REPEAT; + + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION shell_reversed + (a_shell: shell) : shell; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OPEN_SHELL' IN TYPEOF (a_shell) ) THEN + RETURN (open_shell_reversed (a_shell)); + ELSE + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CLOSED_SHELL' IN TYPEOF (a_shell) ) THEN + RETURN (closed_shell_reversed (a_shell)); + ELSE + RETURN (?); + END_IF; + END_IF; +END_FUNCTION; + +FUNCTION surface_condition_correlation + (pd: property_definition; rep: representation) : LOGICAL; +CASE pd.name OF + 'visual appearance', 'tactile appearance', 'contact ratio', 'hardness', 'treatment result', 'surface texture' : + RETURN(pd.name = rep.name); + OTHERWISE : RETURN(UNKNOWN); + END_CASE; +END_FUNCTION; + +FUNCTION surface_weights_positive + (b: rational_b_spline_surface) : BOOLEAN; + LOCAL + result : BOOLEAN := TRUE; + END_LOCAL; + + REPEAT i := 0 TO b.u_upper; + REPEAT j := 0 TO b.v_upper; + IF (b.weights[i][j] <= 0.0) THEN + result := FALSE; + RETURN(result); + END_IF; + END_REPEAT; + END_REPEAT; + RETURN(result); +END_FUNCTION; + +FUNCTION topology_reversed + (an_item: reversible_topology) : reversible_topology; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE' IN TYPEOF (an_item)) THEN + RETURN (edge_reversed (an_item)); + END_IF; + + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PATH' IN TYPEOF (an_item)) THEN + RETURN (path_reversed (an_item)); + END_IF; + + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BOUND' IN TYPEOF (an_item)) THEN + RETURN (face_bound_reversed (an_item)); + END_IF; + + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE' IN TYPEOF (an_item)) THEN + RETURN (face_reversed (an_item)); + END_IF; + + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL' IN TYPEOF (an_item)) THEN + RETURN (shell_reversed (an_item)); + END_IF; + + IF ('SET' IN TYPEOF (an_item)) THEN + RETURN (set_of_topology_reversed (an_item)); + END_IF; + + IF ('LIST' IN TYPEOF (an_item)) THEN + RETURN (list_of_topology_reversed (an_item)); + END_IF; + + RETURN (?); +END_FUNCTION; + +FUNCTION type_check_function + (the_type: GENERIC; sub_names: SET [0:?] OF STRING; criterion: INTEGER) : LOGICAL; +IF ((NOT EXISTS(the_type)) OR (NOT ({0 <= criterion <= 3})) OR (SIZEOF(sub_names) = 0)) THEN + RETURN (UNKNOWN); + ELSE + CASE criterion OF + 0: + RETURN (SIZEOF(sub_names * TYPEOF(the_type)) > 0); + 1: + RETURN (SIZEOF(sub_names * TYPEOF(the_type)) = 0); + 2: + RETURN (SIZEOF(sub_names * TYPEOF(the_type)) = 1); + 3: + RETURN (SIZEOF(sub_names * TYPEOF(the_type)) <= 1); + END_CASE; + END_IF; +END_FUNCTION; + +FUNCTION using_items + (item: founded_item_select; checked_items: SET [0:?] OF founded_item_select) : SET [0:?] OF founded_item_select; + LOCAL + new_check_items : SET OF founded_item_select; + result_items : SET OF founded_item_select; + next_items : SET OF founded_item_select; + END_LOCAL; + result_items := []; + new_check_items := checked_items + item; + -- Find the set of representation_items or founded_items + -- in which item is used directly. + next_items := QUERY(z <* bag_to_set( USEDIN(item , '')) | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(z)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FOUNDED_ITEM' IN TYPEOF(z))); + -- If the set of next_items is not empty; + IF SIZEOF(next_items) > 0 THEN + -- For each element in the set, find the using_items recursively + REPEAT i := 1 TO HIINDEX(next_items); + -- Check for loop in data model, i.e. one of the next_items + -- occurred earlier in the set of check_items; + IF NOT(next_items[i] IN new_check_items) THEN + result_items := result_items + next_items[i] + + using_items(next_items[i],new_check_items); + END_IF; + END_REPEAT; + END_IF; + -- return the set of representation_items or founded_items + -- in which the input item is used directly and indirectly. + RETURN (result_items); +END_FUNCTION; + +FUNCTION using_representations + (item: founded_item_select) : SET [0:?] OF representation; + LOCAL + results : SET OF representation; + result_bag : BAG OF representation; + intermediate_items : SET OF founded_item_select; + END_LOCAL; + -- Find the representations in which the item is used and add to the + -- results set. + results := []; + result_bag := USEDIN(item,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION.ITEMS'); + IF SIZEOF(result_bag) > 0 THEN + REPEAT i := 1 TO HIINDEX(result_bag); + results := results + result_bag[i]; + END_REPEAT; + END_IF; + -- Find all representation_items or founded_items + -- by which item is referenced directly or indirectly. + intermediate_items := using_items(item,[]); + -- If the set of intermediate items is not empty; + IF SIZEOF(intermediate_items) > 0 THEN + -- For each element in the set, add the + -- representations of that element. + REPEAT i := 1 TO HIINDEX(intermediate_items); + result_bag := USEDIN(intermediate_items[i], + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION.ITEMS'); + IF SIZEOF(result_bag) > 0 THEN + REPEAT j := 1 TO HIINDEX(result_bag); + results := results + result_bag[j]; + END_REPEAT; + END_IF; + END_REPEAT; + END_IF; + -- Return the set of representation in which the input item is + -- used directly and indirectly (through intervening + -- representation_items or founded items). + RETURN (results); +END_FUNCTION; + +FUNCTION valid_basis_curve_in_2d_wireframe + (crv: curve) : BOOLEAN; +IF SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELLIPSE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCLE'] * + TYPEOF (crv)) = 1 + THEN RETURN (TRUE); + ELSE + -- if the curve is a trimmed_curve + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TRIMMED_CURVE') + IN TYPEOF (crv)) THEN + -- if a line, parabola, or hyperbola is being trimmed, then valid + IF SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PARABOLA', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.HYPERBOLA'] * + TYPEOF(crv\trimmed_curve.basis_curve)) = 1 + THEN RETURN (TRUE); + -- otherwise, recursively check basis_curve + ELSE RETURN (valid_basis_curve_in_2d_wireframe + (crv\trimmed_curve.basis_curve)); + END_IF; + ELSE + -- recursively check the offset_curve basis curve + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_2D') + IN TYPEOF (crv)) + THEN RETURN (valid_basis_curve_in_2d_wireframe + (crv\offset_curve_2d.basis_curve)); + ELSE + -- recursively check the curve_replica parent curve + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA') + IN TYPEOF (crv)) + THEN RETURN (valid_basis_curve_in_2d_wireframe + (crv\curve_replica.parent_curve)); + ELSE + -- recursively check the composite_curve segments + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE') + IN TYPEOF (crv)) THEN + RETURN (SIZEOF (QUERY (ccs <* crv\composite_curve.segments | + NOT (valid_basis_curve_in_2d_wireframe + (ccs.parent_curve)))) = 0); + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION valid_calendar_date + (date: calendar_date) : LOGICAL; +CASE date.month_component OF + 1 : RETURN({ 1 <= date.day_component <= 31 }); + 2 : BEGIN + IF (leap_year(date.year_component)) THEN + RETURN({ 1 <= date.day_component <= 29 }); + ELSE + RETURN({ 1 <= date.day_component <= 28 }); + END_IF; + END; + 3 : RETURN({ 1 <= date.day_component <= 31 }); + 4 : RETURN({ 1 <= date.day_component <= 30 }); + 5 : RETURN({ 1 <= date.day_component <= 31 }); + 6 : RETURN({ 1 <= date.day_component <= 30 }); + 7 : RETURN({ 1 <= date.day_component <= 31 }); + 8 : RETURN({ 1 <= date.day_component <= 31 }); + 9 : RETURN({ 1 <= date.day_component <= 30 }); + 10 : RETURN({ 1 <= date.day_component <= 31 }); + 11 : RETURN({ 1 <= date.day_component <= 30 }); + 12 : RETURN({ 1 <= date.day_component <= 31 }); + END_CASE; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION valid_datum_target_parameters + (pdf: placed_datum_target_feature) : BOOLEAN; +LOCAL + +rep_set : SET OF representation := [] ; + +parameter_representations: SET OF representation; +END_LOCAL; + + +REPEAT i := 1 TO HIINDEX(pdf.representation_associations); +rep_set := rep_set + pdf.representation_associations[i].used_representation; +END_REPEAT; + +parameter_representations := QUERY(rep <* rep_set | +('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN +TYPEOF(rep))); + + +IF (SIZEOF( QUERY( srwp <* parameter_representations | + (SIZEOF( QUERY( i <* srwp.items | + (i.name='orientation') AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLACEMENT' IN TYPEOF(i)))) = 1))) <> 1) THEN + RETURN(FALSE); +END_IF; + +CASE pdf\shape_aspect.description OF +'point': RETURN(SIZEOF(QUERY( srwp <* parameter_representations | + (SIZEOF(srwp.items) = 1))) = 1); + +'circle': RETURN((SIZEOF( QUERY( srwp <* parameter_representations | + (SIZEOF(srwp.items) = 2))) = 1) AND + (SIZEOF( QUERY( srwp <* parameter_representations | + (SIZEOF( QUERY( i <* srwp.items | + (i.name='target diameter') AND + (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i) + ) = 2) )) = 1))) = 1)); + +'line': RETURN(SIZEOF( QUERY( srwp <* parameter_representations | + (SIZEOF( QUERY( i <* srwp.items | + (i.name='target length') AND + (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i) + ) = 2) )) = 1))) = 1); + +'rectangle': RETURN((SIZEOF( QUERY( srwp <* parameter_representations | + (SIZEOF(srwp.items)= 3))) = 1) AND + (SIZEOF( QUERY( srwp <* parameter_representations | + (SIZEOF( QUERY( i <* srwp.items | + (i.name='target length') AND + (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i) + ) = 2))) = 1))) = 1) AND + (SIZEOF( QUERY( srwp <* parameter_representations | + (SIZEOF( QUERY( i <* srwp.items | + (i.name='target width') AND + (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i) + ) = 2))) = 1) )) = 1)); +OTHERWISE : RETURN(FALSE); +END_CASE; +END_FUNCTION; + +FUNCTION valid_geometrically_bounded_wf_curve + (crv: curve) : BOOLEAN; +IF SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELLIPSE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCLE' ] * TYPEOF (crv)) = 1 THEN + RETURN (TRUE); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TRIMMED_CURVE' IN TYPEOF (crv) THEN + IF SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PARABOLA', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.HYPERBOLA' ] * TYPEOF (crv\trimmed_curve.basis_curve)) = 1 THEN + RETURN (TRUE); + ELSE + RETURN (valid_geometrically_bounded_wf_curve(crv\trimmed_curve.basis_curve)); + END_IF ; + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF (crv) THEN + RETURN (valid_geometrically_bounded_wf_curve(crv\offset_curve_3d.basis_curve)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA' IN TYPEOF (crv) THEN + RETURN (valid_geometrically_bounded_wf_curve(crv\curve_replica.parent_curve)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE' IN TYPEOF (crv) THEN + RETURN ( SIZEOF ( +QUERY ( ccs <* crv\composite_curve.segments| NOT valid_geometrically_bounded_wf_curve(ccs.parent_curve) )) = 0); + END_IF ; + END_IF ; + END_IF ; + END_IF ; + END_IF ; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION valid_geometrically_bounded_wf_point + (pnt: point) : BOOLEAN; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF (pnt) THEN + RETURN (TRUE); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE' IN TYPEOF (pnt) THEN + RETURN (valid_geometrically_bounded_wf_curve(pnt\point_on_curve.basis_curve)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_REPLICA' IN TYPEOF (pnt) THEN + RETURN (valid_geometrically_bounded_wf_point(pnt\point_replica.parent_pt)); + END_IF ; + END_IF ; + END_IF ; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION valid_measure_value + (m: measure_value) : BOOLEAN; +IF ('REAL' IN TYPEOF (m)) THEN + RETURN (m > 0.0); + ELSE + IF ('INTEGER' IN TYPEOF (m)) THEN + RETURN (m > 0); + ELSE + RETURN (TRUE); + END_IF; + END_IF; +END_FUNCTION; + +FUNCTION valid_selected_instance_representation + (pd: product_definition_or_assembly_relationship) : LOGICAL; + LOCAL + properties: SET OF property_definition := bag_to_set(QUERY( prd<* USEDIN ( pd ,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) | + (prd.name = 'occurrence selection' ))); + property_definition_representations: SET OF property_definition_representation := bag_to_set(QUERY ( pdr <* USEDIN ( properties[1] , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | + ( pdr.used_representation.name = 'selection criteria' ))); + selected_representation: representation; + END_LOCAL; + IF (SIZEOF( properties)<>1) THEN + RETURN(FALSE); + END_IF; + IF (SIZEOF(property_definition_representations)<>1) THEN + RETURN(FALSE); + END_IF; + selected_representation := property_definition_representations[1]\property_definition_representation.used_representation; + IF (SIZEOF(selected_representation\representation.items) <1) OR (SIZEOF(selected_representation\representation.items) >2) THEN + RETURN(FALSE); + END_IF; + IF (SIZEOF ( QUERY ( i <* selected_representation\representation.items | + ( SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VALUE_RANGE']* TYPEOF ( i ) ) = 1) AND + ( i.name = 'selection quantity' ))) <> 1 ) THEN + RETURN(FALSE); + END_IF; + IF (SIZEOF ( QUERY ( i <* selected_representation\representation.items | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF ( i ) ) AND + ( i.name = 'selection control' )))> 1) THEN + RETURN(FALSE); + END_IF; --the selection control is not specified then the quantity shall be a qualified_representation_item or a value_range + IF (SIZEOF ( QUERY ( i <* selected_representation\representation.items | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF( i ) ) AND + ( i.name = 'selection control' ) ))= 0) AND + (SIZEOF ( QUERY ( i <* selected_representation\representation.items | + ( i.name = 'selection quantity' ) AND + ( SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.QUALIFIED_REPRESENTATION_ITEM' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VALUE_RANGE']* TYPEOF ( i ) ) =0 ))) > 0 ) THEN + RETURN(FALSE); + END_IF; + RETURN(TRUE); +END_FUNCTION; + +FUNCTION valid_time + (time: local_time) : BOOLEAN; +IF EXISTS(time.second_component) THEN + RETURN (EXISTS(time.minute_component)); + ELSE + RETURN (TRUE); + END_IF; +END_FUNCTION; + +FUNCTION valid_units + (m: measure_with_unit) : BOOLEAN; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MASS_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TIME_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELECTRIC_CURRENT_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.THERMODYNAMIC_TEMPERATURE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CELSIUS_TEMPERATURE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AMOUNT_OF_SUBSTANCE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LUMINOUS_INTENSITY_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE_ANGLE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_ANGLE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AREA_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VOLUME_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RATIO_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_PLANE_ANGLE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ACCELERATION_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 1.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CAPACITANCE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( -2.0, -1.0, 4.0, 1.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELECTRIC_CHARGE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONDUCTANCE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( -2.0, -1.0, 3.0, 2.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELECTRIC_POTENTIAL_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 2.0, 1.0, -3.0, -1.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ENERGY_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 2.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FORCE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FREQUENCY_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ILLUMINANCE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( -2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INDUCTANCE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 2.0, 1.0, -2.0, -2.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LUMINOUS_FLUX_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAGNETIC_FLUX_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 2.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAGNETIC_FLUX_DENSITY_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 0.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POWER_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 2.0, 1.0, -3.0, 0.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESSURE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( -1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RESISTANCE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 2.0, 1.0, -3.0, -2.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VELOCITY_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 1.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RADIOACTIVITY_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ABSORBED_DOSE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DOSE_EQUIVALENT_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + RETURN (TRUE); +END_FUNCTION; + +FUNCTION valid_wireframe_edge_curve + (crv: curve) : BOOLEAN; +IF SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' ] * TYPEOF (crv)) = 1 THEN + RETURN (TRUE); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA' IN TYPEOF (crv) THEN + RETURN (valid_wireframe_edge_curve(crv\curve_replica.parent_curve)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF (crv) THEN + RETURN (valid_wireframe_edge_curve(crv\offset_curve_3d.basis_curve)); + END_IF ; + END_IF ; + END_IF ; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION valid_wireframe_vertex_point + (pnt: point) : BOOLEAN; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF (pnt) THEN + RETURN (TRUE); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_REPLICA' IN TYPEOF (pnt) THEN + RETURN (valid_wireframe_vertex_point(pnt\point_replica.parent_pt)); + END_IF ; + END_IF ; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION validate_countersink_radii + (cskhole: solid_with_stepped_round_hole_and_conical_transitions) : BOOLEAN; + LOCAL + i,j : INTEGER; + n : INTEGER := 1 + + cskhole\solid_with_stepped_round_hole.segments; + smaller, larger : positive_length_measure; + END_LOCAL; + + REPEAT i := 1 TO SIZEOF(cskhole.conical_transitions); + + -- First check whether transition i applies to the entry of the hole or + -- the exit of a through hole - those cases only need to be checked for + -- the sign of the cone apex angle. + + IF (((cskhole.conical_transitions[i].transition_number = 1) + AND (cskhole.conical_transitions[i].cone_apex_angle < 0)) + XOR ((cskhole.conical_transitions[i].transition_number = n) + AND (cskhole.conical_transitions[i].cone_apex_angle > 0))) + THEN RETURN(FALSE); + ELSE + IF ((cskhole.conical_transitions[i].transition_number <> 1) + AND (cskhole.conical_transitions[i].transition_number <> n)) + THEN + + -- For all remaining transitions, check that the cone base radius + -- lies in the range of validity. + + + BEGIN + j := cskhole.conical_transitions[i].transition_number; + IF cskhole\solid_with_stepped_round_hole.segment_radii[j] + > cskhole\solid_with_stepped_round_hole.segment_radii[j-1] + THEN + BEGIN + IF (cskhole.conical_transitions[i].cone_apex_angle > 0) + THEN RETURN(FALSE); + END_IF; + larger + := cskhole\solid_with_stepped_round_hole.segment_radii[j]; + smaller + := cskhole\solid_with_stepped_round_hole.segment_radii[j-1]; + END; + ELSE + BEGIN + IF (cskhole.conical_transitions[i].cone_apex_angle < 0) + THEN RETURN(FALSE); + END_IF; + larger + := cskhole\solid_with_stepped_round_hole.segment_radii[j-1]; + smaller + := cskhole\solid_with_stepped_round_hole.segment_radii[j]; + END; + END_IF; + IF ((cskhole.conical_transitions[i].cone_base_radius > larger) + OR (cskhole.conical_transitions[i].cone_base_radius < smaller)) + THEN RETURN(FALSE); + END_IF; + END; + END_IF; + END_IF; + END_REPEAT; + RETURN(TRUE); +END_FUNCTION; + +FUNCTION value_range_aggregate_rep_item + (agg: AGGREGATE OF representation_item) : BOOLEAN; +BEGIN + IF (SIZEOF(QUERY(i1 <* agg | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i1)) )) = 6) THEN + RETURN (TRUE); + ELSE + RETURN (FALSE); + END_IF; + END; +END_FUNCTION; + +FUNCTION value_range_wr1 + (agg: compound_item_definition) : BOOLEAN; +BEGIN + IF (SIZEOF(agg) = 2) AND ((SIZEOF(QUERY (i1 <* agg | ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF + (i1)))) = 2) OR + (SIZEOF(QUERY (i2 <* agg | ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VALUE_REPRESENTATION_ITEM' IN TYPEOF + (i2)))) = 2)) + THEN + RETURN(TRUE); + ELSE + RETURN(FALSE); + END_IF; + END; +END_FUNCTION; + +FUNCTION value_range_wr2 + (agg: compound_item_definition) : BOOLEAN; +BEGIN + IF ((SIZEOF(QUERY (i <* agg | (i\representation_item.name = 'upper limit'))) = 1) + AND (SIZEOF(QUERY (i <* agg | (i\representation_item.name = 'lower limit'))) = 1)) + THEN + RETURN(TRUE); + ELSE + RETURN(FALSE); + END_IF; + END; +END_FUNCTION; + +FUNCTION value_range_wr3 + (agg: compound_item_definition) : BOOLEAN; +BEGIN + IF (SIZEOF(QUERY(i1 <* agg | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF (i1)) AND + (SIZEOF (QUERY (i2 <* agg | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF (i2)) AND + (i1 :<>: i2) AND (i1\measure_with_unit.unit_component :=: i2\measure_with_unit.unit_component))) = 1))) = 2) + THEN + RETURN (TRUE); + ELSE + RETURN (FALSE); + END_IF; + END; +END_FUNCTION; + +FUNCTION vector_difference + (arg1: vector_or_direction; arg2: vector_or_direction) : vector; + LOCAL + result : vector; + res, vec1, vec2 : direction; + mag, mag1, mag2 : REAL; + ndim : INTEGER; + END_LOCAL; + + IF ((NOT EXISTS (arg1)) OR (NOT EXISTS (arg2))) OR (arg1.dim <> arg2.dim) + THEN + RETURN (?) ; + ELSE + BEGIN + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VECTOR' IN TYPEOF(arg1) THEN + mag1 := arg1.magnitude; + vec1 := arg1\vector.orientation; + ELSE + mag1 := 1.0; + vec1 := arg1; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VECTOR' IN TYPEOF(arg2) THEN + mag2 := arg2.magnitude; + vec2 := arg2\vector.orientation; + ELSE + mag2 := 1.0; + vec2 := arg2; + END_IF; + vec1 := normalise (vec1); + vec2 := normalise (vec2); + ndim := SIZEOF(vec1.direction_ratios); + mag := 0.0; + res := dummy_gri || direction(vec1.direction_ratios); + REPEAT i := 1 TO ndim; + res.direction_ratios[i] := mag1*vec1.direction_ratios[i] - + mag2*vec2.direction_ratios[i]; + mag := mag + (res.direction_ratios[i]*res.direction_ratios[i]); + END_REPEAT; + IF (mag > 0.0 ) THEN + result := dummy_gri || vector( res, SQRT(mag)); + ELSE + result := dummy_gri || vector( vec1, 0.0); + END_IF; + END; + END_IF; + RETURN (result); +END_FUNCTION; + +END_SCHEMA; + diff --git a/src/mesh/assimp-master/scripts/StepImporter/schema_ifc2x3.exp b/src/mesh/assimp-master/scripts/StepImporter/schema_ifc2x3.exp new file mode 100644 index 0000000..ae978a6 --- /dev/null +++ b/src/mesh/assimp-master/scripts/StepImporter/schema_ifc2x3.exp @@ -0,0 +1,9571 @@ +(* +Copyright by: +International Alliance for Interoperability, 1996-2005 + +All rights reserved. No part of this documentation may be +reproduced, stored in a retrieval system, or transmitted +in any form or by any means, without the prior written +permission of the owner. + +Contents: +full IFC object model EXPRESS definitions for the IFC2x Edition 3 final version + + +- express longform distribution +- compiled for EXPRESS version 1 technical corrigendum 2 + +Issue date: +December 15, 2005 + +Development Team: +Modeling Support Group of the +International Alliance for Interoperability +compiled by Thomas Liebich tl@aec3.com +*) +SCHEMA IFC2X3; + +TYPE IfcAbsorbedDoseMeasure = REAL; +END_TYPE; + +TYPE IfcAccelerationMeasure = REAL; +END_TYPE; + +TYPE IfcAmountOfSubstanceMeasure = REAL; +END_TYPE; + +TYPE IfcAngularVelocityMeasure = REAL; +END_TYPE; + +TYPE IfcAreaMeasure = REAL; +END_TYPE; + +TYPE IfcBoolean = BOOLEAN; +END_TYPE; + +TYPE IfcBoxAlignment = IfcLabel; + WHERE + WR1 : SELF IN ['top-left', 'top-middle', 'top-right', 'middle-left', 'center', 'middle-right', 'bottom-left', 'bottom-middle', 'bottom-right']; +END_TYPE; + +TYPE IfcComplexNumber = ARRAY [1:2] OF REAL; +END_TYPE; + +TYPE IfcCompoundPlaneAngleMeasure = LIST [3:3] OF INTEGER; + WHERE + WR1 : { -360 <= SELF[1] < 360 }; + WR2 : { -60 <= SELF[2] < 60 }; + WR3 : { -60 <= SELF[3] < 60 }; + WR4 : ((SELF[1] >= 0) AND (SELF[2] >= 0) AND (SELF[3] >= 0)) OR ((SELF[1] <= 0) AND (SELF[2] <= 0) AND (SELF[3] <= 0)); +END_TYPE; + +TYPE IfcContextDependentMeasure = REAL; +END_TYPE; + +TYPE IfcCountMeasure = NUMBER; +END_TYPE; + +TYPE IfcCurvatureMeasure = REAL; +END_TYPE; + +TYPE IfcDayInMonthNumber = INTEGER; +END_TYPE; + +TYPE IfcDaylightSavingHour = INTEGER; + WHERE + WR1 : { 0 <= SELF <= 2 }; +END_TYPE; + +TYPE IfcDescriptiveMeasure = STRING; +END_TYPE; + +TYPE IfcDimensionCount = INTEGER; + WHERE + WR1 : { 0 < SELF <= 3 }; +END_TYPE; + +TYPE IfcDoseEquivalentMeasure = REAL; +END_TYPE; + +TYPE IfcDynamicViscosityMeasure = REAL; +END_TYPE; + +TYPE IfcElectricCapacitanceMeasure = REAL; +END_TYPE; + +TYPE IfcElectricChargeMeasure = REAL; +END_TYPE; + +TYPE IfcElectricConductanceMeasure = REAL; +END_TYPE; + +TYPE IfcElectricCurrentMeasure = REAL; +END_TYPE; + +TYPE IfcElectricResistanceMeasure = REAL; +END_TYPE; + +TYPE IfcElectricVoltageMeasure = REAL; +END_TYPE; + +TYPE IfcEnergyMeasure = REAL; +END_TYPE; + +TYPE IfcFontStyle = STRING; + WHERE + WR1 : SELF IN ['normal','italic','oblique']; +END_TYPE; + +TYPE IfcFontVariant = STRING; + WHERE + WR1 : SELF IN ['normal','small-caps']; +END_TYPE; + +TYPE IfcFontWeight = STRING; + WHERE + WR1 : SELF IN ['normal','small-caps','100','200','300','400','500','600','700','800','900']; +END_TYPE; + +TYPE IfcForceMeasure = REAL; +END_TYPE; + +TYPE IfcFrequencyMeasure = REAL; +END_TYPE; + +TYPE IfcGloballyUniqueId = STRING(22) FIXED; +END_TYPE; + +TYPE IfcHeatFluxDensityMeasure = REAL; +END_TYPE; + +TYPE IfcHeatingValueMeasure = REAL; + WHERE + WR1 : SELF > 0.; +END_TYPE; + +TYPE IfcHourInDay = INTEGER; + WHERE + WR1 : { 0 <= SELF < 24 }; +END_TYPE; + +TYPE IfcIdentifier = STRING; +END_TYPE; + +TYPE IfcIlluminanceMeasure = REAL; +END_TYPE; + +TYPE IfcInductanceMeasure = REAL; +END_TYPE; + +TYPE IfcInteger = INTEGER; +END_TYPE; + +TYPE IfcIntegerCountRateMeasure = INTEGER; +END_TYPE; + +TYPE IfcIonConcentrationMeasure = REAL; +END_TYPE; + +TYPE IfcIsothermalMoistureCapacityMeasure = REAL; +END_TYPE; + +TYPE IfcKinematicViscosityMeasure = REAL; +END_TYPE; + +TYPE IfcLabel = STRING; +END_TYPE; + +TYPE IfcLengthMeasure = REAL; +END_TYPE; + +TYPE IfcLinearForceMeasure = REAL; +END_TYPE; + +TYPE IfcLinearMomentMeasure = REAL; +END_TYPE; + +TYPE IfcLinearStiffnessMeasure = REAL; +END_TYPE; + +TYPE IfcLinearVelocityMeasure = REAL; +END_TYPE; + +TYPE IfcLogical = LOGICAL; +END_TYPE; + +TYPE IfcLuminousFluxMeasure = REAL; +END_TYPE; + +TYPE IfcLuminousIntensityDistributionMeasure = REAL; +END_TYPE; + +TYPE IfcLuminousIntensityMeasure = REAL; +END_TYPE; + +TYPE IfcMagneticFluxDensityMeasure = REAL; +END_TYPE; + +TYPE IfcMagneticFluxMeasure = REAL; +END_TYPE; + +TYPE IfcMassDensityMeasure = REAL; +END_TYPE; + +TYPE IfcMassFlowRateMeasure = REAL; +END_TYPE; + +TYPE IfcMassMeasure = REAL; +END_TYPE; + +TYPE IfcMassPerLengthMeasure = REAL; +END_TYPE; + +TYPE IfcMinuteInHour = INTEGER; + WHERE + WR1 : {0 <= SELF <= 59 }; +END_TYPE; + +TYPE IfcModulusOfElasticityMeasure = REAL; +END_TYPE; + +TYPE IfcModulusOfLinearSubgradeReactionMeasure = REAL; +END_TYPE; + +TYPE IfcModulusOfRotationalSubgradeReactionMeasure = REAL; +END_TYPE; + +TYPE IfcModulusOfSubgradeReactionMeasure = REAL; +END_TYPE; + +TYPE IfcMoistureDiffusivityMeasure = REAL; +END_TYPE; + +TYPE IfcMolecularWeightMeasure = REAL; +END_TYPE; + +TYPE IfcMomentOfInertiaMeasure = REAL; +END_TYPE; + +TYPE IfcMonetaryMeasure = REAL; +END_TYPE; + +TYPE IfcMonthInYearNumber = INTEGER; + WHERE + WR1 : { 1<= SELF <= 12 }; +END_TYPE; + +TYPE IfcNormalisedRatioMeasure = IfcRatioMeasure; + WHERE + WR1 : {0.0 <= SELF <= 1.0}; +END_TYPE; + +TYPE IfcNumericMeasure = NUMBER; +END_TYPE; + +TYPE IfcPHMeasure = REAL; + WHERE + WR21 : {0.0 <= SELF <= 14.0}; +END_TYPE; + +TYPE IfcParameterValue = REAL; +END_TYPE; + +TYPE IfcPlanarForceMeasure = REAL; +END_TYPE; + +TYPE IfcPlaneAngleMeasure = REAL; +END_TYPE; + +TYPE IfcPositiveLengthMeasure = IfcLengthMeasure; + WHERE + WR1 : SELF > 0.; +END_TYPE; + +TYPE IfcPositivePlaneAngleMeasure = IfcPlaneAngleMeasure; + WHERE + WR1 : SELF > 0.; +END_TYPE; + +TYPE IfcPositiveRatioMeasure = IfcRatioMeasure; + WHERE + WR1 : SELF > 0.; +END_TYPE; + +TYPE IfcPowerMeasure = REAL; +END_TYPE; + +TYPE IfcPresentableText = STRING; +END_TYPE; + +TYPE IfcPressureMeasure = REAL; +END_TYPE; + +TYPE IfcRadioActivityMeasure = REAL; +END_TYPE; + +TYPE IfcRatioMeasure = REAL; +END_TYPE; + +TYPE IfcReal = REAL; +END_TYPE; + +TYPE IfcRotationalFrequencyMeasure = REAL; +END_TYPE; + +TYPE IfcRotationalMassMeasure = REAL; +END_TYPE; + +TYPE IfcRotationalStiffnessMeasure = REAL; +END_TYPE; + +TYPE IfcSecondInMinute = REAL; + WHERE + WR1 : { 0. <= SELF < 60. }; +END_TYPE; + +TYPE IfcSectionModulusMeasure = REAL; +END_TYPE; + +TYPE IfcSectionalAreaIntegralMeasure = REAL; +END_TYPE; + +TYPE IfcShearModulusMeasure = REAL; +END_TYPE; + +TYPE IfcSolidAngleMeasure = REAL; +END_TYPE; + +TYPE IfcSoundPowerMeasure = REAL; +END_TYPE; + +TYPE IfcSoundPressureMeasure = REAL; +END_TYPE; + +TYPE IfcSpecificHeatCapacityMeasure = REAL; +END_TYPE; + +TYPE IfcSpecularExponent = REAL; +END_TYPE; + +TYPE IfcSpecularRoughness = REAL; + WHERE + WR1 : {0.0 <= SELF <= 1.0}; +END_TYPE; + +TYPE IfcTemperatureGradientMeasure = REAL; +END_TYPE; + +TYPE IfcText = STRING; +END_TYPE; + +TYPE IfcTextAlignment = STRING; + WHERE + WR1 : SELF IN ['left', 'right', 'center', 'justify']; +END_TYPE; + +TYPE IfcTextDecoration = STRING; + WHERE + WR1 : SELF IN ['none', 'underline', 'overline', 'line-through', 'blink']; +END_TYPE; + +TYPE IfcTextFontName = STRING; +END_TYPE; + +TYPE IfcTextTransformation = STRING; + WHERE + WR1 : SELF IN ['capitalize', 'uppercase', 'lowercase', 'none']; +END_TYPE; + +TYPE IfcThermalAdmittanceMeasure = REAL; +END_TYPE; + +TYPE IfcThermalConductivityMeasure = REAL; +END_TYPE; + +TYPE IfcThermalExpansionCoefficientMeasure = REAL; +END_TYPE; + +TYPE IfcThermalResistanceMeasure = REAL; +END_TYPE; + +TYPE IfcThermalTransmittanceMeasure = REAL; +END_TYPE; + +TYPE IfcThermodynamicTemperatureMeasure = REAL; +END_TYPE; + +TYPE IfcTimeMeasure = REAL; +END_TYPE; + +TYPE IfcTimeStamp = INTEGER; +END_TYPE; + +TYPE IfcTorqueMeasure = REAL; +END_TYPE; + +TYPE IfcVaporPermeabilityMeasure = REAL; +END_TYPE; + +TYPE IfcVolumeMeasure = REAL; +END_TYPE; + +TYPE IfcVolumetricFlowRateMeasure = REAL; +END_TYPE; + +TYPE IfcWarpingConstantMeasure = REAL; +END_TYPE; + +TYPE IfcWarpingMomentMeasure = REAL; +END_TYPE; + +TYPE IfcYearNumber = INTEGER; +END_TYPE; + +TYPE IfcActionSourceTypeEnum = ENUMERATION OF + (DEAD_LOAD_G + ,COMPLETION_G1 + ,LIVE_LOAD_Q + ,SNOW_S + ,WIND_W + ,PRESTRESSING_P + ,SETTLEMENT_U + ,TEMPERATURE_T + ,EARTHQUAKE_E + ,FIRE + ,IMPULSE + ,IMPACT + ,TRANSPORT + ,ERECTION + ,PROPPING + ,SYSTEM_IMPERFECTION + ,SHRINKAGE + ,CREEP + ,LACK_OF_FIT + ,BUOYANCY + ,ICE + ,CURRENT + ,WAVE + ,RAIN + ,BRAKES + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcActionTypeEnum = ENUMERATION OF + (PERMANENT_G + ,VARIABLE_Q + ,EXTRAORDINARY_A + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcActuatorTypeEnum = ENUMERATION OF + (ELECTRICACTUATOR + ,HANDOPERATEDACTUATOR + ,HYDRAULICACTUATOR + ,PNEUMATICACTUATOR + ,THERMOSTATICACTUATOR + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcAddressTypeEnum = ENUMERATION OF + (OFFICE + ,SITE + ,HOME + ,DISTRIBUTIONPOINT + ,USERDEFINED); +END_TYPE; + +TYPE IfcAheadOrBehind = ENUMERATION OF + (AHEAD + ,BEHIND); +END_TYPE; + +TYPE IfcAirTerminalBoxTypeEnum = ENUMERATION OF + (CONSTANTFLOW + ,VARIABLEFLOWPRESSUREDEPENDANT + ,VARIABLEFLOWPRESSUREINDEPENDANT + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcAirTerminalTypeEnum = ENUMERATION OF + (GRILLE + ,REGISTER + ,DIFFUSER + ,EYEBALL + ,IRIS + ,LINEARGRILLE + ,LINEARDIFFUSER + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcAirToAirHeatRecoveryTypeEnum = ENUMERATION OF + (FIXEDPLATECOUNTERFLOWEXCHANGER + ,FIXEDPLATECROSSFLOWEXCHANGER + ,FIXEDPLATEPARALLELFLOWEXCHANGER + ,ROTARYWHEEL + ,RUNAROUNDCOILLOOP + ,HEATPIPE + ,TWINTOWERENTHALPYRECOVERYLOOPS + ,THERMOSIPHONSEALEDTUBEHEATEXCHANGERS + ,THERMOSIPHONCOILTYPEHEATEXCHANGERS + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcAlarmTypeEnum = ENUMERATION OF + (BELL + ,BREAKGLASSBUTTON + ,LIGHT + ,MANUALPULLBOX + ,SIREN + ,WHISTLE + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcAnalysisModelTypeEnum = ENUMERATION OF + (IN_PLANE_LOADING_2D + ,OUT_PLANE_LOADING_2D + ,LOADING_3D + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcAnalysisTheoryTypeEnum = ENUMERATION OF + (FIRST_ORDER_THEORY + ,SECOND_ORDER_THEORY + ,THIRD_ORDER_THEORY + ,FULL_NONLINEAR_THEORY + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcArithmeticOperatorEnum = ENUMERATION OF + (ADD + ,DIVIDE + ,MULTIPLY + ,SUBTRACT); +END_TYPE; + +TYPE IfcAssemblyPlaceEnum = ENUMERATION OF + (SITE + ,FACTORY + ,NOTDEFINED); +END_TYPE; + +TYPE IfcBSplineCurveForm = ENUMERATION OF + (POLYLINE_FORM + ,CIRCULAR_ARC + ,ELLIPTIC_ARC + ,PARABOLIC_ARC + ,HYPERBOLIC_ARC + ,UNSPECIFIED); +END_TYPE; + +TYPE IfcBeamTypeEnum = ENUMERATION OF + (BEAM + ,JOIST + ,LINTEL + ,T_BEAM + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcBenchmarkEnum = ENUMERATION OF + (GREATERTHAN + ,GREATERTHANOREQUALTO + ,LESSTHAN + ,LESSTHANOREQUALTO + ,EQUALTO + ,NOTEQUALTO); +END_TYPE; + +TYPE IfcBoilerTypeEnum = ENUMERATION OF + (WATER + ,STEAM + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcBooleanOperator = ENUMERATION OF + (UNION + ,INTERSECTION + ,DIFFERENCE); +END_TYPE; + +TYPE IfcBuildingElementProxyTypeEnum = ENUMERATION OF + (USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcCableCarrierFittingTypeEnum = ENUMERATION OF + (BEND + ,CROSS + ,REDUCER + ,TEE + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcCableCarrierSegmentTypeEnum = ENUMERATION OF + (CABLELADDERSEGMENT + ,CABLETRAYSEGMENT + ,CABLETRUNKINGSEGMENT + ,CONDUITSEGMENT + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcCableSegmentTypeEnum = ENUMERATION OF + (CABLESEGMENT + ,CONDUCTORSEGMENT + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcChangeActionEnum = ENUMERATION OF + (NOCHANGE + ,MODIFIED + ,ADDED + ,DELETED + ,MODIFIEDADDED + ,MODIFIEDDELETED); +END_TYPE; + +TYPE IfcChillerTypeEnum = ENUMERATION OF + (AIRCOOLED + ,WATERCOOLED + ,HEATRECOVERY + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcCoilTypeEnum = ENUMERATION OF + (DXCOOLINGCOIL + ,WATERCOOLINGCOIL + ,STEAMHEATINGCOIL + ,WATERHEATINGCOIL + ,ELECTRICHEATINGCOIL + ,GASHEATINGCOIL + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcColumnTypeEnum = ENUMERATION OF + (COLUMN + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcCompressorTypeEnum = ENUMERATION OF + (DYNAMIC + ,RECIPROCATING + ,ROTARY + ,SCROLL + ,TROCHOIDAL + ,SINGLESTAGE + ,BOOSTER + ,OPENTYPE + ,HERMETIC + ,SEMIHERMETIC + ,WELDEDSHELLHERMETIC + ,ROLLINGPISTON + ,ROTARYVANE + ,SINGLESCREW + ,TWINSCREW + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcCondenserTypeEnum = ENUMERATION OF + (WATERCOOLEDSHELLTUBE + ,WATERCOOLEDSHELLCOIL + ,WATERCOOLEDTUBEINTUBE + ,WATERCOOLEDBRAZEDPLATE + ,AIRCOOLED + ,EVAPORATIVECOOLED + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcConnectionTypeEnum = ENUMERATION OF + (ATPATH + ,ATSTART + ,ATEND + ,NOTDEFINED); +END_TYPE; + +TYPE IfcConstraintEnum = ENUMERATION OF + (HARD + ,SOFT + ,ADVISORY + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcControllerTypeEnum = ENUMERATION OF + (FLOATING + ,PROPORTIONAL + ,PROPORTIONALINTEGRAL + ,PROPORTIONALINTEGRALDERIVATIVE + ,TIMEDTWOPOSITION + ,TWOPOSITION + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcCooledBeamTypeEnum = ENUMERATION OF + (ACTIVE + ,PASSIVE + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcCoolingTowerTypeEnum = ENUMERATION OF + (NATURALDRAFT + ,MECHANICALINDUCEDDRAFT + ,MECHANICALFORCEDDRAFT + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcCostScheduleTypeEnum = ENUMERATION OF + (BUDGET + ,COSTPLAN + ,ESTIMATE + ,TENDER + ,PRICEDBILLOFQUANTITIES + ,UNPRICEDBILLOFQUANTITIES + ,SCHEDULEOFRATES + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcCoveringTypeEnum = ENUMERATION OF + (CEILING + ,FLOORING + ,CLADDING + ,ROOFING + ,INSULATION + ,MEMBRANE + ,SLEEVING + ,WRAPPING + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcCurrencyEnum = ENUMERATION OF + (AED + ,AES + ,ATS + ,AUD + ,BBD + ,BEG + ,BGL + ,BHD + ,BMD + ,BND + ,BRL + ,BSD + ,BWP + ,BZD + ,CAD + ,CBD + ,CHF + ,CLP + ,CNY + ,CYS + ,CZK + ,DDP + ,DEM + ,DKK + ,EGL + ,EST + ,EUR + ,FAK + ,FIM + ,FJD + ,FKP + ,FRF + ,GBP + ,GIP + ,GMD + ,GRX + ,HKD + ,HUF + ,ICK + ,IDR + ,ILS + ,INR + ,IRP + ,ITL + ,JMD + ,JOD + ,JPY + ,KES + ,KRW + ,KWD + ,KYD + ,LKR + ,LUF + ,MTL + ,MUR + ,MXN + ,MYR + ,NLG + ,NZD + ,OMR + ,PGK + ,PHP + ,PKR + ,PLN + ,PTN + ,QAR + ,RUR + ,SAR + ,SCR + ,SEK + ,SGD + ,SKP + ,THB + ,TRL + ,TTD + ,TWD + ,USD + ,VEB + ,VND + ,XEU + ,ZAR + ,ZWD + ,NOK); +END_TYPE; + +TYPE IfcCurtainWallTypeEnum = ENUMERATION OF + (USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcDamperTypeEnum = ENUMERATION OF + (CONTROLDAMPER + ,FIREDAMPER + ,SMOKEDAMPER + ,FIRESMOKEDAMPER + ,BACKDRAFTDAMPER + ,RELIEFDAMPER + ,BLASTDAMPER + ,GRAVITYDAMPER + ,GRAVITYRELIEFDAMPER + ,BALANCINGDAMPER + ,FUMEHOODEXHAUST + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcDataOriginEnum = ENUMERATION OF + (MEASURED + ,PREDICTED + ,SIMULATED + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcDerivedUnitEnum = ENUMERATION OF + (ANGULARVELOCITYUNIT + ,COMPOUNDPLANEANGLEUNIT + ,DYNAMICVISCOSITYUNIT + ,HEATFLUXDENSITYUNIT + ,INTEGERCOUNTRATEUNIT + ,ISOTHERMALMOISTURECAPACITYUNIT + ,KINEMATICVISCOSITYUNIT + ,LINEARVELOCITYUNIT + ,MASSDENSITYUNIT + ,MASSFLOWRATEUNIT + ,MOISTUREDIFFUSIVITYUNIT + ,MOLECULARWEIGHTUNIT + ,SPECIFICHEATCAPACITYUNIT + ,THERMALADMITTANCEUNIT + ,THERMALCONDUCTANCEUNIT + ,THERMALRESISTANCEUNIT + ,THERMALTRANSMITTANCEUNIT + ,VAPORPERMEABILITYUNIT + ,VOLUMETRICFLOWRATEUNIT + ,ROTATIONALFREQUENCYUNIT + ,TORQUEUNIT + ,MOMENTOFINERTIAUNIT + ,LINEARMOMENTUNIT + ,LINEARFORCEUNIT + ,PLANARFORCEUNIT + ,MODULUSOFELASTICITYUNIT + ,SHEARMODULUSUNIT + ,LINEARSTIFFNESSUNIT + ,ROTATIONALSTIFFNESSUNIT + ,MODULUSOFSUBGRADEREACTIONUNIT + ,ACCELERATIONUNIT + ,CURVATUREUNIT + ,HEATINGVALUEUNIT + ,IONCONCENTRATIONUNIT + ,LUMINOUSINTENSITYDISTRIBUTIONUNIT + ,MASSPERLENGTHUNIT + ,MODULUSOFLINEARSUBGRADEREACTIONUNIT + ,MODULUSOFROTATIONALSUBGRADEREACTIONUNIT + ,PHUNIT + ,ROTATIONALMASSUNIT + ,SECTIONAREAINTEGRALUNIT + ,SECTIONMODULUSUNIT + ,SOUNDPOWERUNIT + ,SOUNDPRESSUREUNIT + ,TEMPERATUREGRADIENTUNIT + ,THERMALEXPANSIONCOEFFICIENTUNIT + ,WARPINGCONSTANTUNIT + ,WARPINGMOMENTUNIT + ,USERDEFINED); +END_TYPE; + +TYPE IfcDimensionExtentUsage = ENUMERATION OF + (ORIGIN + ,TARGET); +END_TYPE; + +TYPE IfcDirectionSenseEnum = ENUMERATION OF + (POSITIVE + ,NEGATIVE); +END_TYPE; + +TYPE IfcDistributionChamberElementTypeEnum = ENUMERATION OF + (FORMEDDUCT + ,INSPECTIONCHAMBER + ,INSPECTIONPIT + ,MANHOLE + ,METERCHAMBER + ,SUMP + ,TRENCH + ,VALVECHAMBER + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcDocumentConfidentialityEnum = ENUMERATION OF + (PUBLIC + ,RESTRICTED + ,CONFIDENTIAL + ,PERSONAL + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcDocumentStatusEnum = ENUMERATION OF + (DRAFT + ,FINALDRAFT + ,FINAL + ,REVISION + ,NOTDEFINED); +END_TYPE; + +TYPE IfcDoorPanelOperationEnum = ENUMERATION OF + (SWINGING + ,DOUBLE_ACTING + ,SLIDING + ,FOLDING + ,REVOLVING + ,ROLLINGUP + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcDoorPanelPositionEnum = ENUMERATION OF + (LEFT + ,MIDDLE + ,RIGHT + ,NOTDEFINED); +END_TYPE; + +TYPE IfcDoorStyleConstructionEnum = ENUMERATION OF + (ALUMINIUM + ,HIGH_GRADE_STEEL + ,STEEL + ,WOOD + ,ALUMINIUM_WOOD + ,ALUMINIUM_PLASTIC + ,PLASTIC + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcDoorStyleOperationEnum = ENUMERATION OF + (SINGLE_SWING_LEFT + ,SINGLE_SWING_RIGHT + ,DOUBLE_DOOR_SINGLE_SWING + ,DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT + ,DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT + ,DOUBLE_SWING_LEFT + ,DOUBLE_SWING_RIGHT + ,DOUBLE_DOOR_DOUBLE_SWING + ,SLIDING_TO_LEFT + ,SLIDING_TO_RIGHT + ,DOUBLE_DOOR_SLIDING + ,FOLDING_TO_LEFT + ,FOLDING_TO_RIGHT + ,DOUBLE_DOOR_FOLDING + ,REVOLVING + ,ROLLINGUP + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcDuctFittingTypeEnum = ENUMERATION OF + (BEND + ,CONNECTOR + ,ENTRY + ,EXIT + ,JUNCTION + ,OBSTRUCTION + ,TRANSITION + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcDuctSegmentTypeEnum = ENUMERATION OF + (RIGIDSEGMENT + ,FLEXIBLESEGMENT + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcDuctSilencerTypeEnum = ENUMERATION OF + (FLATOVAL + ,RECTANGULAR + ,ROUND + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcElectricApplianceTypeEnum = ENUMERATION OF + (COMPUTER + ,DIRECTWATERHEATER + ,DISHWASHER + ,ELECTRICCOOKER + ,ELECTRICHEATER + ,FACSIMILE + ,FREESTANDINGFAN + ,FREEZER + ,FRIDGE_FREEZER + ,HANDDRYER + ,INDIRECTWATERHEATER + ,MICROWAVE + ,PHOTOCOPIER + ,PRINTER + ,REFRIGERATOR + ,RADIANTHEATER + ,SCANNER + ,TELEPHONE + ,TUMBLEDRYER + ,TV + ,VENDINGMACHINE + ,WASHINGMACHINE + ,WATERHEATER + ,WATERCOOLER + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcElectricCurrentEnum = ENUMERATION OF + (ALTERNATING + ,DIRECT + ,NOTDEFINED); +END_TYPE; + +TYPE IfcElectricDistributionPointFunctionEnum = ENUMERATION OF + (ALARMPANEL + ,CONSUMERUNIT + ,CONTROLPANEL + ,DISTRIBUTIONBOARD + ,GASDETECTORPANEL + ,INDICATORPANEL + ,MIMICPANEL + ,MOTORCONTROLCENTRE + ,SWITCHBOARD + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcElectricFlowStorageDeviceTypeEnum = ENUMERATION OF + (BATTERY + ,CAPACITORBANK + ,HARMONICFILTER + ,INDUCTORBANK + ,UPS + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcElectricGeneratorTypeEnum = ENUMERATION OF + (USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcElectricHeaterTypeEnum = ENUMERATION OF + (ELECTRICPOINTHEATER + ,ELECTRICCABLEHEATER + ,ELECTRICMATHEATER + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcElectricMotorTypeEnum = ENUMERATION OF + (DC + ,INDUCTION + ,POLYPHASE + ,RELUCTANCESYNCHRONOUS + ,SYNCHRONOUS + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcElectricTimeControlTypeEnum = ENUMERATION OF + (TIMECLOCK + ,TIMEDELAY + ,RELAY + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcElementAssemblyTypeEnum = ENUMERATION OF + (ACCESSORY_ASSEMBLY + ,ARCH + ,BEAM_GRID + ,BRACED_FRAME + ,GIRDER + ,REINFORCEMENT_UNIT + ,RIGID_FRAME + ,SLAB_FIELD + ,TRUSS + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcElementCompositionEnum = ENUMERATION OF + (COMPLEX + ,ELEMENT + ,PARTIAL); +END_TYPE; + +TYPE IfcEnergySequenceEnum = ENUMERATION OF + (PRIMARY + ,SECONDARY + ,TERTIARY + ,AUXILIARY + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcEnvironmentalImpactCategoryEnum = ENUMERATION OF + (COMBINEDVALUE + ,DISPOSAL + ,EXTRACTION + ,INSTALLATION + ,MANUFACTURE + ,TRANSPORTATION + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcEvaporativeCoolerTypeEnum = ENUMERATION OF + (DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER + ,DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER + ,DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER + ,DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER + ,DIRECTEVAPORATIVEAIRWASHER + ,INDIRECTEVAPORATIVEPACKAGEAIRCOOLER + ,INDIRECTEVAPORATIVEWETCOIL + ,INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER + ,INDIRECTDIRECTCOMBINATION + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcEvaporatorTypeEnum = ENUMERATION OF + (DIRECTEXPANSIONSHELLANDTUBE + ,DIRECTEXPANSIONTUBEINTUBE + ,DIRECTEXPANSIONBRAZEDPLATE + ,FLOODEDSHELLANDTUBE + ,SHELLANDCOIL + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcFanTypeEnum = ENUMERATION OF + (CENTRIFUGALFORWARDCURVED + ,CENTRIFUGALRADIAL + ,CENTRIFUGALBACKWARDINCLINEDCURVED + ,CENTRIFUGALAIRFOIL + ,TUBEAXIAL + ,VANEAXIAL + ,PROPELLORAXIAL + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcFilterTypeEnum = ENUMERATION OF + (AIRPARTICLEFILTER + ,ODORFILTER + ,OILFILTER + ,STRAINER + ,WATERFILTER + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcFireSuppressionTerminalTypeEnum = ENUMERATION OF + (BREECHINGINLET + ,FIREHYDRANT + ,HOSEREEL + ,SPRINKLER + ,SPRINKLERDEFLECTOR + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcFlowDirectionEnum = ENUMERATION OF + (SOURCE + ,SINK + ,SOURCEANDSINK + ,NOTDEFINED); +END_TYPE; + +TYPE IfcFlowInstrumentTypeEnum = ENUMERATION OF + (PRESSUREGAUGE + ,THERMOMETER + ,AMMETER + ,FREQUENCYMETER + ,POWERFACTORMETER + ,PHASEANGLEMETER + ,VOLTMETER_PEAK + ,VOLTMETER_RMS + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcFlowMeterTypeEnum = ENUMERATION OF + (ELECTRICMETER + ,ENERGYMETER + ,FLOWMETER + ,GASMETER + ,OILMETER + ,WATERMETER + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcFootingTypeEnum = ENUMERATION OF + (FOOTING_BEAM + ,PAD_FOOTING + ,PILE_CAP + ,STRIP_FOOTING + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcGasTerminalTypeEnum = ENUMERATION OF + (GASAPPLIANCE + ,GASBOOSTER + ,GASBURNER + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcGeometricProjectionEnum = ENUMERATION OF + (GRAPH_VIEW + ,SKETCH_VIEW + ,MODEL_VIEW + ,PLAN_VIEW + ,REFLECTED_PLAN_VIEW + ,SECTION_VIEW + ,ELEVATION_VIEW + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcGlobalOrLocalEnum = ENUMERATION OF + (GLOBAL_COORDS + ,LOCAL_COORDS); +END_TYPE; + +TYPE IfcHeatExchangerTypeEnum = ENUMERATION OF + (PLATE + ,SHELLANDTUBE + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcHumidifierTypeEnum = ENUMERATION OF + (STEAMINJECTION + ,ADIABATICAIRWASHER + ,ADIABATICPAN + ,ADIABATICWETTEDELEMENT + ,ADIABATICATOMIZING + ,ADIABATICULTRASONIC + ,ADIABATICRIGIDMEDIA + ,ADIABATICCOMPRESSEDAIRNOZZLE + ,ASSISTEDELECTRIC + ,ASSISTEDNATURALGAS + ,ASSISTEDPROPANE + ,ASSISTEDBUTANE + ,ASSISTEDSTEAM + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcInternalOrExternalEnum = ENUMERATION OF + (INTERNAL + ,EXTERNAL + ,NOTDEFINED); +END_TYPE; + +TYPE IfcInventoryTypeEnum = ENUMERATION OF + (ASSETINVENTORY + ,SPACEINVENTORY + ,FURNITUREINVENTORY + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcJunctionBoxTypeEnum = ENUMERATION OF + (USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcLampTypeEnum = ENUMERATION OF + (COMPACTFLUORESCENT + ,FLUORESCENT + ,HIGHPRESSUREMERCURY + ,HIGHPRESSURESODIUM + ,METALHALIDE + ,TUNGSTENFILAMENT + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcLayerSetDirectionEnum = ENUMERATION OF + (AXIS1 + ,AXIS2 + ,AXIS3); +END_TYPE; + +TYPE IfcLightDistributionCurveEnum = ENUMERATION OF + (TYPE_A + ,TYPE_B + ,TYPE_C + ,NOTDEFINED); +END_TYPE; + +TYPE IfcLightEmissionSourceEnum = ENUMERATION OF + (COMPACTFLUORESCENT + ,FLUORESCENT + ,HIGHPRESSUREMERCURY + ,HIGHPRESSURESODIUM + ,LIGHTEMITTINGDIODE + ,LOWPRESSURESODIUM + ,LOWVOLTAGEHALOGEN + ,MAINVOLTAGEHALOGEN + ,METALHALIDE + ,TUNGSTENFILAMENT + ,NOTDEFINED); +END_TYPE; + +TYPE IfcLightFixtureTypeEnum = ENUMERATION OF + (POINTSOURCE + ,DIRECTIONSOURCE + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcLoadGroupTypeEnum = ENUMERATION OF + (LOAD_GROUP + ,LOAD_CASE + ,LOAD_COMBINATION_GROUP + ,LOAD_COMBINATION + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcLogicalOperatorEnum = ENUMERATION OF + (LOGICALAND + ,LOGICALOR); +END_TYPE; + +TYPE IfcMemberTypeEnum = ENUMERATION OF + (BRACE + ,CHORD + ,COLLAR + ,MEMBER + ,MULLION + ,PLATE + ,POST + ,PURLIN + ,RAFTER + ,STRINGER + ,STRUT + ,STUD + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcMotorConnectionTypeEnum = ENUMERATION OF + (BELTDRIVE + ,COUPLING + ,DIRECTDRIVE + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcNullStyle = ENUMERATION OF + (NULL); +END_TYPE; + +TYPE IfcObjectTypeEnum = ENUMERATION OF + (PRODUCT + ,PROCESS + ,CONTROL + ,RESOURCE + ,ACTOR + ,GROUP + ,PROJECT + ,NOTDEFINED); +END_TYPE; + +TYPE IfcObjectiveEnum = ENUMERATION OF + (CODECOMPLIANCE + ,DESIGNINTENT + ,HEALTHANDSAFETY + ,REQUIREMENT + ,SPECIFICATION + ,TRIGGERCONDITION + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcOccupantTypeEnum = ENUMERATION OF + (ASSIGNEE + ,ASSIGNOR + ,LESSEE + ,LESSOR + ,LETTINGAGENT + ,OWNER + ,TENANT + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcOutletTypeEnum = ENUMERATION OF + (AUDIOVISUALOUTLET + ,COMMUNICATIONSOUTLET + ,POWEROUTLET + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcPermeableCoveringOperationEnum = ENUMERATION OF + (GRILL + ,LOUVER + ,SCREEN + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcPhysicalOrVirtualEnum = ENUMERATION OF + (PHYSICAL + ,VIRTUAL + ,NOTDEFINED); +END_TYPE; + +TYPE IfcPileConstructionEnum = ENUMERATION OF + (CAST_IN_PLACE + ,COMPOSITE + ,PRECAST_CONCRETE + ,PREFAB_STEEL + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcPileTypeEnum = ENUMERATION OF + (COHESION + ,FRICTION + ,SUPPORT + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcPipeFittingTypeEnum = ENUMERATION OF + (BEND + ,CONNECTOR + ,ENTRY + ,EXIT + ,JUNCTION + ,OBSTRUCTION + ,TRANSITION + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcPipeSegmentTypeEnum = ENUMERATION OF + (FLEXIBLESEGMENT + ,RIGIDSEGMENT + ,GUTTER + ,SPOOL + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcPlateTypeEnum = ENUMERATION OF + (CURTAIN_PANEL + ,SHEET + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcProcedureTypeEnum = ENUMERATION OF + (ADVICE_CAUTION + ,ADVICE_NOTE + ,ADVICE_WARNING + ,CALIBRATION + ,DIAGNOSTIC + ,SHUTDOWN + ,STARTUP + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcProfileTypeEnum = ENUMERATION OF + (CURVE + ,AREA); +END_TYPE; + +TYPE IfcProjectOrderRecordTypeEnum = ENUMERATION OF + (CHANGE + ,MAINTENANCE + ,MOVE + ,PURCHASE + ,WORK + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcProjectOrderTypeEnum = ENUMERATION OF + (CHANGEORDER + ,MAINTENANCEWORKORDER + ,MOVEORDER + ,PURCHASEORDER + ,WORKORDER + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcProjectedOrTrueLengthEnum = ENUMERATION OF + (PROJECTED_LENGTH + ,TRUE_LENGTH); +END_TYPE; + +TYPE IfcPropertySourceEnum = ENUMERATION OF + (DESIGN + ,DESIGNMAXIMUM + ,DESIGNMINIMUM + ,SIMULATED + ,ASBUILT + ,COMMISSIONING + ,MEASURED + ,USERDEFINED + ,NOTKNOWN); +END_TYPE; + +TYPE IfcProtectiveDeviceTypeEnum = ENUMERATION OF + (FUSEDISCONNECTOR + ,CIRCUITBREAKER + ,EARTHFAILUREDEVICE + ,RESIDUALCURRENTCIRCUITBREAKER + ,RESIDUALCURRENTSWITCH + ,VARISTOR + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcPumpTypeEnum = ENUMERATION OF + (CIRCULATOR + ,ENDSUCTION + ,SPLITCASE + ,VERTICALINLINE + ,VERTICALTURBINE + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcRailingTypeEnum = ENUMERATION OF + (HANDRAIL + ,GUARDRAIL + ,BALUSTRADE + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcRampFlightTypeEnum = ENUMERATION OF + (STRAIGHT + ,SPIRAL + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcRampTypeEnum = ENUMERATION OF + (STRAIGHT_RUN_RAMP + ,TWO_STRAIGHT_RUN_RAMP + ,QUARTER_TURN_RAMP + ,TWO_QUARTER_TURN_RAMP + ,HALF_TURN_RAMP + ,SPIRAL_RAMP + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcReflectanceMethodEnum = ENUMERATION OF + (BLINN + ,FLAT + ,GLASS + ,MATT + ,METAL + ,MIRROR + ,PHONG + ,PLASTIC + ,STRAUSS + ,NOTDEFINED); +END_TYPE; + +TYPE IfcReinforcingBarRoleEnum = ENUMERATION OF + (MAIN + ,SHEAR + ,LIGATURE + ,STUD + ,PUNCHING + ,EDGE + ,RING + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcReinforcingBarSurfaceEnum = ENUMERATION OF + (PLAIN + ,TEXTURED); +END_TYPE; + +TYPE IfcResourceConsumptionEnum = ENUMERATION OF + (CONSUMED + ,PARTIALLYCONSUMED + ,NOTCONSUMED + ,OCCUPIED + ,PARTIALLYOCCUPIED + ,NOTOCCUPIED + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcRibPlateDirectionEnum = ENUMERATION OF + (DIRECTION_X + ,DIRECTION_Y); +END_TYPE; + +TYPE IfcRoleEnum = ENUMERATION OF + (SUPPLIER + ,MANUFACTURER + ,CONTRACTOR + ,SUBCONTRACTOR + ,ARCHITECT + ,STRUCTURALENGINEER + ,COSTENGINEER + ,CLIENT + ,BUILDINGOWNER + ,BUILDINGOPERATOR + ,MECHANICALENGINEER + ,ELECTRICALENGINEER + ,PROJECTMANAGER + ,FACILITIESMANAGER + ,CIVILENGINEER + ,COMISSIONINGENGINEER + ,ENGINEER + ,OWNER + ,CONSULTANT + ,CONSTRUCTIONMANAGER + ,FIELDCONSTRUCTIONMANAGER + ,RESELLER + ,USERDEFINED); +END_TYPE; + +TYPE IfcRoofTypeEnum = ENUMERATION OF + (FLAT_ROOF + ,SHED_ROOF + ,GABLE_ROOF + ,HIP_ROOF + ,HIPPED_GABLE_ROOF + ,GAMBREL_ROOF + ,MANSARD_ROOF + ,BARREL_ROOF + ,RAINBOW_ROOF + ,BUTTERFLY_ROOF + ,PAVILION_ROOF + ,DOME_ROOF + ,FREEFORM + ,NOTDEFINED); +END_TYPE; + +TYPE IfcSIPrefix = ENUMERATION OF + (EXA + ,PETA + ,TERA + ,GIGA + ,MEGA + ,KILO + ,HECTO + ,DECA + ,DECI + ,CENTI + ,MILLI + ,MICRO + ,NANO + ,PICO + ,FEMTO + ,ATTO); +END_TYPE; + +TYPE IfcSIUnitName = ENUMERATION OF + (AMPERE + ,BECQUEREL + ,CANDELA + ,COULOMB + ,CUBIC_METRE + ,DEGREE_CELSIUS + ,FARAD + ,GRAM + ,GRAY + ,HENRY + ,HERTZ + ,JOULE + ,KELVIN + ,LUMEN + ,LUX + ,METRE + ,MOLE + ,NEWTON + ,OHM + ,PASCAL + ,RADIAN + ,SECOND + ,SIEMENS + ,SIEVERT + ,SQUARE_METRE + ,STERADIAN + ,TESLA + ,VOLT + ,WATT + ,WEBER); +END_TYPE; + +TYPE IfcSanitaryTerminalTypeEnum = ENUMERATION OF + (BATH + ,BIDET + ,CISTERN + ,SHOWER + ,SINK + ,SANITARYFOUNTAIN + ,TOILETPAN + ,URINAL + ,WASHHANDBASIN + ,WCSEAT + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcSectionTypeEnum = ENUMERATION OF + (UNIFORM + ,TAPERED); +END_TYPE; + +TYPE IfcSensorTypeEnum = ENUMERATION OF + (CO2SENSOR + ,FIRESENSOR + ,FLOWSENSOR + ,GASSENSOR + ,HEATSENSOR + ,HUMIDITYSENSOR + ,LIGHTSENSOR + ,MOISTURESENSOR + ,MOVEMENTSENSOR + ,PRESSURESENSOR + ,SMOKESENSOR + ,SOUNDSENSOR + ,TEMPERATURESENSOR + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcSequenceEnum = ENUMERATION OF + (START_START + ,START_FINISH + ,FINISH_START + ,FINISH_FINISH + ,NOTDEFINED); +END_TYPE; + +TYPE IfcServiceLifeFactorTypeEnum = ENUMERATION OF + (A_QUALITYOFCOMPONENTS + ,B_DESIGNLEVEL + ,C_WORKEXECUTIONLEVEL + ,D_INDOORENVIRONMENT + ,E_OUTDOORENVIRONMENT + ,F_INUSECONDITIONS + ,G_MAINTENANCELEVEL + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcServiceLifeTypeEnum = ENUMERATION OF + (ACTUALSERVICELIFE + ,EXPECTEDSERVICELIFE + ,OPTIMISTICREFERENCESERVICELIFE + ,PESSIMISTICREFERENCESERVICELIFE + ,REFERENCESERVICELIFE); +END_TYPE; + +TYPE IfcSlabTypeEnum = ENUMERATION OF + (FLOOR + ,ROOF + ,LANDING + ,BASESLAB + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcSoundScaleEnum = ENUMERATION OF + (DBA + ,DBB + ,DBC + ,NC + ,NR + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcSpaceHeaterTypeEnum = ENUMERATION OF + (SECTIONALRADIATOR + ,PANELRADIATOR + ,TUBULARRADIATOR + ,CONVECTOR + ,BASEBOARDHEATER + ,FINNEDTUBEUNIT + ,UNITHEATER + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcSpaceTypeEnum = ENUMERATION OF + (USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcStackTerminalTypeEnum = ENUMERATION OF + (BIRDCAGE + ,COWL + ,RAINWATERHOPPER + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcStairFlightTypeEnum = ENUMERATION OF + (STRAIGHT + ,WINDER + ,SPIRAL + ,CURVED + ,FREEFORM + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcStairTypeEnum = ENUMERATION OF + (STRAIGHT_RUN_STAIR + ,TWO_STRAIGHT_RUN_STAIR + ,QUARTER_WINDING_STAIR + ,QUARTER_TURN_STAIR + ,HALF_WINDING_STAIR + ,HALF_TURN_STAIR + ,TWO_QUARTER_WINDING_STAIR + ,TWO_QUARTER_TURN_STAIR + ,THREE_QUARTER_WINDING_STAIR + ,THREE_QUARTER_TURN_STAIR + ,SPIRAL_STAIR + ,DOUBLE_RETURN_STAIR + ,CURVED_RUN_STAIR + ,TWO_CURVED_RUN_STAIR + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcStateEnum = ENUMERATION OF + (READWRITE + ,READONLY + ,LOCKED + ,READWRITELOCKED + ,READONLYLOCKED); +END_TYPE; + +TYPE IfcStructuralCurveTypeEnum = ENUMERATION OF + (RIGID_JOINED_MEMBER + ,PIN_JOINED_MEMBER + ,CABLE + ,TENSION_MEMBER + ,COMPRESSION_MEMBER + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcStructuralSurfaceTypeEnum = ENUMERATION OF + (BENDING_ELEMENT + ,MEMBRANE_ELEMENT + ,SHELL + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcSurfaceSide = ENUMERATION OF + (POSITIVE + ,NEGATIVE + ,BOTH); +END_TYPE; + +TYPE IfcSurfaceTextureEnum = ENUMERATION OF + (BUMP + ,OPACITY + ,REFLECTION + ,SELFILLUMINATION + ,SHININESS + ,SPECULAR + ,TEXTURE + ,TRANSPARENCYMAP + ,NOTDEFINED); +END_TYPE; + +TYPE IfcSwitchingDeviceTypeEnum = ENUMERATION OF + (CONTACTOR + ,EMERGENCYSTOP + ,STARTER + ,SWITCHDISCONNECTOR + ,TOGGLESWITCH + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcTankTypeEnum = ENUMERATION OF + (PREFORMED + ,SECTIONAL + ,EXPANSION + ,PRESSUREVESSEL + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcTendonTypeEnum = ENUMERATION OF + (STRAND + ,WIRE + ,BAR + ,COATED + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcTextPath = ENUMERATION OF + (LEFT + ,RIGHT + ,UP + ,DOWN); +END_TYPE; + +TYPE IfcThermalLoadSourceEnum = ENUMERATION OF + (PEOPLE + ,LIGHTING + ,EQUIPMENT + ,VENTILATIONINDOORAIR + ,VENTILATIONOUTSIDEAIR + ,RECIRCULATEDAIR + ,EXHAUSTAIR + ,AIREXCHANGERATE + ,DRYBULBTEMPERATURE + ,RELATIVEHUMIDITY + ,INFILTRATION + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcThermalLoadTypeEnum = ENUMERATION OF + (SENSIBLE + ,LATENT + ,RADIANT + ,NOTDEFINED); +END_TYPE; + +TYPE IfcTimeSeriesDataTypeEnum = ENUMERATION OF + (CONTINUOUS + ,DISCRETE + ,DISCRETEBINARY + ,PIECEWISEBINARY + ,PIECEWISECONSTANT + ,PIECEWISECONTINUOUS + ,NOTDEFINED); +END_TYPE; + +TYPE IfcTimeSeriesScheduleTypeEnum = ENUMERATION OF + (ANNUAL + ,MONTHLY + ,WEEKLY + ,DAILY + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcTransformerTypeEnum = ENUMERATION OF + (CURRENT + ,FREQUENCY + ,VOLTAGE + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcTransitionCode = ENUMERATION OF + (DISCONTINUOUS + ,CONTINUOUS + ,CONTSAMEGRADIENT + ,CONTSAMEGRADIENTSAMECURVATURE); +END_TYPE; + +TYPE IfcTransportElementTypeEnum = ENUMERATION OF + (ELEVATOR + ,ESCALATOR + ,MOVINGWALKWAY + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcTrimmingPreference = ENUMERATION OF + (CARTESIAN + ,PARAMETER + ,UNSPECIFIED); +END_TYPE; + +TYPE IfcTubeBundleTypeEnum = ENUMERATION OF + (FINNED + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcUnitEnum = ENUMERATION OF + (ABSORBEDDOSEUNIT + ,AMOUNTOFSUBSTANCEUNIT + ,AREAUNIT + ,DOSEEQUIVALENTUNIT + ,ELECTRICCAPACITANCEUNIT + ,ELECTRICCHARGEUNIT + ,ELECTRICCONDUCTANCEUNIT + ,ELECTRICCURRENTUNIT + ,ELECTRICRESISTANCEUNIT + ,ELECTRICVOLTAGEUNIT + ,ENERGYUNIT + ,FORCEUNIT + ,FREQUENCYUNIT + ,ILLUMINANCEUNIT + ,INDUCTANCEUNIT + ,LENGTHUNIT + ,LUMINOUSFLUXUNIT + ,LUMINOUSINTENSITYUNIT + ,MAGNETICFLUXDENSITYUNIT + ,MAGNETICFLUXUNIT + ,MASSUNIT + ,PLANEANGLEUNIT + ,POWERUNIT + ,PRESSUREUNIT + ,RADIOACTIVITYUNIT + ,SOLIDANGLEUNIT + ,THERMODYNAMICTEMPERATUREUNIT + ,TIMEUNIT + ,VOLUMEUNIT + ,USERDEFINED); +END_TYPE; + +TYPE IfcUnitaryEquipmentTypeEnum = ENUMERATION OF + (AIRHANDLER + ,AIRCONDITIONINGUNIT + ,SPLITSYSTEM + ,ROOFTOPUNIT + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcValveTypeEnum = ENUMERATION OF + (AIRRELEASE + ,ANTIVACUUM + ,CHANGEOVER + ,CHECK + ,COMMISSIONING + ,DIVERTING + ,DRAWOFFCOCK + ,DOUBLECHECK + ,DOUBLEREGULATING + ,FAUCET + ,FLUSHING + ,GASCOCK + ,GASTAP + ,ISOLATING + ,MIXING + ,PRESSUREREDUCING + ,PRESSURERELIEF + ,REGULATING + ,SAFETYCUTOFF + ,STEAMTRAP + ,STOPCOCK + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcVibrationIsolatorTypeEnum = ENUMERATION OF + (COMPRESSION + ,SPRING + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcWallTypeEnum = ENUMERATION OF + (STANDARD + ,POLYGONAL + ,SHEAR + ,ELEMENTEDWALL + ,PLUMBINGWALL + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcWasteTerminalTypeEnum = ENUMERATION OF + (FLOORTRAP + ,FLOORWASTE + ,GULLYSUMP + ,GULLYTRAP + ,GREASEINTERCEPTOR + ,OILINTERCEPTOR + ,PETROLINTERCEPTOR + ,ROOFDRAIN + ,WASTEDISPOSALUNIT + ,WASTETRAP + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcWindowPanelOperationEnum = ENUMERATION OF + (SIDEHUNGRIGHTHAND + ,SIDEHUNGLEFTHAND + ,TILTANDTURNRIGHTHAND + ,TILTANDTURNLEFTHAND + ,TOPHUNG + ,BOTTOMHUNG + ,PIVOTHORIZONTAL + ,PIVOTVERTICAL + ,SLIDINGHORIZONTAL + ,SLIDINGVERTICAL + ,REMOVABLECASEMENT + ,FIXEDCASEMENT + ,OTHEROPERATION + ,NOTDEFINED); +END_TYPE; + +TYPE IfcWindowPanelPositionEnum = ENUMERATION OF + (LEFT + ,MIDDLE + ,RIGHT + ,BOTTOM + ,TOP + ,NOTDEFINED); +END_TYPE; + +TYPE IfcWindowStyleConstructionEnum = ENUMERATION OF + (ALUMINIUM + ,HIGH_GRADE_STEEL + ,STEEL + ,WOOD + ,ALUMINIUM_WOOD + ,PLASTIC + ,OTHER_CONSTRUCTION + ,NOTDEFINED); +END_TYPE; + +TYPE IfcWindowStyleOperationEnum = ENUMERATION OF + (SINGLE_PANEL + ,DOUBLE_PANEL_VERTICAL + ,DOUBLE_PANEL_HORIZONTAL + ,TRIPLE_PANEL_VERTICAL + ,TRIPLE_PANEL_BOTTOM + ,TRIPLE_PANEL_TOP + ,TRIPLE_PANEL_LEFT + ,TRIPLE_PANEL_RIGHT + ,TRIPLE_PANEL_HORIZONTAL + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcWorkControlTypeEnum = ENUMERATION OF + (ACTUAL + ,BASELINE + ,PLANNED + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcActorSelect = SELECT + (IfcOrganization + ,IfcPerson + ,IfcPersonAndOrganization); +END_TYPE; + +TYPE IfcAppliedValueSelect = SELECT + (IfcRatioMeasure + ,IfcMeasureWithUnit + ,IfcMonetaryMeasure); +END_TYPE; + +TYPE IfcAxis2Placement = SELECT + (IfcAxis2Placement2D + ,IfcAxis2Placement3D); +END_TYPE; + +TYPE IfcBooleanOperand = SELECT + (IfcSolidModel + ,IfcHalfSpaceSolid + ,IfcBooleanResult + ,IfcCsgPrimitive3D); +END_TYPE; + +TYPE IfcCharacterStyleSelect = SELECT + (IfcTextStyleForDefinedFont); +END_TYPE; + +TYPE IfcClassificationNotationSelect = SELECT + (IfcClassificationNotation + ,IfcClassificationReference); +END_TYPE; + +TYPE IfcColour = SELECT + (IfcColourSpecification + ,IfcPreDefinedColour); +END_TYPE; + +TYPE IfcColourOrFactor = SELECT + (IfcColourRgb + ,IfcNormalisedRatioMeasure); +END_TYPE; + +TYPE IfcConditionCriterionSelect = SELECT + (IfcLabel + ,IfcMeasureWithUnit); +END_TYPE; + +TYPE IfcCsgSelect = SELECT + (IfcBooleanResult + ,IfcCsgPrimitive3D); +END_TYPE; + +TYPE IfcCurveFontOrScaledCurveFontSelect = SELECT + (IfcCurveStyleFontSelect + ,IfcCurveStyleFontAndScaling); +END_TYPE; + +TYPE IfcCurveOrEdgeCurve = SELECT + (IfcBoundedCurve + ,IfcEdgeCurve); +END_TYPE; + +TYPE IfcCurveStyleFontSelect = SELECT + (IfcPreDefinedCurveFont + ,IfcCurveStyleFont); +END_TYPE; + +TYPE IfcDateTimeSelect = SELECT + (IfcCalendarDate + ,IfcLocalTime + ,IfcDateAndTime); +END_TYPE; + +TYPE IfcDefinedSymbolSelect = SELECT + (IfcPreDefinedSymbol + ,IfcExternallyDefinedSymbol); +END_TYPE; + +TYPE IfcDerivedMeasureValue = SELECT + (IfcVolumetricFlowRateMeasure + ,IfcTimeStamp + ,IfcThermalTransmittanceMeasure + ,IfcThermalResistanceMeasure + ,IfcThermalAdmittanceMeasure + ,IfcPressureMeasure + ,IfcPowerMeasure + ,IfcMassFlowRateMeasure + ,IfcMassDensityMeasure + ,IfcLinearVelocityMeasure + ,IfcKinematicViscosityMeasure + ,IfcIntegerCountRateMeasure + ,IfcHeatFluxDensityMeasure + ,IfcFrequencyMeasure + ,IfcEnergyMeasure + ,IfcElectricVoltageMeasure + ,IfcDynamicViscosityMeasure + ,IfcCompoundPlaneAngleMeasure + ,IfcAngularVelocityMeasure + ,IfcThermalConductivityMeasure + ,IfcMolecularWeightMeasure + ,IfcVaporPermeabilityMeasure + ,IfcMoistureDiffusivityMeasure + ,IfcIsothermalMoistureCapacityMeasure + ,IfcSpecificHeatCapacityMeasure + ,IfcMonetaryMeasure + ,IfcMagneticFluxDensityMeasure + ,IfcMagneticFluxMeasure + ,IfcLuminousFluxMeasure + ,IfcForceMeasure + ,IfcInductanceMeasure + ,IfcIlluminanceMeasure + ,IfcElectricResistanceMeasure + ,IfcElectricConductanceMeasure + ,IfcElectricChargeMeasure + ,IfcDoseEquivalentMeasure + ,IfcElectricCapacitanceMeasure + ,IfcAbsorbedDoseMeasure + ,IfcRadioActivityMeasure + ,IfcRotationalFrequencyMeasure + ,IfcTorqueMeasure + ,IfcAccelerationMeasure + ,IfcLinearForceMeasure + ,IfcLinearStiffnessMeasure + ,IfcModulusOfSubgradeReactionMeasure + ,IfcModulusOfElasticityMeasure + ,IfcMomentOfInertiaMeasure + ,IfcPlanarForceMeasure + ,IfcRotationalStiffnessMeasure + ,IfcShearModulusMeasure + ,IfcLinearMomentMeasure + ,IfcLuminousIntensityDistributionMeasure + ,IfcCurvatureMeasure + ,IfcMassPerLengthMeasure + ,IfcModulusOfLinearSubgradeReactionMeasure + ,IfcModulusOfRotationalSubgradeReactionMeasure + ,IfcRotationalMassMeasure + ,IfcSectionalAreaIntegralMeasure + ,IfcSectionModulusMeasure + ,IfcTemperatureGradientMeasure + ,IfcThermalExpansionCoefficientMeasure + ,IfcWarpingConstantMeasure + ,IfcWarpingMomentMeasure + ,IfcSoundPowerMeasure + ,IfcSoundPressureMeasure + ,IfcHeatingValueMeasure + ,IfcPHMeasure + ,IfcIonConcentrationMeasure); +END_TYPE; + +TYPE IfcDocumentSelect = SELECT + (IfcDocumentReference + ,IfcDocumentInformation); +END_TYPE; + +TYPE IfcDraughtingCalloutElement = SELECT + (IfcAnnotationCurveOccurrence + ,IfcAnnotationTextOccurrence + ,IfcAnnotationSymbolOccurrence); +END_TYPE; + +TYPE IfcFillAreaStyleTileShapeSelect = SELECT + (IfcFillAreaStyleTileSymbolWithStyle); +END_TYPE; + +TYPE IfcFillStyleSelect = SELECT + (IfcFillAreaStyleHatching + ,IfcFillAreaStyleTiles + ,IfcColour + ,IfcExternallyDefinedHatchStyle); +END_TYPE; + +TYPE IfcGeometricSetSelect = SELECT + (IfcPoint + ,IfcCurve + ,IfcSurface); +END_TYPE; + +TYPE IfcHatchLineDistanceSelect = SELECT + (IfcOneDirectionRepeatFactor + ,IfcPositiveLengthMeasure); +END_TYPE; + +TYPE IfcLayeredItem = SELECT + (IfcRepresentationItem + ,IfcRepresentation); +END_TYPE; + +TYPE IfcLibrarySelect = SELECT + (IfcLibraryReference + ,IfcLibraryInformation); +END_TYPE; + +TYPE IfcLightDistributionDataSourceSelect = SELECT + (IfcExternalReference + ,IfcLightIntensityDistribution); +END_TYPE; + +TYPE IfcMaterialSelect = SELECT + (IfcMaterial + ,IfcMaterialList + ,IfcMaterialLayerSetUsage + ,IfcMaterialLayerSet + ,IfcMaterialLayer); +END_TYPE; + +TYPE IfcMeasureValue = SELECT + (IfcVolumeMeasure + ,IfcTimeMeasure + ,IfcThermodynamicTemperatureMeasure + ,IfcSolidAngleMeasure + ,IfcPositiveRatioMeasure + ,IfcRatioMeasure + ,IfcPositivePlaneAngleMeasure + ,IfcPlaneAngleMeasure + ,IfcParameterValue + ,IfcNumericMeasure + ,IfcMassMeasure + ,IfcPositiveLengthMeasure + ,IfcLengthMeasure + ,IfcElectricCurrentMeasure + ,IfcDescriptiveMeasure + ,IfcCountMeasure + ,IfcContextDependentMeasure + ,IfcAreaMeasure + ,IfcAmountOfSubstanceMeasure + ,IfcLuminousIntensityMeasure + ,IfcNormalisedRatioMeasure + ,IfcComplexNumber); +END_TYPE; + +TYPE IfcMetricValueSelect = SELECT + (IfcDateTimeSelect + ,IfcMeasureWithUnit + ,IfcTable + ,IfcText + ,IfcTimeSeries + ,IfcCostValue); +END_TYPE; + +TYPE IfcObjectReferenceSelect = SELECT + (IfcMaterial + ,IfcPerson + ,IfcDateAndTime + ,IfcMaterialList + ,IfcOrganization + ,IfcCalendarDate + ,IfcLocalTime + ,IfcPersonAndOrganization + ,IfcMaterialLayer + ,IfcExternalReference + ,IfcTimeSeries + ,IfcAddress + ,IfcAppliedValue); +END_TYPE; + +TYPE IfcOrientationSelect = SELECT + (IfcPlaneAngleMeasure + ,IfcDirection); +END_TYPE; + +TYPE IfcPointOrVertexPoint = SELECT + (IfcPoint + ,IfcVertexPoint); +END_TYPE; + +TYPE IfcPresentationStyleSelect = SELECT + (IfcNullStyle + ,IfcCurveStyle + ,IfcSymbolStyle + ,IfcFillAreaStyle + ,IfcTextStyle + ,IfcSurfaceStyle); +END_TYPE; + +TYPE IfcShell = SELECT + (IfcClosedShell + ,IfcOpenShell); +END_TYPE; + +TYPE IfcSimpleValue = SELECT + (IfcInteger + ,IfcReal + ,IfcBoolean + ,IfcIdentifier + ,IfcText + ,IfcLabel + ,IfcLogical); +END_TYPE; + +TYPE IfcSizeSelect = SELECT + (IfcRatioMeasure + ,IfcLengthMeasure + ,IfcDescriptiveMeasure + ,IfcPositiveLengthMeasure + ,IfcNormalisedRatioMeasure + ,IfcPositiveRatioMeasure); +END_TYPE; + +TYPE IfcSpecularHighlightSelect = SELECT + (IfcSpecularExponent + ,IfcSpecularRoughness); +END_TYPE; + +TYPE IfcStructuralActivityAssignmentSelect = SELECT + (IfcStructuralItem + ,IfcElement); +END_TYPE; + +TYPE IfcSurfaceOrFaceSurface = SELECT + (IfcSurface + ,IfcFaceSurface + ,IfcFaceBasedSurfaceModel); +END_TYPE; + +TYPE IfcSurfaceStyleElementSelect = SELECT + (IfcSurfaceStyleShading + ,IfcSurfaceStyleLighting + ,IfcSurfaceStyleWithTextures + ,IfcExternallyDefinedSurfaceStyle + ,IfcSurfaceStyleRefraction); +END_TYPE; + +TYPE IfcSymbolStyleSelect = SELECT + (IfcColour); +END_TYPE; + +TYPE IfcTextFontSelect = SELECT + (IfcPreDefinedTextFont + ,IfcExternallyDefinedTextFont); +END_TYPE; + +TYPE IfcTextStyleSelect = SELECT + (IfcTextStyleWithBoxCharacteristics + ,IfcTextStyleTextModel); +END_TYPE; + +TYPE IfcTrimmingSelect = SELECT + (IfcCartesianPoint + ,IfcParameterValue); +END_TYPE; + +TYPE IfcUnit = SELECT + (IfcDerivedUnit + ,IfcNamedUnit + ,IfcMonetaryUnit); +END_TYPE; + +TYPE IfcValue = SELECT + (IfcMeasureValue + ,IfcSimpleValue + ,IfcDerivedMeasureValue); +END_TYPE; + +TYPE IfcVectorOrDirection = SELECT + (IfcDirection + ,IfcVector); +END_TYPE; + +ENTITY Ifc2DCompositeCurve + SUBTYPE OF (IfcCompositeCurve); + WHERE + WR1 : SELF\IfcCompositeCurve.ClosedCurve; + WR2 : SELF\IfcCurve.Dim = 2; +END_ENTITY; + +ENTITY IfcActionRequest + SUBTYPE OF (IfcControl); + RequestID : IfcIdentifier; + UNIQUE + UR2 : RequestID; +END_ENTITY; + +ENTITY IfcActor + SUPERTYPE OF (ONEOF + (IfcOccupant)) + SUBTYPE OF (IfcObject); + TheActor : IfcActorSelect; + INVERSE + IsActingUpon : SET [0:?] OF IfcRelAssignsToActor FOR RelatingActor; +END_ENTITY; + +ENTITY IfcActorRole; + Role : IfcRoleEnum; + UserDefinedRole : OPTIONAL IfcLabel; + Description : OPTIONAL IfcText; + WHERE + WR1 : (Role <> IfcRoleEnum.USERDEFINED) OR + ((Role = IfcRoleEnum.USERDEFINED) AND + EXISTS(SELF.UserDefinedRole)); +END_ENTITY; + +ENTITY IfcActuatorType + SUBTYPE OF (IfcDistributionControlElementType); + PredefinedType : IfcActuatorTypeEnum; +END_ENTITY; + +ENTITY IfcAddress + ABSTRACT SUPERTYPE OF (ONEOF + (IfcPostalAddress + ,IfcTelecomAddress)); + Purpose : OPTIONAL IfcAddressTypeEnum; + Description : OPTIONAL IfcText; + UserDefinedPurpose : OPTIONAL IfcLabel; + INVERSE + OfPerson : SET [0:?] OF IfcPerson FOR Addresses; + OfOrganization : SET [0:?] OF IfcOrganization FOR Addresses; + WHERE + WR1 : (NOT(EXISTS(Purpose))) OR + ((Purpose <> IfcAddressTypeEnum.USERDEFINED) OR + ((Purpose = IfcAddressTypeEnum.USERDEFINED) AND + EXISTS(SELF.UserDefinedPurpose))); +END_ENTITY; + +ENTITY IfcAirTerminalBoxType + SUBTYPE OF (IfcFlowControllerType); + PredefinedType : IfcAirTerminalBoxTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcAirTerminalBoxTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcAirTerminalBoxTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcAirTerminalType + SUBTYPE OF (IfcFlowTerminalType); + PredefinedType : IfcAirTerminalTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcAirTerminalTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcAirTerminalTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcAirToAirHeatRecoveryType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcAirToAirHeatRecoveryTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcAirToAirHeatRecoveryTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcAirToAirHeatRecoveryTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcAlarmType + SUBTYPE OF (IfcDistributionControlElementType); + PredefinedType : IfcAlarmTypeEnum; +END_ENTITY; + +ENTITY IfcAngularDimension + SUBTYPE OF (IfcDimensionCurveDirectedCallout); +END_ENTITY; + +ENTITY IfcAnnotation + SUBTYPE OF (IfcProduct); + INVERSE + ContainedInStructure : SET [0:1] OF IfcRelContainedInSpatialStructure FOR RelatedElements; +END_ENTITY; + +ENTITY IfcAnnotationCurveOccurrence + SUPERTYPE OF (ONEOF + (IfcDimensionCurve + ,IfcProjectionCurve)) + SUBTYPE OF (IfcAnnotationOccurrence); + WHERE + WR31 : NOT(EXISTS(SELF\IfcStyledItem.Item)) OR + ('IFC2X3.IFCCURVE' IN TYPEOF (SELF\IfcStyledItem.Item)); +END_ENTITY; + +ENTITY IfcAnnotationFillArea + SUBTYPE OF (IfcGeometricRepresentationItem); + OuterBoundary : IfcCurve; + InnerBoundaries : OPTIONAL SET [1:?] OF IfcCurve; +END_ENTITY; + +ENTITY IfcAnnotationFillAreaOccurrence + SUBTYPE OF (IfcAnnotationOccurrence); + FillStyleTarget : OPTIONAL IfcPoint; + GlobalOrLocal : OPTIONAL IfcGlobalOrLocalEnum; + WHERE + WR31 : NOT(EXISTS(SELF\IfcStyledItem.Item)) OR + ('IFC2X3.IFCANNOTATIONFILLAREA' IN TYPEOF (SELF\IfcStyledItem.Item)); +END_ENTITY; + +ENTITY IfcAnnotationOccurrence + ABSTRACT SUPERTYPE OF (ONEOF + (IfcAnnotationCurveOccurrence + ,IfcAnnotationFillAreaOccurrence + ,IfcAnnotationSurfaceOccurrence + ,IfcAnnotationSymbolOccurrence + ,IfcAnnotationTextOccurrence)) + SUBTYPE OF (IfcStyledItem); +END_ENTITY; + +ENTITY IfcAnnotationSurface + SUBTYPE OF (IfcGeometricRepresentationItem); + Item : IfcGeometricRepresentationItem; + TextureCoordinates : OPTIONAL IfcTextureCoordinate; + WHERE + WR01 : SIZEOF([ + 'IFC2X3.IFCSURFACE', + 'IFC2X3.IFCSHELLBASEDSURFACEMODEL', + 'IFC2X3.IFCFACEBASEDSURFACEMODEL', + 'IFC2X3.IFCSOLIDMODEL', + 'IFC2X3.IFCBOOLEANRESULT', + 'IFC2X3.IFCCSGPRIMITIVE3D'] + * TYPEOF(Item) + ) >= 1; +END_ENTITY; + +ENTITY IfcAnnotationSurfaceOccurrence + SUBTYPE OF (IfcAnnotationOccurrence); + WHERE + WR31 : NOT(EXISTS(SELF\IfcStyledItem.Item)) OR + (SIZEOF( + ['IFC2X3.IFCSURFACE', + 'IFC2X3.IFCFACEBASEDSURFACEMODEL', + 'IFC2X3.IFCSHELLBASEDSURFACEMODEL', + 'IFC2X3.IFCSOLIDMODEL'] * + TYPEOF(SELF\IfcStyledItem.Item)) > 0); +END_ENTITY; + +ENTITY IfcAnnotationSymbolOccurrence + SUPERTYPE OF (ONEOF + (IfcTerminatorSymbol)) + SUBTYPE OF (IfcAnnotationOccurrence); + WHERE + WR31 : NOT(EXISTS(SELF\IfcStyledItem.Item)) OR + ('IFC2X3.IFCDEFINEDSYMBOL' IN TYPEOF (SELF\IfcStyledItem.Item)); +END_ENTITY; + +ENTITY IfcAnnotationTextOccurrence + SUBTYPE OF (IfcAnnotationOccurrence); + WHERE + WR31 : NOT(EXISTS(SELF\IfcStyledItem.Item)) OR + ('IFC2X3.IFCTEXTLITERAL' IN TYPEOF (SELF\IfcStyledItem.Item)); +END_ENTITY; + +ENTITY IfcApplication; + ApplicationDeveloper : IfcOrganization; + Version : IfcLabel; + ApplicationFullName : IfcLabel; + ApplicationIdentifier : IfcIdentifier; + UNIQUE + UR1 : ApplicationIdentifier; + UR2 : ApplicationFullName, Version; +END_ENTITY; + +ENTITY IfcAppliedValue + ABSTRACT SUPERTYPE OF (ONEOF + (IfcCostValue + ,IfcEnvironmentalImpactValue)); + Name : OPTIONAL IfcLabel; + Description : OPTIONAL IfcText; + AppliedValue : OPTIONAL IfcAppliedValueSelect; + UnitBasis : OPTIONAL IfcMeasureWithUnit; + ApplicableDate : OPTIONAL IfcDateTimeSelect; + FixedUntilDate : OPTIONAL IfcDateTimeSelect; + INVERSE + ValuesReferenced : SET [0:?] OF IfcReferencesValueDocument FOR ReferencingValues; + ValueOfComponents : SET [0:?] OF IfcAppliedValueRelationship FOR ComponentOfTotal; + IsComponentIn : SET [0:?] OF IfcAppliedValueRelationship FOR Components; + WHERE + WR1 : EXISTS (AppliedValue) OR + EXISTS (ValueOfComponents); +END_ENTITY; + +ENTITY IfcAppliedValueRelationship; + ComponentOfTotal : IfcAppliedValue; + Components : SET [1:?] OF IfcAppliedValue; + ArithmeticOperator : IfcArithmeticOperatorEnum; + Name : OPTIONAL IfcLabel; + Description : OPTIONAL IfcText; +END_ENTITY; + +ENTITY IfcApproval; + Description : OPTIONAL IfcText; + ApprovalDateTime : IfcDateTimeSelect; + ApprovalStatus : OPTIONAL IfcLabel; + ApprovalLevel : OPTIONAL IfcLabel; + ApprovalQualifier : OPTIONAL IfcText; + Name : IfcLabel; + Identifier : IfcIdentifier; + INVERSE + Actors : SET [0:?] OF IfcApprovalActorRelationship FOR Approval; + IsRelatedWith : SET [0:?] OF IfcApprovalRelationship FOR RelatedApproval; + Relates : SET [0:?] OF IfcApprovalRelationship FOR RelatingApproval; +END_ENTITY; + +ENTITY IfcApprovalActorRelationship; + Actor : IfcActorSelect; + Approval : IfcApproval; + Role : IfcActorRole; +END_ENTITY; + +ENTITY IfcApprovalPropertyRelationship; + ApprovedProperties : SET [1:?] OF IfcProperty; + Approval : IfcApproval; +END_ENTITY; + +ENTITY IfcApprovalRelationship; + RelatedApproval : IfcApproval; + RelatingApproval : IfcApproval; + Description : OPTIONAL IfcText; + Name : IfcLabel; +END_ENTITY; + +ENTITY IfcArbitraryClosedProfileDef + SUPERTYPE OF (ONEOF + (IfcArbitraryProfileDefWithVoids)) + SUBTYPE OF (IfcProfileDef); + OuterCurve : IfcCurve; + WHERE + WR1 : OuterCurve.Dim = 2; + WR2 : NOT('IFC2X3.IFCLINE' IN TYPEOF(OuterCurve)); + WR3 : NOT('IFC2X3.IFCOFFSETCURVE2D' IN TYPEOF(OuterCurve)); +END_ENTITY; + +ENTITY IfcArbitraryOpenProfileDef + SUPERTYPE OF (ONEOF + (IfcCenterLineProfileDef)) + SUBTYPE OF (IfcProfileDef); + Curve : IfcBoundedCurve; + WHERE + WR11 : ('IFC2X3.IFCCENTERLINEPROFILEDEF' IN TYPEOF(SELF)) OR + (SELF\IfcProfileDef.ProfileType = IfcProfileTypeEnum.CURVE); + WR12 : Curve.Dim = 2; +END_ENTITY; + +ENTITY IfcArbitraryProfileDefWithVoids + SUBTYPE OF (IfcArbitraryClosedProfileDef); + InnerCurves : SET [1:?] OF IfcCurve; + WHERE + WR1 : SELF\IfcProfileDef.ProfileType = AREA; + WR2 : SIZEOF(QUERY(temp <* InnerCurves | temp.Dim <> 2)) = 0; + WR3 : SIZEOF(QUERY(temp <* InnerCurves | 'IFC2X3.IFCLINE' IN TYPEOF(temp))) = 0; +END_ENTITY; + +ENTITY IfcAsset + SUBTYPE OF (IfcGroup); + AssetID : IfcIdentifier; + OriginalValue : IfcCostValue; + CurrentValue : IfcCostValue; + TotalReplacementCost : IfcCostValue; + Owner : IfcActorSelect; + User : IfcActorSelect; + ResponsiblePerson : IfcPerson; + IncorporationDate : IfcCalendarDate; + DepreciatedValue : IfcCostValue; + WHERE + WR1 : SIZEOF(QUERY(Temp <* SELF\IfcGroup.IsGroupedBy.RelatedObjects | NOT('IFC2X3.IFCELEMENT' IN TYPEOF(Temp)))) = 0; +END_ENTITY; + +ENTITY IfcAsymmetricIShapeProfileDef + SUBTYPE OF (IfcIShapeProfileDef); + TopFlangeWidth : IfcPositiveLengthMeasure; + TopFlangeThickness : OPTIONAL IfcPositiveLengthMeasure; + TopFlangeFilletRadius : OPTIONAL IfcPositiveLengthMeasure; + CentreOfGravityInY : OPTIONAL IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcAxis1Placement + SUBTYPE OF (IfcPlacement); + Axis : OPTIONAL IfcDirection; + DERIVE + Z : IfcDirection := NVL (IfcNormalise(Axis), IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0,0.0,1.0])); + WHERE + WR1 : (NOT (EXISTS (Axis))) OR (Axis.Dim = 3); + WR2 : SELF\IfcPlacement.Location.Dim = 3; +END_ENTITY; + +ENTITY IfcAxis2Placement2D + SUBTYPE OF (IfcPlacement); + RefDirection : OPTIONAL IfcDirection; + DERIVE + P : LIST [2:2] OF IfcDirection := IfcBuild2Axes(RefDirection); + WHERE + WR1 : (NOT (EXISTS (RefDirection))) OR (RefDirection.Dim = 2); + WR2 : SELF\IfcPlacement.Location.Dim = 2; +END_ENTITY; + +ENTITY IfcAxis2Placement3D + SUBTYPE OF (IfcPlacement); + Axis : OPTIONAL IfcDirection; + RefDirection : OPTIONAL IfcDirection; + DERIVE + P : LIST [3:3] OF IfcDirection := IfcBuildAxes(Axis, RefDirection); + WHERE + WR1 : SELF\IfcPlacement.Location.Dim = 3; + WR2 : (NOT (EXISTS (Axis))) OR (Axis.Dim = 3); + WR3 : (NOT (EXISTS (RefDirection))) OR (RefDirection.Dim = 3); + WR4 : (NOT (EXISTS (Axis))) OR (NOT (EXISTS (RefDirection))) OR (IfcCrossProduct(Axis,RefDirection).Magnitude > 0.0); + WR5 : NOT ((EXISTS (Axis)) XOR (EXISTS (RefDirection))); +END_ENTITY; + +ENTITY IfcBSplineCurve + ABSTRACT SUPERTYPE OF (ONEOF + (IfcBezierCurve)) + SUBTYPE OF (IfcBoundedCurve); + Degree : INTEGER; + ControlPointsList : LIST [2:?] OF IfcCartesianPoint; + CurveForm : IfcBSplineCurveForm; + ClosedCurve : LOGICAL; + SelfIntersect : LOGICAL; + DERIVE + ControlPoints : ARRAY [0:255] OF IfcCartesianPoint := IfcListToArray(ControlPointsList,0,UpperIndexOnControlPoints); + UpperIndexOnControlPoints : INTEGER := (SIZEOF(ControlPointsList) - 1); + WHERE + WR41 : SIZEOF(QUERY(Temp <* ControlPointsList | + Temp.Dim <> ControlPointsList[1].Dim)) + = 0; +END_ENTITY; + +ENTITY IfcBeam + SUBTYPE OF (IfcBuildingElement); +END_ENTITY; + +ENTITY IfcBeamType + SUBTYPE OF (IfcBuildingElementType); + PredefinedType : IfcBeamTypeEnum; +END_ENTITY; + +ENTITY IfcBezierCurve + SUPERTYPE OF (ONEOF + (IfcRationalBezierCurve)) + SUBTYPE OF (IfcBSplineCurve); +END_ENTITY; + +ENTITY IfcBlobTexture + SUBTYPE OF (IfcSurfaceTexture); + RasterFormat : IfcIdentifier; + RasterCode : BOOLEAN; + WHERE + WR11 : SELF.RasterFormat IN ['BMP', 'JPG', 'GIF', 'PNG']; +END_ENTITY; + +ENTITY IfcBlock + SUBTYPE OF (IfcCsgPrimitive3D); + XLength : IfcPositiveLengthMeasure; + YLength : IfcPositiveLengthMeasure; + ZLength : IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcBoilerType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcBoilerTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcBoilerTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcBoilerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcBooleanClippingResult + SUBTYPE OF (IfcBooleanResult); + WHERE + WR1 : ('IFC2X3.IFCSWEPTAREASOLID' IN TYPEOF(FirstOperand)) OR ('IFC2X3.IFCBOOLEANCLIPPINGRESULT' IN TYPEOF(FirstOperand)); + WR2 : ('IFC2X3.IFCHALFSPACESOLID' IN TYPEOF(SecondOperand)); + WR3 : Operator = DIFFERENCE; +END_ENTITY; + +ENTITY IfcBooleanResult + SUPERTYPE OF (ONEOF + (IfcBooleanClippingResult)) + SUBTYPE OF (IfcGeometricRepresentationItem); + Operator : IfcBooleanOperator; + FirstOperand : IfcBooleanOperand; + SecondOperand : IfcBooleanOperand; + DERIVE + Dim : IfcDimensionCount := FirstOperand.Dim; + WHERE + WR1 : FirstOperand.Dim = SecondOperand.Dim; +END_ENTITY; + +ENTITY IfcBoundaryCondition + ABSTRACT SUPERTYPE OF (ONEOF + (IfcBoundaryEdgeCondition + ,IfcBoundaryFaceCondition + ,IfcBoundaryNodeCondition)); + Name : OPTIONAL IfcLabel; +END_ENTITY; + +ENTITY IfcBoundaryEdgeCondition + SUBTYPE OF (IfcBoundaryCondition); + LinearStiffnessByLengthX : OPTIONAL IfcModulusOfLinearSubgradeReactionMeasure; + LinearStiffnessByLengthY : OPTIONAL IfcModulusOfLinearSubgradeReactionMeasure; + LinearStiffnessByLengthZ : OPTIONAL IfcModulusOfLinearSubgradeReactionMeasure; + RotationalStiffnessByLengthX : OPTIONAL IfcModulusOfRotationalSubgradeReactionMeasure; + RotationalStiffnessByLengthY : OPTIONAL IfcModulusOfRotationalSubgradeReactionMeasure; + RotationalStiffnessByLengthZ : OPTIONAL IfcModulusOfRotationalSubgradeReactionMeasure; +END_ENTITY; + +ENTITY IfcBoundaryFaceCondition + SUBTYPE OF (IfcBoundaryCondition); + LinearStiffnessByAreaX : OPTIONAL IfcModulusOfSubgradeReactionMeasure; + LinearStiffnessByAreaY : OPTIONAL IfcModulusOfSubgradeReactionMeasure; + LinearStiffnessByAreaZ : OPTIONAL IfcModulusOfSubgradeReactionMeasure; +END_ENTITY; + +ENTITY IfcBoundaryNodeCondition + SUPERTYPE OF (ONEOF + (IfcBoundaryNodeConditionWarping)) + SUBTYPE OF (IfcBoundaryCondition); + LinearStiffnessX : OPTIONAL IfcLinearStiffnessMeasure; + LinearStiffnessY : OPTIONAL IfcLinearStiffnessMeasure; + LinearStiffnessZ : OPTIONAL IfcLinearStiffnessMeasure; + RotationalStiffnessX : OPTIONAL IfcRotationalStiffnessMeasure; + RotationalStiffnessY : OPTIONAL IfcRotationalStiffnessMeasure; + RotationalStiffnessZ : OPTIONAL IfcRotationalStiffnessMeasure; +END_ENTITY; + +ENTITY IfcBoundaryNodeConditionWarping + SUBTYPE OF (IfcBoundaryNodeCondition); + WarpingStiffness : OPTIONAL IfcWarpingMomentMeasure; +END_ENTITY; + +ENTITY IfcBoundedCurve + ABSTRACT SUPERTYPE OF (ONEOF + (IfcBSplineCurve + ,IfcCompositeCurve + ,IfcPolyline + ,IfcTrimmedCurve)) + SUBTYPE OF (IfcCurve); +END_ENTITY; + +ENTITY IfcBoundedSurface + SUPERTYPE OF (ONEOF + (IfcCurveBoundedPlane + ,IfcRectangularTrimmedSurface)) + SUBTYPE OF (IfcSurface); +END_ENTITY; + +ENTITY IfcBoundingBox + SUBTYPE OF (IfcGeometricRepresentationItem); + Corner : IfcCartesianPoint; + XDim : IfcPositiveLengthMeasure; + YDim : IfcPositiveLengthMeasure; + ZDim : IfcPositiveLengthMeasure; + DERIVE + Dim : IfcDimensionCount := 3; +END_ENTITY; + +ENTITY IfcBoxedHalfSpace + SUBTYPE OF (IfcHalfSpaceSolid); + Enclosure : IfcBoundingBox; + WHERE + WR1 : NOT ('IFC2X3.IFCCURVEBOUNDEDPLANE' IN TYPEOF(SELF\IfcHalfSpaceSolid.BaseSurface)); +END_ENTITY; + +ENTITY IfcBuilding + SUBTYPE OF (IfcSpatialStructureElement); + ElevationOfRefHeight : OPTIONAL IfcLengthMeasure; + ElevationOfTerrain : OPTIONAL IfcLengthMeasure; + BuildingAddress : OPTIONAL IfcPostalAddress; +END_ENTITY; + +ENTITY IfcBuildingElement + ABSTRACT SUPERTYPE OF (ONEOF + (IfcBeam + ,IfcBuildingElementComponent + ,IfcBuildingElementProxy + ,IfcColumn + ,IfcCovering + ,IfcCurtainWall + ,IfcDoor + ,IfcFooting + ,IfcMember + ,IfcPile + ,IfcPlate + ,IfcRailing + ,IfcRamp + ,IfcRampFlight + ,IfcRoof + ,IfcSlab + ,IfcStair + ,IfcStairFlight + ,IfcWall + ,IfcWindow)) + SUBTYPE OF (IfcElement); +END_ENTITY; + +ENTITY IfcBuildingElementComponent + ABSTRACT SUPERTYPE OF (ONEOF + (IfcBuildingElementPart + ,IfcReinforcingElement)) + SUBTYPE OF (IfcBuildingElement); +END_ENTITY; + +ENTITY IfcBuildingElementPart + SUBTYPE OF (IfcBuildingElementComponent); +END_ENTITY; + +ENTITY IfcBuildingElementProxy + SUBTYPE OF (IfcBuildingElement); + CompositionType : OPTIONAL IfcElementCompositionEnum; + WHERE + WR1 : EXISTS(SELF\IfcRoot.Name); +END_ENTITY; + +ENTITY IfcBuildingElementProxyType + SUBTYPE OF (IfcBuildingElementType); + PredefinedType : IfcBuildingElementProxyTypeEnum; +END_ENTITY; + +ENTITY IfcBuildingElementType + ABSTRACT SUPERTYPE OF (ONEOF + (IfcBeamType + ,IfcBuildingElementProxyType + ,IfcColumnType + ,IfcCoveringType + ,IfcCurtainWallType + ,IfcMemberType + ,IfcPlateType + ,IfcRailingType + ,IfcRampFlightType + ,IfcSlabType + ,IfcStairFlightType + ,IfcWallType)) + SUBTYPE OF (IfcElementType); +END_ENTITY; + +ENTITY IfcBuildingStorey + SUBTYPE OF (IfcSpatialStructureElement); + Elevation : OPTIONAL IfcLengthMeasure; +END_ENTITY; + +ENTITY IfcCShapeProfileDef + SUBTYPE OF (IfcParameterizedProfileDef); + Depth : IfcPositiveLengthMeasure; + Width : IfcPositiveLengthMeasure; + WallThickness : IfcPositiveLengthMeasure; + Girth : IfcPositiveLengthMeasure; + InternalFilletRadius : OPTIONAL IfcPositiveLengthMeasure; + CentreOfGravityInX : OPTIONAL IfcPositiveLengthMeasure; + WHERE + WR1 : Girth < (Depth / 2.); + WR2 : NOT(EXISTS(InternalFilletRadius)) OR + ((InternalFilletRadius <= Width/2.) AND (InternalFilletRadius <= Depth/2.)); + WR3 : (WallThickness < Width/2.) AND (WallThickness < Depth/2.); +END_ENTITY; + +ENTITY IfcCableCarrierFittingType + SUBTYPE OF (IfcFlowFittingType); + PredefinedType : IfcCableCarrierFittingTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcCableCarrierFittingTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcCableCarrierFittingTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcCableCarrierSegmentType + SUBTYPE OF (IfcFlowSegmentType); + PredefinedType : IfcCableCarrierSegmentTypeEnum; +END_ENTITY; + +ENTITY IfcCableSegmentType + SUBTYPE OF (IfcFlowSegmentType); + PredefinedType : IfcCableSegmentTypeEnum; +END_ENTITY; + +ENTITY IfcCalendarDate; + DayComponent : IfcDayInMonthNumber; + MonthComponent : IfcMonthInYearNumber; + YearComponent : IfcYearNumber; + WHERE + WR21 : IfcValidCalendarDate (SELF); +END_ENTITY; + +ENTITY IfcCartesianPoint + SUBTYPE OF (IfcPoint); + Coordinates : LIST [1:3] OF IfcLengthMeasure; + DERIVE + Dim : IfcDimensionCount := HIINDEX(Coordinates); + WHERE + WR1 : HIINDEX(Coordinates) >= 2; +END_ENTITY; + +ENTITY IfcCartesianTransformationOperator + ABSTRACT SUPERTYPE OF (ONEOF + (IfcCartesianTransformationOperator2D + ,IfcCartesianTransformationOperator3D)) + SUBTYPE OF (IfcGeometricRepresentationItem); + Axis1 : OPTIONAL IfcDirection; + Axis2 : OPTIONAL IfcDirection; + LocalOrigin : IfcCartesianPoint; + Scale : OPTIONAL REAL; + DERIVE + Scl : REAL := NVL(Scale, 1.0); + Dim : IfcDimensionCount := LocalOrigin.Dim; + WHERE + WR1 : Scl > 0.0; +END_ENTITY; + +ENTITY IfcCartesianTransformationOperator2D + SUPERTYPE OF (ONEOF + (IfcCartesianTransformationOperator2DnonUniform)) + SUBTYPE OF (IfcCartesianTransformationOperator); + DERIVE + U : LIST [2:2] OF IfcDirection := IfcBaseAxis(2,SELF\IfcCartesianTransformationOperator.Axis1, + SELF\IfcCartesianTransformationOperator.Axis2,?); + WHERE + WR1 : SELF\IfcCartesianTransformationOperator.Dim = 2; + WR2 : NOT(EXISTS(SELF\IfcCartesianTransformationOperator.Axis1)) OR + (SELF\IfcCartesianTransformationOperator.Axis1.Dim = 2); + WR3 : NOT(EXISTS(SELF\IfcCartesianTransformationOperator.Axis2)) OR + (SELF\IfcCartesianTransformationOperator.Axis2.Dim = 2); +END_ENTITY; + +ENTITY IfcCartesianTransformationOperator2DnonUniform + SUBTYPE OF (IfcCartesianTransformationOperator2D); + Scale2 : OPTIONAL REAL; + DERIVE + Scl2 : REAL := NVL(Scale2, SELF\IfcCartesianTransformationOperator.Scl); + WHERE + WR1 : Scl2 > 0.0; +END_ENTITY; + +ENTITY IfcCartesianTransformationOperator3D + SUPERTYPE OF (ONEOF + (IfcCartesianTransformationOperator3DnonUniform)) + SUBTYPE OF (IfcCartesianTransformationOperator); + Axis3 : OPTIONAL IfcDirection; + DERIVE + U : LIST [3:3] OF IfcDirection := IfcBaseAxis(3,SELF\IfcCartesianTransformationOperator.Axis1, + SELF\IfcCartesianTransformationOperator.Axis2,Axis3); + WHERE + WR1 : SELF\IfcCartesianTransformationOperator.Dim = 3; + WR2 : NOT(EXISTS(SELF\IfcCartesianTransformationOperator.Axis1)) OR + (SELF\IfcCartesianTransformationOperator.Axis1.Dim = 3); + WR3 : NOT(EXISTS(SELF\IfcCartesianTransformationOperator.Axis2)) OR + (SELF\IfcCartesianTransformationOperator.Axis2.Dim = 3); + WR4 : NOT(EXISTS(Axis3)) OR (Axis3.Dim = 3); +END_ENTITY; + +ENTITY IfcCartesianTransformationOperator3DnonUniform + SUBTYPE OF (IfcCartesianTransformationOperator3D); + Scale2 : OPTIONAL REAL; + Scale3 : OPTIONAL REAL; + DERIVE + Scl2 : REAL := NVL(Scale2, SELF\IfcCartesianTransformationOperator.Scl); + Scl3 : REAL := NVL(Scale3, SELF\IfcCartesianTransformationOperator.Scl); + WHERE + WR1 : Scl2 > 0.0; + WR2 : Scl3 > 0.0; +END_ENTITY; + +ENTITY IfcCenterLineProfileDef + SUBTYPE OF (IfcArbitraryOpenProfileDef); + Thickness : IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcChamferEdgeFeature + SUBTYPE OF (IfcEdgeFeature); + Width : OPTIONAL IfcPositiveLengthMeasure; + Height : OPTIONAL IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcChillerType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcChillerTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcChillerTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcChillerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcCircle + SUBTYPE OF (IfcConic); + Radius : IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcCircleHollowProfileDef + SUBTYPE OF (IfcCircleProfileDef); + WallThickness : IfcPositiveLengthMeasure; + WHERE + WR1 : WallThickness < SELF\IfcCircleProfileDef.Radius; +END_ENTITY; + +ENTITY IfcCircleProfileDef + SUPERTYPE OF (ONEOF + (IfcCircleHollowProfileDef)) + SUBTYPE OF (IfcParameterizedProfileDef); + Radius : IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcClassification; + Source : IfcLabel; + Edition : IfcLabel; + EditionDate : OPTIONAL IfcCalendarDate; + Name : IfcLabel; + INVERSE + Contains : SET [0:?] OF IfcClassificationItem FOR ItemOf; +END_ENTITY; + +ENTITY IfcClassificationItem; + Notation : IfcClassificationNotationFacet; + ItemOf : OPTIONAL IfcClassification; + Title : IfcLabel; + INVERSE + IsClassifiedItemIn : SET [0:1] OF IfcClassificationItemRelationship FOR RelatedItems; + IsClassifyingItemIn : SET [0:1] OF IfcClassificationItemRelationship FOR RelatingItem; +END_ENTITY; + +ENTITY IfcClassificationItemRelationship; + RelatingItem : IfcClassificationItem; + RelatedItems : SET [1:?] OF IfcClassificationItem; +END_ENTITY; + +ENTITY IfcClassificationNotation; + NotationFacets : SET [1:?] OF IfcClassificationNotationFacet; +END_ENTITY; + +ENTITY IfcClassificationNotationFacet; + NotationValue : IfcLabel; +END_ENTITY; + +ENTITY IfcClassificationReference + SUBTYPE OF (IfcExternalReference); + ReferencedSource : OPTIONAL IfcClassification; +END_ENTITY; + +ENTITY IfcClosedShell + SUBTYPE OF (IfcConnectedFaceSet); +END_ENTITY; + +ENTITY IfcCoilType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcCoilTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcCoilTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcCoilTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcColourRgb + SUBTYPE OF (IfcColourSpecification); + Red : IfcNormalisedRatioMeasure; + Green : IfcNormalisedRatioMeasure; + Blue : IfcNormalisedRatioMeasure; +END_ENTITY; + +ENTITY IfcColourSpecification + ABSTRACT SUPERTYPE OF (ONEOF + (IfcColourRgb)); + Name : OPTIONAL IfcLabel; +END_ENTITY; + +ENTITY IfcColumn + SUBTYPE OF (IfcBuildingElement); +END_ENTITY; + +ENTITY IfcColumnType + SUBTYPE OF (IfcBuildingElementType); + PredefinedType : IfcColumnTypeEnum; +END_ENTITY; + +ENTITY IfcComplexProperty + SUBTYPE OF (IfcProperty); + UsageName : IfcIdentifier; + HasProperties : SET [1:?] OF IfcProperty; + WHERE + WR21 : SIZEOF(QUERY(temp <* HasProperties | SELF :=: temp)) = 0; + WR22 : IfcUniquePropertyName(HasProperties); +END_ENTITY; + +ENTITY IfcCompositeCurve + SUPERTYPE OF (ONEOF + (Ifc2DCompositeCurve)) + SUBTYPE OF (IfcBoundedCurve); + Segments : LIST [1:?] OF IfcCompositeCurveSegment; + SelfIntersect : LOGICAL; + DERIVE + NSegments : INTEGER := SIZEOF(Segments); + ClosedCurve : LOGICAL := Segments[NSegments].Transition <> Discontinuous; + WHERE + WR41 : ((NOT ClosedCurve) AND (SIZEOF(QUERY(Temp <* Segments | Temp.Transition = Discontinuous)) = 1)) OR ((ClosedCurve) AND (SIZEOF(QUERY(Temp <* Segments | Temp.Transition = Discontinuous)) = 0)); + WR42 : SIZEOF( QUERY( Temp <* Segments | Temp.Dim <> Segments[1].Dim)) = 0; +END_ENTITY; + +ENTITY IfcCompositeCurveSegment + SUBTYPE OF (IfcGeometricRepresentationItem); + Transition : IfcTransitionCode; + SameSense : BOOLEAN; + ParentCurve : IfcCurve; + DERIVE + Dim : IfcDimensionCount := ParentCurve.Dim; + INVERSE + UsingCurves : SET [1:?] OF IfcCompositeCurve FOR Segments; + WHERE + WR1 : ('IFC2X3.IFCBOUNDEDCURVE' IN TYPEOF(ParentCurve)); +END_ENTITY; + +ENTITY IfcCompositeProfileDef + SUBTYPE OF (IfcProfileDef); + Profiles : SET [2:?] OF IfcProfileDef; + Label : OPTIONAL IfcLabel; + WHERE + WR1 : SIZEOF(QUERY(temp <* Profiles | temp.ProfileType <> Profiles[1].ProfileType)) = 0; + WR2 : SIZEOF(QUERY(temp <* Profiles | 'IFC2X3.IFCCOMPOSITEPROFILEDEF' IN TYPEOF(temp))) = 0; +END_ENTITY; + +ENTITY IfcCompressorType + SUBTYPE OF (IfcFlowMovingDeviceType); + PredefinedType : IfcCompressorTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcCompressorTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcCompressorTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcCondenserType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcCondenserTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcCondenserTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcCondenserTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcCondition + SUBTYPE OF (IfcGroup); +END_ENTITY; + +ENTITY IfcConditionCriterion + SUBTYPE OF (IfcControl); + Criterion : IfcConditionCriterionSelect; + CriterionDateTime : IfcDateTimeSelect; + WHERE + WR1 : EXISTS(SELF\IfcRoot.Name); +END_ENTITY; + +ENTITY IfcConic + ABSTRACT SUPERTYPE OF (ONEOF + (IfcCircle + ,IfcEllipse)) + SUBTYPE OF (IfcCurve); + Position : IfcAxis2Placement; +END_ENTITY; + +ENTITY IfcConnectedFaceSet + SUPERTYPE OF (ONEOF + (IfcClosedShell + ,IfcOpenShell)) + SUBTYPE OF (IfcTopologicalRepresentationItem); + CfsFaces : SET [1:?] OF IfcFace; +END_ENTITY; + +ENTITY IfcConnectionCurveGeometry + SUBTYPE OF (IfcConnectionGeometry); + CurveOnRelatingElement : IfcCurveOrEdgeCurve; + CurveOnRelatedElement : OPTIONAL IfcCurveOrEdgeCurve; +END_ENTITY; + +ENTITY IfcConnectionGeometry + ABSTRACT SUPERTYPE OF (ONEOF + (IfcConnectionCurveGeometry + ,IfcConnectionPointGeometry + ,IfcConnectionPortGeometry + ,IfcConnectionSurfaceGeometry)); +END_ENTITY; + +ENTITY IfcConnectionPointEccentricity + SUBTYPE OF (IfcConnectionPointGeometry); + EccentricityInX : OPTIONAL IfcLengthMeasure; + EccentricityInY : OPTIONAL IfcLengthMeasure; + EccentricityInZ : OPTIONAL IfcLengthMeasure; +END_ENTITY; + +ENTITY IfcConnectionPointGeometry + SUPERTYPE OF (ONEOF + (IfcConnectionPointEccentricity)) + SUBTYPE OF (IfcConnectionGeometry); + PointOnRelatingElement : IfcPointOrVertexPoint; + PointOnRelatedElement : OPTIONAL IfcPointOrVertexPoint; +END_ENTITY; + +ENTITY IfcConnectionPortGeometry + SUBTYPE OF (IfcConnectionGeometry); + LocationAtRelatingElement : IfcAxis2Placement; + LocationAtRelatedElement : OPTIONAL IfcAxis2Placement; + ProfileOfPort : IfcProfileDef; +END_ENTITY; + +ENTITY IfcConnectionSurfaceGeometry + SUBTYPE OF (IfcConnectionGeometry); + SurfaceOnRelatingElement : IfcSurfaceOrFaceSurface; + SurfaceOnRelatedElement : OPTIONAL IfcSurfaceOrFaceSurface; +END_ENTITY; + +ENTITY IfcConstraint + ABSTRACT SUPERTYPE OF (ONEOF + (IfcMetric + ,IfcObjective)); + Name : IfcLabel; + Description : OPTIONAL IfcText; + ConstraintGrade : IfcConstraintEnum; + ConstraintSource : OPTIONAL IfcLabel; + CreatingActor : OPTIONAL IfcActorSelect; + CreationTime : OPTIONAL IfcDateTimeSelect; + UserDefinedGrade : OPTIONAL IfcLabel; + INVERSE + ClassifiedAs : SET [0:?] OF IfcConstraintClassificationRelationship FOR ClassifiedConstraint; + RelatesConstraints : SET [0:?] OF IfcConstraintRelationship FOR RelatingConstraint; + IsRelatedWith : SET [0:?] OF IfcConstraintRelationship FOR RelatedConstraints; + PropertiesForConstraint : SET [0:?] OF IfcPropertyConstraintRelationship FOR RelatingConstraint; + Aggregates : SET [0:?] OF IfcConstraintAggregationRelationship FOR RelatingConstraint; + IsAggregatedIn : SET [0:?] OF IfcConstraintAggregationRelationship FOR RelatedConstraints; + WHERE + WR11 : (ConstraintGrade <> IfcConstraintEnum.USERDEFINED) OR + ((ConstraintGrade = IfcConstraintEnum.USERDEFINED) AND EXISTS(SELF\IfcConstraint.UserDefinedGrade)); +END_ENTITY; + +ENTITY IfcConstraintAggregationRelationship; + Name : OPTIONAL IfcLabel; + Description : OPTIONAL IfcText; + RelatingConstraint : IfcConstraint; + RelatedConstraints : LIST [1:?] OF UNIQUE IfcConstraint; + LogicalAggregator : IfcLogicalOperatorEnum; + WHERE + WR11 : SIZEOF(QUERY(temp <* RelatedConstraints | + temp :=: RelatingConstraint + )) = 0; +END_ENTITY; + +ENTITY IfcConstraintClassificationRelationship; + ClassifiedConstraint : IfcConstraint; + RelatedClassifications : SET [1:?] OF IfcClassificationNotationSelect; +END_ENTITY; + +ENTITY IfcConstraintRelationship; + Name : OPTIONAL IfcLabel; + Description : OPTIONAL IfcText; + RelatingConstraint : IfcConstraint; + RelatedConstraints : SET [1:?] OF IfcConstraint; + WHERE + WR11 : SIZEOF(QUERY(temp <* RelatedConstraints | temp :=: RelatingConstraint )) = 0; +END_ENTITY; + +ENTITY IfcConstructionEquipmentResource + SUBTYPE OF (IfcConstructionResource); +END_ENTITY; + +ENTITY IfcConstructionMaterialResource + SUBTYPE OF (IfcConstructionResource); + Suppliers : OPTIONAL SET [1:?] OF IfcActorSelect; + UsageRatio : OPTIONAL IfcRatioMeasure; + WHERE + WR1 : SIZEOF(SELF\IfcResource.ResourceOf) <=1; + WR2 : NOT(EXISTS(SELF\IfcResource.ResourceOf[1])) OR + (SELF\IfcResource.ResourceOf[1].RelatedObjectsType = IfcObjectTypeEnum.PRODUCT); +END_ENTITY; + +ENTITY IfcConstructionProductResource + SUBTYPE OF (IfcConstructionResource); + WHERE + WR1 : SIZEOF(SELF\IfcResource.ResourceOf) <=1; + WR2 : NOT(EXISTS(SELF\IfcResource.ResourceOf[1])) OR + (SELF\IfcResource.ResourceOf[1].RelatedObjectsType = IfcObjectTypeEnum.PRODUCT); +END_ENTITY; + +ENTITY IfcConstructionResource + ABSTRACT SUPERTYPE OF (ONEOF + (IfcConstructionEquipmentResource + ,IfcConstructionMaterialResource + ,IfcConstructionProductResource + ,IfcCrewResource + ,IfcLaborResource + ,IfcSubContractResource)) + SUBTYPE OF (IfcResource); + ResourceIdentifier : OPTIONAL IfcIdentifier; + ResourceGroup : OPTIONAL IfcLabel; + ResourceConsumption : OPTIONAL IfcResourceConsumptionEnum; + BaseQuantity : OPTIONAL IfcMeasureWithUnit; +END_ENTITY; + +ENTITY IfcContextDependentUnit + SUBTYPE OF (IfcNamedUnit); + Name : IfcLabel; +END_ENTITY; + +ENTITY IfcControl + ABSTRACT SUPERTYPE OF (ONEOF + (IfcActionRequest + ,IfcConditionCriterion + ,IfcCostItem + ,IfcCostSchedule + ,IfcEquipmentStandard + ,IfcFurnitureStandard + ,IfcPerformanceHistory + ,IfcPermit + ,IfcProjectOrder + ,IfcProjectOrderRecord + ,IfcScheduleTimeControl + ,IfcServiceLife + ,IfcSpaceProgram + ,IfcTimeSeriesSchedule + ,IfcWorkControl)) + SUBTYPE OF (IfcObject); + INVERSE + Controls : SET [0:?] OF IfcRelAssignsToControl FOR RelatingControl; +END_ENTITY; + +ENTITY IfcControllerType + SUBTYPE OF (IfcDistributionControlElementType); + PredefinedType : IfcControllerTypeEnum; +END_ENTITY; + +ENTITY IfcConversionBasedUnit + SUBTYPE OF (IfcNamedUnit); + Name : IfcLabel; + ConversionFactor : IfcMeasureWithUnit; +END_ENTITY; + +ENTITY IfcCooledBeamType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcCooledBeamTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcCooledBeamTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcCooledBeamTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcCoolingTowerType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcCoolingTowerTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcCoolingTowerTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcCoolingTowerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcCoordinatedUniversalTimeOffset; + HourOffset : IfcHourInDay; + MinuteOffset : OPTIONAL IfcMinuteInHour; + Sense : IfcAheadOrBehind; +END_ENTITY; + +ENTITY IfcCostItem + SUBTYPE OF (IfcControl); +END_ENTITY; + +ENTITY IfcCostSchedule + SUBTYPE OF (IfcControl); + SubmittedBy : OPTIONAL IfcActorSelect; + PreparedBy : OPTIONAL IfcActorSelect; + SubmittedOn : OPTIONAL IfcDateTimeSelect; + Status : OPTIONAL IfcLabel; + TargetUsers : OPTIONAL SET [1:?] OF IfcActorSelect; + UpdateDate : OPTIONAL IfcDateTimeSelect; + ID : IfcIdentifier; + PredefinedType : IfcCostScheduleTypeEnum; + UNIQUE + UR2 : ID; +END_ENTITY; + +ENTITY IfcCostValue + SUBTYPE OF (IfcAppliedValue); + CostType : IfcLabel; + Condition : OPTIONAL IfcText; +END_ENTITY; + +ENTITY IfcCovering + SUBTYPE OF (IfcBuildingElement); + PredefinedType : OPTIONAL IfcCoveringTypeEnum; + INVERSE + CoversSpaces : SET [0:1] OF IfcRelCoversSpaces FOR RelatedCoverings; + Covers : SET [0:1] OF IfcRelCoversBldgElements FOR RelatedCoverings; +END_ENTITY; + +ENTITY IfcCoveringType + SUBTYPE OF (IfcBuildingElementType); + PredefinedType : IfcCoveringTypeEnum; +END_ENTITY; + +ENTITY IfcCraneRailAShapeProfileDef + SUBTYPE OF (IfcParameterizedProfileDef); + OverallHeight : IfcPositiveLengthMeasure; + BaseWidth2 : IfcPositiveLengthMeasure; + Radius : OPTIONAL IfcPositiveLengthMeasure; + HeadWidth : IfcPositiveLengthMeasure; + HeadDepth2 : IfcPositiveLengthMeasure; + HeadDepth3 : IfcPositiveLengthMeasure; + WebThickness : IfcPositiveLengthMeasure; + BaseWidth4 : IfcPositiveLengthMeasure; + BaseDepth1 : IfcPositiveLengthMeasure; + BaseDepth2 : IfcPositiveLengthMeasure; + BaseDepth3 : IfcPositiveLengthMeasure; + CentreOfGravityInY : OPTIONAL IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcCraneRailFShapeProfileDef + SUBTYPE OF (IfcParameterizedProfileDef); + OverallHeight : IfcPositiveLengthMeasure; + HeadWidth : IfcPositiveLengthMeasure; + Radius : OPTIONAL IfcPositiveLengthMeasure; + HeadDepth2 : IfcPositiveLengthMeasure; + HeadDepth3 : IfcPositiveLengthMeasure; + WebThickness : IfcPositiveLengthMeasure; + BaseDepth1 : IfcPositiveLengthMeasure; + BaseDepth2 : IfcPositiveLengthMeasure; + CentreOfGravityInY : OPTIONAL IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcCrewResource + SUBTYPE OF (IfcConstructionResource); +END_ENTITY; + +ENTITY IfcCsgPrimitive3D + ABSTRACT SUPERTYPE OF (ONEOF + (IfcBlock + ,IfcRectangularPyramid + ,IfcRightCircularCone + ,IfcRightCircularCylinder + ,IfcSphere)) + SUBTYPE OF (IfcGeometricRepresentationItem); + Position : IfcAxis2Placement3D; + DERIVE + Dim : IfcDimensionCount := 3; +END_ENTITY; + +ENTITY IfcCsgSolid + SUBTYPE OF (IfcSolidModel); + TreeRootExpression : IfcCsgSelect; +END_ENTITY; + +ENTITY IfcCurrencyRelationship; + RelatingMonetaryUnit : IfcMonetaryUnit; + RelatedMonetaryUnit : IfcMonetaryUnit; + ExchangeRate : IfcPositiveRatioMeasure; + RateDateTime : IfcDateAndTime; + RateSource : OPTIONAL IfcLibraryInformation; +END_ENTITY; + +ENTITY IfcCurtainWall + SUBTYPE OF (IfcBuildingElement); +END_ENTITY; + +ENTITY IfcCurtainWallType + SUBTYPE OF (IfcBuildingElementType); + PredefinedType : IfcCurtainWallTypeEnum; +END_ENTITY; + +ENTITY IfcCurve + ABSTRACT SUPERTYPE OF (ONEOF + (IfcBoundedCurve + ,IfcConic + ,IfcLine + ,IfcOffsetCurve2D + ,IfcOffsetCurve3D)) + SUBTYPE OF (IfcGeometricRepresentationItem); + DERIVE + Dim : IfcDimensionCount := IfcCurveDim(SELF); +END_ENTITY; + +ENTITY IfcCurveBoundedPlane + SUBTYPE OF (IfcBoundedSurface); + BasisSurface : IfcPlane; + OuterBoundary : IfcCurve; + InnerBoundaries : SET [0:?] OF IfcCurve; + DERIVE + Dim : IfcDimensionCount := BasisSurface.Dim; +END_ENTITY; + +ENTITY IfcCurveStyle + SUBTYPE OF (IfcPresentationStyle); + CurveFont : OPTIONAL IfcCurveFontOrScaledCurveFontSelect; + CurveWidth : OPTIONAL IfcSizeSelect; + CurveColour : OPTIONAL IfcColour; + WHERE + WR11 : (NOT(EXISTS(CurveWidth))) OR + ('IFC2X3.IFCPOSITIVELENGTHMEASURE' IN TYPEOF(CurveWidth)) OR + (('IFC2X3.IFCDESCRIPTIVEMEASURE' IN TYPEOF(CurveWidth)) AND + (CurveWidth = 'by layer')); +END_ENTITY; + +ENTITY IfcCurveStyleFont; + Name : OPTIONAL IfcLabel; + PatternList : LIST [1:?] OF IfcCurveStyleFontPattern; +END_ENTITY; + +ENTITY IfcCurveStyleFontAndScaling; + Name : OPTIONAL IfcLabel; + CurveFont : IfcCurveStyleFontSelect; + CurveFontScaling : IfcPositiveRatioMeasure; +END_ENTITY; + +ENTITY IfcCurveStyleFontPattern; + VisibleSegmentLength : IfcLengthMeasure; + InvisibleSegmentLength : IfcPositiveLengthMeasure; + WHERE + WR01 : VisibleSegmentLength >= 0.; +END_ENTITY; + +ENTITY IfcDamperType + SUBTYPE OF (IfcFlowControllerType); + PredefinedType : IfcDamperTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcDamperTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcDamperTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcDateAndTime; + DateComponent : IfcCalendarDate; + TimeComponent : IfcLocalTime; +END_ENTITY; + +ENTITY IfcDefinedSymbol + SUBTYPE OF (IfcGeometricRepresentationItem); + Definition : IfcDefinedSymbolSelect; + Target : IfcCartesianTransformationOperator2D; +END_ENTITY; + +ENTITY IfcDerivedProfileDef + SUBTYPE OF (IfcProfileDef); + ParentProfile : IfcProfileDef; + Operator : IfcCartesianTransformationOperator2D; + Label : OPTIONAL IfcLabel; + WHERE + WR1 : SELF\IfcProfileDef.ProfileType = ParentProfile.ProfileType; +END_ENTITY; + +ENTITY IfcDerivedUnit; + Elements : SET [1:?] OF IfcDerivedUnitElement; + UnitType : IfcDerivedUnitEnum; + UserDefinedType : OPTIONAL IfcLabel; + DERIVE + Dimensions : IfcDimensionalExponents := IfcDeriveDimensionalExponents(SELF); + WHERE + WR1 : (SIZEOF (Elements) > 1) OR ((SIZEOF (Elements) = 1) AND (Elements[1].Exponent <> 1 )); + WR2 : (UnitType <> IfcDerivedUnitEnum.USERDEFINED) OR + ((UnitType = IfcDerivedUnitEnum.USERDEFINED) AND + (EXISTS(SELF.UserDefinedType))); +END_ENTITY; + +ENTITY IfcDerivedUnitElement; + Unit : IfcNamedUnit; + Exponent : INTEGER; +END_ENTITY; + +ENTITY IfcDiameterDimension + SUBTYPE OF (IfcDimensionCurveDirectedCallout); +END_ENTITY; + +ENTITY IfcDimensionCalloutRelationship + SUBTYPE OF (IfcDraughtingCalloutRelationship); + WHERE + WR11 : SELF\IfcDraughtingCalloutRelationship.Name IN ['primary','secondary']; + WR12 : SIZEOF(TYPEOF(SELF\IfcDraughtingCalloutRelationship.RelatingDraughtingCallout) * [ + 'IFC2X3.IFCANGULARDIMENSION', + 'IFC2X3.IFCDIAMETERDIMENSION', + 'IFC2X3.IFCLINEARDIMENSION', + 'IFC2X3.IFCRADIUSDIMENSION']) = 1; + WR13 : NOT ('IFC2X3.IFCDIMENSIONCURVEDIRECTEDCALLOUT' + IN TYPEOF (SELF\IfcDraughtingCalloutRelationship.RelatedDraughtingCallout)); +END_ENTITY; + +ENTITY IfcDimensionCurve + SUBTYPE OF (IfcAnnotationCurveOccurrence); + INVERSE + AnnotatedBySymbols : SET [0:2] OF IfcTerminatorSymbol FOR AnnotatedCurve; + WHERE + WR51 : SIZEOF(USEDIN(SELF,'IFC2X3.IFCDRAUGHTINGCALLOUT.CONTENTS')) + >= 1; + WR52 : (SIZEOF(QUERY (Dct1 <* USEDIN(SELF,'IFC2X3.' + + 'IFCTERMINATORSYMBOL.ANNOTATEDCURVE') | (Dct1.Role = IfcDimensionExtentUsage.ORIGIN))) <= 1) + AND + (SIZEOF(QUERY (Dct2 <* USEDIN(SELF,'IFC2X3.' + + 'IFCTERMINATORSYMBOL.ANNOTATEDCURVE') | (Dct2.Role = IfcDimensionExtentUsage.TARGET))) <= 1); + WR53 : SIZEOF(QUERY (Dct <* AnnotatedBySymbols | + NOT('IFC2X3.IFCDIMENSIONCURVETERMINATOR' IN TYPEOF(Dct)))) + = 0; +END_ENTITY; + +ENTITY IfcDimensionCurveDirectedCallout + SUPERTYPE OF (ONEOF + (IfcAngularDimension + ,IfcDiameterDimension + ,IfcLinearDimension + ,IfcRadiusDimension)) + SUBTYPE OF (IfcDraughtingCallout); + WHERE + WR41 : SIZEOF(QUERY (Dc <* SELF\IfcDraughtingCallout.Contents | ( + 'IFC2X3.IFCDIMENSIONCURVE' IN TYPEOF(Dc)))) + = 1; + WR42 : SIZEOF (QUERY (Dc <* SELF.contents | + ('IFC2X3.IFCPROJECTIONCURVE' IN + TYPEOF (Dc)))) <= 2; +END_ENTITY; + +ENTITY IfcDimensionCurveTerminator + SUBTYPE OF (IfcTerminatorSymbol); + Role : IfcDimensionExtentUsage; + WHERE + WR61 : 'IFC2X3.IFCDIMENSIONCURVE' IN TYPEOF + (SELF\IfcTerminatorSymbol.AnnotatedCurve); +END_ENTITY; + +ENTITY IfcDimensionPair + SUBTYPE OF (IfcDraughtingCalloutRelationship); + WHERE + WR11 : SELF.Name IN ['chained','parallel']; + WR12 : SIZEOF(TYPEOF(SELF.RelatingDraughtingCallout) * [ + 'IFC2X3.IFCANGULARDIMENSION', + 'IFC2X3.IFCDIAMETERDIMENSION', + 'IFC2X3.IFCLINEARDIMENSION', + 'IFC2X3.IFCRADIUSDIMENSION']) = 1; + WR13 : SIZEOF(TYPEOF(SELF.RelatedDraughtingCallout) * [ + 'IFC2X3.IFCANGULARDIMENSION', + 'IFC2X3.IFCDIAMETERDIMENSION', + 'IFC2X3.IFCLINEARDIMENSION', + 'IFC2X3.IFCRADIUSDIMENSION']) = 1; +END_ENTITY; + +ENTITY IfcDimensionalExponents; + LengthExponent : INTEGER; + MassExponent : INTEGER; + TimeExponent : INTEGER; + ElectricCurrentExponent : INTEGER; + ThermodynamicTemperatureExponent : INTEGER; + AmountOfSubstanceExponent : INTEGER; + LuminousIntensityExponent : INTEGER; +END_ENTITY; + +ENTITY IfcDirection + SUBTYPE OF (IfcGeometricRepresentationItem); + DirectionRatios : LIST [2:3] OF REAL; + DERIVE + Dim : IfcDimensionCount := HIINDEX(DirectionRatios); +END_ENTITY; + +ENTITY IfcDiscreteAccessory + SUBTYPE OF (IfcElementComponent); +END_ENTITY; + +ENTITY IfcDiscreteAccessoryType + SUPERTYPE OF (ONEOF + (IfcVibrationIsolatorType)) + SUBTYPE OF (IfcElementComponentType); +END_ENTITY; + +ENTITY IfcDistributionChamberElement + SUBTYPE OF (IfcDistributionFlowElement); +END_ENTITY; + +ENTITY IfcDistributionChamberElementType + SUBTYPE OF (IfcDistributionFlowElementType); + PredefinedType : IfcDistributionChamberElementTypeEnum; +END_ENTITY; + +ENTITY IfcDistributionControlElement + SUBTYPE OF (IfcDistributionElement); + ControlElementId : OPTIONAL IfcIdentifier; + INVERSE + AssignedToFlowElement : SET [0:1] OF IfcRelFlowControlElements FOR RelatedControlElements; +END_ENTITY; + +ENTITY IfcDistributionControlElementType + ABSTRACT SUPERTYPE OF (ONEOF + (IfcActuatorType + ,IfcAlarmType + ,IfcControllerType + ,IfcFlowInstrumentType + ,IfcSensorType)) + SUBTYPE OF (IfcDistributionElementType); +END_ENTITY; + +ENTITY IfcDistributionElement + SUPERTYPE OF (ONEOF + (IfcDistributionControlElement + ,IfcDistributionFlowElement)) + SUBTYPE OF (IfcElement); +END_ENTITY; + +ENTITY IfcDistributionElementType + SUPERTYPE OF (ONEOF + (IfcDistributionControlElementType + ,IfcDistributionFlowElementType)) + SUBTYPE OF (IfcElementType); +END_ENTITY; + +ENTITY IfcDistributionFlowElement + SUPERTYPE OF (ONEOF + (IfcDistributionChamberElement + ,IfcEnergyConversionDevice + ,IfcFlowController + ,IfcFlowFitting + ,IfcFlowMovingDevice + ,IfcFlowSegment + ,IfcFlowStorageDevice + ,IfcFlowTerminal + ,IfcFlowTreatmentDevice)) + SUBTYPE OF (IfcDistributionElement); + INVERSE + HasControlElements : SET [0:1] OF IfcRelFlowControlElements FOR RelatingFlowElement; +END_ENTITY; + +ENTITY IfcDistributionFlowElementType + ABSTRACT SUPERTYPE OF (ONEOF + (IfcDistributionChamberElementType + ,IfcEnergyConversionDeviceType + ,IfcFlowControllerType + ,IfcFlowFittingType + ,IfcFlowMovingDeviceType + ,IfcFlowSegmentType + ,IfcFlowStorageDeviceType + ,IfcFlowTerminalType + ,IfcFlowTreatmentDeviceType)) + SUBTYPE OF (IfcDistributionElementType); +END_ENTITY; + +ENTITY IfcDistributionPort + SUBTYPE OF (IfcPort); + FlowDirection : OPTIONAL IfcFlowDirectionEnum; +END_ENTITY; + +ENTITY IfcDocumentElectronicFormat; + FileExtension : OPTIONAL IfcLabel; + MimeContentType : OPTIONAL IfcLabel; + MimeSubtype : OPTIONAL IfcLabel; + WHERE + WR1 : EXISTS(FileExtension) OR EXISTS(MimeContentType); +END_ENTITY; + +ENTITY IfcDocumentInformation; + DocumentId : IfcIdentifier; + Name : IfcLabel; + Description : OPTIONAL IfcText; + DocumentReferences : OPTIONAL SET [1:?] OF IfcDocumentReference; + Purpose : OPTIONAL IfcText; + IntendedUse : OPTIONAL IfcText; + Scope : OPTIONAL IfcText; + Revision : OPTIONAL IfcLabel; + DocumentOwner : OPTIONAL IfcActorSelect; + Editors : OPTIONAL SET [1:?] OF IfcActorSelect; + CreationTime : OPTIONAL IfcDateAndTime; + LastRevisionTime : OPTIONAL IfcDateAndTime; + ElectronicFormat : OPTIONAL IfcDocumentElectronicFormat; + ValidFrom : OPTIONAL IfcCalendarDate; + ValidUntil : OPTIONAL IfcCalendarDate; + Confidentiality : OPTIONAL IfcDocumentConfidentialityEnum; + Status : OPTIONAL IfcDocumentStatusEnum; + INVERSE + IsPointedTo : SET [0:?] OF IfcDocumentInformationRelationship FOR RelatedDocuments; + IsPointer : SET [0:1] OF IfcDocumentInformationRelationship FOR RelatingDocument; +END_ENTITY; + +ENTITY IfcDocumentInformationRelationship; + RelatingDocument : IfcDocumentInformation; + RelatedDocuments : SET [1:?] OF IfcDocumentInformation; + RelationshipType : OPTIONAL IfcLabel; +END_ENTITY; + +ENTITY IfcDocumentReference + SUBTYPE OF (IfcExternalReference); + INVERSE + ReferenceToDocument : SET [0:1] OF IfcDocumentInformation FOR DocumentReferences; + WHERE + WR1 : EXISTS(Name) XOR EXISTS(ReferenceToDocument[1]); +END_ENTITY; + +ENTITY IfcDoor + SUBTYPE OF (IfcBuildingElement); + OverallHeight : OPTIONAL IfcPositiveLengthMeasure; + OverallWidth : OPTIONAL IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcDoorLiningProperties + SUBTYPE OF (IfcPropertySetDefinition); + LiningDepth : OPTIONAL IfcPositiveLengthMeasure; + LiningThickness : OPTIONAL IfcPositiveLengthMeasure; + ThresholdDepth : OPTIONAL IfcPositiveLengthMeasure; + ThresholdThickness : OPTIONAL IfcPositiveLengthMeasure; + TransomThickness : OPTIONAL IfcPositiveLengthMeasure; + TransomOffset : OPTIONAL IfcLengthMeasure; + LiningOffset : OPTIONAL IfcLengthMeasure; + ThresholdOffset : OPTIONAL IfcLengthMeasure; + CasingThickness : OPTIONAL IfcPositiveLengthMeasure; + CasingDepth : OPTIONAL IfcPositiveLengthMeasure; + ShapeAspectStyle : OPTIONAL IfcShapeAspect; + WHERE + WR31 : NOT(NOT(EXISTS(LiningDepth)) AND EXISTS(LiningThickness)); + WR32 : NOT(NOT(EXISTS(ThresholdDepth)) AND EXISTS(ThresholdThickness)); + WR33 : (EXISTS(TransomOffset) AND EXISTS(TransomThickness)) XOR + (NOT(EXISTS(TransomOffset)) AND NOT(EXISTS(TransomThickness))); + WR34 : (EXISTS(CasingDepth) AND EXISTS(CasingThickness)) XOR + (NOT(EXISTS(CasingDepth)) AND NOT(EXISTS(CasingThickness))); + WR35 : EXISTS(SELF\IfcPropertySetDefinition.DefinesType[1]) AND + ('IFC2X3.IFCDOORSTYLE' IN TYPEOF(SELF\IfcPropertySetDefinition.DefinesType[1])); +END_ENTITY; + +ENTITY IfcDoorPanelProperties + SUBTYPE OF (IfcPropertySetDefinition); + PanelDepth : OPTIONAL IfcPositiveLengthMeasure; + PanelOperation : IfcDoorPanelOperationEnum; + PanelWidth : OPTIONAL IfcNormalisedRatioMeasure; + PanelPosition : IfcDoorPanelPositionEnum; + ShapeAspectStyle : OPTIONAL IfcShapeAspect; + WHERE + WR31 : EXISTS(SELF\IfcPropertySetDefinition.DefinesType[1]) AND + ('IFC2X3.IFCDOORSTYLE' IN TYPEOF(SELF\IfcPropertySetDefinition.DefinesType[1])); +END_ENTITY; + +ENTITY IfcDoorStyle + SUBTYPE OF (IfcTypeProduct); + OperationType : IfcDoorStyleOperationEnum; + ConstructionType : IfcDoorStyleConstructionEnum; + ParameterTakesPrecedence : BOOLEAN; + Sizeable : BOOLEAN; +END_ENTITY; + +ENTITY IfcDraughtingCallout + SUPERTYPE OF (ONEOF + (IfcDimensionCurveDirectedCallout + ,IfcStructuredDimensionCallout)) + SUBTYPE OF (IfcGeometricRepresentationItem); + Contents : SET [1:?] OF IfcDraughtingCalloutElement; + INVERSE + IsRelatedFromCallout : SET [0:?] OF IfcDraughtingCalloutRelationship FOR RelatedDraughtingCallout; + IsRelatedToCallout : SET [0:?] OF IfcDraughtingCalloutRelationship FOR RelatingDraughtingCallout; +END_ENTITY; + +ENTITY IfcDraughtingCalloutRelationship + SUPERTYPE OF (ONEOF + (IfcDimensionCalloutRelationship + ,IfcDimensionPair)); + Name : OPTIONAL IfcLabel; + Description : OPTIONAL IfcText; + RelatingDraughtingCallout : IfcDraughtingCallout; + RelatedDraughtingCallout : IfcDraughtingCallout; +END_ENTITY; + +ENTITY IfcDraughtingPreDefinedColour + SUBTYPE OF (IfcPreDefinedColour); + WHERE + WR31 : SELF\IfcPreDefinedItem.Name IN ['black','red','green','blue','yellow', + 'magenta','cyan','white','by layer']; +END_ENTITY; + +ENTITY IfcDraughtingPreDefinedCurveFont + SUBTYPE OF (IfcPreDefinedCurveFont); + WHERE + WR31 : SELF\IfcPredefinedItem.Name IN + ['continuous', + 'chain', + 'chain double dash', + 'dashed', + 'dotted', + 'by layer']; +END_ENTITY; + +ENTITY IfcDraughtingPreDefinedTextFont + SUBTYPE OF (IfcPreDefinedTextFont); + WHERE + WR31 : SELF\IfcPreDefinedItem.Name IN ['ISO 3098-1 font A','ISO 3098-1 font B']; +END_ENTITY; + +ENTITY IfcDuctFittingType + SUBTYPE OF (IfcFlowFittingType); + PredefinedType : IfcDuctFittingTypeEnum; + WHERE + WR2 : (PredefinedType <> IfcDuctFittingTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcDuctFittingTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcDuctSegmentType + SUBTYPE OF (IfcFlowSegmentType); + PredefinedType : IfcDuctSegmentTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcDuctSegmentTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcDuctSegmentTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcDuctSilencerType + SUBTYPE OF (IfcFlowTreatmentDeviceType); + PredefinedType : IfcDuctSilencerTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcDuctSilencerTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcDuctSilencerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcEdge + SUPERTYPE OF (ONEOF + (IfcEdgeCurve + ,IfcOrientedEdge + ,IfcSubedge)) + SUBTYPE OF (IfcTopologicalRepresentationItem); + EdgeStart : IfcVertex; + EdgeEnd : IfcVertex; +END_ENTITY; + +ENTITY IfcEdgeCurve + SUBTYPE OF (IfcEdge); + EdgeGeometry : IfcCurve; + SameSense : BOOLEAN; +END_ENTITY; + +ENTITY IfcEdgeFeature + ABSTRACT SUPERTYPE OF (ONEOF + (IfcChamferEdgeFeature + ,IfcRoundedEdgeFeature)) + SUBTYPE OF (IfcFeatureElementSubtraction); + FeatureLength : OPTIONAL IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcEdgeLoop + SUBTYPE OF (IfcLoop); + EdgeList : LIST [1:?] OF IfcOrientedEdge; + DERIVE + Ne : INTEGER := SIZEOF(EdgeList); + WHERE + WR1 : (EdgeList[1].EdgeStart) :=: (EdgeList[Ne].EdgeEnd); + WR2 : IfcLoopHeadToTail(SELF); +END_ENTITY; + +ENTITY IfcElectricApplianceType + SUBTYPE OF (IfcFlowTerminalType); + PredefinedType : IfcElectricApplianceTypeEnum; +END_ENTITY; + +ENTITY IfcElectricDistributionPoint + SUBTYPE OF (IfcFlowController); + DistributionPointFunction : IfcElectricDistributionPointFunctionEnum; + UserDefinedFunction : OPTIONAL IfcLabel; + WHERE + WR31 : (DistributionPointFunction <> IfcElectricDistributionPointFunctionEnum.USERDEFINED) OR + ((DistributionPointFunction = IfcElectricDistributionPointFunctionEnum.USERDEFINED) AND EXISTS(SELF\IfcElectricDistributionPoint.UserDefinedFunction)); +END_ENTITY; + +ENTITY IfcElectricFlowStorageDeviceType + SUBTYPE OF (IfcFlowStorageDeviceType); + PredefinedType : IfcElectricFlowStorageDeviceTypeEnum; +END_ENTITY; + +ENTITY IfcElectricGeneratorType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcElectricGeneratorTypeEnum; +END_ENTITY; + +ENTITY IfcElectricHeaterType + SUBTYPE OF (IfcFlowTerminalType); + PredefinedType : IfcElectricHeaterTypeEnum; +END_ENTITY; + +ENTITY IfcElectricMotorType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcElectricMotorTypeEnum; +END_ENTITY; + +ENTITY IfcElectricTimeControlType + SUBTYPE OF (IfcFlowControllerType); + PredefinedType : IfcElectricTimeControlTypeEnum; +END_ENTITY; + +ENTITY IfcElectricalBaseProperties + SUBTYPE OF (IfcEnergyProperties); + ElectricCurrentType : OPTIONAL IfcElectricCurrentEnum; + InputVoltage : IfcElectricVoltageMeasure; + InputFrequency : IfcFrequencyMeasure; + FullLoadCurrent : OPTIONAL IfcElectricCurrentMeasure; + MinimumCircuitCurrent : OPTIONAL IfcElectricCurrentMeasure; + MaximumPowerInput : OPTIONAL IfcPowerMeasure; + RatedPowerInput : OPTIONAL IfcPowerMeasure; + InputPhase : INTEGER; +END_ENTITY; + +ENTITY IfcElectricalCircuit + SUBTYPE OF (IfcSystem); +END_ENTITY; + +ENTITY IfcElectricalElement + SUBTYPE OF (IfcElement); +END_ENTITY; + +ENTITY IfcElement + ABSTRACT SUPERTYPE OF (ONEOF + (IfcBuildingElement + ,IfcDistributionElement + ,IfcElectricalElement + ,IfcElementAssembly + ,IfcElementComponent + ,IfcEquipmentElement + ,IfcFeatureElement + ,IfcFurnishingElement + ,IfcTransportElement + ,IfcVirtualElement)) + SUBTYPE OF (IfcProduct); + Tag : OPTIONAL IfcIdentifier; + INVERSE + FillsVoids : SET [0:1] OF IfcRelFillsElement FOR RelatedBuildingElement; + ConnectedTo : SET [0:?] OF IfcRelConnectsElements FOR RelatingElement; + HasCoverings : SET [0:?] OF IfcRelCoversBldgElements FOR RelatingBuildingElement; + HasProjections : SET [0:?] OF IfcRelProjectsElement FOR RelatingElement; + HasStructuralMember : SET [0:?] OF IfcRelConnectsStructuralElement FOR RelatingElement; + ReferencedInStructures : SET [0:?] OF IfcRelReferencedInSpatialStructure FOR RelatedElements; + HasPorts : SET [0:?] OF IfcRelConnectsPortToElement FOR RelatedElement; + HasOpenings : SET [0:?] OF IfcRelVoidsElement FOR RelatingBuildingElement; + IsConnectionRealization : SET [0:?] OF IfcRelConnectsWithRealizingElements FOR RealizingElements; + ProvidesBoundaries : SET [0:?] OF IfcRelSpaceBoundary FOR RelatedBuildingElement; + ConnectedFrom : SET [0:?] OF IfcRelConnectsElements FOR RelatedElement; + ContainedInStructure : SET [0:1] OF IfcRelContainedInSpatialStructure FOR RelatedElements; +END_ENTITY; + +ENTITY IfcElementAssembly + SUBTYPE OF (IfcElement); + AssemblyPlace : OPTIONAL IfcAssemblyPlaceEnum; + PredefinedType : IfcElementAssemblyTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcElementAssemblyTypeEnum.USERDEFINED) OR ((PredefinedType = IfcElementAssemblyTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcObject.ObjectType)); +END_ENTITY; + +ENTITY IfcElementComponent + ABSTRACT SUPERTYPE OF (ONEOF + (IfcDiscreteAccessory + ,IfcFastener)) + SUBTYPE OF (IfcElement); +END_ENTITY; + +ENTITY IfcElementComponentType + ABSTRACT SUPERTYPE OF (ONEOF + (IfcDiscreteAccessoryType + ,IfcFastenerType)) + SUBTYPE OF (IfcElementType); +END_ENTITY; + +ENTITY IfcElementQuantity + SUBTYPE OF (IfcPropertySetDefinition); + MethodOfMeasurement : OPTIONAL IfcLabel; + Quantities : SET [1:?] OF IfcPhysicalQuantity; +END_ENTITY; + +ENTITY IfcElementType + ABSTRACT SUPERTYPE OF (ONEOF + (IfcBuildingElementType + ,IfcDistributionElementType + ,IfcElementComponentType + ,IfcFurnishingElementType + ,IfcSpatialStructureElementType + ,IfcTransportElementType)) + SUBTYPE OF (IfcTypeProduct); + ElementType : OPTIONAL IfcLabel; +END_ENTITY; + +ENTITY IfcElementarySurface + ABSTRACT SUPERTYPE OF (ONEOF + (IfcPlane)) + SUBTYPE OF (IfcSurface); + Position : IfcAxis2Placement3D; + DERIVE + Dim : IfcDimensionCount := Position.Dim; +END_ENTITY; + +ENTITY IfcEllipse + SUBTYPE OF (IfcConic); + SemiAxis1 : IfcPositiveLengthMeasure; + SemiAxis2 : IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcEllipseProfileDef + SUBTYPE OF (IfcParameterizedProfileDef); + SemiAxis1 : IfcPositiveLengthMeasure; + SemiAxis2 : IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcEnergyConversionDevice + SUBTYPE OF (IfcDistributionFlowElement); +END_ENTITY; + +ENTITY IfcEnergyConversionDeviceType + ABSTRACT SUPERTYPE OF (ONEOF + (IfcAirToAirHeatRecoveryType + ,IfcBoilerType + ,IfcChillerType + ,IfcCoilType + ,IfcCondenserType + ,IfcCooledBeamType + ,IfcCoolingTowerType + ,IfcElectricGeneratorType + ,IfcElectricMotorType + ,IfcEvaporativeCoolerType + ,IfcEvaporatorType + ,IfcHeatExchangerType + ,IfcHumidifierType + ,IfcMotorConnectionType + ,IfcSpaceHeaterType + ,IfcTransformerType + ,IfcTubeBundleType + ,IfcUnitaryEquipmentType)) + SUBTYPE OF (IfcDistributionFlowElementType); +END_ENTITY; + +ENTITY IfcEnergyProperties + SUPERTYPE OF (ONEOF + (IfcElectricalBaseProperties)) + SUBTYPE OF (IfcPropertySetDefinition); + EnergySequence : OPTIONAL IfcEnergySequenceEnum; + UserDefinedEnergySequence : OPTIONAL IfcLabel; +END_ENTITY; + +ENTITY IfcEnvironmentalImpactValue + SUBTYPE OF (IfcAppliedValue); + ImpactType : IfcLabel; + Category : IfcEnvironmentalImpactCategoryEnum; + UserDefinedCategory : OPTIONAL IfcLabel; + WHERE + WR1 : (Category <> IfcEnvironmentalImpactCategoryEnum.USERDEFINED) OR + ((Category = IfcEnvironmentalImpactCategoryEnum.USERDEFINED) AND EXISTS(SELF\IfcEnvironmentalImpactValue.UserDefinedCategory)); +END_ENTITY; + +ENTITY IfcEquipmentElement + SUBTYPE OF (IfcElement); +END_ENTITY; + +ENTITY IfcEquipmentStandard + SUBTYPE OF (IfcControl); +END_ENTITY; + +ENTITY IfcEvaporativeCoolerType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcEvaporativeCoolerTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcEvaporativeCoolerTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcEvaporativeCoolerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcEvaporatorType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcEvaporatorTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcEvaporatorTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcEvaporatorTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcExtendedMaterialProperties + SUBTYPE OF (IfcMaterialProperties); + ExtendedProperties : SET [1:?] OF IfcProperty; + Description : OPTIONAL IfcText; + Name : IfcLabel; +END_ENTITY; + +ENTITY IfcExternalReference + ABSTRACT SUPERTYPE OF (ONEOF + (IfcClassificationReference + ,IfcDocumentReference + ,IfcExternallyDefinedHatchStyle + ,IfcExternallyDefinedSurfaceStyle + ,IfcExternallyDefinedSymbol + ,IfcExternallyDefinedTextFont + ,IfcLibraryReference)); + Location : OPTIONAL IfcLabel; + ItemReference : OPTIONAL IfcIdentifier; + Name : OPTIONAL IfcLabel; + WHERE + WR1 : EXISTS(ItemReference) OR EXISTS(Location) OR EXISTS(Name); +END_ENTITY; + +ENTITY IfcExternallyDefinedHatchStyle + SUBTYPE OF (IfcExternalReference); +END_ENTITY; + +ENTITY IfcExternallyDefinedSurfaceStyle + SUBTYPE OF (IfcExternalReference); +END_ENTITY; + +ENTITY IfcExternallyDefinedSymbol + SUBTYPE OF (IfcExternalReference); +END_ENTITY; + +ENTITY IfcExternallyDefinedTextFont + SUBTYPE OF (IfcExternalReference); +END_ENTITY; + +ENTITY IfcExtrudedAreaSolid + SUBTYPE OF (IfcSweptAreaSolid); + ExtrudedDirection : IfcDirection; + Depth : IfcPositiveLengthMeasure; + WHERE + WR31 : IfcDotProduct(IfcRepresentationItem() || IfcGeometricRepresentationItem() || IfcDirection([0.0,0.0,1.0]), SELF.ExtrudedDirection) <> 0.0; +END_ENTITY; + +ENTITY IfcFace + SUPERTYPE OF (ONEOF + (IfcFaceSurface)) + SUBTYPE OF (IfcTopologicalRepresentationItem); + Bounds : SET [1:?] OF IfcFaceBound; + WHERE + WR1 : SIZEOF(QUERY(temp <* Bounds | 'IFC2X3.IFCFACEOUTERBOUND' IN TYPEOF(temp))) <= 1; +END_ENTITY; + +ENTITY IfcFaceBasedSurfaceModel + SUBTYPE OF (IfcGeometricRepresentationItem); + FbsmFaces : SET [1:?] OF IfcConnectedFaceSet; + DERIVE + Dim : IfcDimensionCount := 3; +END_ENTITY; + +ENTITY IfcFaceBound + SUPERTYPE OF (ONEOF + (IfcFaceOuterBound)) + SUBTYPE OF (IfcTopologicalRepresentationItem); + Bound : IfcLoop; + Orientation : BOOLEAN; +END_ENTITY; + +ENTITY IfcFaceOuterBound + SUBTYPE OF (IfcFaceBound); +END_ENTITY; + +ENTITY IfcFaceSurface + SUBTYPE OF (IfcFace); + FaceSurface : IfcSurface; + SameSense : BOOLEAN; +END_ENTITY; + +ENTITY IfcFacetedBrep + SUBTYPE OF (IfcManifoldSolidBrep); +END_ENTITY; + +ENTITY IfcFacetedBrepWithVoids + SUBTYPE OF (IfcManifoldSolidBrep); + Voids : SET [1:?] OF IfcClosedShell; +END_ENTITY; + +ENTITY IfcFailureConnectionCondition + SUBTYPE OF (IfcStructuralConnectionCondition); + TensionFailureX : OPTIONAL IfcForceMeasure; + TensionFailureY : OPTIONAL IfcForceMeasure; + TensionFailureZ : OPTIONAL IfcForceMeasure; + CompressionFailureX : OPTIONAL IfcForceMeasure; + CompressionFailureY : OPTIONAL IfcForceMeasure; + CompressionFailureZ : OPTIONAL IfcForceMeasure; +END_ENTITY; + +ENTITY IfcFanType + SUBTYPE OF (IfcFlowMovingDeviceType); + PredefinedType : IfcFanTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcFanTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcFanTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcFastener + SUPERTYPE OF (ONEOF + (IfcMechanicalFastener)) + SUBTYPE OF (IfcElementComponent); +END_ENTITY; + +ENTITY IfcFastenerType + SUPERTYPE OF (ONEOF + (IfcMechanicalFastenerType)) + SUBTYPE OF (IfcElementComponentType); +END_ENTITY; + +ENTITY IfcFeatureElement + ABSTRACT SUPERTYPE OF (ONEOF + (IfcFeatureElementAddition + ,IfcFeatureElementSubtraction)) + SUBTYPE OF (IfcElement); +END_ENTITY; + +ENTITY IfcFeatureElementAddition + ABSTRACT SUPERTYPE OF (ONEOF + (IfcProjectionElement)) + SUBTYPE OF (IfcFeatureElement); + INVERSE + ProjectsElements : IfcRelProjectsElement FOR RelatedFeatureElement; +END_ENTITY; + +ENTITY IfcFeatureElementSubtraction + ABSTRACT SUPERTYPE OF (ONEOF + (IfcEdgeFeature + ,IfcOpeningElement)) + SUBTYPE OF (IfcFeatureElement); + INVERSE + VoidsElements : IfcRelVoidsElement FOR RelatedOpeningElement; +END_ENTITY; + +ENTITY IfcFillAreaStyle + SUBTYPE OF (IfcPresentationStyle); + FillStyles : SET [1:?] OF IfcFillStyleSelect; + WHERE + WR11 : SIZEOF(QUERY(Style <* SELF.FillStyles | + 'IFC2X3.IFCCOLOUR' IN + TYPEOF(Style) + )) <= 1; + WR12 : SIZEOF(QUERY(Style <* SELF.FillStyles | + 'IFC2X3.IFCEXTERNALLYDEFINEDHATCHSTYLE' IN + TYPEOF(Style) + )) <= 1; + WR13 : (SIZEOF(QUERY(Style <* SELF.FillStyles | + 'IFC2X3.IFCEXTERNALLYDEFINEDHATCHSTYLE' IN + TYPEOF(Style) + )) >= 1) + XOR + (SIZEOF(QUERY(Style <* SELF.FillStyles | + 'IFC2X3.IFCFILLAREASTYLEHATCHING' IN + TYPEOF(Style) + )) >= 1) + XOR + (SIZEOF(QUERY(Style <* SELF.FillStyles | + 'IFC2X3.IFCFILLAREASTYLETILES' IN + TYPEOF(Style) + )) >= 1); +END_ENTITY; + +ENTITY IfcFillAreaStyleHatching + SUBTYPE OF (IfcGeometricRepresentationItem); + HatchLineAppearance : IfcCurveStyle; + StartOfNextHatchLine : IfcHatchLineDistanceSelect; + PointOfReferenceHatchLine : OPTIONAL IfcCartesianPoint; + PatternStart : OPTIONAL IfcCartesianPoint; + HatchLineAngle : IfcPlaneAngleMeasure; + WHERE + WR21 : NOT( + 'IFC2X3.IFCTWODIRECTIONREPEATFACTOR' + IN TYPEOF(StartOfNextHatchLine) + ); + WR22 : NOT(EXISTS(PatternStart)) + OR (PatternStart.Dim = 2); + WR23 : NOT(EXISTS(PointOfReferenceHatchLine)) + OR (PointOfReferenceHatchLine.Dim = 2); +END_ENTITY; + +ENTITY IfcFillAreaStyleTileSymbolWithStyle + SUBTYPE OF (IfcGeometricRepresentationItem); + Symbol : IfcAnnotationSymbolOccurrence; +END_ENTITY; + +ENTITY IfcFillAreaStyleTiles + SUBTYPE OF (IfcGeometricRepresentationItem); + TilingPattern : IfcOneDirectionRepeatFactor; + Tiles : SET [1:?] OF IfcFillAreaStyleTileShapeSelect; + TilingScale : IfcPositiveRatioMeasure; +END_ENTITY; + +ENTITY IfcFilterType + SUBTYPE OF (IfcFlowTreatmentDeviceType); + PredefinedType : IfcFilterTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcFilterTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcFilterTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcFireSuppressionTerminalType + SUBTYPE OF (IfcFlowTerminalType); + PredefinedType : IfcFireSuppressionTerminalTypeEnum; +END_ENTITY; + +ENTITY IfcFlowController + SUPERTYPE OF (ONEOF + (IfcElectricDistributionPoint)) + SUBTYPE OF (IfcDistributionFlowElement); +END_ENTITY; + +ENTITY IfcFlowControllerType + ABSTRACT SUPERTYPE OF (ONEOF + (IfcAirTerminalBoxType + ,IfcDamperType + ,IfcElectricTimeControlType + ,IfcFlowMeterType + ,IfcProtectiveDeviceType + ,IfcSwitchingDeviceType + ,IfcValveType)) + SUBTYPE OF (IfcDistributionFlowElementType); +END_ENTITY; + +ENTITY IfcFlowFitting + SUBTYPE OF (IfcDistributionFlowElement); +END_ENTITY; + +ENTITY IfcFlowFittingType + ABSTRACT SUPERTYPE OF (ONEOF + (IfcCableCarrierFittingType + ,IfcDuctFittingType + ,IfcJunctionBoxType + ,IfcPipeFittingType)) + SUBTYPE OF (IfcDistributionFlowElementType); +END_ENTITY; + +ENTITY IfcFlowInstrumentType + SUBTYPE OF (IfcDistributionControlElementType); + PredefinedType : IfcFlowInstrumentTypeEnum; +END_ENTITY; + +ENTITY IfcFlowMeterType + SUBTYPE OF (IfcFlowControllerType); + PredefinedType : IfcFlowMeterTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcFlowMeterTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcFlowMeterTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcFlowMovingDevice + SUBTYPE OF (IfcDistributionFlowElement); +END_ENTITY; + +ENTITY IfcFlowMovingDeviceType + ABSTRACT SUPERTYPE OF (ONEOF + (IfcCompressorType + ,IfcFanType + ,IfcPumpType)) + SUBTYPE OF (IfcDistributionFlowElementType); +END_ENTITY; + +ENTITY IfcFlowSegment + SUBTYPE OF (IfcDistributionFlowElement); +END_ENTITY; + +ENTITY IfcFlowSegmentType + ABSTRACT SUPERTYPE OF (ONEOF + (IfcCableCarrierSegmentType + ,IfcCableSegmentType + ,IfcDuctSegmentType + ,IfcPipeSegmentType)) + SUBTYPE OF (IfcDistributionFlowElementType); +END_ENTITY; + +ENTITY IfcFlowStorageDevice + SUBTYPE OF (IfcDistributionFlowElement); +END_ENTITY; + +ENTITY IfcFlowStorageDeviceType + ABSTRACT SUPERTYPE OF (ONEOF + (IfcElectricFlowStorageDeviceType + ,IfcTankType)) + SUBTYPE OF (IfcDistributionFlowElementType); +END_ENTITY; + +ENTITY IfcFlowTerminal + SUBTYPE OF (IfcDistributionFlowElement); +END_ENTITY; + +ENTITY IfcFlowTerminalType + ABSTRACT SUPERTYPE OF (ONEOF + (IfcAirTerminalType + ,IfcElectricApplianceType + ,IfcElectricHeaterType + ,IfcFireSuppressionTerminalType + ,IfcGasTerminalType + ,IfcLampType + ,IfcLightFixtureType + ,IfcOutletType + ,IfcSanitaryTerminalType + ,IfcStackTerminalType + ,IfcWasteTerminalType)) + SUBTYPE OF (IfcDistributionFlowElementType); +END_ENTITY; + +ENTITY IfcFlowTreatmentDevice + SUBTYPE OF (IfcDistributionFlowElement); +END_ENTITY; + +ENTITY IfcFlowTreatmentDeviceType + ABSTRACT SUPERTYPE OF (ONEOF + (IfcDuctSilencerType + ,IfcFilterType)) + SUBTYPE OF (IfcDistributionFlowElementType); +END_ENTITY; + +ENTITY IfcFluidFlowProperties + SUBTYPE OF (IfcPropertySetDefinition); + PropertySource : IfcPropertySourceEnum; + FlowConditionTimeSeries : OPTIONAL IfcTimeSeries; + VelocityTimeSeries : OPTIONAL IfcTimeSeries; + FlowrateTimeSeries : OPTIONAL IfcTimeSeries; + Fluid : IfcMaterial; + PressureTimeSeries : OPTIONAL IfcTimeSeries; + UserDefinedPropertySource : OPTIONAL IfcLabel; + TemperatureSingleValue : OPTIONAL IfcThermodynamicTemperatureMeasure; + WetBulbTemperatureSingleValue : OPTIONAL IfcThermodynamicTemperatureMeasure; + WetBulbTemperatureTimeSeries : OPTIONAL IfcTimeSeries; + TemperatureTimeSeries : OPTIONAL IfcTimeSeries; + FlowrateSingleValue : OPTIONAL IfcDerivedMeasureValue; + FlowConditionSingleValue : OPTIONAL IfcPositiveRatioMeasure; + VelocitySingleValue : OPTIONAL IfcLinearVelocityMeasure; + PressureSingleValue : OPTIONAL IfcPressureMeasure; +END_ENTITY; + +ENTITY IfcFooting + SUBTYPE OF (IfcBuildingElement); + PredefinedType : IfcFootingTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcFootingTypeEnum.USERDEFINED) OR ((PredefinedType = IfcFootingTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcObject.ObjectType)); +END_ENTITY; + +ENTITY IfcFuelProperties + SUBTYPE OF (IfcMaterialProperties); + CombustionTemperature : OPTIONAL IfcThermodynamicTemperatureMeasure; + CarbonContent : OPTIONAL IfcPositiveRatioMeasure; + LowerHeatingValue : OPTIONAL IfcHeatingValueMeasure; + HigherHeatingValue : OPTIONAL IfcHeatingValueMeasure; + UNIQUE + UR11 : Material; +END_ENTITY; + +ENTITY IfcFurnishingElement + SUBTYPE OF (IfcElement); +END_ENTITY; + +ENTITY IfcFurnishingElementType + SUPERTYPE OF (ONEOF + (IfcFurnitureType + ,IfcSystemFurnitureElementType)) + SUBTYPE OF (IfcElementType); +END_ENTITY; + +ENTITY IfcFurnitureStandard + SUBTYPE OF (IfcControl); +END_ENTITY; + +ENTITY IfcFurnitureType + SUBTYPE OF (IfcFurnishingElementType); + AssemblyPlace : IfcAssemblyPlaceEnum; +END_ENTITY; + +ENTITY IfcGasTerminalType + SUBTYPE OF (IfcFlowTerminalType); + PredefinedType : IfcGasTerminalTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcGasTerminalTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcGasTerminalTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcGeneralMaterialProperties + SUBTYPE OF (IfcMaterialProperties); + MolecularWeight : OPTIONAL IfcMolecularWeightMeasure; + Porosity : OPTIONAL IfcNormalisedRatioMeasure; + MassDensity : OPTIONAL IfcMassDensityMeasure; + UNIQUE + UR11 : Material; +END_ENTITY; + +ENTITY IfcGeneralProfileProperties + SUPERTYPE OF (ONEOF + (IfcStructuralProfileProperties)) + SUBTYPE OF (IfcProfileProperties); + PhysicalWeight : OPTIONAL IfcMassPerLengthMeasure; + Perimeter : OPTIONAL IfcPositiveLengthMeasure; + MinimumPlateThickness : OPTIONAL IfcPositiveLengthMeasure; + MaximumPlateThickness : OPTIONAL IfcPositiveLengthMeasure; + CrossSectionArea : OPTIONAL IfcAreaMeasure; + WHERE + WR1 : NOT(EXISTS(CrossSectionArea)) OR (CrossSectionArea > 0.); +END_ENTITY; + +ENTITY IfcGeometricCurveSet + SUBTYPE OF (IfcGeometricSet); + WHERE + WR1 : SIZEOF(QUERY(Temp <* SELF\IfcGeometricSet.Elements | + 'IFC2X3.IFCSURFACE' IN TYPEOF(Temp))) = 0; +END_ENTITY; + +ENTITY IfcGeometricRepresentationContext + SUPERTYPE OF (ONEOF + (IfcGeometricRepresentationSubContext)) + SUBTYPE OF (IfcRepresentationContext); + CoordinateSpaceDimension : IfcDimensionCount; + Precision : OPTIONAL REAL; + WorldCoordinateSystem : IfcAxis2Placement; + TrueNorth : OPTIONAL IfcDirection; + INVERSE + HasSubContexts : SET [0:?] OF IfcGeometricRepresentationSubContext FOR ParentContext; +END_ENTITY; + +ENTITY IfcGeometricRepresentationItem + ABSTRACT SUPERTYPE OF (ONEOF + (IfcAnnotationFillArea + ,IfcAnnotationSurface + ,IfcBooleanResult + ,IfcBoundingBox + ,IfcCartesianTransformationOperator + ,IfcCompositeCurveSegment + ,IfcCsgPrimitive3D + ,IfcCurve + ,IfcDefinedSymbol + ,IfcDirection + ,IfcDraughtingCallout + ,IfcFaceBasedSurfaceModel + ,IfcFillAreaStyleHatching + ,IfcFillAreaStyleTileSymbolWithStyle + ,IfcFillAreaStyleTiles + ,IfcGeometricSet + ,IfcHalfSpaceSolid + ,IfcLightSource + ,IfcOneDirectionRepeatFactor + ,IfcPlacement + ,IfcPlanarExtent + ,IfcPoint + ,IfcSectionedSpine + ,IfcShellBasedSurfaceModel + ,IfcSolidModel + ,IfcSurface + ,IfcTextLiteral + ,IfcVector)) + SUBTYPE OF (IfcRepresentationItem); +END_ENTITY; + +ENTITY IfcGeometricRepresentationSubContext + SUBTYPE OF (IfcGeometricRepresentationContext); + ParentContext : IfcGeometricRepresentationContext; + TargetScale : OPTIONAL IfcPositiveRatioMeasure; + TargetView : IfcGeometricProjectionEnum; + UserDefinedTargetView : OPTIONAL IfcLabel; + DERIVE + SELF\IfcGeometricRepresentationContext.WorldCoordinateSystem : IfcAxis2Placement := ParentContext.WorldCoordinateSystem; + SELF\IfcGeometricRepresentationContext.CoordinateSpaceDimension : IfcDimensionCount := ParentContext.CoordinateSpaceDimension; + SELF\IfcGeometricRepresentationContext.TrueNorth : IfcDirection := NVL(ParentContext.TrueNorth,SELF.WorldCoordinateSystem.P[2]); + SELF\IfcGeometricRepresentationContext.Precision : REAL := NVL(ParentContext.Precision,1.E-5); + WHERE + WR31 : NOT('IFC2X3.IFCGEOMETRICREPRESENTATIONSUBCONTEXT' IN TYPEOF(ParentContext)); + WR32 : (TargetView <> IfcGeometricProjectionEnum.USERDEFINED) OR + ((TargetView = IfcGeometricProjectionEnum.USERDEFINED) AND + EXISTS(UserDefinedTargetView)); +END_ENTITY; + +ENTITY IfcGeometricSet + SUPERTYPE OF (ONEOF + (IfcGeometricCurveSet)) + SUBTYPE OF (IfcGeometricRepresentationItem); + Elements : SET [1:?] OF IfcGeometricSetSelect; + DERIVE + Dim : IfcDimensionCount := Elements[1].Dim; + WHERE + WR21 : SIZEOF(QUERY(Temp <* Elements | + Temp.Dim <> Elements[1].Dim)) + = 0; +END_ENTITY; + +ENTITY IfcGrid + SUBTYPE OF (IfcProduct); + UAxes : LIST [1:?] OF UNIQUE IfcGridAxis; + VAxes : LIST [1:?] OF UNIQUE IfcGridAxis; + WAxes : OPTIONAL LIST [1:?] OF UNIQUE IfcGridAxis; + INVERSE + ContainedInStructure : SET [0:1] OF IfcRelContainedInSpatialStructure FOR RelatedElements; + WHERE + WR41 : EXISTS(SELF\IfcProduct.ObjectPlacement); +END_ENTITY; + +ENTITY IfcGridAxis; + AxisTag : OPTIONAL IfcLabel; + AxisCurve : IfcCurve; + SameSense : IfcBoolean; + INVERSE + PartOfW : SET [0:1] OF IfcGrid FOR WAxes; + PartOfV : SET [0:1] OF IfcGrid FOR VAxes; + PartOfU : SET [0:1] OF IfcGrid FOR UAxes; + HasIntersections : SET [0:?] OF IfcVirtualGridIntersection FOR IntersectingAxes; + WHERE + WR1 : AxisCurve.Dim = 2; + WR2 : (SIZEOF(PartOfU) = 1) XOR (SIZEOF(PartOfV) = 1) XOR (SIZEOF(PartOfW) = 1); +END_ENTITY; + +ENTITY IfcGridPlacement + SUBTYPE OF (IfcObjectPlacement); + PlacementLocation : IfcVirtualGridIntersection; + PlacementRefDirection : OPTIONAL IfcVirtualGridIntersection; +END_ENTITY; + +ENTITY IfcGroup + SUPERTYPE OF (ONEOF + (IfcAsset + ,IfcCondition + ,IfcInventory + ,IfcStructuralLoadGroup + ,IfcStructuralResultGroup + ,IfcSystem + ,IfcZone)) + SUBTYPE OF (IfcObject); + INVERSE + IsGroupedBy : IfcRelAssignsToGroup FOR RelatingGroup; +END_ENTITY; + +ENTITY IfcHalfSpaceSolid + SUPERTYPE OF (ONEOF + (IfcBoxedHalfSpace + ,IfcPolygonalBoundedHalfSpace)) + SUBTYPE OF (IfcGeometricRepresentationItem); + BaseSurface : IfcSurface; + AgreementFlag : BOOLEAN; + DERIVE + Dim : IfcDimensionCount := 3; +END_ENTITY; + +ENTITY IfcHeatExchangerType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcHeatExchangerTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcHeatExchangerTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcHeatExchangerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcHumidifierType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcHumidifierTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcHumidifierTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcHumidifierTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcHygroscopicMaterialProperties + SUBTYPE OF (IfcMaterialProperties); + UpperVaporResistanceFactor : OPTIONAL IfcPositiveRatioMeasure; + LowerVaporResistanceFactor : OPTIONAL IfcPositiveRatioMeasure; + IsothermalMoistureCapacity : OPTIONAL IfcIsothermalMoistureCapacityMeasure; + VaporPermeability : OPTIONAL IfcVaporPermeabilityMeasure; + MoistureDiffusivity : OPTIONAL IfcMoistureDiffusivityMeasure; + UNIQUE + UR11 : Material; +END_ENTITY; + +ENTITY IfcIShapeProfileDef + SUPERTYPE OF (ONEOF + (IfcAsymmetricIShapeProfileDef)) + SUBTYPE OF (IfcParameterizedProfileDef); + OverallWidth : IfcPositiveLengthMeasure; + OverallDepth : IfcPositiveLengthMeasure; + WebThickness : IfcPositiveLengthMeasure; + FlangeThickness : IfcPositiveLengthMeasure; + FilletRadius : OPTIONAL IfcPositiveLengthMeasure; + WHERE + WR1 : FlangeThickness < (OverallDepth / 2.); + WR2 : WebThickness < OverallWidth; + WR3 : NOT(EXISTS(FilletRadius)) OR + ((FilletRadius <= (OverallWidth - WebThickness)/2.) AND + (FilletRadius <= (OverallDepth - (2. * FlangeThickness))/2.)); +END_ENTITY; + +ENTITY IfcImageTexture + SUBTYPE OF (IfcSurfaceTexture); + UrlReference : IfcIdentifier; +END_ENTITY; + +ENTITY IfcInventory + SUBTYPE OF (IfcGroup); + InventoryType : IfcInventoryTypeEnum; + Jurisdiction : IfcActorSelect; + ResponsiblePersons : SET [1:?] OF IfcPerson; + LastUpdateDate : IfcCalendarDate; + CurrentValue : OPTIONAL IfcCostValue; + OriginalValue : OPTIONAL IfcCostValue; + WHERE + WR41 : SIZEOF(QUERY(temp <* SELF\IfcGroup.IsGroupedBy.RelatedObjects | + NOT( ('IFC2X3.IFCSPACE' IN TYPEOF (temp)) OR + ('IFC2X3.IFCASSET' IN TYPEOF (temp)) OR + ('IFC2X3.IFCFURNISHINGELEMENT' IN TYPEOF (temp)) + ))) = 0; +END_ENTITY; + +ENTITY IfcIrregularTimeSeries + SUBTYPE OF (IfcTimeSeries); + Values : LIST [1:?] OF IfcIrregularTimeSeriesValue; +END_ENTITY; + +ENTITY IfcIrregularTimeSeriesValue; + TimeStamp : IfcDateTimeSelect; + ListValues : LIST [1:?] OF IfcValue; +END_ENTITY; + +ENTITY IfcJunctionBoxType + SUBTYPE OF (IfcFlowFittingType); + PredefinedType : IfcJunctionBoxTypeEnum; +END_ENTITY; + +ENTITY IfcLShapeProfileDef + SUBTYPE OF (IfcParameterizedProfileDef); + Depth : IfcPositiveLengthMeasure; + Width : OPTIONAL IfcPositiveLengthMeasure; + Thickness : IfcPositiveLengthMeasure; + FilletRadius : OPTIONAL IfcPositiveLengthMeasure; + EdgeRadius : OPTIONAL IfcPositiveLengthMeasure; + LegSlope : OPTIONAL IfcPlaneAngleMeasure; + CentreOfGravityInX : OPTIONAL IfcPositiveLengthMeasure; + CentreOfGravityInY : OPTIONAL IfcPositiveLengthMeasure; + WHERE + WR21 : Thickness < Depth; + WR22 : NOT(EXISTS(Width)) OR (Thickness < Width); +END_ENTITY; + +ENTITY IfcLaborResource + SUBTYPE OF (IfcConstructionResource); + SkillSet : OPTIONAL IfcText; +END_ENTITY; + +ENTITY IfcLampType + SUBTYPE OF (IfcFlowTerminalType); + PredefinedType : IfcLampTypeEnum; +END_ENTITY; + +ENTITY IfcLibraryInformation; + Name : IfcLabel; + Version : OPTIONAL IfcLabel; + Publisher : OPTIONAL IfcOrganization; + VersionDate : OPTIONAL IfcCalendarDate; + LibraryReference : OPTIONAL SET [1:?] OF IfcLibraryReference; +END_ENTITY; + +ENTITY IfcLibraryReference + SUBTYPE OF (IfcExternalReference); + INVERSE + ReferenceIntoLibrary : SET [0:1] OF IfcLibraryInformation FOR LibraryReference; +END_ENTITY; + +ENTITY IfcLightDistributionData; + MainPlaneAngle : IfcPlaneAngleMeasure; + SecondaryPlaneAngle : LIST [1:?] OF IfcPlaneAngleMeasure; + LuminousIntensity : LIST [1:?] OF IfcLuminousIntensityDistributionMeasure; +END_ENTITY; + +ENTITY IfcLightFixtureType + SUBTYPE OF (IfcFlowTerminalType); + PredefinedType : IfcLightFixtureTypeEnum; +END_ENTITY; + +ENTITY IfcLightIntensityDistribution; + LightDistributionCurve : IfcLightDistributionCurveEnum; + DistributionData : LIST [1:?] OF IfcLightDistributionData; +END_ENTITY; + +ENTITY IfcLightSource + ABSTRACT SUPERTYPE OF (ONEOF + (IfcLightSourceAmbient + ,IfcLightSourceDirectional + ,IfcLightSourceGoniometric + ,IfcLightSourcePositional)) + SUBTYPE OF (IfcGeometricRepresentationItem); + Name : OPTIONAL IfcLabel; + LightColour : IfcColourRgb; + AmbientIntensity : OPTIONAL IfcNormalisedRatioMeasure; + Intensity : OPTIONAL IfcNormalisedRatioMeasure; +END_ENTITY; + +ENTITY IfcLightSourceAmbient + SUBTYPE OF (IfcLightSource); +END_ENTITY; + +ENTITY IfcLightSourceDirectional + SUBTYPE OF (IfcLightSource); + Orientation : IfcDirection; +END_ENTITY; + +ENTITY IfcLightSourceGoniometric + SUBTYPE OF (IfcLightSource); + Position : IfcAxis2Placement3D; + ColourAppearance : OPTIONAL IfcColourRgb; + ColourTemperature : IfcThermodynamicTemperatureMeasure; + LuminousFlux : IfcLuminousFluxMeasure; + LightEmissionSource : IfcLightEmissionSourceEnum; + LightDistributionDataSource : IfcLightDistributionDataSourceSelect; +END_ENTITY; + +ENTITY IfcLightSourcePositional + SUPERTYPE OF (ONEOF + (IfcLightSourceSpot)) + SUBTYPE OF (IfcLightSource); + Position : IfcCartesianPoint; + Radius : IfcPositiveLengthMeasure; + ConstantAttenuation : IfcReal; + DistanceAttenuation : IfcReal; + QuadricAttenuation : IfcReal; +END_ENTITY; + +ENTITY IfcLightSourceSpot + SUBTYPE OF (IfcLightSourcePositional); + Orientation : IfcDirection; + ConcentrationExponent : OPTIONAL IfcReal; + SpreadAngle : IfcPositivePlaneAngleMeasure; + BeamWidthAngle : IfcPositivePlaneAngleMeasure; +END_ENTITY; + +ENTITY IfcLine + SUBTYPE OF (IfcCurve); + Pnt : IfcCartesianPoint; + Dir : IfcVector; + WHERE + WR1 : Dir.Dim = Pnt.Dim; +END_ENTITY; + +ENTITY IfcLinearDimension + SUBTYPE OF (IfcDimensionCurveDirectedCallout); +END_ENTITY; + +ENTITY IfcLocalPlacement + SUBTYPE OF (IfcObjectPlacement); + PlacementRelTo : OPTIONAL IfcObjectPlacement; + RelativePlacement : IfcAxis2Placement; + WHERE + WR21 : IfcCorrectLocalPlacement(RelativePlacement, PlacementRelTo); +END_ENTITY; + +ENTITY IfcLocalTime; + HourComponent : IfcHourInDay; + MinuteComponent : OPTIONAL IfcMinuteInHour; + SecondComponent : OPTIONAL IfcSecondInMinute; + Zone : OPTIONAL IfcCoordinatedUniversalTimeOffset; + DaylightSavingOffset : OPTIONAL IfcDaylightSavingHour; + WHERE + WR21 : IfcValidTime (SELF); +END_ENTITY; + +ENTITY IfcLoop + SUPERTYPE OF (ONEOF + (IfcEdgeLoop + ,IfcPolyLoop + ,IfcVertexLoop)) + SUBTYPE OF (IfcTopologicalRepresentationItem); +END_ENTITY; + +ENTITY IfcManifoldSolidBrep + ABSTRACT SUPERTYPE OF (ONEOF + (IfcFacetedBrep + ,IfcFacetedBrepWithVoids)) + SUBTYPE OF (IfcSolidModel); + Outer : IfcClosedShell; +END_ENTITY; + +ENTITY IfcMappedItem + SUBTYPE OF (IfcRepresentationItem); + MappingSource : IfcRepresentationMap; + MappingTarget : IfcCartesianTransformationOperator; +END_ENTITY; + +ENTITY IfcMaterial; + Name : IfcLabel; + INVERSE + HasRepresentation : SET [0:1] OF IfcMaterialDefinitionRepresentation FOR RepresentedMaterial; + ClassifiedAs : SET [0:1] OF IfcMaterialClassificationRelationship FOR ClassifiedMaterial; +END_ENTITY; + +ENTITY IfcMaterialClassificationRelationship; + MaterialClassifications : SET [1:?] OF IfcClassificationNotationSelect; + ClassifiedMaterial : IfcMaterial; +END_ENTITY; + +ENTITY IfcMaterialDefinitionRepresentation + SUBTYPE OF (IfcProductRepresentation); + RepresentedMaterial : IfcMaterial; + WHERE + WR11 : SIZEOF(QUERY(temp <* Representations | + (NOT('IFC2X3.IFCSTYLEDREPRESENTATION' IN TYPEOF(temp))) + )) = 0; +END_ENTITY; + +ENTITY IfcMaterialLayer; + Material : OPTIONAL IfcMaterial; + LayerThickness : IfcPositiveLengthMeasure; + IsVentilated : OPTIONAL IfcLogical; + INVERSE + ToMaterialLayerSet : IfcMaterialLayerSet FOR MaterialLayers; +END_ENTITY; + +ENTITY IfcMaterialLayerSet; + MaterialLayers : LIST [1:?] OF IfcMaterialLayer; + LayerSetName : OPTIONAL IfcLabel; + DERIVE + TotalThickness : IfcLengthMeasure := IfcMlsTotalThickness(SELF); +END_ENTITY; + +ENTITY IfcMaterialLayerSetUsage; + ForLayerSet : IfcMaterialLayerSet; + LayerSetDirection : IfcLayerSetDirectionEnum; + DirectionSense : IfcDirectionSenseEnum; + OffsetFromReferenceLine : IfcLengthMeasure; +END_ENTITY; + +ENTITY IfcMaterialList; + Materials : LIST [1:?] OF IfcMaterial; +END_ENTITY; + +ENTITY IfcMaterialProperties + ABSTRACT SUPERTYPE OF (ONEOF + (IfcExtendedMaterialProperties + ,IfcFuelProperties + ,IfcGeneralMaterialProperties + ,IfcHygroscopicMaterialProperties + ,IfcMechanicalMaterialProperties + ,IfcOpticalMaterialProperties + ,IfcProductsOfCombustionProperties + ,IfcThermalMaterialProperties + ,IfcWaterProperties)); + Material : IfcMaterial; +END_ENTITY; + +ENTITY IfcMeasureWithUnit; + ValueComponent : IfcValue; + UnitComponent : IfcUnit; +END_ENTITY; + +ENTITY IfcMechanicalConcreteMaterialProperties + SUBTYPE OF (IfcMechanicalMaterialProperties); + CompressiveStrength : OPTIONAL IfcPressureMeasure; + MaxAggregateSize : OPTIONAL IfcPositiveLengthMeasure; + AdmixturesDescription : OPTIONAL IfcText; + Workability : OPTIONAL IfcText; + ProtectivePoreRatio : OPTIONAL IfcNormalisedRatioMeasure; + WaterImpermeability : OPTIONAL IfcText; +END_ENTITY; + +ENTITY IfcMechanicalFastener + SUBTYPE OF (IfcFastener); + NominalDiameter : OPTIONAL IfcPositiveLengthMeasure; + NominalLength : OPTIONAL IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcMechanicalFastenerType + SUBTYPE OF (IfcFastenerType); +END_ENTITY; + +ENTITY IfcMechanicalMaterialProperties + SUPERTYPE OF (ONEOF + (IfcMechanicalConcreteMaterialProperties + ,IfcMechanicalSteelMaterialProperties)) + SUBTYPE OF (IfcMaterialProperties); + DynamicViscosity : OPTIONAL IfcDynamicViscosityMeasure; + YoungModulus : OPTIONAL IfcModulusOfElasticityMeasure; + ShearModulus : OPTIONAL IfcModulusOfElasticityMeasure; + PoissonRatio : OPTIONAL IfcPositiveRatioMeasure; + ThermalExpansionCoefficient : OPTIONAL IfcThermalExpansionCoefficientMeasure; + UNIQUE + UR11 : Material; + WHERE + WR21 : NOT(EXISTS(YoungModulus)) OR (YoungModulus >= 0.0); + WR22 : NOT(EXISTS(ShearModulus)) OR (ShearModulus >= 0.0); +END_ENTITY; + +ENTITY IfcMechanicalSteelMaterialProperties + SUBTYPE OF (IfcMechanicalMaterialProperties); + YieldStress : OPTIONAL IfcPressureMeasure; + UltimateStress : OPTIONAL IfcPressureMeasure; + UltimateStrain : OPTIONAL IfcPositiveRatioMeasure; + HardeningModule : OPTIONAL IfcModulusOfElasticityMeasure; + ProportionalStress : OPTIONAL IfcPressureMeasure; + PlasticStrain : OPTIONAL IfcPositiveRatioMeasure; + Relaxations : OPTIONAL SET [1:?] OF IfcRelaxation; + WHERE + WR31 : NOT(EXISTS(YieldStress)) OR (YieldStress >= 0.); + WR32 : NOT(EXISTS(UltimateStress)) OR (UltimateStress >= 0.); + WR33 : NOT(EXISTS(HardeningModule)) OR (HardeningModule >= 0.); + WR34 : NOT(EXISTS(ProportionalStress)) OR (ProportionalStress >= 0.); +END_ENTITY; + +ENTITY IfcMember + SUBTYPE OF (IfcBuildingElement); +END_ENTITY; + +ENTITY IfcMemberType + SUBTYPE OF (IfcBuildingElementType); + PredefinedType : IfcMemberTypeEnum; +END_ENTITY; + +ENTITY IfcMetric + SUBTYPE OF (IfcConstraint); + Benchmark : IfcBenchmarkEnum; + ValueSource : OPTIONAL IfcLabel; + DataValue : IfcMetricValueSelect; +END_ENTITY; + +ENTITY IfcMonetaryUnit; + Currency : IfcCurrencyEnum; +END_ENTITY; + +ENTITY IfcMotorConnectionType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcMotorConnectionTypeEnum; +END_ENTITY; + +ENTITY IfcMove + SUBTYPE OF (IfcTask); + MoveFrom : IfcSpatialStructureElement; + MoveTo : IfcSpatialStructureElement; + PunchList : OPTIONAL LIST [1:?] OF UNIQUE IfcText; + WHERE + WR1 : SIZEOF(SELF\IfcProcess.OperatesOn) >= 1; + WR2 : SIZEOF(QUERY(temp <* OperatesOn | + SIZEOF(QUERY(temp2 <* temp.RelatedObjects | + ('IFC2X3.IFCACTOR' IN TYPEOF (temp2)) OR + ('IFC2X3.IFCEQUIPMENTELEMENT' IN TYPEOF (temp2)) OR + ('IFC2X3.IFCFURNISHINGELEMENT' IN TYPEOF (temp2)) )) >=1 + )) >= 1; + WR3 : EXISTS(SELF\IfcRoot.Name); +END_ENTITY; + +ENTITY IfcNamedUnit + ABSTRACT SUPERTYPE OF (ONEOF + (IfcContextDependentUnit + ,IfcConversionBasedUnit + ,IfcSIUnit)); + Dimensions : IfcDimensionalExponents; + UnitType : IfcUnitEnum; + WHERE + WR1 : IfcCorrectDimensions (SELF.UnitType, SELF.Dimensions); +END_ENTITY; + +ENTITY IfcObject + ABSTRACT SUPERTYPE OF (ONEOF + (IfcActor + ,IfcControl + ,IfcGroup + ,IfcProcess + ,IfcProduct + ,IfcProject + ,IfcResource)) + SUBTYPE OF (IfcObjectDefinition); + ObjectType : OPTIONAL IfcLabel; + INVERSE + IsDefinedBy : SET [0:?] OF IfcRelDefines FOR RelatedObjects; + WHERE + WR1 : SIZEOF(QUERY(temp <* IsDefinedBy | 'IFC2X3.IFCRELDEFINESBYTYPE' IN TYPEOF(temp))) <= 1; +END_ENTITY; + +ENTITY IfcObjectDefinition + ABSTRACT SUPERTYPE OF (ONEOF + (IfcObject + ,IfcTypeObject)) + SUBTYPE OF (IfcRoot); + INVERSE + HasAssignments : SET [0:?] OF IfcRelAssigns FOR RelatedObjects; + IsDecomposedBy : SET [0:?] OF IfcRelDecomposes FOR RelatingObject; + Decomposes : SET [0:1] OF IfcRelDecomposes FOR RelatedObjects; + HasAssociations : SET [0:?] OF IfcRelAssociates FOR RelatedObjects; +END_ENTITY; + +ENTITY IfcObjectPlacement + ABSTRACT SUPERTYPE OF (ONEOF + (IfcGridPlacement + ,IfcLocalPlacement)); + INVERSE + PlacesObject : SET [1:1] OF IfcProduct FOR ObjectPlacement; + ReferencedByPlacements : SET [0:?] OF IfcLocalPlacement FOR PlacementRelTo; +END_ENTITY; + +ENTITY IfcObjective + SUBTYPE OF (IfcConstraint); + BenchmarkValues : OPTIONAL IfcMetric; + ResultValues : OPTIONAL IfcMetric; + ObjectiveQualifier : IfcObjectiveEnum; + UserDefinedQualifier : OPTIONAL IfcLabel; + WHERE + WR21 : (ObjectiveQualifier <> IfcObjectiveEnum.USERDEFINED) OR + ((ObjectiveQualifier = IfcObjectiveEnum.USERDEFINED) AND EXISTS(SELF\IfcObjective.UserDefinedQualifier)); +END_ENTITY; + +ENTITY IfcOccupant + SUBTYPE OF (IfcActor); + PredefinedType : IfcOccupantTypeEnum; + WHERE + WR31 : NOT(PredefinedType = IfcOccupantTypeEnum.USERDEFINED) + OR EXISTS(SELF\IfcObject.ObjectType); +END_ENTITY; + +ENTITY IfcOffsetCurve2D + SUBTYPE OF (IfcCurve); + BasisCurve : IfcCurve; + Distance : IfcLengthMeasure; + SelfIntersect : LOGICAL; + WHERE + WR1 : BasisCurve.Dim = 2; +END_ENTITY; + +ENTITY IfcOffsetCurve3D + SUBTYPE OF (IfcCurve); + BasisCurve : IfcCurve; + Distance : IfcLengthMeasure; + SelfIntersect : LOGICAL; + RefDirection : IfcDirection; + WHERE + WR1 : BasisCurve.Dim = 3; +END_ENTITY; + +ENTITY IfcOneDirectionRepeatFactor + SUPERTYPE OF (ONEOF + (IfcTwoDirectionRepeatFactor)) + SUBTYPE OF (IfcGeometricRepresentationItem); + RepeatFactor : IfcVector; +END_ENTITY; + +ENTITY IfcOpenShell + SUBTYPE OF (IfcConnectedFaceSet); +END_ENTITY; + +ENTITY IfcOpeningElement + SUBTYPE OF (IfcFeatureElementSubtraction); + INVERSE + HasFillings : SET [0:?] OF IfcRelFillsElement FOR RelatingOpeningElement; +END_ENTITY; + +ENTITY IfcOpticalMaterialProperties + SUBTYPE OF (IfcMaterialProperties); + VisibleTransmittance : OPTIONAL IfcPositiveRatioMeasure; + SolarTransmittance : OPTIONAL IfcPositiveRatioMeasure; + ThermalIrTransmittance : OPTIONAL IfcPositiveRatioMeasure; + ThermalIrEmissivityBack : OPTIONAL IfcPositiveRatioMeasure; + ThermalIrEmissivityFront : OPTIONAL IfcPositiveRatioMeasure; + VisibleReflectanceBack : OPTIONAL IfcPositiveRatioMeasure; + VisibleReflectanceFront : OPTIONAL IfcPositiveRatioMeasure; + SolarReflectanceFront : OPTIONAL IfcPositiveRatioMeasure; + SolarReflectanceBack : OPTIONAL IfcPositiveRatioMeasure; + UNIQUE + UR11 : Material; +END_ENTITY; + +ENTITY IfcOrderAction + SUBTYPE OF (IfcTask); + ActionID : IfcIdentifier; + UNIQUE + UR2 : ActionID; +END_ENTITY; + +ENTITY IfcOrganization; + Id : OPTIONAL IfcIdentifier; + Name : IfcLabel; + Description : OPTIONAL IfcText; + Roles : OPTIONAL LIST [1:?] OF IfcActorRole; + Addresses : OPTIONAL LIST [1:?] OF IfcAddress; + INVERSE + IsRelatedBy : SET [0:?] OF IfcOrganizationRelationship FOR RelatedOrganizations; + Relates : SET [0:?] OF IfcOrganizationRelationship FOR RelatingOrganization; + Engages : SET [0:?] OF IfcPersonAndOrganization FOR TheOrganization; +END_ENTITY; + +ENTITY IfcOrganizationRelationship; + Name : IfcLabel; + Description : OPTIONAL IfcText; + RelatingOrganization : IfcOrganization; + RelatedOrganizations : SET [1:?] OF IfcOrganization; +END_ENTITY; + +ENTITY IfcOrientedEdge + SUBTYPE OF (IfcEdge); + EdgeElement : IfcEdge; + Orientation : BOOLEAN; + DERIVE + SELF\IfcEdge.EdgeStart : IfcVertex := IfcBooleanChoose + (Orientation, EdgeElement.EdgeStart, EdgeElement.EdgeEnd); + SELF\IfcEdge.EdgeEnd : IfcVertex := IfcBooleanChoose + (Orientation, EdgeElement.EdgeEnd, EdgeElement.EdgeStart); + WHERE + WR1 : NOT('IFC2X3.IFCORIENTEDEDGE' IN TYPEOF(EdgeElement)); +END_ENTITY; + +ENTITY IfcOutletType + SUBTYPE OF (IfcFlowTerminalType); + PredefinedType : IfcOutletTypeEnum; +END_ENTITY; + +ENTITY IfcOwnerHistory; + OwningUser : IfcPersonAndOrganization; + OwningApplication : IfcApplication; + State : OPTIONAL IfcStateEnum; + ChangeAction : IfcChangeActionEnum; + LastModifiedDate : OPTIONAL IfcTimeStamp; + LastModifyingUser : OPTIONAL IfcPersonAndOrganization; + LastModifyingApplication : OPTIONAL IfcApplication; + CreationDate : IfcTimeStamp; +END_ENTITY; + +ENTITY IfcParameterizedProfileDef + ABSTRACT SUPERTYPE OF (ONEOF + (IfcCShapeProfileDef + ,IfcCircleProfileDef + ,IfcCraneRailAShapeProfileDef + ,IfcCraneRailFShapeProfileDef + ,IfcEllipseProfileDef + ,IfcIShapeProfileDef + ,IfcLShapeProfileDef + ,IfcRectangleProfileDef + ,IfcTShapeProfileDef + ,IfcTrapeziumProfileDef + ,IfcUShapeProfileDef + ,IfcZShapeProfileDef)) + SUBTYPE OF (IfcProfileDef); + Position : IfcAxis2Placement2D; +END_ENTITY; + +ENTITY IfcPath + SUBTYPE OF (IfcTopologicalRepresentationItem); + EdgeList : LIST [1:?] OF UNIQUE IfcOrientedEdge; + WHERE + WR1 : IfcPathHeadToTail(SELF); +END_ENTITY; + +ENTITY IfcPerformanceHistory + SUBTYPE OF (IfcControl); + LifeCyclePhase : IfcLabel; +END_ENTITY; + +ENTITY IfcPermeableCoveringProperties + SUBTYPE OF (IfcPropertySetDefinition); + OperationType : IfcPermeableCoveringOperationEnum; + PanelPosition : IfcWindowPanelPositionEnum; + FrameDepth : OPTIONAL IfcPositiveLengthMeasure; + FrameThickness : OPTIONAL IfcPositiveLengthMeasure; + ShapeAspectStyle : OPTIONAL IfcShapeAspect; +END_ENTITY; + +ENTITY IfcPermit + SUBTYPE OF (IfcControl); + PermitID : IfcIdentifier; + UNIQUE + UR2 : PermitID; +END_ENTITY; + +ENTITY IfcPerson; + Id : OPTIONAL IfcIdentifier; + FamilyName : OPTIONAL IfcLabel; + GivenName : OPTIONAL IfcLabel; + MiddleNames : OPTIONAL LIST [1:?] OF IfcLabel; + PrefixTitles : OPTIONAL LIST [1:?] OF IfcLabel; + SuffixTitles : OPTIONAL LIST [1:?] OF IfcLabel; + Roles : OPTIONAL LIST [1:?] OF IfcActorRole; + Addresses : OPTIONAL LIST [1:?] OF IfcAddress; + INVERSE + EngagedIn : SET [0:?] OF IfcPersonAndOrganization FOR ThePerson; + WHERE + WR1 : EXISTS(FamilyName) OR + EXISTS(GivenName); +END_ENTITY; + +ENTITY IfcPersonAndOrganization; + ThePerson : IfcPerson; + TheOrganization : IfcOrganization; + Roles : OPTIONAL LIST [1:?] OF IfcActorRole; +END_ENTITY; + +ENTITY IfcPhysicalComplexQuantity + SUBTYPE OF (IfcPhysicalQuantity); + HasQuantities : SET [1:?] OF IfcPhysicalQuantity; + Discrimination : IfcLabel; + Quality : OPTIONAL IfcLabel; + Usage : OPTIONAL IfcLabel; + WHERE + WR21 : SIZEOF(QUERY(temp <* HasQuantities | SELF :=: temp)) = 0; +END_ENTITY; + +ENTITY IfcPhysicalQuantity + ABSTRACT SUPERTYPE OF (ONEOF + (IfcPhysicalComplexQuantity + ,IfcPhysicalSimpleQuantity)); + Name : IfcLabel; + Description : OPTIONAL IfcText; + INVERSE + PartOfComplex : SET [0:1] OF IfcPhysicalComplexQuantity FOR HasQuantities; +END_ENTITY; + +ENTITY IfcPhysicalSimpleQuantity + ABSTRACT SUPERTYPE OF (ONEOF + (IfcQuantityArea + ,IfcQuantityCount + ,IfcQuantityLength + ,IfcQuantityTime + ,IfcQuantityVolume + ,IfcQuantityWeight)) + SUBTYPE OF (IfcPhysicalQuantity); + Unit : OPTIONAL IfcNamedUnit; +END_ENTITY; + +ENTITY IfcPile + SUBTYPE OF (IfcBuildingElement); + PredefinedType : IfcPileTypeEnum; + ConstructionType : OPTIONAL IfcPileConstructionEnum; + WHERE + WR1 : (PredefinedType <> IfcPileTypeEnum.USERDEFINED) OR ((PredefinedType = IfcPileTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcObject.ObjectType)); +END_ENTITY; + +ENTITY IfcPipeFittingType + SUBTYPE OF (IfcFlowFittingType); + PredefinedType : IfcPipeFittingTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcPipeFittingTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcPipeFittingTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcPipeSegmentType + SUBTYPE OF (IfcFlowSegmentType); + PredefinedType : IfcPipeSegmentTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcPipeSegmentTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcPipeSegmentTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcPixelTexture + SUBTYPE OF (IfcSurfaceTexture); + Width : IfcInteger; + Height : IfcInteger; + ColourComponents : IfcInteger; + Pixel : LIST [1:?] OF BINARY(32); + WHERE + WR21 : Width >= 1; + WR22 : Height >= 1; + WR23 : {1 <= ColourComponents <= 4}; + WR24 : SIZEOF(Pixel) = (Width * Height); +END_ENTITY; + +ENTITY IfcPlacement + ABSTRACT SUPERTYPE OF (ONEOF + (IfcAxis1Placement + ,IfcAxis2Placement2D + ,IfcAxis2Placement3D)) + SUBTYPE OF (IfcGeometricRepresentationItem); + Location : IfcCartesianPoint; + DERIVE + Dim : IfcDimensionCount := Location.Dim; +END_ENTITY; + +ENTITY IfcPlanarBox + SUBTYPE OF (IfcPlanarExtent); + Placement : IfcAxis2Placement; +END_ENTITY; + +ENTITY IfcPlanarExtent + SUPERTYPE OF (ONEOF + (IfcPlanarBox)) + SUBTYPE OF (IfcGeometricRepresentationItem); + SizeInX : IfcLengthMeasure; + SizeInY : IfcLengthMeasure; +END_ENTITY; + +ENTITY IfcPlane + SUBTYPE OF (IfcElementarySurface); +END_ENTITY; + +ENTITY IfcPlate + SUBTYPE OF (IfcBuildingElement); +END_ENTITY; + +ENTITY IfcPlateType + SUBTYPE OF (IfcBuildingElementType); + PredefinedType : IfcPlateTypeEnum; + WHERE + WR1 : SIZEOF (QUERY(temp <* SELF\IfcObjectDefinition.HasAssociations | 'IFC2X3.IFCRELASSOCIATESMATERIAL' IN TYPEOF(temp) )) = 1; +END_ENTITY; + +ENTITY IfcPoint + ABSTRACT SUPERTYPE OF (ONEOF + (IfcCartesianPoint + ,IfcPointOnCurve + ,IfcPointOnSurface)) + SUBTYPE OF (IfcGeometricRepresentationItem); +END_ENTITY; + +ENTITY IfcPointOnCurve + SUBTYPE OF (IfcPoint); + BasisCurve : IfcCurve; + PointParameter : IfcParameterValue; + DERIVE + Dim : IfcDimensionCount := BasisCurve.Dim; +END_ENTITY; + +ENTITY IfcPointOnSurface + SUBTYPE OF (IfcPoint); + BasisSurface : IfcSurface; + PointParameterU : IfcParameterValue; + PointParameterV : IfcParameterValue; + DERIVE + Dim : IfcDimensionCount := BasisSurface.Dim; +END_ENTITY; + +ENTITY IfcPolyLoop + SUBTYPE OF (IfcLoop); + Polygon : LIST [3:?] OF UNIQUE IfcCartesianPoint; + WHERE + WR21 : SIZEOF(QUERY(Temp <* Polygon | Temp.Dim <> Polygon[1].Dim)) = 0; +END_ENTITY; + +ENTITY IfcPolygonalBoundedHalfSpace + SUBTYPE OF (IfcHalfSpaceSolid); + Position : IfcAxis2Placement3D; + PolygonalBoundary : IfcBoundedCurve; + WHERE + WR41 : PolygonalBoundary.Dim = 2; + WR42 : SIZEOF(TYPEOF(PolygonalBoundary) * [ + 'IFC2X3.IFCPOLYLINE', + 'IFC2X3.IFCCOMPOSITECURVE'] + ) = 1; +END_ENTITY; + +ENTITY IfcPolyline + SUBTYPE OF (IfcBoundedCurve); + Points : LIST [2:?] OF IfcCartesianPoint; + WHERE + WR41 : SIZEOF(QUERY(Temp <* Points | Temp.Dim <> Points[1].Dim)) = 0; +END_ENTITY; + +ENTITY IfcPort + ABSTRACT SUPERTYPE OF (ONEOF + (IfcDistributionPort)) + SUBTYPE OF (IfcProduct); + INVERSE + ContainedIn : IfcRelConnectsPortToElement FOR RelatingPort; + ConnectedFrom : SET [0:1] OF IfcRelConnectsPorts FOR RelatedPort; + ConnectedTo : SET [0:1] OF IfcRelConnectsPorts FOR RelatingPort; +END_ENTITY; + +ENTITY IfcPostalAddress + SUBTYPE OF (IfcAddress); + InternalLocation : OPTIONAL IfcLabel; + AddressLines : OPTIONAL LIST [1:?] OF IfcLabel; + PostalBox : OPTIONAL IfcLabel; + Town : OPTIONAL IfcLabel; + Region : OPTIONAL IfcLabel; + PostalCode : OPTIONAL IfcLabel; + Country : OPTIONAL IfcLabel; + WHERE + WR1 : EXISTS (InternalLocation) OR + EXISTS (AddressLines) OR + EXISTS (PostalBox) OR + EXISTS (PostalCode) OR + EXISTS (Town) OR + EXISTS (Region) OR + EXISTS (Country); +END_ENTITY; + +ENTITY IfcPreDefinedColour + ABSTRACT SUPERTYPE OF (ONEOF + (IfcDraughtingPreDefinedColour)) + SUBTYPE OF (IfcPreDefinedItem); +END_ENTITY; + +ENTITY IfcPreDefinedCurveFont + ABSTRACT SUPERTYPE OF (ONEOF + (IfcDraughtingPreDefinedCurveFont)) + SUBTYPE OF (IfcPreDefinedItem); +END_ENTITY; + +ENTITY IfcPreDefinedDimensionSymbol + SUBTYPE OF (IfcPreDefinedSymbol); + WHERE + WR31 : SELF\IfcPreDefinedItem.Name IN ['arc length','conical taper','counterbore', + 'countersink','depth','diameter','plus minus','radius', + 'slope','spherical diameter','spherical radius','square']; +END_ENTITY; + +ENTITY IfcPreDefinedItem + ABSTRACT SUPERTYPE OF (ONEOF + (IfcPreDefinedColour + ,IfcPreDefinedCurveFont + ,IfcPreDefinedSymbol + ,IfcPreDefinedTextFont)); + Name : IfcLabel; +END_ENTITY; + +ENTITY IfcPreDefinedPointMarkerSymbol + SUBTYPE OF (IfcPreDefinedSymbol); + WHERE + WR31 : SELF\IfcPreDefinedItem.Name IN ['asterisk','circle','dot','plus','square','triangle','x']; +END_ENTITY; + +ENTITY IfcPreDefinedSymbol + ABSTRACT SUPERTYPE OF (ONEOF + (IfcPreDefinedDimensionSymbol + ,IfcPreDefinedPointMarkerSymbol + ,IfcPreDefinedTerminatorSymbol)) + SUBTYPE OF (IfcPreDefinedItem); +END_ENTITY; + +ENTITY IfcPreDefinedTerminatorSymbol + SUBTYPE OF (IfcPreDefinedSymbol); + WHERE + WR31 : SELF\IfcPreDefinedItem.Name IN ['blanked arrow','blanked box', + 'blanked dot','dimension origin','filled arrow','filled box', + 'filled dot','integral symbol','open arrow','slash','unfilled arrow']; +END_ENTITY; + +ENTITY IfcPreDefinedTextFont + ABSTRACT SUPERTYPE OF (ONEOF + (IfcDraughtingPreDefinedTextFont + ,IfcTextStyleFontModel)) + SUBTYPE OF (IfcPreDefinedItem); +END_ENTITY; + +ENTITY IfcPresentationLayerAssignment + SUPERTYPE OF (ONEOF + (IfcPresentationLayerWithStyle)); + Name : IfcLabel; + Description : OPTIONAL IfcText; + AssignedItems : SET [1:?] OF IfcLayeredItem; + Identifier : OPTIONAL IfcIdentifier; +END_ENTITY; + +ENTITY IfcPresentationLayerWithStyle + SUBTYPE OF (IfcPresentationLayerAssignment); + LayerOn : LOGICAL; + LayerFrozen : LOGICAL; + LayerBlocked : LOGICAL; + LayerStyles : SET [0:?] OF IfcPresentationStyleSelect; +END_ENTITY; + +ENTITY IfcPresentationStyle + ABSTRACT SUPERTYPE OF (ONEOF + (IfcCurveStyle + ,IfcFillAreaStyle + ,IfcSurfaceStyle + ,IfcSymbolStyle + ,IfcTextStyle)); + Name : OPTIONAL IfcLabel; +END_ENTITY; + +ENTITY IfcPresentationStyleAssignment; + Styles : SET [1:?] OF IfcPresentationStyleSelect; +END_ENTITY; + +ENTITY IfcProcedure + SUBTYPE OF (IfcProcess); + ProcedureID : IfcIdentifier; + ProcedureType : IfcProcedureTypeEnum; + UserDefinedProcedureType : OPTIONAL IfcLabel; + WHERE + WR1 : SIZEOF(QUERY(temp <* SELF\IfcObjectDefinition.Decomposes | NOT('IFC2X3.IFCRELNESTS' IN TYPEOF(temp)))) = 0; + WR2 : SIZEOF(QUERY(temp <* SELF\IfcObjectDefinition.IsDecomposedBy | NOT('IFC2X3.IFCRELNESTS' IN TYPEOF(temp)))) = 0; + WR3 : EXISTS(SELF\IfcRoot.Name); + WR4 : (ProcedureType <> IfcProcedureTypeEnum.USERDEFINED) OR + ((ProcedureType = IfcProcedureTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcProcedure.UserDefinedProcedureType)); +END_ENTITY; + +ENTITY IfcProcess + ABSTRACT SUPERTYPE OF (ONEOF + (IfcProcedure + ,IfcTask)) + SUBTYPE OF (IfcObject); + INVERSE + OperatesOn : SET [0:?] OF IfcRelAssignsToProcess FOR RelatingProcess; + IsSuccessorFrom : SET [0:?] OF IfcRelSequence FOR RelatedProcess; + IsPredecessorTo : SET [0:?] OF IfcRelSequence FOR RelatingProcess; +END_ENTITY; + +ENTITY IfcProduct + ABSTRACT SUPERTYPE OF (ONEOF + (IfcAnnotation + ,IfcElement + ,IfcGrid + ,IfcPort + ,IfcProxy + ,IfcSpatialStructureElement + ,IfcStructuralActivity + ,IfcStructuralItem)) + SUBTYPE OF (IfcObject); + ObjectPlacement : OPTIONAL IfcObjectPlacement; + Representation : OPTIONAL IfcProductRepresentation; + INVERSE + ReferencedBy : SET [0:?] OF IfcRelAssignsToProduct FOR RelatingProduct; + WHERE + WR1 : (EXISTS(Representation) AND EXISTS(ObjectPlacement)) + OR (EXISTS(Representation) AND + (NOT('IFC2X3.IFCPRODUCTDEFINITIONSHAPE' IN TYPEOF(Representation)))) + OR (NOT(EXISTS(Representation))); +END_ENTITY; + +ENTITY IfcProductDefinitionShape + SUBTYPE OF (IfcProductRepresentation); + INVERSE + ShapeOfProduct : SET [1:1] OF IfcProduct FOR Representation; + HasShapeAspects : SET [0:?] OF IfcShapeAspect FOR PartOfProductDefinitionShape; + WHERE + WR11 : SIZEOF(QUERY(temp <* Representations | + (NOT('IFC2X3.IFCSHAPEMODEL' IN TYPEOF(temp))) + )) = 0; +END_ENTITY; + +ENTITY IfcProductRepresentation + SUPERTYPE OF (ONEOF + (IfcMaterialDefinitionRepresentation + ,IfcProductDefinitionShape)); + Name : OPTIONAL IfcLabel; + Description : OPTIONAL IfcText; + Representations : LIST [1:?] OF IfcRepresentation; +END_ENTITY; + +ENTITY IfcProductsOfCombustionProperties + SUBTYPE OF (IfcMaterialProperties); + SpecificHeatCapacity : OPTIONAL IfcSpecificHeatCapacityMeasure; + N20Content : OPTIONAL IfcPositiveRatioMeasure; + COContent : OPTIONAL IfcPositiveRatioMeasure; + CO2Content : OPTIONAL IfcPositiveRatioMeasure; + UNIQUE + UR11 : Material; +END_ENTITY; + +ENTITY IfcProfileDef + ABSTRACT SUPERTYPE OF (ONEOF + (IfcArbitraryClosedProfileDef + ,IfcArbitraryOpenProfileDef + ,IfcCompositeProfileDef + ,IfcDerivedProfileDef + ,IfcParameterizedProfileDef)); + ProfileType : IfcProfileTypeEnum; + ProfileName : OPTIONAL IfcLabel; +END_ENTITY; + +ENTITY IfcProfileProperties + ABSTRACT SUPERTYPE OF (ONEOF + (IfcGeneralProfileProperties + ,IfcRibPlateProfileProperties)); + ProfileName : OPTIONAL IfcLabel; + ProfileDefinition : OPTIONAL IfcProfileDef; +END_ENTITY; + +ENTITY IfcProject + SUBTYPE OF (IfcObject); + LongName : OPTIONAL IfcLabel; + Phase : OPTIONAL IfcLabel; + RepresentationContexts : SET [1:?] OF IfcRepresentationContext; + UnitsInContext : IfcUnitAssignment; + WHERE + WR31 : EXISTS(SELF\IfcRoot.Name); + WR32 : SIZEOF(QUERY(Temp <* RepresentationContexts | + 'IFC2X3.IFCGEOMETRICREPRESENTATIONSUBCONTEXT' IN TYPEOF(Temp) + )) = 0; + WR33 : SIZEOF(SELF\IfcObjectDefinition.Decomposes) = 0; +END_ENTITY; + +ENTITY IfcProjectOrder + SUBTYPE OF (IfcControl); + ID : IfcIdentifier; + PredefinedType : IfcProjectOrderTypeEnum; + Status : OPTIONAL IfcLabel; + UNIQUE + UR2 : ID; +END_ENTITY; + +ENTITY IfcProjectOrderRecord + SUBTYPE OF (IfcControl); + Records : LIST [1:?] OF UNIQUE IfcRelAssignsToProjectOrder; + PredefinedType : IfcProjectOrderRecordTypeEnum; +END_ENTITY; + +ENTITY IfcProjectionCurve + SUBTYPE OF (IfcAnnotationCurveOccurrence); +END_ENTITY; + +ENTITY IfcProjectionElement + SUBTYPE OF (IfcFeatureElementAddition); +END_ENTITY; + +ENTITY IfcProperty + ABSTRACT SUPERTYPE OF (ONEOF + (IfcComplexProperty + ,IfcSimpleProperty)); + Name : IfcIdentifier; + Description : OPTIONAL IfcText; + INVERSE + PropertyForDependance : SET [0:?] OF IfcPropertyDependencyRelationship FOR DependingProperty; + PropertyDependsOn : SET [0:?] OF IfcPropertyDependencyRelationship FOR DependantProperty; + PartOfComplex : SET [0:1] OF IfcComplexProperty FOR HasProperties; +END_ENTITY; + +ENTITY IfcPropertyBoundedValue + SUBTYPE OF (IfcSimpleProperty); + UpperBoundValue : OPTIONAL IfcValue; + LowerBoundValue : OPTIONAL IfcValue; + Unit : OPTIONAL IfcUnit; + WHERE + WR21 : NOT(EXISTS(UpperBoundValue)) OR NOT(EXISTS(LowerBoundValue)) OR + (TYPEOF(UpperBoundValue) = TYPEOF(LowerBoundValue)); + WR22 : EXISTS(UpperBoundValue) OR EXISTS(LowerBoundValue); +END_ENTITY; + +ENTITY IfcPropertyConstraintRelationship; + RelatingConstraint : IfcConstraint; + RelatedProperties : SET [1:?] OF IfcProperty; + Name : OPTIONAL IfcLabel; + Description : OPTIONAL IfcText; +END_ENTITY; + +ENTITY IfcPropertyDefinition + ABSTRACT SUPERTYPE OF (ONEOF + (IfcPropertySetDefinition)) + SUBTYPE OF (IfcRoot); + INVERSE + HasAssociations : SET [0:?] OF IfcRelAssociates FOR RelatedObjects; +END_ENTITY; + +ENTITY IfcPropertyDependencyRelationship; + DependingProperty : IfcProperty; + DependantProperty : IfcProperty; + Name : OPTIONAL IfcLabel; + Description : OPTIONAL IfcText; + Expression : OPTIONAL IfcText; + WHERE + WR1 : DependingProperty :<>: DependantProperty; +END_ENTITY; + +ENTITY IfcPropertyEnumeratedValue + SUBTYPE OF (IfcSimpleProperty); + EnumerationValues : LIST [1:?] OF IfcValue; + EnumerationReference : OPTIONAL IfcPropertyEnumeration; + WHERE + WR1 : NOT(EXISTS(EnumerationReference)) OR + (SIZEOF(QUERY(temp <* EnumerationValues | + temp IN EnumerationReference.EnumerationValues)) + = SIZEOF(EnumerationValues)); +END_ENTITY; + +ENTITY IfcPropertyEnumeration; + Name : IfcLabel; + EnumerationValues : LIST [1:?] OF UNIQUE IfcValue; + Unit : OPTIONAL IfcUnit; + UNIQUE + UR1 : Name; + WHERE + WR01 : SIZEOF(QUERY(temp <* SELF.EnumerationValues | + NOT(TYPEOF(SELF.EnumerationValues[1]) = TYPEOF(temp)) + )) = 0; +END_ENTITY; + +ENTITY IfcPropertyListValue + SUBTYPE OF (IfcSimpleProperty); + ListValues : LIST [1:?] OF IfcValue; + Unit : OPTIONAL IfcUnit; + WHERE + WR31 : SIZEOF(QUERY(temp <* SELF.ListValues | + NOT(TYPEOF(SELF.ListValues[1]) = TYPEOF(temp)) + )) = 0; +END_ENTITY; + +ENTITY IfcPropertyReferenceValue + SUBTYPE OF (IfcSimpleProperty); + UsageName : OPTIONAL IfcLabel; + PropertyReference : IfcObjectReferenceSelect; +END_ENTITY; + +ENTITY IfcPropertySet + SUBTYPE OF (IfcPropertySetDefinition); + HasProperties : SET [1:?] OF IfcProperty; + WHERE + WR31 : EXISTS(SELF\IfcRoot.Name); + WR32 : IfcUniquePropertyName(HasProperties); +END_ENTITY; + +ENTITY IfcPropertySetDefinition + ABSTRACT SUPERTYPE OF (ONEOF + (IfcDoorLiningProperties + ,IfcDoorPanelProperties + ,IfcElementQuantity + ,IfcEnergyProperties + ,IfcFluidFlowProperties + ,IfcPermeableCoveringProperties + ,IfcPropertySet + ,IfcReinforcementDefinitionProperties + ,IfcServiceLifeFactor + ,IfcSoundProperties + ,IfcSoundValue + ,IfcSpaceThermalLoadProperties + ,IfcWindowLiningProperties + ,IfcWindowPanelProperties)) + SUBTYPE OF (IfcPropertyDefinition); + INVERSE + PropertyDefinitionOf : SET [0:1] OF IfcRelDefinesByProperties FOR RelatingPropertyDefinition; + DefinesType : SET [0:1] OF IfcTypeObject FOR HasPropertySets; +END_ENTITY; + +ENTITY IfcPropertySingleValue + SUBTYPE OF (IfcSimpleProperty); + NominalValue : OPTIONAL IfcValue; + Unit : OPTIONAL IfcUnit; +END_ENTITY; + +ENTITY IfcPropertyTableValue + SUBTYPE OF (IfcSimpleProperty); + DefiningValues : LIST [1:?] OF UNIQUE IfcValue; + DefinedValues : LIST [1:?] OF IfcValue; + Expression : OPTIONAL IfcText; + DefiningUnit : OPTIONAL IfcUnit; + DefinedUnit : OPTIONAL IfcUnit; + WHERE + WR1 : SIZEOF(DefiningValues) = SIZEOF(DefinedValues); + WR2 : SIZEOF(QUERY(temp <* SELF.DefiningValues | TYPEOF(temp) <> TYPEOF(SELF.DefiningValues[1])))=0; + WR3 : SIZEOF(QUERY(temp <* SELF.DefinedValues | TYPEOF(temp) <> TYPEOF(SELF.DefinedValues[1])))=0; +END_ENTITY; + +ENTITY IfcProtectiveDeviceType + SUBTYPE OF (IfcFlowControllerType); + PredefinedType : IfcProtectiveDeviceTypeEnum; +END_ENTITY; + +ENTITY IfcProxy + SUBTYPE OF (IfcProduct); + ProxyType : IfcObjectTypeEnum; + Tag : OPTIONAL IfcLabel; + WHERE + WR1 : EXISTS(SELF\IfcRoot.Name); +END_ENTITY; + +ENTITY IfcPumpType + SUBTYPE OF (IfcFlowMovingDeviceType); + PredefinedType : IfcPumpTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcPumpTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcPumpTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcQuantityArea + SUBTYPE OF (IfcPhysicalSimpleQuantity); + AreaValue : IfcAreaMeasure; + WHERE + WR21 : NOT(EXISTS(SELF\IfcPhysicalSimpleQuantity.Unit)) OR + (SELF\IfcPhysicalSimpleQuantity.Unit.UnitType = IfcUnitEnum.AREAUNIT); + WR22 : AreaValue >= 0.; +END_ENTITY; + +ENTITY IfcQuantityCount + SUBTYPE OF (IfcPhysicalSimpleQuantity); + CountValue : IfcCountMeasure; + WHERE + WR21 : CountValue >= 0.; +END_ENTITY; + +ENTITY IfcQuantityLength + SUBTYPE OF (IfcPhysicalSimpleQuantity); + LengthValue : IfcLengthMeasure; + WHERE + WR21 : NOT(EXISTS(SELF\IfcPhysicalSimpleQuantity.Unit)) OR + (SELF\IfcPhysicalSimpleQuantity.Unit.UnitType = IfcUnitEnum.LENGTHUNIT); + WR22 : LengthValue >= 0.; +END_ENTITY; + +ENTITY IfcQuantityTime + SUBTYPE OF (IfcPhysicalSimpleQuantity); + TimeValue : IfcTimeMeasure; + WHERE + WR21 : NOT(EXISTS(SELF\IfcPhysicalSimpleQuantity.Unit)) OR + (SELF\IfcPhysicalSimpleQuantity.Unit.UnitType = IfcUnitEnum.TIMEUNIT); + WR22 : TimeValue >= 0.; +END_ENTITY; + +ENTITY IfcQuantityVolume + SUBTYPE OF (IfcPhysicalSimpleQuantity); + VolumeValue : IfcVolumeMeasure; + WHERE + WR21 : NOT(EXISTS(SELF\IfcPhysicalSimpleQuantity.Unit)) OR + (SELF\IfcPhysicalSimpleQuantity.Unit.UnitType = IfcUnitEnum.VOLUMEUNIT); + WR22 : VolumeValue >= 0.; +END_ENTITY; + +ENTITY IfcQuantityWeight + SUBTYPE OF (IfcPhysicalSimpleQuantity); + WeightValue : IfcMassMeasure; + WHERE + WR21 : NOT(EXISTS(SELF\IfcPhysicalSimpleQuantity.Unit)) OR + (SELF\IfcPhysicalSimpleQuantity.Unit.UnitType = IfcUnitEnum.MASSUNIT); + WR22 : WeightValue >= 0.; +END_ENTITY; + +ENTITY IfcRadiusDimension + SUBTYPE OF (IfcDimensionCurveDirectedCallout); +END_ENTITY; + +ENTITY IfcRailing + SUBTYPE OF (IfcBuildingElement); + PredefinedType : OPTIONAL IfcRailingTypeEnum; +END_ENTITY; + +ENTITY IfcRailingType + SUBTYPE OF (IfcBuildingElementType); + PredefinedType : IfcRailingTypeEnum; +END_ENTITY; + +ENTITY IfcRamp + SUBTYPE OF (IfcBuildingElement); + ShapeType : IfcRampTypeEnum; + WHERE + WR1 : (HIINDEX(SELF\IfcObjectDefinition.IsDecomposedBy) = 0) OR + ((HIINDEX(SELF\IfcObjectDefinition.IsDecomposedBy) = 1) AND (NOT(EXISTS(SELF\IfcProduct.Representation)))); +END_ENTITY; + +ENTITY IfcRampFlight + SUBTYPE OF (IfcBuildingElement); +END_ENTITY; + +ENTITY IfcRampFlightType + SUBTYPE OF (IfcBuildingElementType); + PredefinedType : IfcRampFlightTypeEnum; +END_ENTITY; + +ENTITY IfcRationalBezierCurve + SUBTYPE OF (IfcBezierCurve); + WeightsData : LIST [2:?] OF REAL; + DERIVE + Weights : ARRAY [0:255] OF REAL := IfcListToArray(WeightsData,0,SELF\IfcBSplineCurve.UpperIndexOnControlPoints); + WHERE + WR1 : SIZEOF(WeightsData) = SIZEOF(SELF\IfcBSplineCurve.ControlPointsList); + WR2 : IfcCurveWeightsPositive(SELF); +END_ENTITY; + +ENTITY IfcRectangleHollowProfileDef + SUBTYPE OF (IfcRectangleProfileDef); + WallThickness : IfcPositiveLengthMeasure; + InnerFilletRadius : OPTIONAL IfcPositiveLengthMeasure; + OuterFilletRadius : OPTIONAL IfcPositiveLengthMeasure; + WHERE + WR31 : (WallThickness < (SELF\IfcRectangleProfileDef.XDim/2.)) AND + (WallThickness < (SELF\IfcRectangleProfileDef.YDim/2.)); + WR32 : NOT(EXISTS(OuterFilletRadius)) OR + ((OuterFilletRadius <= (SELF\IfcRectangleProfileDef.XDim/2.)) AND + (OuterFilletRadius <= (SELF\IfcRectangleProfileDef.YDim/2.))); + WR33 : NOT(EXISTS(InnerFilletRadius)) OR + ((InnerFilletRadius <= (SELF\IfcRectangleProfileDef.XDim/2. - WallThickness)) AND + (InnerFilletRadius <= (SELF\IfcRectangleProfileDef.YDim/2. - WallThickness))); +END_ENTITY; + +ENTITY IfcRectangleProfileDef + SUPERTYPE OF (ONEOF + (IfcRectangleHollowProfileDef + ,IfcRoundedRectangleProfileDef)) + SUBTYPE OF (IfcParameterizedProfileDef); + XDim : IfcPositiveLengthMeasure; + YDim : IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcRectangularPyramid + SUBTYPE OF (IfcCsgPrimitive3D); + XLength : IfcPositiveLengthMeasure; + YLength : IfcPositiveLengthMeasure; + Height : IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcRectangularTrimmedSurface + SUBTYPE OF (IfcBoundedSurface); + BasisSurface : IfcSurface; + U1 : IfcParameterValue; + V1 : IfcParameterValue; + U2 : IfcParameterValue; + V2 : IfcParameterValue; + Usense : BOOLEAN; + Vsense : BOOLEAN; + DERIVE + Dim : IfcDimensionCount := BasisSurface.Dim; + WHERE + WR1 : U1 <> U2; + WR2 : V1 <> V2; + WR3 : (('IFC2X3.IFCELEMENTARYSURFACE' IN TYPEOF(BasisSurface)) AND + (NOT ('IFC2X3.IFCPLANE' IN TYPEOF(BasisSurface)))) OR + ('IFC2X3.IFCSURFACEOFREVOLUTION' IN TYPEOF(BasisSurface)) OR + (Usense = (U2 > U1)); + WR4 : Vsense = (V2 > V1); +END_ENTITY; + +ENTITY IfcReferencesValueDocument; + ReferencedDocument : IfcDocumentSelect; + ReferencingValues : SET [1:?] OF IfcAppliedValue; + Name : OPTIONAL IfcLabel; + Description : OPTIONAL IfcText; +END_ENTITY; + +ENTITY IfcRegularTimeSeries + SUBTYPE OF (IfcTimeSeries); + TimeStep : IfcTimeMeasure; + Values : LIST [1:?] OF IfcTimeSeriesValue; +END_ENTITY; + +ENTITY IfcReinforcementBarProperties; + TotalCrossSectionArea : IfcAreaMeasure; + SteelGrade : IfcLabel; + BarSurface : OPTIONAL IfcReinforcingBarSurfaceEnum; + EffectiveDepth : OPTIONAL IfcLengthMeasure; + NominalBarDiameter : OPTIONAL IfcPositiveLengthMeasure; + BarCount : OPTIONAL IfcCountMeasure; +END_ENTITY; + +ENTITY IfcReinforcementDefinitionProperties + SUBTYPE OF (IfcPropertySetDefinition); + DefinitionType : OPTIONAL IfcLabel; + ReinforcementSectionDefinitions : LIST [1:?] OF IfcSectionReinforcementProperties; +END_ENTITY; + +ENTITY IfcReinforcingBar + SUBTYPE OF (IfcReinforcingElement); + NominalDiameter : IfcPositiveLengthMeasure; + CrossSectionArea : IfcAreaMeasure; + BarLength : OPTIONAL IfcPositiveLengthMeasure; + BarRole : IfcReinforcingBarRoleEnum; + BarSurface : OPTIONAL IfcReinforcingBarSurfaceEnum; + WHERE + WR1 : (BarRole <> IfcReinforcingBarRoleEnum.USERDEFINED) OR ((BarRole = IfcReinforcingBarRoleEnum.USERDEFINED) AND EXISTS(SELF\IfcObject.ObjectType)); +END_ENTITY; + +ENTITY IfcReinforcingElement + ABSTRACT SUPERTYPE OF (ONEOF + (IfcReinforcingBar + ,IfcReinforcingMesh + ,IfcTendon + ,IfcTendonAnchor)) + SUBTYPE OF (IfcBuildingElementComponent); + SteelGrade : OPTIONAL IfcLabel; +END_ENTITY; + +ENTITY IfcReinforcingMesh + SUBTYPE OF (IfcReinforcingElement); + MeshLength : OPTIONAL IfcPositiveLengthMeasure; + MeshWidth : OPTIONAL IfcPositiveLengthMeasure; + LongitudinalBarNominalDiameter : IfcPositiveLengthMeasure; + TransverseBarNominalDiameter : IfcPositiveLengthMeasure; + LongitudinalBarCrossSectionArea : IfcAreaMeasure; + TransverseBarCrossSectionArea : IfcAreaMeasure; + LongitudinalBarSpacing : IfcPositiveLengthMeasure; + TransverseBarSpacing : IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcRelAggregates + SUBTYPE OF (IfcRelDecomposes); +END_ENTITY; + +ENTITY IfcRelAssigns + ABSTRACT SUPERTYPE OF (ONEOF + (IfcRelAssignsToActor + ,IfcRelAssignsToControl + ,IfcRelAssignsToGroup + ,IfcRelAssignsToProcess + ,IfcRelAssignsToProduct + ,IfcRelAssignsToResource)) + SUBTYPE OF (IfcRelationship); + RelatedObjects : SET [1:?] OF IfcObjectDefinition; + RelatedObjectsType : OPTIONAL IfcObjectTypeEnum; + WHERE + WR1 : IfcCorrectObjectAssignment(RelatedObjectsType, RelatedObjects); +END_ENTITY; + +ENTITY IfcRelAssignsTasks + SUBTYPE OF (IfcRelAssignsToControl); + TimeForTask : OPTIONAL IfcScheduleTimeControl; + WHERE + WR1 : HIINDEX(SELF\IfcRelAssigns.RelatedObjects) = 1; + WR2 : 'IFC2X3.IFCTASK' IN TYPEOF(SELF\IfcRelAssigns.RelatedObjects[1]); + WR3 : 'IFC2X3.IFCWORKCONTROL' IN TYPEOF(SELF\IfcRelAssignsToControl.RelatingControl); +END_ENTITY; + +ENTITY IfcRelAssignsToActor + SUPERTYPE OF (ONEOF + (IfcRelOccupiesSpaces)) + SUBTYPE OF (IfcRelAssigns); + RelatingActor : IfcActor; + ActingRole : OPTIONAL IfcActorRole; + WHERE + WR1 : SIZEOF(QUERY(Temp <* SELF\IfcRelAssigns.RelatedObjects | RelatingActor :=: Temp)) = 0; +END_ENTITY; + +ENTITY IfcRelAssignsToControl + SUPERTYPE OF (ONEOF + (IfcRelAssignsTasks + ,IfcRelAssignsToProjectOrder + ,IfcRelSchedulesCostItems)) + SUBTYPE OF (IfcRelAssigns); + RelatingControl : IfcControl; + WHERE + WR1 : SIZEOF(QUERY(Temp <* SELF\IfcRelAssigns.RelatedObjects | RelatingControl :=: Temp)) = 0; +END_ENTITY; + +ENTITY IfcRelAssignsToGroup + SUBTYPE OF (IfcRelAssigns); + RelatingGroup : IfcGroup; + WHERE + WR1 : SIZEOF(QUERY(Temp <* SELF\IfcRelAssigns.RelatedObjects | RelatingGroup :=: Temp)) = 0; +END_ENTITY; + +ENTITY IfcRelAssignsToProcess + SUBTYPE OF (IfcRelAssigns); + RelatingProcess : IfcProcess; + QuantityInProcess : OPTIONAL IfcMeasureWithUnit; + WHERE + WR1 : SIZEOF(QUERY(Temp <* SELF\IfcRelAssigns.RelatedObjects | RelatingProcess :=: Temp)) = 0; +END_ENTITY; + +ENTITY IfcRelAssignsToProduct + SUBTYPE OF (IfcRelAssigns); + RelatingProduct : IfcProduct; + WHERE + WR1 : SIZEOF(QUERY(Temp <* SELF\IfcRelAssigns.RelatedObjects | RelatingProduct :=: Temp)) = 0; +END_ENTITY; + +ENTITY IfcRelAssignsToProjectOrder + SUBTYPE OF (IfcRelAssignsToControl); +END_ENTITY; + +ENTITY IfcRelAssignsToResource + SUBTYPE OF (IfcRelAssigns); + RelatingResource : IfcResource; + WHERE + WR1 : SIZEOF(QUERY(Temp <* SELF\IfcRelAssigns.RelatedObjects | RelatingResource :=: Temp)) = 0; +END_ENTITY; + +ENTITY IfcRelAssociates + SUPERTYPE OF (ONEOF + (IfcRelAssociatesAppliedValue + ,IfcRelAssociatesApproval + ,IfcRelAssociatesClassification + ,IfcRelAssociatesConstraint + ,IfcRelAssociatesDocument + ,IfcRelAssociatesLibrary + ,IfcRelAssociatesMaterial + ,IfcRelAssociatesProfileProperties)) + SUBTYPE OF (IfcRelationship); + RelatedObjects : SET [1:?] OF IfcRoot; + WHERE + WR21 : SIZEOF(QUERY(temp <* RelatedObjects | + NOT(('IFC2X3.IFCOBJECTDEFINITION' IN TYPEOF(temp)) + OR ('IFC2X3.IFCPROPERTYDEFINITION' IN TYPEOF(temp))) + )) = 0; +END_ENTITY; + +ENTITY IfcRelAssociatesAppliedValue + SUBTYPE OF (IfcRelAssociates); + RelatingAppliedValue : IfcAppliedValue; +END_ENTITY; + +ENTITY IfcRelAssociatesApproval + SUBTYPE OF (IfcRelAssociates); + RelatingApproval : IfcApproval; +END_ENTITY; + +ENTITY IfcRelAssociatesClassification + SUBTYPE OF (IfcRelAssociates); + RelatingClassification : IfcClassificationNotationSelect; +END_ENTITY; + +ENTITY IfcRelAssociatesConstraint + SUBTYPE OF (IfcRelAssociates); + Intent : IfcLabel; + RelatingConstraint : IfcConstraint; +END_ENTITY; + +ENTITY IfcRelAssociatesDocument + SUBTYPE OF (IfcRelAssociates); + RelatingDocument : IfcDocumentSelect; +END_ENTITY; + +ENTITY IfcRelAssociatesLibrary + SUBTYPE OF (IfcRelAssociates); + RelatingLibrary : IfcLibrarySelect; +END_ENTITY; + +ENTITY IfcRelAssociatesMaterial + SUBTYPE OF (IfcRelAssociates); + RelatingMaterial : IfcMaterialSelect; + WHERE + WR21 : SIZEOF(QUERY(temp <* SELF\IfcRelAssociates.RelatedObjects | + ('IFC2X3.IFCFEATUREELEMENTSUBTRACTION' IN TYPEOF(temp)) + OR ('IFC2X3.IFCVIRTUALELEMENT' IN TYPEOF(temp)) + )) = 0; + WR22 : SIZEOF(QUERY(temp <* SELF\IfcRelAssociates.RelatedObjects | + (NOT('IFC2X3.IFCPRODUCT' IN TYPEOF(temp)) AND NOT('IFC2X3.IFCTYPEPRODUCT' IN TYPEOF(temp))) + )) = 0; +END_ENTITY; + +ENTITY IfcRelAssociatesProfileProperties + SUBTYPE OF (IfcRelAssociates); + RelatingProfileProperties : IfcProfileProperties; + ProfileSectionLocation : OPTIONAL IfcShapeAspect; + ProfileOrientation : OPTIONAL IfcOrientationSelect; +END_ENTITY; + +ENTITY IfcRelConnects + ABSTRACT SUPERTYPE OF (ONEOF + (IfcRelConnectsElements + ,IfcRelConnectsPortToElement + ,IfcRelConnectsPorts + ,IfcRelConnectsStructuralActivity + ,IfcRelConnectsStructuralElement + ,IfcRelConnectsStructuralMember + ,IfcRelContainedInSpatialStructure + ,IfcRelCoversBldgElements + ,IfcRelCoversSpaces + ,IfcRelFillsElement + ,IfcRelFlowControlElements + ,IfcRelInteractionRequirements + ,IfcRelProjectsElement + ,IfcRelReferencedInSpatialStructure + ,IfcRelSequence + ,IfcRelServicesBuildings + ,IfcRelSpaceBoundary + ,IfcRelVoidsElement)) + SUBTYPE OF (IfcRelationship); +END_ENTITY; + +ENTITY IfcRelConnectsElements + SUPERTYPE OF (ONEOF + (IfcRelConnectsPathElements + ,IfcRelConnectsWithRealizingElements)) + SUBTYPE OF (IfcRelConnects); + ConnectionGeometry : OPTIONAL IfcConnectionGeometry; + RelatingElement : IfcElement; + RelatedElement : IfcElement; + WHERE + WR31 : RelatingElement :<>: RelatedElement; +END_ENTITY; + +ENTITY IfcRelConnectsPathElements + SUBTYPE OF (IfcRelConnectsElements); + RelatingPriorities : LIST [0:?] OF INTEGER; + RelatedPriorities : LIST [0:?] OF INTEGER; + RelatedConnectionType : IfcConnectionTypeEnum; + RelatingConnectionType : IfcConnectionTypeEnum; + DERIVE + RelatedLayerCount : INTEGER := IfcNoOfLayers(SELF\IfcRelConnectsElements.RelatedElement); + RelatingLayerCount : INTEGER := IfcNoOfLayers(SELF\IfcRelConnectsElements.RelatingElement); +END_ENTITY; + +ENTITY IfcRelConnectsPortToElement + SUBTYPE OF (IfcRelConnects); + RelatingPort : IfcPort; + RelatedElement : IfcElement; +END_ENTITY; + +ENTITY IfcRelConnectsPorts + SUBTYPE OF (IfcRelConnects); + RelatingPort : IfcPort; + RelatedPort : IfcPort; + RealizingElement : OPTIONAL IfcElement; +END_ENTITY; + +ENTITY IfcRelConnectsStructuralActivity + SUBTYPE OF (IfcRelConnects); + RelatingElement : IfcStructuralActivityAssignmentSelect; + RelatedStructuralActivity : IfcStructuralActivity; +END_ENTITY; + +ENTITY IfcRelConnectsStructuralElement + SUBTYPE OF (IfcRelConnects); + RelatingElement : IfcElement; + RelatedStructuralMember : IfcStructuralMember; +END_ENTITY; + +ENTITY IfcRelConnectsStructuralMember + SUPERTYPE OF (ONEOF + (IfcRelConnectsWithEccentricity)) + SUBTYPE OF (IfcRelConnects); + RelatingStructuralMember : IfcStructuralMember; + RelatedStructuralConnection : IfcStructuralConnection; + AppliedCondition : OPTIONAL IfcBoundaryCondition; + AdditionalConditions : OPTIONAL IfcStructuralConnectionCondition; + SupportedLength : OPTIONAL IfcLengthMeasure; + ConditionCoordinateSystem : OPTIONAL IfcAxis2Placement3D; +END_ENTITY; + +ENTITY IfcRelConnectsWithEccentricity + SUBTYPE OF (IfcRelConnectsStructuralMember); + ConnectionConstraint : IfcConnectionGeometry; +END_ENTITY; + +ENTITY IfcRelConnectsWithRealizingElements + SUBTYPE OF (IfcRelConnectsElements); + RealizingElements : SET [1:?] OF IfcElement; + ConnectionType : OPTIONAL IfcLabel; +END_ENTITY; + +ENTITY IfcRelContainedInSpatialStructure + SUBTYPE OF (IfcRelConnects); + RelatedElements : SET [1:?] OF IfcProduct; + RelatingStructure : IfcSpatialStructureElement; + WHERE + WR31 : SIZEOF(QUERY(temp <* RelatedElements | 'IFC2X3.IFCSPATIALSTRUCTUREELEMENT' IN TYPEOF(temp))) = 0; +END_ENTITY; + +ENTITY IfcRelCoversBldgElements + SUBTYPE OF (IfcRelConnects); + RelatingBuildingElement : IfcElement; + RelatedCoverings : SET [1:?] OF IfcCovering; +END_ENTITY; + +ENTITY IfcRelCoversSpaces + SUBTYPE OF (IfcRelConnects); + RelatedSpace : IfcSpace; + RelatedCoverings : SET [1:?] OF IfcCovering; +END_ENTITY; + +ENTITY IfcRelDecomposes + ABSTRACT SUPERTYPE OF (ONEOF + (IfcRelAggregates + ,IfcRelNests)) + SUBTYPE OF (IfcRelationship); + RelatingObject : IfcObjectDefinition; + RelatedObjects : SET [1:?] OF IfcObjectDefinition; + WHERE + WR31 : SIZEOF(QUERY(Temp <* RelatedObjects | RelatingObject :=: Temp)) = 0; + WR32 : SIZEOF(QUERY(Temp <* RelatedObjects | 'IFC2X3.IFCTYPEOBJECT' IN TYPEOF(temp))) = 0; + WR33 : NOT('IFC2X3.IFCTYPEOBJECT' IN TYPEOF(RelatingObject)); +END_ENTITY; + +ENTITY IfcRelDefines + ABSTRACT SUPERTYPE OF (ONEOF + (IfcRelDefinesByProperties + ,IfcRelDefinesByType)) + SUBTYPE OF (IfcRelationship); + RelatedObjects : SET [1:?] OF IfcObject; +END_ENTITY; + +ENTITY IfcRelDefinesByProperties + SUPERTYPE OF (ONEOF + (IfcRelOverridesProperties)) + SUBTYPE OF (IfcRelDefines); + RelatingPropertyDefinition : IfcPropertySetDefinition; +END_ENTITY; + +ENTITY IfcRelDefinesByType + SUBTYPE OF (IfcRelDefines); + RelatingType : IfcTypeObject; +END_ENTITY; + +ENTITY IfcRelFillsElement + SUBTYPE OF (IfcRelConnects); + RelatingOpeningElement : IfcOpeningElement; + RelatedBuildingElement : IfcElement; +END_ENTITY; + +ENTITY IfcRelFlowControlElements + SUBTYPE OF (IfcRelConnects); + RelatedControlElements : SET [1:?] OF IfcDistributionControlElement; + RelatingFlowElement : IfcDistributionFlowElement; +END_ENTITY; + +ENTITY IfcRelInteractionRequirements + SUBTYPE OF (IfcRelConnects); + DailyInteraction : OPTIONAL IfcCountMeasure; + ImportanceRating : OPTIONAL IfcNormalisedRatioMeasure; + LocationOfInteraction : OPTIONAL IfcSpatialStructureElement; + RelatedSpaceProgram : IfcSpaceProgram; + RelatingSpaceProgram : IfcSpaceProgram; +END_ENTITY; + +ENTITY IfcRelNests + SUBTYPE OF (IfcRelDecomposes); + WHERE + WR1 : SIZEOF(QUERY(Temp <* SELF\IfcRelDecomposes.RelatedObjects | + NOT(TYPEOF(SELF\IfcRelDecomposes.RelatingObject) = TYPEOF(Temp)))) = 0; +END_ENTITY; + +ENTITY IfcRelOccupiesSpaces + SUBTYPE OF (IfcRelAssignsToActor); +END_ENTITY; + +ENTITY IfcRelOverridesProperties + SUBTYPE OF (IfcRelDefinesByProperties); + OverridingProperties : SET [1:?] OF IfcProperty; + WHERE + WR1 : SIZEOF(SELF\IfcRelDefines.RelatedObjects) = 1; +END_ENTITY; + +ENTITY IfcRelProjectsElement + SUBTYPE OF (IfcRelConnects); + RelatingElement : IfcElement; + RelatedFeatureElement : IfcFeatureElementAddition; +END_ENTITY; + +ENTITY IfcRelReferencedInSpatialStructure + SUBTYPE OF (IfcRelConnects); + RelatedElements : SET [1:?] OF IfcProduct; + RelatingStructure : IfcSpatialStructureElement; + WHERE + WR31 : SIZEOF(QUERY(temp <* RelatedElements | 'IFC2X3.IFCSPATIALSTRUCTUREELEMENT' IN TYPEOF(temp))) = 0; +END_ENTITY; + +ENTITY IfcRelSchedulesCostItems + SUBTYPE OF (IfcRelAssignsToControl); + WHERE + WR11 : SIZEOF(QUERY(temp <* SELF\IfcRelAssigns.RelatedObjects | + NOT('IFC2X3.IFCCOSTITEM' IN TYPEOF(temp)) + )) = 0; + WR12 : 'IFC2X3.IFCCOSTSCHEDULE' IN TYPEOF (SELF\IfcRelAssignsToControl.RelatingControl); +END_ENTITY; + +ENTITY IfcRelSequence + SUBTYPE OF (IfcRelConnects); + RelatingProcess : IfcProcess; + RelatedProcess : IfcProcess; + TimeLag : IfcTimeMeasure; + SequenceType : IfcSequenceEnum; + WHERE + WR1 : RelatingProcess :<>: RelatedProcess; +END_ENTITY; + +ENTITY IfcRelServicesBuildings + SUBTYPE OF (IfcRelConnects); + RelatingSystem : IfcSystem; + RelatedBuildings : SET [1:?] OF IfcSpatialStructureElement; +END_ENTITY; + +ENTITY IfcRelSpaceBoundary + SUBTYPE OF (IfcRelConnects); + RelatingSpace : IfcSpace; + RelatedBuildingElement : OPTIONAL IfcElement; + ConnectionGeometry : OPTIONAL IfcConnectionGeometry; + PhysicalOrVirtualBoundary : IfcPhysicalOrVirtualEnum; + InternalOrExternalBoundary : IfcInternalOrExternalEnum; + WHERE + WR1 : ((PhysicalOrVirtualBoundary = IfcPhysicalOrVirtualEnum.Physical) AND + (EXISTS(RelatedBuildingElement) AND NOT('IFC2X3.IFCVIRTUALELEMENT' IN TYPEOF(RelatedBuildingElement)))) + OR + ((PhysicalOrVirtualBoundary = IfcPhysicalOrVirtualEnum.Virtual) AND + (NOT(EXISTS(RelatedBuildingElement)) OR ('IFC2X3.IFCVIRTUALELEMENT' IN TYPEOF(RelatedBuildingElement)))) + OR + (PhysicalOrVirtualBoundary = IfcPhysicalOrVirtualEnum.NotDefined); +END_ENTITY; + +ENTITY IfcRelVoidsElement + SUBTYPE OF (IfcRelConnects); + RelatingBuildingElement : IfcElement; + RelatedOpeningElement : IfcFeatureElementSubtraction; +END_ENTITY; + +ENTITY IfcRelationship + ABSTRACT SUPERTYPE OF (ONEOF + (IfcRelAssigns + ,IfcRelAssociates + ,IfcRelConnects + ,IfcRelDecomposes + ,IfcRelDefines)) + SUBTYPE OF (IfcRoot); +END_ENTITY; + +ENTITY IfcRelaxation; + RelaxationValue : IfcNormalisedRatioMeasure; + InitialStress : IfcNormalisedRatioMeasure; +END_ENTITY; + +ENTITY IfcRepresentation + SUPERTYPE OF (ONEOF + (IfcShapeModel + ,IfcStyleModel)); + ContextOfItems : IfcRepresentationContext; + RepresentationIdentifier : OPTIONAL IfcLabel; + RepresentationType : OPTIONAL IfcLabel; + Items : SET [1:?] OF IfcRepresentationItem; + INVERSE + RepresentationMap : SET [0:1] OF IfcRepresentationMap FOR MappedRepresentation; + LayerAssignments : SET [0:?] OF IfcPresentationLayerAssignment FOR Assigneditems; + OfProductRepresentation : SET [0:1] OF IfcProductRepresentation FOR Representations; +END_ENTITY; + +ENTITY IfcRepresentationContext + SUPERTYPE OF (ONEOF + (IfcGeometricRepresentationContext)); + ContextIdentifier : OPTIONAL IfcLabel; + ContextType : OPTIONAL IfcLabel; + INVERSE + RepresentationsInContext : SET [0:?] OF IfcRepresentation FOR ContextOfItems; +END_ENTITY; + +ENTITY IfcRepresentationItem + ABSTRACT SUPERTYPE OF (ONEOF + (IfcGeometricRepresentationItem + ,IfcMappedItem + ,IfcStyledItem + ,IfcTopologicalRepresentationItem)); + INVERSE + LayerAssignments : SET [0:?] OF IfcPresentationLayerAssignment FOR AssignedItems; + StyledByItem : SET [0:1] OF IfcStyledItem FOR Item; +END_ENTITY; + +ENTITY IfcRepresentationMap; + MappingOrigin : IfcAxis2Placement; + MappedRepresentation : IfcRepresentation; + INVERSE + MapUsage : SET [0:?] OF IfcMappedItem FOR MappingSource; +END_ENTITY; + +ENTITY IfcResource + ABSTRACT SUPERTYPE OF (ONEOF + (IfcConstructionResource)) + SUBTYPE OF (IfcObject); + INVERSE + ResourceOf : SET [0:?] OF IfcRelAssignsToResource FOR RelatingResource; +END_ENTITY; + +ENTITY IfcRevolvedAreaSolid + SUBTYPE OF (IfcSweptAreaSolid); + Axis : IfcAxis1Placement; + Angle : IfcPlaneAngleMeasure; + DERIVE + AxisLine : IfcLine := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcCurve() || IfcLine(Axis.Location, + IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector(Axis.Z,1.0)); + WHERE + WR31 : Axis.Location.Coordinates[3] = 0.0; + WR32 : Axis.Z.DirectionRatios[3] = 0.0; +END_ENTITY; + +ENTITY IfcRibPlateProfileProperties + SUBTYPE OF (IfcProfileProperties); + Thickness : OPTIONAL IfcPositiveLengthMeasure; + RibHeight : OPTIONAL IfcPositiveLengthMeasure; + RibWidth : OPTIONAL IfcPositiveLengthMeasure; + RibSpacing : OPTIONAL IfcPositiveLengthMeasure; + Direction : IfcRibPlateDirectionEnum; +END_ENTITY; + +ENTITY IfcRightCircularCone + SUBTYPE OF (IfcCsgPrimitive3D); + Height : IfcPositiveLengthMeasure; + BottomRadius : IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcRightCircularCylinder + SUBTYPE OF (IfcCsgPrimitive3D); + Height : IfcPositiveLengthMeasure; + Radius : IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcRoof + SUBTYPE OF (IfcBuildingElement); + ShapeType : IfcRoofTypeEnum; + WHERE + WR1 : (HIINDEX(SELF\IfcObjectDefinition.IsDecomposedBy) = 0) OR + ((HIINDEX(SELF\IfcObjectDefinition.IsDecomposedBy) = 1) AND (NOT(EXISTS(SELF\IfcProduct.Representation)))); +END_ENTITY; + +ENTITY IfcRoot + ABSTRACT SUPERTYPE OF (ONEOF + (IfcObjectDefinition + ,IfcPropertyDefinition + ,IfcRelationship)); + GlobalId : IfcGloballyUniqueId; + OwnerHistory : IfcOwnerHistory; + Name : OPTIONAL IfcLabel; + Description : OPTIONAL IfcText; + UNIQUE + UR1 : GlobalId; +END_ENTITY; + +ENTITY IfcRoundedEdgeFeature + SUBTYPE OF (IfcEdgeFeature); + Radius : OPTIONAL IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcRoundedRectangleProfileDef + SUBTYPE OF (IfcRectangleProfileDef); + RoundingRadius : IfcPositiveLengthMeasure; + WHERE + WR31 : ((RoundingRadius <= (SELF\IfcRectangleProfileDef.XDim/2.)) AND + (RoundingRadius <= (SELF\IfcRectangleProfileDef.YDim/2.))); +END_ENTITY; + +ENTITY IfcSIUnit + SUBTYPE OF (IfcNamedUnit); + Prefix : OPTIONAL IfcSIPrefix; + Name : IfcSIUnitName; + DERIVE + SELF\IfcNamedUnit.Dimensions : IfcDimensionalExponents := IfcDimensionsForSiUnit (SELF.Name); +END_ENTITY; + +ENTITY IfcSanitaryTerminalType + SUBTYPE OF (IfcFlowTerminalType); + PredefinedType : IfcSanitaryTerminalTypeEnum; +END_ENTITY; + +ENTITY IfcScheduleTimeControl + SUBTYPE OF (IfcControl); + ActualStart : OPTIONAL IfcDateTimeSelect; + EarlyStart : OPTIONAL IfcDateTimeSelect; + LateStart : OPTIONAL IfcDateTimeSelect; + ScheduleStart : OPTIONAL IfcDateTimeSelect; + ActualFinish : OPTIONAL IfcDateTimeSelect; + EarlyFinish : OPTIONAL IfcDateTimeSelect; + LateFinish : OPTIONAL IfcDateTimeSelect; + ScheduleFinish : OPTIONAL IfcDateTimeSelect; + ScheduleDuration : OPTIONAL IfcTimeMeasure; + ActualDuration : OPTIONAL IfcTimeMeasure; + RemainingTime : OPTIONAL IfcTimeMeasure; + FreeFloat : OPTIONAL IfcTimeMeasure; + TotalFloat : OPTIONAL IfcTimeMeasure; + IsCritical : OPTIONAL BOOLEAN; + StatusTime : OPTIONAL IfcDateTimeSelect; + StartFloat : OPTIONAL IfcTimeMeasure; + FinishFloat : OPTIONAL IfcTimeMeasure; + Completion : OPTIONAL IfcPositiveRatioMeasure; + INVERSE + ScheduleTimeControlAssigned : IfcRelAssignsTasks FOR TimeForTask; +END_ENTITY; + +ENTITY IfcSectionProperties; + SectionType : IfcSectionTypeEnum; + StartProfile : IfcProfileDef; + EndProfile : OPTIONAL IfcProfileDef; +END_ENTITY; + +ENTITY IfcSectionReinforcementProperties; + LongitudinalStartPosition : IfcLengthMeasure; + LongitudinalEndPosition : IfcLengthMeasure; + TransversePosition : OPTIONAL IfcLengthMeasure; + ReinforcementRole : IfcReinforcingBarRoleEnum; + SectionDefinition : IfcSectionProperties; + CrossSectionReinforcementDefinitions : SET [1:?] OF IfcReinforcementBarProperties; +END_ENTITY; + +ENTITY IfcSectionedSpine + SUBTYPE OF (IfcGeometricRepresentationItem); + SpineCurve : IfcCompositeCurve; + CrossSections : LIST [2:?] OF IfcProfileDef; + CrossSectionPositions : LIST [2:?] OF IfcAxis2Placement3D; + DERIVE + Dim : IfcDimensionCount := 3; + WHERE + WR1 : SIZEOF(CrossSections) = SIZEOF(CrossSectionPositions); + WR2 : SIZEOF(QUERY(temp <* CrossSections | CrossSections[1].ProfileType <> temp.ProfileType)) = 0; + WR3 : SpineCurve.Dim = 3; +END_ENTITY; + +ENTITY IfcSensorType + SUBTYPE OF (IfcDistributionControlElementType); + PredefinedType : IfcSensorTypeEnum; +END_ENTITY; + +ENTITY IfcServiceLife + SUBTYPE OF (IfcControl); + ServiceLifeType : IfcServiceLifeTypeEnum; + ServiceLifeDuration : IfcTimeMeasure; +END_ENTITY; + +ENTITY IfcServiceLifeFactor + SUBTYPE OF (IfcPropertySetDefinition); + PredefinedType : IfcServiceLifeFactorTypeEnum; + UpperValue : OPTIONAL IfcMeasureValue; + MostUsedValue : IfcMeasureValue; + LowerValue : OPTIONAL IfcMeasureValue; + WHERE + WR31 : NOT(PredefinedType = IfcServiceLifeFactorTypeEnum.USERDEFINED) + OR EXISTS(SELF\IfcObject.ObjectType); +END_ENTITY; + +ENTITY IfcShapeAspect; + ShapeRepresentations : LIST [1:?] OF IfcShapeModel; + Name : OPTIONAL IfcLabel; + Description : OPTIONAL IfcText; + ProductDefinitional : LOGICAL; + PartOfProductDefinitionShape : IfcProductDefinitionShape; +END_ENTITY; + +ENTITY IfcShapeModel + ABSTRACT SUPERTYPE OF (ONEOF + (IfcShapeRepresentation + ,IfcTopologyRepresentation)) + SUBTYPE OF (IfcRepresentation); + INVERSE + OfShapeAspect : SET [0:1] OF IfcShapeAspect FOR ShapeRepresentations; + WHERE + WR11 : (SIZEOF(SELF\IfcRepresentation.OfProductRepresentation) = 1) XOR + (SIZEOF(SELF\IfcRepresentation.RepresentationMap) = 1) XOR + (SIZEOF(OfShapeAspect) = 1); +END_ENTITY; + +ENTITY IfcShapeRepresentation + SUBTYPE OF (IfcShapeModel); + WHERE + WR21 : 'IFC2X3.IFCGEOMETRICREPRESENTATIONCONTEXT' + IN TYPEOF(SELF\IfcRepresentation.ContextOfItems); + WR22 : SIZEOF(QUERY(temp <* Items | + ('IFC2X3.IFCTOPOLOGICALREPRESENTATIONITEM' IN TYPEOF(temp)) + AND (NOT(SIZEOF( + ['IFC2X3.IFCVERTEXPOINT', + 'IFC2X3.IFCEDGECURVE', + 'IFC2X3.IFCFACESURFACE'] * TYPEOF(temp)) = 1)) + )) = 0; + WR23 : EXISTS(SELF\IfcRepresentation.RepresentationType); + WR24 : IfcShapeRepresentationTypes(SELF\IfcRepresentation.RepresentationType, SELF\IfcRepresentation.Items); +END_ENTITY; + +ENTITY IfcShellBasedSurfaceModel + SUBTYPE OF (IfcGeometricRepresentationItem); + SbsmBoundary : SET [1:?] OF IfcShell; + DERIVE + Dim : IfcDimensionCount := 3; +END_ENTITY; + +ENTITY IfcSimpleProperty + ABSTRACT SUPERTYPE OF (ONEOF + (IfcPropertyBoundedValue + ,IfcPropertyEnumeratedValue + ,IfcPropertyListValue + ,IfcPropertyReferenceValue + ,IfcPropertySingleValue + ,IfcPropertyTableValue)) + SUBTYPE OF (IfcProperty); +END_ENTITY; + +ENTITY IfcSite + SUBTYPE OF (IfcSpatialStructureElement); + RefLatitude : OPTIONAL IfcCompoundPlaneAngleMeasure; + RefLongitude : OPTIONAL IfcCompoundPlaneAngleMeasure; + RefElevation : OPTIONAL IfcLengthMeasure; + LandTitleNumber : OPTIONAL IfcLabel; + SiteAddress : OPTIONAL IfcPostalAddress; +END_ENTITY; + +ENTITY IfcSlab + SUBTYPE OF (IfcBuildingElement); + PredefinedType : OPTIONAL IfcSlabTypeEnum; + WHERE + WR2 : (PredefinedType <> IfcSlabTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcSlabTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcObject.ObjectType)); +END_ENTITY; + +ENTITY IfcSlabType + SUBTYPE OF (IfcBuildingElementType); + PredefinedType : IfcSlabTypeEnum; +END_ENTITY; + +ENTITY IfcSlippageConnectionCondition + SUBTYPE OF (IfcStructuralConnectionCondition); + SlippageX : OPTIONAL IfcLengthMeasure; + SlippageY : OPTIONAL IfcLengthMeasure; + SlippageZ : OPTIONAL IfcLengthMeasure; +END_ENTITY; + +ENTITY IfcSolidModel + ABSTRACT SUPERTYPE OF (ONEOF + (IfcCsgSolid + ,IfcManifoldSolidBrep + ,IfcSweptAreaSolid + ,IfcSweptDiskSolid)) + SUBTYPE OF (IfcGeometricRepresentationItem); + DERIVE + Dim : IfcDimensionCount := 3; +END_ENTITY; + +ENTITY IfcSoundProperties + SUBTYPE OF (IfcPropertySetDefinition); + IsAttenuating : IfcBoolean; + SoundScale : OPTIONAL IfcSoundScaleEnum; + SoundValues : LIST [1:8] OF IfcSoundValue; +END_ENTITY; + +ENTITY IfcSoundValue + SUBTYPE OF (IfcPropertySetDefinition); + SoundLevelTimeSeries : OPTIONAL IfcTimeSeries; + Frequency : IfcFrequencyMeasure; + SoundLevelSingleValue : OPTIONAL IfcDerivedMeasureValue; +END_ENTITY; + +ENTITY IfcSpace + SUBTYPE OF (IfcSpatialStructureElement); + InteriorOrExteriorSpace : IfcInternalOrExternalEnum; + ElevationWithFlooring : OPTIONAL IfcLengthMeasure; + INVERSE + HasCoverings : SET [0:?] OF IfcRelCoversSpaces FOR RelatedSpace; + BoundedBy : SET [0:?] OF IfcRelSpaceBoundary FOR RelatingSpace; +END_ENTITY; + +ENTITY IfcSpaceHeaterType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcSpaceHeaterTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcSpaceHeaterTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcSpaceHeaterTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcSpaceProgram + SUBTYPE OF (IfcControl); + SpaceProgramIdentifier : IfcIdentifier; + MaxRequiredArea : OPTIONAL IfcAreaMeasure; + MinRequiredArea : OPTIONAL IfcAreaMeasure; + RequestedLocation : OPTIONAL IfcSpatialStructureElement; + StandardRequiredArea : IfcAreaMeasure; + INVERSE + HasInteractionReqsFrom : SET [0:?] OF IfcRelInteractionRequirements FOR RelatedSpaceProgram; + HasInteractionReqsTo : SET [0:?] OF IfcRelInteractionRequirements FOR RelatingSpaceProgram; +END_ENTITY; + +ENTITY IfcSpaceThermalLoadProperties + SUBTYPE OF (IfcPropertySetDefinition); + ApplicableValueRatio : OPTIONAL IfcPositiveRatioMeasure; + ThermalLoadSource : IfcThermalLoadSourceEnum; + PropertySource : IfcPropertySourceEnum; + SourceDescription : OPTIONAL IfcText; + MaximumValue : IfcPowerMeasure; + MinimumValue : OPTIONAL IfcPowerMeasure; + ThermalLoadTimeSeriesValues : OPTIONAL IfcTimeSeries; + UserDefinedThermalLoadSource : OPTIONAL IfcLabel; + UserDefinedPropertySource : OPTIONAL IfcLabel; + ThermalLoadType : IfcThermalLoadTypeEnum; +END_ENTITY; + +ENTITY IfcSpaceType + SUBTYPE OF (IfcSpatialStructureElementType); + PredefinedType : IfcSpaceTypeEnum; +END_ENTITY; + +ENTITY IfcSpatialStructureElement + ABSTRACT SUPERTYPE OF (ONEOF + (IfcBuilding + ,IfcBuildingStorey + ,IfcSite + ,IfcSpace)) + SUBTYPE OF (IfcProduct); + LongName : OPTIONAL IfcLabel; + CompositionType : IfcElementCompositionEnum; + INVERSE + ReferencesElements : SET [0:?] OF IfcRelReferencedInSpatialStructure FOR RelatingStructure; + ServicedBySystems : SET [0:?] OF IfcRelServicesBuildings FOR RelatedBuildings; + ContainsElements : SET [0:?] OF IfcRelContainedInSpatialStructure FOR RelatingStructure; + WHERE + WR41 : (HIINDEX(SELF\IfcObjectDefinition.Decomposes) = 1) + AND + ('IFC2X3.IFCRELAGGREGATES' IN TYPEOF(SELF\IfcObjectDefinition.Decomposes[1])) + AND + (('IFC2X3.IFCPROJECT' IN TYPEOF (SELF\IfcObjectDefinition.Decomposes[1].RelatingObject)) OR + ('IFC2X3.IFCSPATIALSTRUCTUREELEMENT' IN TYPEOF (SELF\IfcObjectDefinition.Decomposes[1].RelatingObject)) + ); +END_ENTITY; + +ENTITY IfcSpatialStructureElementType + ABSTRACT SUPERTYPE OF (ONEOF + (IfcSpaceType)) + SUBTYPE OF (IfcElementType); +END_ENTITY; + +ENTITY IfcSphere + SUBTYPE OF (IfcCsgPrimitive3D); + Radius : IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcStackTerminalType + SUBTYPE OF (IfcFlowTerminalType); + PredefinedType : IfcStackTerminalTypeEnum; +END_ENTITY; + +ENTITY IfcStair + SUBTYPE OF (IfcBuildingElement); + ShapeType : IfcStairTypeEnum; + WHERE + WR1 : (HIINDEX(SELF\IfcObjectDefinition.IsDecomposedBy) = 0) OR + ((HIINDEX(SELF\IfcObjectDefinition.IsDecomposedBy) = 1) AND (NOT(EXISTS(SELF\IfcProduct.Representation)))); +END_ENTITY; + +ENTITY IfcStairFlight + SUBTYPE OF (IfcBuildingElement); + NumberOfRiser : OPTIONAL INTEGER; + NumberOfTreads : OPTIONAL INTEGER; + RiserHeight : OPTIONAL IfcPositiveLengthMeasure; + TreadLength : OPTIONAL IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcStairFlightType + SUBTYPE OF (IfcBuildingElementType); + PredefinedType : IfcStairFlightTypeEnum; +END_ENTITY; + +ENTITY IfcStructuralAction + ABSTRACT SUPERTYPE OF (ONEOF + (IfcStructuralLinearAction + ,IfcStructuralPlanarAction + ,IfcStructuralPointAction)) + SUBTYPE OF (IfcStructuralActivity); + DestabilizingLoad : BOOLEAN; + CausedBy : OPTIONAL IfcStructuralReaction; +END_ENTITY; + +ENTITY IfcStructuralActivity + ABSTRACT SUPERTYPE OF (ONEOF + (IfcStructuralAction + ,IfcStructuralReaction)) + SUBTYPE OF (IfcProduct); + AppliedLoad : IfcStructuralLoad; + GlobalOrLocal : IfcGlobalOrLocalEnum; + INVERSE + AssignedToStructuralItem : IfcRelConnectsStructuralActivity FOR RelatedStructuralActivity; +END_ENTITY; + +ENTITY IfcStructuralAnalysisModel + SUBTYPE OF (IfcSystem); + PredefinedType : IfcAnalysisModelTypeEnum; + OrientationOf2DPlane : OPTIONAL IfcAxis2Placement3D; + LoadedBy : OPTIONAL SET [1:?] OF IfcStructuralLoadGroup; + HasResults : OPTIONAL SET [1:?] OF IfcStructuralResultGroup; +END_ENTITY; + +ENTITY IfcStructuralConnection + ABSTRACT SUPERTYPE OF (ONEOF + (IfcStructuralCurveConnection + ,IfcStructuralPointConnection + ,IfcStructuralSurfaceConnection)) + SUBTYPE OF (IfcStructuralItem); + AppliedCondition : OPTIONAL IfcBoundaryCondition; + INVERSE + ConnectsStructuralMembers : SET [1:?] OF IfcRelConnectsStructuralMember FOR RelatedStructuralConnection; +END_ENTITY; + +ENTITY IfcStructuralConnectionCondition + ABSTRACT SUPERTYPE OF (ONEOF + (IfcFailureConnectionCondition + ,IfcSlippageConnectionCondition)); + Name : OPTIONAL IfcLabel; +END_ENTITY; + +ENTITY IfcStructuralCurveConnection + SUBTYPE OF (IfcStructuralConnection); +END_ENTITY; + +ENTITY IfcStructuralCurveMember + SUPERTYPE OF (ONEOF + (IfcStructuralCurveMemberVarying)) + SUBTYPE OF (IfcStructuralMember); + PredefinedType : IfcStructuralCurveTypeEnum; +END_ENTITY; + +ENTITY IfcStructuralCurveMemberVarying + SUBTYPE OF (IfcStructuralCurveMember); +END_ENTITY; + +ENTITY IfcStructuralItem + ABSTRACT SUPERTYPE OF (ONEOF + (IfcStructuralConnection + ,IfcStructuralMember)) + SUBTYPE OF (IfcProduct); + INVERSE + AssignedStructuralActivity : SET [0:?] OF IfcRelConnectsStructuralActivity FOR RelatingElement; +END_ENTITY; + +ENTITY IfcStructuralLinearAction + SUPERTYPE OF (ONEOF + (IfcStructuralLinearActionVarying)) + SUBTYPE OF (IfcStructuralAction); + ProjectedOrTrue : IfcProjectedOrTrueLengthEnum; + WHERE + WR61 : SIZEOF(['IFC2X3.IFCSTRUCTURALLOADLINEARFORCE', + 'IFC2X3.IFCSTRUCTURALLOADTEMPERATURE'] + * TYPEOF(SELF\IfcStructuralActivity.AppliedLoad)) = 1; +END_ENTITY; + +ENTITY IfcStructuralLinearActionVarying + SUBTYPE OF (IfcStructuralLinearAction); + VaryingAppliedLoadLocation : IfcShapeAspect; + SubsequentAppliedLoads : LIST [1:?] OF IfcStructuralLoad; + DERIVE + VaryingAppliedLoads : LIST [2:?] OF IfcStructuralLoad := IfcAddToBeginOfList(SELF\IfcStructuralActivity.AppliedLoad, SubsequentAppliedLoads); +END_ENTITY; + +ENTITY IfcStructuralLoad + ABSTRACT SUPERTYPE OF (ONEOF + (IfcStructuralLoadStatic)); + Name : OPTIONAL IfcLabel; +END_ENTITY; + +ENTITY IfcStructuralLoadGroup + SUBTYPE OF (IfcGroup); + PredefinedType : IfcLoadGroupTypeEnum; + ActionType : IfcActionTypeEnum; + ActionSource : IfcActionSourceTypeEnum; + Coefficient : OPTIONAL IfcPositiveRatioMeasure; + Purpose : OPTIONAL IfcLabel; + INVERSE + SourceOfResultGroup : SET [0:1] OF IfcStructuralResultGroup FOR ResultForLoadGroup; + LoadGroupFor : SET [0:?] OF IfcStructuralAnalysisModel FOR LoadedBy; +END_ENTITY; + +ENTITY IfcStructuralLoadLinearForce + SUBTYPE OF (IfcStructuralLoadStatic); + LinearForceX : OPTIONAL IfcLinearForceMeasure; + LinearForceY : OPTIONAL IfcLinearForceMeasure; + LinearForceZ : OPTIONAL IfcLinearForceMeasure; + LinearMomentX : OPTIONAL IfcLinearMomentMeasure; + LinearMomentY : OPTIONAL IfcLinearMomentMeasure; + LinearMomentZ : OPTIONAL IfcLinearMomentMeasure; +END_ENTITY; + +ENTITY IfcStructuralLoadPlanarForce + SUBTYPE OF (IfcStructuralLoadStatic); + PlanarForceX : OPTIONAL IfcPlanarForceMeasure; + PlanarForceY : OPTIONAL IfcPlanarForceMeasure; + PlanarForceZ : OPTIONAL IfcPlanarForceMeasure; +END_ENTITY; + +ENTITY IfcStructuralLoadSingleDisplacement + SUPERTYPE OF (ONEOF + (IfcStructuralLoadSingleDisplacementDistortion)) + SUBTYPE OF (IfcStructuralLoadStatic); + DisplacementX : OPTIONAL IfcLengthMeasure; + DisplacementY : OPTIONAL IfcLengthMeasure; + DisplacementZ : OPTIONAL IfcLengthMeasure; + RotationalDisplacementRX : OPTIONAL IfcPlaneAngleMeasure; + RotationalDisplacementRY : OPTIONAL IfcPlaneAngleMeasure; + RotationalDisplacementRZ : OPTIONAL IfcPlaneAngleMeasure; +END_ENTITY; + +ENTITY IfcStructuralLoadSingleDisplacementDistortion + SUBTYPE OF (IfcStructuralLoadSingleDisplacement); + Distortion : OPTIONAL IfcCurvatureMeasure; +END_ENTITY; + +ENTITY IfcStructuralLoadSingleForce + SUPERTYPE OF (ONEOF + (IfcStructuralLoadSingleForceWarping)) + SUBTYPE OF (IfcStructuralLoadStatic); + ForceX : OPTIONAL IfcForceMeasure; + ForceY : OPTIONAL IfcForceMeasure; + ForceZ : OPTIONAL IfcForceMeasure; + MomentX : OPTIONAL IfcTorqueMeasure; + MomentY : OPTIONAL IfcTorqueMeasure; + MomentZ : OPTIONAL IfcTorqueMeasure; +END_ENTITY; + +ENTITY IfcStructuralLoadSingleForceWarping + SUBTYPE OF (IfcStructuralLoadSingleForce); + WarpingMoment : OPTIONAL IfcWarpingMomentMeasure; +END_ENTITY; + +ENTITY IfcStructuralLoadStatic + ABSTRACT SUPERTYPE OF (ONEOF + (IfcStructuralLoadLinearForce + ,IfcStructuralLoadPlanarForce + ,IfcStructuralLoadSingleDisplacement + ,IfcStructuralLoadSingleForce + ,IfcStructuralLoadTemperature)) + SUBTYPE OF (IfcStructuralLoad); +END_ENTITY; + +ENTITY IfcStructuralLoadTemperature + SUBTYPE OF (IfcStructuralLoadStatic); + DeltaT_Constant : OPTIONAL IfcThermodynamicTemperatureMeasure; + DeltaT_Y : OPTIONAL IfcThermodynamicTemperatureMeasure; + DeltaT_Z : OPTIONAL IfcThermodynamicTemperatureMeasure; +END_ENTITY; + +ENTITY IfcStructuralMember + ABSTRACT SUPERTYPE OF (ONEOF + (IfcStructuralCurveMember + ,IfcStructuralSurfaceMember)) + SUBTYPE OF (IfcStructuralItem); + INVERSE + ReferencesElement : SET [0:?] OF IfcRelConnectsStructuralElement FOR RelatedStructuralMember; + ConnectedBy : SET [0:?] OF IfcRelConnectsStructuralMember FOR RelatingStructuralMember; +END_ENTITY; + +ENTITY IfcStructuralPlanarAction + SUPERTYPE OF (ONEOF + (IfcStructuralPlanarActionVarying)) + SUBTYPE OF (IfcStructuralAction); + ProjectedOrTrue : IfcProjectedOrTrueLengthEnum; + WHERE + WR61 : SIZEOF(['IFC2X3.IFCSTRUCTURALLOADPLANARFORCE', + 'IFC2X3.IFCSTRUCTURALLOADTEMPERATURE'] + * TYPEOF(SELF\IfcStructuralActivity.AppliedLoad)) = 1; +END_ENTITY; + +ENTITY IfcStructuralPlanarActionVarying + SUBTYPE OF (IfcStructuralPlanarAction); + VaryingAppliedLoadLocation : IfcShapeAspect; + SubsequentAppliedLoads : LIST [2:?] OF IfcStructuralLoad; + DERIVE + VaryingAppliedLoads : LIST [3:?] OF IfcStructuralLoad := IfcAddToBeginOfList(SELF\IfcStructuralActivity.AppliedLoad, SubsequentAppliedLoads); +END_ENTITY; + +ENTITY IfcStructuralPointAction + SUBTYPE OF (IfcStructuralAction); + WHERE + WR61 : SIZEOF(['IFC2X3.IFCSTRUCTURALLOADSINGLEFORCE', + 'IFC2X3.IFCSTRUCTURALLOADSINGLEDISPLACEMENT'] + * TYPEOF(SELF\IfcStructuralActivity.AppliedLoad)) = 1; +END_ENTITY; + +ENTITY IfcStructuralPointConnection + SUBTYPE OF (IfcStructuralConnection); +END_ENTITY; + +ENTITY IfcStructuralPointReaction + SUBTYPE OF (IfcStructuralReaction); + WHERE + WR61 : SIZEOF(['IFC2X3.IFCSTRUCTURALLOADSINGLEFORCE', + 'IFC2X3.IFCSTRUCTURALLOADSINGLEDISPLACEMENT'] + * TYPEOF(SELF\IfcStructuralActivity.AppliedLoad)) = 1; +END_ENTITY; + +ENTITY IfcStructuralProfileProperties + SUPERTYPE OF (ONEOF + (IfcStructuralSteelProfileProperties)) + SUBTYPE OF (IfcGeneralProfileProperties); + TorsionalConstantX : OPTIONAL IfcMomentOfInertiaMeasure; + MomentOfInertiaYZ : OPTIONAL IfcMomentOfInertiaMeasure; + MomentOfInertiaY : OPTIONAL IfcMomentOfInertiaMeasure; + MomentOfInertiaZ : OPTIONAL IfcMomentOfInertiaMeasure; + WarpingConstant : OPTIONAL IfcWarpingConstantMeasure; + ShearCentreZ : OPTIONAL IfcLengthMeasure; + ShearCentreY : OPTIONAL IfcLengthMeasure; + ShearDeformationAreaZ : OPTIONAL IfcAreaMeasure; + ShearDeformationAreaY : OPTIONAL IfcAreaMeasure; + MaximumSectionModulusY : OPTIONAL IfcSectionModulusMeasure; + MinimumSectionModulusY : OPTIONAL IfcSectionModulusMeasure; + MaximumSectionModulusZ : OPTIONAL IfcSectionModulusMeasure; + MinimumSectionModulusZ : OPTIONAL IfcSectionModulusMeasure; + TorsionalSectionModulus : OPTIONAL IfcSectionModulusMeasure; + CentreOfGravityInX : OPTIONAL IfcLengthMeasure; + CentreOfGravityInY : OPTIONAL IfcLengthMeasure; + WHERE + WR21 : NOT(EXISTS(ShearDeformationAreaY)) OR (ShearDeformationAreaY >= 0.); + WR22 : NOT(EXISTS(ShearDeformationAreaZ)) OR (ShearDeformationAreaZ >= 0.); +END_ENTITY; + +ENTITY IfcStructuralReaction + ABSTRACT SUPERTYPE OF (ONEOF + (IfcStructuralPointReaction)) + SUBTYPE OF (IfcStructuralActivity); + INVERSE + Causes : SET [0:?] OF IfcStructuralAction FOR CausedBy; +END_ENTITY; + +ENTITY IfcStructuralResultGroup + SUBTYPE OF (IfcGroup); + TheoryType : IfcAnalysisTheoryTypeEnum; + ResultForLoadGroup : OPTIONAL IfcStructuralLoadGroup; + IsLinear : BOOLEAN; + INVERSE + ResultGroupFor : SET [0:1] OF IfcStructuralAnalysisModel FOR HasResults; +END_ENTITY; + +ENTITY IfcStructuralSteelProfileProperties + SUBTYPE OF (IfcStructuralProfileProperties); + ShearAreaZ : OPTIONAL IfcAreaMeasure; + ShearAreaY : OPTIONAL IfcAreaMeasure; + PlasticShapeFactorY : OPTIONAL IfcPositiveRatioMeasure; + PlasticShapeFactorZ : OPTIONAL IfcPositiveRatioMeasure; + WHERE + WR31 : NOT(EXISTS(ShearAreaY)) OR (ShearAreaY >= 0.); + WR32 : NOT(EXISTS(ShearAreaZ)) OR (ShearAreaZ >= 0.); +END_ENTITY; + +ENTITY IfcStructuralSurfaceConnection + SUBTYPE OF (IfcStructuralConnection); +END_ENTITY; + +ENTITY IfcStructuralSurfaceMember + SUPERTYPE OF (ONEOF + (IfcStructuralSurfaceMemberVarying)) + SUBTYPE OF (IfcStructuralMember); + PredefinedType : IfcStructuralSurfaceTypeEnum; + Thickness : OPTIONAL IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcStructuralSurfaceMemberVarying + SUBTYPE OF (IfcStructuralSurfaceMember); + SubsequentThickness : LIST [2:?] OF IfcPositiveLengthMeasure; + VaryingThicknessLocation : IfcShapeAspect; + DERIVE + VaryingThickness : LIST [3:?] OF IfcPositiveLengthMeasure := IfcAddToBeginOfList(SELF\IfcStructuralSurfaceMember.Thickness, SubsequentThickness); + WHERE + WR61 : EXISTS(SELF\IfcStructuralSurfaceMember.Thickness); + WR62 : SIZEOF(QUERY(temp <* SELF.VaryingThicknessLocation.ShapeRepresentations | + NOT(SIZEOF(temp\IfcRepresentation.Items) = 1) + )) = 0; + WR63 : SIZEOF(QUERY(temp <* SELF.VaryingThicknessLocation.ShapeRepresentations | + NOT(('IFC2X3.IFCCARTESIANPOINT' IN TYPEOF(temp\IfcRepresentation.Items[1])) + OR + ('IFC2X3.IFCPOINTONSURFACE' IN TYPEOF(temp\IfcRepresentation.Items[1]))) + )) = 0; +END_ENTITY; + +ENTITY IfcStructuredDimensionCallout + SUBTYPE OF (IfcDraughtingCallout); + WHERE + WR31 : SIZEOF(QUERY ( Ato <* QUERY ( Con <* SELF.contents | ( + 'IFC2X3.IFCANNOTATIONTEXTOCCURRENCE' IN + TYPEOF(Con)) ) | (NOT (Ato.Name IN ['dimension value', + 'tolerance value','unit text','prefix text','suffix text'])))) + = 0; +END_ENTITY; + +ENTITY IfcStyleModel + ABSTRACT SUPERTYPE OF (ONEOF + (IfcStyledRepresentation)) + SUBTYPE OF (IfcRepresentation); +END_ENTITY; + +ENTITY IfcStyledItem + SUPERTYPE OF (ONEOF + (IfcAnnotationOccurrence)) + SUBTYPE OF (IfcRepresentationItem); + Item : OPTIONAL IfcRepresentationItem; + Styles : SET [1:?] OF IfcPresentationStyleAssignment; + Name : OPTIONAL IfcLabel; + WHERE + WR11 : SIZEOF(Styles) = 1; + WR12 : NOT('IFC2X3.IFCSTYLEDITEM' IN TYPEOF(Item)); +END_ENTITY; + +ENTITY IfcStyledRepresentation + SUBTYPE OF (IfcStyleModel); + WHERE + WR21 : SIZEOF(QUERY(temp <* SELF\IfcRepresentation.Items | + (NOT('IFC2X3.IFCSTYLEDITEM' IN TYPEOF(temp))) + )) = 0; +END_ENTITY; + +ENTITY IfcSubContractResource + SUBTYPE OF (IfcConstructionResource); + SubContractor : OPTIONAL IfcActorSelect; + JobDescription : OPTIONAL IfcText; +END_ENTITY; + +ENTITY IfcSubedge + SUBTYPE OF (IfcEdge); + ParentEdge : IfcEdge; +END_ENTITY; + +ENTITY IfcSurface + ABSTRACT SUPERTYPE OF (ONEOF + (IfcBoundedSurface + ,IfcElementarySurface + ,IfcSweptSurface)) + SUBTYPE OF (IfcGeometricRepresentationItem); +END_ENTITY; + +ENTITY IfcSurfaceCurveSweptAreaSolid + SUBTYPE OF (IfcSweptAreaSolid); + Directrix : IfcCurve; + StartParam : IfcParameterValue; + EndParam : IfcParameterValue; + ReferenceSurface : IfcSurface; +END_ENTITY; + +ENTITY IfcSurfaceOfLinearExtrusion + SUBTYPE OF (IfcSweptSurface); + ExtrudedDirection : IfcDirection; + Depth : IfcLengthMeasure; + DERIVE + ExtrusionAxis : IfcVector := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector (ExtrudedDirection, Depth); + WHERE + WR41 : Depth > 0.; +END_ENTITY; + +ENTITY IfcSurfaceOfRevolution + SUBTYPE OF (IfcSweptSurface); + AxisPosition : IfcAxis1Placement; + DERIVE + AxisLine : IfcLine := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcCurve() || IfcLine(AxisPosition.Location, + IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector(AxisPosition.Z,1.0)); +END_ENTITY; + +ENTITY IfcSurfaceStyle + SUBTYPE OF (IfcPresentationStyle); + Side : IfcSurfaceSide; + Styles : SET [1:5] OF IfcSurfaceStyleElementSelect; + WHERE + WR11 : SIZEOF(QUERY(Style <* SELF.Styles | + 'IFC2X3.IFCSURFACESTYLESHADING' IN + TYPEOF(Style) + )) <= 1; + WR12 : SIZEOF(QUERY(Style <* SELF.Styles | + 'IFC2X3.IFCSURFACESTYLELIGHTING' IN + TYPEOF(Style) + )) <= 1; + WR13 : SIZEOF(QUERY(Style <* SELF.Styles | + 'IFC2X3.IFCSURFACESTYLEREFRACTION' IN + TYPEOF(Style) + )) <= 1; + WR14 : SIZEOF(QUERY(Style <* SELF.Styles | + 'IFC2X3.IFCSURFACESTYLEWITHTEXTURES' IN + TYPEOF(Style) + )) <= 1; + WR15 : SIZEOF(QUERY(Style <* SELF.Styles | + 'IFC2X3.IFCEXTERNALLYDEFINEDSURFACESTYLE' IN + TYPEOF(Style) + )) <= 1; +END_ENTITY; + +ENTITY IfcSurfaceStyleLighting; + DiffuseTransmissionColour : IfcColourRgb; + DiffuseReflectionColour : IfcColourRgb; + TransmissionColour : IfcColourRgb; + ReflectanceColour : IfcColourRgb; +END_ENTITY; + +ENTITY IfcSurfaceStyleRefraction; + RefractionIndex : OPTIONAL IfcReal; + DispersionFactor : OPTIONAL IfcReal; +END_ENTITY; + +ENTITY IfcSurfaceStyleRendering + SUBTYPE OF (IfcSurfaceStyleShading); + Transparency : OPTIONAL IfcNormalisedRatioMeasure; + DiffuseColour : OPTIONAL IfcColourOrFactor; + TransmissionColour : OPTIONAL IfcColourOrFactor; + DiffuseTransmissionColour : OPTIONAL IfcColourOrFactor; + ReflectionColour : OPTIONAL IfcColourOrFactor; + SpecularColour : OPTIONAL IfcColourOrFactor; + SpecularHighlight : OPTIONAL IfcSpecularHighlightSelect; + ReflectanceMethod : IfcReflectanceMethodEnum; +END_ENTITY; + +ENTITY IfcSurfaceStyleShading + SUPERTYPE OF (ONEOF + (IfcSurfaceStyleRendering)); + SurfaceColour : IfcColourRgb; +END_ENTITY; + +ENTITY IfcSurfaceStyleWithTextures; + Textures : LIST [1:?] OF IfcSurfaceTexture; +END_ENTITY; + +ENTITY IfcSurfaceTexture + ABSTRACT SUPERTYPE OF (ONEOF + (IfcBlobTexture + ,IfcImageTexture + ,IfcPixelTexture)); + RepeatS : BOOLEAN; + RepeatT : BOOLEAN; + TextureType : IfcSurfaceTextureEnum; + TextureTransform : OPTIONAL IfcCartesianTransformationOperator2D; +END_ENTITY; + +ENTITY IfcSweptAreaSolid + ABSTRACT SUPERTYPE OF (ONEOF + (IfcExtrudedAreaSolid + ,IfcRevolvedAreaSolid + ,IfcSurfaceCurveSweptAreaSolid)) + SUBTYPE OF (IfcSolidModel); + SweptArea : IfcProfileDef; + Position : IfcAxis2Placement3D; + WHERE + WR22 : SweptArea.ProfileType = IfcProfileTypeEnum.Area; +END_ENTITY; + +ENTITY IfcSweptDiskSolid + SUBTYPE OF (IfcSolidModel); + Directrix : IfcCurve; + Radius : IfcPositiveLengthMeasure; + InnerRadius : OPTIONAL IfcPositiveLengthMeasure; + StartParam : IfcParameterValue; + EndParam : IfcParameterValue; + WHERE + WR1 : Directrix.Dim = 3; + WR2 : (NOT EXISTS(InnerRadius)) OR (Radius > InnerRadius); +END_ENTITY; + +ENTITY IfcSweptSurface + ABSTRACT SUPERTYPE OF (ONEOF + (IfcSurfaceOfLinearExtrusion + ,IfcSurfaceOfRevolution)) + SUBTYPE OF (IfcSurface); + SweptCurve : IfcProfileDef; + Position : IfcAxis2Placement3D; + DERIVE + Dim : IfcDimensionCount := Position.Dim; + WHERE + WR1 : NOT('IFC2X3.IFCDERIVEDPROFILEDEF' IN TYPEOF(SweptCurve)); + WR2 : SweptCurve.ProfileType = IfcProfileTypeEnum.Curve; +END_ENTITY; + +ENTITY IfcSwitchingDeviceType + SUBTYPE OF (IfcFlowControllerType); + PredefinedType : IfcSwitchingDeviceTypeEnum; +END_ENTITY; + +ENTITY IfcSymbolStyle + SUBTYPE OF (IfcPresentationStyle); + StyleOfSymbol : IfcSymbolStyleSelect; +END_ENTITY; + +ENTITY IfcSystem + SUPERTYPE OF (ONEOF + (IfcElectricalCircuit + ,IfcStructuralAnalysisModel)) + SUBTYPE OF (IfcGroup); + INVERSE + ServicesBuildings : SET [0:1] OF IfcRelServicesBuildings FOR RelatingSystem; +END_ENTITY; + +ENTITY IfcSystemFurnitureElementType + SUBTYPE OF (IfcFurnishingElementType); +END_ENTITY; + +ENTITY IfcTShapeProfileDef + SUBTYPE OF (IfcParameterizedProfileDef); + Depth : IfcPositiveLengthMeasure; + FlangeWidth : IfcPositiveLengthMeasure; + WebThickness : IfcPositiveLengthMeasure; + FlangeThickness : IfcPositiveLengthMeasure; + FilletRadius : OPTIONAL IfcPositiveLengthMeasure; + FlangeEdgeRadius : OPTIONAL IfcPositiveLengthMeasure; + WebEdgeRadius : OPTIONAL IfcPositiveLengthMeasure; + WebSlope : OPTIONAL IfcPlaneAngleMeasure; + FlangeSlope : OPTIONAL IfcPlaneAngleMeasure; + CentreOfGravityInY : OPTIONAL IfcPositiveLengthMeasure; + WHERE + WR1 : FlangeThickness < Depth; + WR2 : WebThickness < FlangeWidth; +END_ENTITY; + +ENTITY IfcTable; + Name : STRING; + Rows : LIST [1:?] OF IfcTableRow; + DERIVE + NumberOfCellsInRow : INTEGER := HIINDEX(Rows[1].RowCells); + NumberOfHeadings : INTEGER := SIZEOF(QUERY( Temp <* Rows | Temp.IsHeading)); + NumberOfDataRows : INTEGER := SIZEOF(QUERY( Temp <* Rows | NOT(Temp.IsHeading))); + WHERE + WR1 : SIZEOF(QUERY( Temp <* Rows | HIINDEX(Temp.RowCells) <> HIINDEX(Rows[1].RowCells))) = 0; + WR2 : SIZEOF(QUERY( Temp <* Rows | HIINDEX(Temp.RowCells) <> HIINDEX(Rows[1].RowCells))) = 0; + WR3 : { 0 <= NumberOfHeadings <= 1 }; +END_ENTITY; + +ENTITY IfcTableRow; + RowCells : LIST [1:?] OF IfcValue; + IsHeading : BOOLEAN; + INVERSE + OfTable : IfcTable FOR Rows; +END_ENTITY; + +ENTITY IfcTankType + SUBTYPE OF (IfcFlowStorageDeviceType); + PredefinedType : IfcTankTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcTankTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcTankTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcTask + SUPERTYPE OF (ONEOF + (IfcMove + ,IfcOrderAction)) + SUBTYPE OF (IfcProcess); + TaskId : IfcIdentifier; + Status : OPTIONAL IfcLabel; + WorkMethod : OPTIONAL IfcLabel; + IsMilestone : BOOLEAN; + Priority : OPTIONAL INTEGER; + WHERE + WR1 : SIZEOF(QUERY(temp <* SELF\IfcObjectDefinition.Decomposes | NOT('IFC2X3.IFCRELNESTS' IN TYPEOF(temp)))) = 0; + WR2 : SIZEOF(QUERY(temp <* SELF\IfcObjectDefinition.IsDecomposedBy | NOT('IFC2X3.IFCRELNESTS' IN TYPEOF(temp)))) = 0; + WR3 : EXISTS(SELF\IfcRoot.Name); +END_ENTITY; + +ENTITY IfcTelecomAddress + SUBTYPE OF (IfcAddress); + TelephoneNumbers : OPTIONAL LIST [1:?] OF IfcLabel; + FacsimileNumbers : OPTIONAL LIST [1:?] OF IfcLabel; + PagerNumber : OPTIONAL IfcLabel; + ElectronicMailAddresses : OPTIONAL LIST [1:?] OF IfcLabel; + WWWHomePageURL : OPTIONAL IfcLabel; + WHERE + WR1 : EXISTS (TelephoneNumbers) OR + EXISTS (PagerNumber) OR + EXISTS (FacsimileNumbers) OR + EXISTS (ElectronicMailAddresses) OR + EXISTS (WWWHomePageURL); +END_ENTITY; + +ENTITY IfcTendon + SUBTYPE OF (IfcReinforcingElement); + PredefinedType : IfcTendonTypeEnum; + NominalDiameter : IfcPositiveLengthMeasure; + CrossSectionArea : IfcAreaMeasure; + TensionForce : OPTIONAL IfcForceMeasure; + PreStress : OPTIONAL IfcPressureMeasure; + FrictionCoefficient : OPTIONAL IfcNormalisedRatioMeasure; + AnchorageSlip : OPTIONAL IfcPositiveLengthMeasure; + MinCurvatureRadius : OPTIONAL IfcPositiveLengthMeasure; + WHERE + WR1 : (PredefinedType <> IfcTendonTypeEnum.USERDEFINED) OR ((PredefinedType = IfcTendonTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcObject.ObjectType)); +END_ENTITY; + +ENTITY IfcTendonAnchor + SUBTYPE OF (IfcReinforcingElement); +END_ENTITY; + +ENTITY IfcTerminatorSymbol + SUPERTYPE OF (ONEOF + (IfcDimensionCurveTerminator)) + SUBTYPE OF (IfcAnnotationSymbolOccurrence); + AnnotatedCurve : IfcAnnotationCurveOccurrence; +END_ENTITY; + +ENTITY IfcTextLiteral + SUPERTYPE OF (ONEOF + (IfcTextLiteralWithExtent)) + SUBTYPE OF (IfcGeometricRepresentationItem); + Literal : IfcPresentableText; + Placement : IfcAxis2Placement; + Path : IfcTextPath; +END_ENTITY; + +ENTITY IfcTextLiteralWithExtent + SUBTYPE OF (IfcTextLiteral); + Extent : IfcPlanarExtent; + BoxAlignment : IfcBoxAlignment; + WHERE + WR31 : NOT('IFC2X3.IFCPLANARBOX' IN TYPEOF(Extent)); +END_ENTITY; + +ENTITY IfcTextStyle + SUBTYPE OF (IfcPresentationStyle); + TextCharacterAppearance : OPTIONAL IfcCharacterStyleSelect; + TextStyle : OPTIONAL IfcTextStyleSelect; + TextFontStyle : IfcTextFontSelect; +END_ENTITY; + +ENTITY IfcTextStyleFontModel + SUBTYPE OF (IfcPreDefinedTextFont); + FontFamily : OPTIONAL LIST [1:?] OF IfcTextFontName; + FontStyle : OPTIONAL IfcFontStyle; + FontVariant : OPTIONAL IfcFontVariant; + FontWeight : OPTIONAL IfcFontWeight; + FontSize : IfcSizeSelect; + WHERE + WR31 : ('IFC2X3.IFCLENGTHMEASURE' IN TYPEOF(SELF.FontSize)) AND + (SELF.FontSize > 0.); +END_ENTITY; + +ENTITY IfcTextStyleForDefinedFont; + Colour : IfcColour; + BackgroundColour : OPTIONAL IfcColour; +END_ENTITY; + +ENTITY IfcTextStyleTextModel; + TextIndent : OPTIONAL IfcSizeSelect; + TextAlign : OPTIONAL IfcTextAlignment; + TextDecoration : OPTIONAL IfcTextDecoration; + LetterSpacing : OPTIONAL IfcSizeSelect; + WordSpacing : OPTIONAL IfcSizeSelect; + TextTransform : OPTIONAL IfcTextTransformation; + LineHeight : OPTIONAL IfcSizeSelect; +END_ENTITY; + +ENTITY IfcTextStyleWithBoxCharacteristics; + BoxHeight : OPTIONAL IfcPositiveLengthMeasure; + BoxWidth : OPTIONAL IfcPositiveLengthMeasure; + BoxSlantAngle : OPTIONAL IfcPlaneAngleMeasure; + BoxRotateAngle : OPTIONAL IfcPlaneAngleMeasure; + CharacterSpacing : OPTIONAL IfcSizeSelect; +END_ENTITY; + +ENTITY IfcTextureCoordinate + ABSTRACT SUPERTYPE OF (ONEOF + (IfcTextureCoordinateGenerator + ,IfcTextureMap)); + INVERSE + AnnotatedSurface : SET [1:1] OF IfcAnnotationSurface FOR TextureCoordinates; +END_ENTITY; + +ENTITY IfcTextureCoordinateGenerator + SUBTYPE OF (IfcTextureCoordinate); + Mode : IfcLabel; + Parameter : LIST [1:?] OF IfcSimpleValue; +END_ENTITY; + +ENTITY IfcTextureMap + SUBTYPE OF (IfcTextureCoordinate); + TextureMaps : SET [1:?] OF IfcVertexBasedTextureMap; + WHERE + WR11 : SIZEOF([ + 'IFC2X3.IFCSHELLBASEDSURFACEMODEL', + 'IFC2X3.IFCFACEBASEDSURFACEMODEL', + 'IFC2X3.IFCFACETEDBREP', + 'IFC2X3.IFCFACETEDBREPWITHVOIDS'] + * TYPEOF(SELF\IfcTextureCoordinate.AnnotatedSurface[1].Item) + ) >= 1; +END_ENTITY; + +ENTITY IfcTextureVertex; + Coordinates : LIST [2:2] OF IfcParameterValue; +END_ENTITY; + +ENTITY IfcThermalMaterialProperties + SUBTYPE OF (IfcMaterialProperties); + SpecificHeatCapacity : OPTIONAL IfcSpecificHeatCapacityMeasure; + BoilingPoint : OPTIONAL IfcThermodynamicTemperatureMeasure; + FreezingPoint : OPTIONAL IfcThermodynamicTemperatureMeasure; + ThermalConductivity : OPTIONAL IfcThermalConductivityMeasure; + UNIQUE + UR11 : Material; +END_ENTITY; + +ENTITY IfcTimeSeries + ABSTRACT SUPERTYPE OF (ONEOF + (IfcIrregularTimeSeries + ,IfcRegularTimeSeries)); + Name : IfcLabel; + Description : OPTIONAL IfcText; + StartTime : IfcDateTimeSelect; + EndTime : IfcDateTimeSelect; + TimeSeriesDataType : IfcTimeSeriesDataTypeEnum; + DataOrigin : IfcDataOriginEnum; + UserDefinedDataOrigin : OPTIONAL IfcLabel; + Unit : OPTIONAL IfcUnit; + INVERSE + DocumentedBy : SET [0:1] OF IfcTimeSeriesReferenceRelationship FOR ReferencedTimeSeries; +END_ENTITY; + +ENTITY IfcTimeSeriesReferenceRelationship; + ReferencedTimeSeries : IfcTimeSeries; + TimeSeriesReferences : SET [1:?] OF IfcDocumentSelect; +END_ENTITY; + +ENTITY IfcTimeSeriesSchedule + SUBTYPE OF (IfcControl); + ApplicableDates : OPTIONAL LIST [1:?] OF IfcDateTimeSelect; + TimeSeriesScheduleType : IfcTimeSeriesScheduleTypeEnum; + TimeSeries : IfcTimeSeries; + WHERE + WR41 : NOT(TimeSeriesScheduleType=IfcTimeSeriesScheduleTypeEnum.USERDEFINED) OR EXISTS(SELF\IfcObject.ObjectType); +END_ENTITY; + +ENTITY IfcTimeSeriesValue; + ListValues : LIST [1:?] OF IfcValue; +END_ENTITY; + +ENTITY IfcTopologicalRepresentationItem + ABSTRACT SUPERTYPE OF (ONEOF + (IfcConnectedFaceSet + ,IfcEdge + ,IfcFace + ,IfcFaceBound + ,IfcLoop + ,IfcPath + ,IfcVertex)) + SUBTYPE OF (IfcRepresentationItem); +END_ENTITY; + +ENTITY IfcTopologyRepresentation + SUBTYPE OF (IfcShapeModel); + WHERE + WR21 : SIZEOF(QUERY(temp <* SELF\IfcRepresentation.Items | + NOT('IFC2X3.IFCTOPOLOGICALREPRESENTATIONITEM' IN TYPEOF(temp)) + )) = 0; + WR22 : EXISTS(SELF\IfcRepresentation.RepresentationType); + WR23 : IfcTopologyRepresentationTypes(SELF\IfcRepresentation.RepresentationType, SELF\IfcRepresentation.Items); +END_ENTITY; + +ENTITY IfcTransformerType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcTransformerTypeEnum; +END_ENTITY; + +ENTITY IfcTransportElement + SUBTYPE OF (IfcElement); + OperationType : OPTIONAL IfcTransportElementTypeEnum; + CapacityByWeight : OPTIONAL IfcMassMeasure; + CapacityByNumber : OPTIONAL IfcCountMeasure; +END_ENTITY; + +ENTITY IfcTransportElementType + SUBTYPE OF (IfcElementType); + PredefinedType : IfcTransportElementTypeEnum; +END_ENTITY; + +ENTITY IfcTrapeziumProfileDef + SUBTYPE OF (IfcParameterizedProfileDef); + BottomXDim : IfcPositiveLengthMeasure; + TopXDim : IfcPositiveLengthMeasure; + YDim : IfcPositiveLengthMeasure; + TopXOffset : IfcLengthMeasure; +END_ENTITY; + +ENTITY IfcTrimmedCurve + SUBTYPE OF (IfcBoundedCurve); + BasisCurve : IfcCurve; + Trim1 : SET [1:2] OF IfcTrimmingSelect; + Trim2 : SET [1:2] OF IfcTrimmingSelect; + SenseAgreement : BOOLEAN; + MasterRepresentation : IfcTrimmingPreference; + WHERE + WR41 : (HIINDEX(Trim1) = 1) OR (TYPEOF(Trim1[1]) <> TYPEOF(Trim1[2])); + WR42 : (HIINDEX(Trim2) = 1) OR (TYPEOF(Trim2[1]) <> TYPEOF(Trim2[2])); + WR43 : NOT('IFC2X3.IFCBOUNDEDCURVE' IN TYPEOF(BasisCurve)); +END_ENTITY; + +ENTITY IfcTubeBundleType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcTubeBundleTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcTubeBundleTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcTubeBundleTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcTwoDirectionRepeatFactor + SUBTYPE OF (IfcOneDirectionRepeatFactor); + SecondRepeatFactor : IfcVector; +END_ENTITY; + +ENTITY IfcTypeObject + SUPERTYPE OF (ONEOF + (IfcTypeProduct)) + SUBTYPE OF (IfcObjectDefinition); + ApplicableOccurrence : OPTIONAL IfcLabel; + HasPropertySets : OPTIONAL SET [1:?] OF IfcPropertySetDefinition; + INVERSE + ObjectTypeOf : SET [0:1] OF IfcRelDefinesByType FOR RelatingType; + WHERE + WR1 : EXISTS(SELF\IfcRoot.Name); +END_ENTITY; + +ENTITY IfcTypeProduct + SUPERTYPE OF (ONEOF + (IfcDoorStyle + ,IfcElementType + ,IfcWindowStyle)) + SUBTYPE OF (IfcTypeObject); + RepresentationMaps : OPTIONAL LIST [1:?] OF UNIQUE IfcRepresentationMap; + Tag : OPTIONAL IfcLabel; + WHERE + WR41 : NOT(EXISTS(SELF\IfcTypeObject.ObjectTypeOf[1])) OR + (SIZEOF(QUERY(temp <* SELF\IfcTypeObject.ObjectTypeOf[1].RelatedObjects | + NOT('IFC2X3.IFCPRODUCT' IN TYPEOF(temp))) + ) = 0); +END_ENTITY; + +ENTITY IfcUShapeProfileDef + SUBTYPE OF (IfcParameterizedProfileDef); + Depth : IfcPositiveLengthMeasure; + FlangeWidth : IfcPositiveLengthMeasure; + WebThickness : IfcPositiveLengthMeasure; + FlangeThickness : IfcPositiveLengthMeasure; + FilletRadius : OPTIONAL IfcPositiveLengthMeasure; + EdgeRadius : OPTIONAL IfcPositiveLengthMeasure; + FlangeSlope : OPTIONAL IfcPlaneAngleMeasure; + CentreOfGravityInX : OPTIONAL IfcPositiveLengthMeasure; + WHERE + WR21 : FlangeThickness < (Depth / 2.); + WR22 : WebThickness < FlangeWidth; +END_ENTITY; + +ENTITY IfcUnitAssignment; + Units : SET [1:?] OF IfcUnit; + WHERE + WR01 : IfcCorrectUnitAssignment(Units); +END_ENTITY; + +ENTITY IfcUnitaryEquipmentType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcUnitaryEquipmentTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcUnitaryEquipmentTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcUnitaryEquipmentTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcValveType + SUBTYPE OF (IfcFlowControllerType); + PredefinedType : IfcValveTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcValveTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcValveTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcVector + SUBTYPE OF (IfcGeometricRepresentationItem); + Orientation : IfcDirection; + Magnitude : IfcLengthMeasure; + DERIVE + Dim : IfcDimensionCount := Orientation.Dim; + WHERE + WR1 : Magnitude >= 0.0; +END_ENTITY; + +ENTITY IfcVertex + SUPERTYPE OF (ONEOF + (IfcVertexPoint)) + SUBTYPE OF (IfcTopologicalRepresentationItem); +END_ENTITY; + +ENTITY IfcVertexBasedTextureMap; + TextureVertices : LIST [3:?] OF IfcTextureVertex; + TexturePoints : LIST [3:?] OF IfcCartesianPoint; +END_ENTITY; + +ENTITY IfcVertexLoop + SUBTYPE OF (IfcLoop); + LoopVertex : IfcVertex; +END_ENTITY; + +ENTITY IfcVertexPoint + SUBTYPE OF (IfcVertex); + VertexGeometry : IfcPoint; +END_ENTITY; + +ENTITY IfcVibrationIsolatorType + SUBTYPE OF (IfcDiscreteAccessoryType); + PredefinedType : IfcVibrationIsolatorTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcVibrationIsolatorTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcVibrationIsolatorTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcVirtualElement + SUBTYPE OF (IfcElement); +END_ENTITY; + +ENTITY IfcVirtualGridIntersection; + IntersectingAxes : LIST [2:2] OF UNIQUE IfcGridAxis; + OffsetDistances : LIST [2:3] OF IfcLengthMeasure; +END_ENTITY; + +ENTITY IfcWall + SUPERTYPE OF (ONEOF + (IfcWallStandardCase)) + SUBTYPE OF (IfcBuildingElement); + WHERE + WR1 : SIZEOF (QUERY(temp <* SELF\IfcObjectDefinition.HasAssociations | + 'IFC2X3.IFCRELASSOCIATESMATERIAL' IN TYPEOF(temp) + )) <= 1; +END_ENTITY; + +ENTITY IfcWallStandardCase + SUBTYPE OF (IfcWall); + WHERE + WR1 : SIZEOF (QUERY(temp <* USEDIN(SELF, 'IFC2X3.IFCRELASSOCIATES.RELATEDOBJECTS') | + ('IFC2X3.IFCRELASSOCIATESMATERIAL' IN TYPEOF(temp)) AND + ('IFC2X3.IFCMATERIALLAYERSETUSAGE' IN TYPEOF(temp.RelatingMaterial)) + )) = 1; +END_ENTITY; + +ENTITY IfcWallType + SUBTYPE OF (IfcBuildingElementType); + PredefinedType : IfcWallTypeEnum; +END_ENTITY; + +ENTITY IfcWasteTerminalType + SUBTYPE OF (IfcFlowTerminalType); + PredefinedType : IfcWasteTerminalTypeEnum; +END_ENTITY; + +ENTITY IfcWaterProperties + SUBTYPE OF (IfcMaterialProperties); + IsPotable : OPTIONAL BOOLEAN; + Hardness : OPTIONAL IfcIonConcentrationMeasure; + AlkalinityConcentration : OPTIONAL IfcIonConcentrationMeasure; + AcidityConcentration : OPTIONAL IfcIonConcentrationMeasure; + ImpuritiesContent : OPTIONAL IfcNormalisedRatioMeasure; + PHLevel : OPTIONAL IfcPHMeasure; + DissolvedSolidsContent : OPTIONAL IfcNormalisedRatioMeasure; + UNIQUE + UR11 : Material; +END_ENTITY; + +ENTITY IfcWindow + SUBTYPE OF (IfcBuildingElement); + OverallHeight : OPTIONAL IfcPositiveLengthMeasure; + OverallWidth : OPTIONAL IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcWindowLiningProperties + SUBTYPE OF (IfcPropertySetDefinition); + LiningDepth : OPTIONAL IfcPositiveLengthMeasure; + LiningThickness : OPTIONAL IfcPositiveLengthMeasure; + TransomThickness : OPTIONAL IfcPositiveLengthMeasure; + MullionThickness : OPTIONAL IfcPositiveLengthMeasure; + FirstTransomOffset : OPTIONAL IfcNormalisedRatioMeasure; + SecondTransomOffset : OPTIONAL IfcNormalisedRatioMeasure; + FirstMullionOffset : OPTIONAL IfcNormalisedRatioMeasure; + SecondMullionOffset : OPTIONAL IfcNormalisedRatioMeasure; + ShapeAspectStyle : OPTIONAL IfcShapeAspect; + WHERE + WR31 : NOT(NOT(EXISTS(LiningDepth)) AND EXISTS(LiningThickness)); + WR32 : NOT(NOT(EXISTS(FirstTransomOffset)) AND EXISTS(SecondTransomOffset)); + WR33 : NOT(NOT(EXISTS(FirstMullionOffset)) AND EXISTS(SecondMullionOffset)); + WR34 : EXISTS(SELF\IfcPropertySetDefinition.DefinesType[1]) AND + ('IFC2X3.IFCWINDOWSTYLE' IN TYPEOF(SELF\IfcPropertySetDefinition.DefinesType[1])); +END_ENTITY; + +ENTITY IfcWindowPanelProperties + SUBTYPE OF (IfcPropertySetDefinition); + OperationType : IfcWindowPanelOperationEnum; + PanelPosition : IfcWindowPanelPositionEnum; + FrameDepth : OPTIONAL IfcPositiveLengthMeasure; + FrameThickness : OPTIONAL IfcPositiveLengthMeasure; + ShapeAspectStyle : OPTIONAL IfcShapeAspect; +END_ENTITY; + +ENTITY IfcWindowStyle + SUBTYPE OF (IfcTypeProduct); + ConstructionType : IfcWindowStyleConstructionEnum; + OperationType : IfcWindowStyleOperationEnum; + ParameterTakesPrecedence : BOOLEAN; + Sizeable : BOOLEAN; +END_ENTITY; + +ENTITY IfcWorkControl + ABSTRACT SUPERTYPE OF (ONEOF + (IfcWorkPlan + ,IfcWorkSchedule)) + SUBTYPE OF (IfcControl); + Identifier : IfcIdentifier; + CreationDate : IfcDateTimeSelect; + Creators : OPTIONAL SET [1:?] OF IfcPerson; + Purpose : OPTIONAL IfcLabel; + Duration : OPTIONAL IfcTimeMeasure; + TotalFloat : OPTIONAL IfcTimeMeasure; + StartTime : IfcDateTimeSelect; + FinishTime : OPTIONAL IfcDateTimeSelect; + WorkControlType : OPTIONAL IfcWorkControlTypeEnum; + UserDefinedControlType : OPTIONAL IfcLabel; + WHERE + WR1 : (WorkControlType <> IfcWorkControlTypeEnum.USERDEFINED) OR + ((WorkControlType = IfcWorkControlTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcWorkControl.UserDefinedControlType)); +END_ENTITY; + +ENTITY IfcWorkPlan + SUBTYPE OF (IfcWorkControl); +END_ENTITY; + +ENTITY IfcWorkSchedule + SUBTYPE OF (IfcWorkControl); +END_ENTITY; + +ENTITY IfcZShapeProfileDef + SUBTYPE OF (IfcParameterizedProfileDef); + Depth : IfcPositiveLengthMeasure; + FlangeWidth : IfcPositiveLengthMeasure; + WebThickness : IfcPositiveLengthMeasure; + FlangeThickness : IfcPositiveLengthMeasure; + FilletRadius : OPTIONAL IfcPositiveLengthMeasure; + EdgeRadius : OPTIONAL IfcPositiveLengthMeasure; + WHERE + WR21 : FlangeThickness < (Depth / 2.); +END_ENTITY; + +ENTITY IfcZone + SUBTYPE OF (IfcGroup); + WHERE + WR1 : SIZEOF (QUERY (temp <* SELF\IfcGroup.IsGroupedBy.RelatedObjects | NOT(('IFC2X3.IFCZONE' IN TYPEOF(temp)) OR ('IFC2X3.IFCSPACE' IN TYPEOF(temp))) )) = 0; +END_ENTITY; + +FUNCTION IfcAddToBeginOfList + (AScalar : GENERIC; + AList : LIST OF GENERIC:AL) + : LIST[1:?] OF GENERIC:AL; + + LOCAL + Result : LIST OF GENERIC:AL := []; + END_LOCAL; + + IF NOT(EXISTS(AScalar)) THEN + Result := AList; + ELSE + Result := Result + AScalar; + IF (HIINDEX(AList) >= 1) THEN + REPEAT i:=1 TO HIINDEX(AList); + Result[i+1] := AList[i]; + END_REPEAT; + END_IF; + END_IF; + RETURN(Result); +END_FUNCTION; + +FUNCTION IfcBaseAxis + (Dim : INTEGER; + Axis1, Axis2, Axis3 : IfcDirection) + : LIST [2:3] OF IfcDirection; + + LOCAL + U : LIST [2:3] OF IfcDirection; + Factor : REAL; + D1, D2 : IfcDirection; + END_LOCAL; + + IF (Dim = 3) THEN + D1 := NVL(IfcNormalise(Axis3), IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0,0.0,1.0])); + D2 := IfcFirstProjAxis(D1, Axis1); + U := [D2, IfcSecondProjAxis(D1, D2, Axis2), D1]; + ELSE + IF EXISTS(Axis1) THEN + D1 := IfcNormalise(Axis1); + U := [D1, IfcOrthogonalComplement(D1)]; + IF EXISTS(Axis2) THEN + Factor := IfcDotProduct(Axis2, U[2]); + IF (Factor < 0.0) THEN + U[2].DirectionRatios[1] := -U[2].DirectionRatios[1]; + U[2].DirectionRatios[2] := -U[2].DirectionRatios[2]; + END_IF; + END_IF; + ELSE + IF EXISTS(Axis2) THEN + D1 := IfcNormalise(Axis2); + U := [IfcOrthogonalComplement(D1), D1]; + U[1].DirectionRatios[1] := -U[1].DirectionRatios[1]; + U[1].DirectionRatios[2] := -U[1].DirectionRatios[2]; + ELSE + U := [IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([1.0, 0.0]), + IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0, 1.0])]; + END_IF; + END_IF; + END_IF; + RETURN(U); +END_FUNCTION; + +FUNCTION IfcBooleanChoose + (B : BOOLEAN ; + Choice1, Choice2 : Generic : Item) + : Generic : Item; + IF B THEN + RETURN (Choice1); + ELSE + RETURN (Choice2); + END_IF; +END_FUNCTION; + +FUNCTION IfcBuild2Axes + (RefDirection : IfcDirection) + : LIST [2:2] OF IfcDirection; + LOCAL + D : IfcDirection := NVL(IfcNormalise(RefDirection), + IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([1.0,0.0])); + END_LOCAL; + RETURN([D, IfcOrthogonalComplement(D)]); +END_FUNCTION; + +FUNCTION IfcBuildAxes + (Axis, RefDirection : IfcDirection) + : LIST [3:3] OF IfcDirection; + LOCAL + D1, D2 : IfcDirection; + END_LOCAL; + D1 := NVL(IfcNormalise(Axis), IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0,0.0,1.0])); + D2 := IfcFirstProjAxis(D1, RefDirection); + RETURN ([D2, IfcNormalise(IfcCrossProduct(D1,D2)).Orientation, D1]); +END_FUNCTION; + +FUNCTION IfcCorrectDimensions + (m : IfcUnitEnum; Dim : IfcDimensionalExponents) + : LOGICAL; + CASE m OF + LENGTHUNIT : IF + Dim = (IfcDimensionalExponents (1, 0, 0, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + MASSUNIT : IF + Dim = (IfcDimensionalExponents (0, 1, 0, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + TIMEUNIT : IF + Dim = (IfcDimensionalExponents (0, 0, 1, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + ELECTRICCURRENTUNIT : IF + Dim = (IfcDimensionalExponents (0, 0, 0, 1, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + THERMODYNAMICTEMPERATUREUNIT : IF + Dim = (IfcDimensionalExponents (0, 0, 0, 0, 1, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + AMOUNTOFSUBSTANCEUNIT : IF + Dim = (IfcDimensionalExponents (0, 0, 0, 0, 0, 1, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + LUMINOUSINTENSITYUNIT : IF + Dim = (IfcDimensionalExponents (0, 0, 0, 0, 0, 0, 1)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + PLANEANGLEUNIT : IF + Dim = (IfcDimensionalExponents (0, 0, 0, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + SOLIDANGLEUNIT : IF + Dim = (IfcDimensionalExponents (0, 0, 0, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + AREAUNIT : IF + Dim = (IfcDimensionalExponents (2, 0, 0, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + VOLUMEUNIT : IF + Dim = (IfcDimensionalExponents (3, 0, 0, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + + ABSORBEDDOSEUNIT : IF + Dim = (IfcDimensionalExponents (2, 0, -2, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + RADIOACTIVITYUNIT : IF + Dim = (IfcDimensionalExponents (0, 0, -1, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + ELECTRICCAPACITANCEUNIT : IF + Dim = (IfcDimensionalExponents (-2, 1, 4, 1, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + DOSEEQUIVALENTUNIT : IF + Dim = (IfcDimensionalExponents (2, 0, -2, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + ELECTRICCHARGEUNIT : IF + Dim = (IfcDimensionalExponents (0, 0, 1, 1, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + ELECTRICCONDUCTANCEUNIT : IF + Dim = (IfcDimensionalExponents (-2, -1, 3, 2, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + ELECTRICVOLTAGEUNIT : IF + Dim = (IfcDimensionalExponents (2, 1, -3, -1, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + ELECTRICRESISTANCEUNIT : IF + Dim = (IfcDimensionalExponents (2, 1, -3, -2, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + ENERGYUNIT : IF + Dim = (IfcDimensionalExponents (2, 1, -2, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + FORCEUNIT : IF + Dim = (IfcDimensionalExponents (1, 1, -2, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + FREQUENCYUNIT : IF + Dim = (IfcDimensionalExponents (0, 0, -1, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + INDUCTANCEUNIT : IF + Dim = (IfcDimensionalExponents (2, 1, -2, -2, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + ILLUMINANCEUNIT : IF + Dim = (IfcDimensionalExponents (-2, 0, 0, 0, 0, 0, 1)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + LUMINOUSFLUXUNIT : IF + Dim = (IfcDimensionalExponents (0, 0, 0, 0, 0, 0, 1)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + MAGNETICFLUXUNIT : IF + Dim = (IfcDimensionalExponents (2, 1, -2, -1, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + MAGNETICFLUXDENSITYUNIT : IF + Dim = (IfcDimensionalExponents (0, 1, -2, -1, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + POWERUNIT : IF + Dim = (IfcDimensionalExponents (2, 1, -3, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + PRESSUREUNIT : IF + Dim = (IfcDimensionalExponents (-1, 1, -2, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + + OTHERWISE : + RETURN (UNKNOWN); + END_CASE; +END_FUNCTION; + +FUNCTION IfcCorrectLocalPlacement + (AxisPlacement:IfcAxis2Placement; + RelPlacement : IfcObjectPlacement) + : LOGICAL; + + IF (EXISTS(RelPlacement)) THEN + IF ('IFC2X3.IFCGRIDPLACEMENT' IN TYPEOF(RelPlacement)) THEN + RETURN(?); + END_IF; + IF ('IFC2X3.IFCLOCALPLACEMENT' IN TYPEOF(RelPlacement)) THEN + IF ('IFC2X3.IFCAXIS2PLACEMENT2D' IN TYPEOF(AxisPlacement)) THEN + RETURN(TRUE); + END_IF; + IF ('IFC2X3.IFCAXIS2PLACEMENT3D' IN TYPEOF(AxisPlacement)) THEN + IF (RelPlacement.RelativePlacement.Dim = 3) THEN + RETURN(TRUE); + ELSE + RETURN(FALSE); + END_IF; + END_IF; + END_IF; + ELSE + RETURN(TRUE); + END_IF; + RETURN(?); +END_FUNCTION; + +FUNCTION IfcCorrectObjectAssignment + (Constraint: IfcObjectTypeEnum; Objects : SET[1:?] OF IfcObjectDefinition) + : LOGICAL; + + LOCAL + Count : INTEGER := 0; + END_LOCAL; + + IF NOT(EXISTS(Constraint)) THEN + RETURN(TRUE); + END_IF; + + CASE Constraint OF + IfcObjectTypeEnum.NOTDEFINED : RETURN(TRUE); + IfcObjectTypeEnum.PRODUCT : + BEGIN + Count := SIZEOF(QUERY(temp <* Objects | NOT('IFC2X3.IFCPRODUCT' IN TYPEOF(temp)))); + RETURN(Count = 0); + END; + IfcObjectTypeEnum.PROCESS : + BEGIN + Count := SIZEOF(QUERY(temp <* Objects | NOT('IFC2X3.IFCPROCESS' IN TYPEOF(temp)))); + RETURN(Count = 0); + END; + IfcObjectTypeEnum.CONTROL : + BEGIN + Count := SIZEOF(QUERY(temp <* Objects | NOT('IFC2X3.IFCCONTROL' IN TYPEOF(temp)))); + RETURN(Count = 0); + END; + IfcObjectTypeEnum.RESOURCE : + BEGIN + Count := SIZEOF(QUERY(temp <* Objects | NOT('IFC2X3.IFCRESOURCE' IN TYPEOF(temp)))); + RETURN(Count = 0); + END; + IfcObjectTypeEnum.ACTOR : + BEGIN + Count := SIZEOF(QUERY(temp <* Objects | NOT('IFC2X3.IFCACTOR' IN TYPEOF(temp)))); + RETURN(Count = 0); + END; + IfcObjectTypeEnum.GROUP : + BEGIN + Count := SIZEOF(QUERY(temp <* Objects | NOT('IFC2X3.IFCGROUP' IN TYPEOF(temp)))); + RETURN(Count = 0); + END; + IfcObjectTypeEnum.PROJECT : + BEGIN + Count := SIZEOF(QUERY(temp <* Objects | NOT('IFC2X3.IFCPROJECT' IN TYPEOF(temp)))); + RETURN(Count = 0); + END; + OTHERWISE : RETURN(?); + END_CASE; +END_FUNCTION; + +FUNCTION IfcCorrectUnitAssignment + (Units : SET [1:?] OF IfcUnit) + : LOGICAL; + + LOCAL + NamedUnitNumber : INTEGER := 0; + DerivedUnitNumber : INTEGER := 0; + MonetaryUnitNumber : INTEGER := 0; + NamedUnitNames : SET OF IfcUnitEnum := []; + DerivedUnitNames : SET OF IfcDerivedUnitEnum := []; + END_LOCAL; + + NamedUnitNumber := SIZEOF(QUERY(temp <* Units | ('IFC2X3.IFCNAMEDUNIT' IN TYPEOF(temp)) AND NOT(temp.UnitType = IfcUnitEnum.USERDEFINED))); + DerivedUnitNumber := SIZEOF(QUERY(temp <* Units | ('IFC2X3.IFCDERIVEDUNIT' IN TYPEOF(temp)) AND NOT(temp.UnitType = IfcDerivedUnitEnum.USERDEFINED))); + MonetaryUnitNumber := SIZEOF(QUERY(temp <* Units | 'IFC2X3.IFCMONETARYUNIT' IN TYPEOF(temp))); + + REPEAT i := 1 TO SIZEOF(Units); + IF (('IFC2X3.IFCNAMEDUNIT' IN TYPEOF(Units[i])) AND NOT(Units[i].UnitType = IfcUnitEnum.USERDEFINED)) THEN + NamedUnitNames := NamedUnitNames + Units[i].UnitType; + END_IF; + IF (('IFC2X3.IFCDERIVEDUNIT' IN TYPEOF(Units[i])) AND NOT(Units[i].UnitType = IfcDerivedUnitEnum.USERDEFINED)) THEN + DerivedUnitNames := DerivedUnitNames + Units[i].UnitType; + END_IF; + END_REPEAT; + + RETURN((SIZEOF(NamedUnitNames) = NamedUnitNumber) AND (SIZEOF(DerivedUnitNames) = DerivedUnitNumber) AND (MonetaryUnitNumber <= 1)); +END_FUNCTION; + +FUNCTION IfcCrossProduct + (Arg1, Arg2 : IfcDirection) + : IfcVector; + LOCAL + Mag : REAL; + Res : IfcDirection; + V1,V2 : LIST[3:3] OF REAL; + Result : IfcVector; + END_LOCAL; + + IF (NOT EXISTS (Arg1) OR (Arg1.Dim = 2)) OR (NOT EXISTS (Arg2) OR (Arg2.Dim = 2)) THEN + RETURN(?); + ELSE + BEGIN + V1 := IfcNormalise(Arg1).DirectionRatios; + V2 := IfcNormalise(Arg2).DirectionRatios; + Res := IfcRepresentationItem() || IfcGeometricRepresentationItem () + || IfcDirection([(V1[2]*V2[3] - V1[3]*V2[2]), (V1[3]*V2[1] - V1[1]*V2[3]), (V1[1]*V2[2] - V1[2]*V2[1])]); + Mag := 0.0; + REPEAT i := 1 TO 3; + Mag := Mag + Res.DirectionRatios[i]*Res.DirectionRatios[i]; + END_REPEAT; + IF (Mag > 0.0) THEN + Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector(Res, SQRT(Mag)); + ELSE + Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector(Arg1, 0.0); + END_IF; + RETURN(Result); + END; + END_IF; +END_FUNCTION; + +FUNCTION IfcCurveDim + (Curve : IfcCurve) + : IfcDimensionCount; + + IF ('IFC2X3.IFCLINE' IN TYPEOF(Curve)) + THEN RETURN(Curve.Pnt.Dim); + END_IF; + IF ('IFC2X3.IFCCONIC' IN TYPEOF(Curve)) + THEN RETURN(Curve.Position.Dim); + END_IF; + IF ('IFC2X3.IFCPOLYLINE' IN TYPEOF(Curve)) + THEN RETURN(Curve.Points[1].Dim); + END_IF; + IF ('IFC2X3.IFCTRIMMEDCURVE' IN TYPEOF(Curve)) + THEN RETURN(IfcCurveDim(Curve.BasisCurve)); + END_IF; + IF ('IFC2X3.IFCCOMPOSITECURVE' IN TYPEOF(Curve)) + THEN RETURN(Curve.Segments[1].Dim); + END_IF; + IF ('IFC2X3.IFCBSPLINECURVE' IN TYPEOF(Curve)) + THEN RETURN(Curve.ControlPointsList[1].Dim); + END_IF; + IF ('IFC2X3.IFCOFFSETCURVE2D' IN TYPEOF(Curve)) + THEN RETURN(2); + END_IF; + IF ('IFC2X3.IFCOFFSETCURVE3D' IN TYPEOF(Curve)) + THEN RETURN(3); + END_IF; + RETURN (?); +END_FUNCTION; + +FUNCTION IfcCurveWeightsPositive + (B: IfcRationalBezierCurve) + : BOOLEAN; + LOCAL + Result : BOOLEAN := TRUE; + END_LOCAL; + + REPEAT i := 0 TO B.UpperIndexOnControlPoints; + IF B.Weights[i] <= 0.0 THEN + Result := FALSE; + RETURN(Result); + END_IF; + END_REPEAT; + RETURN(Result); +END_FUNCTION; + +FUNCTION IfcDeriveDimensionalExponents + (x : IfcUnit) + : IfcDimensionalExponents; + LOCAL + Result : IfcDimensionalExponents := + IfcDimensionalExponents(0, 0, 0, 0, 0, 0, 0); + END_LOCAL; + IF 'IFC2X3.IFCDERIVEDUNIT' IN TYPEOF(x) THEN + REPEAT i := LOINDEX(x.Elements) TO HIINDEX(x.Elements); + Result.LengthExponent := Result.LengthExponent + + (x.Elements[i].Exponent * + x.Elements[i].Unit.Dimensions.LengthExponent); + Result.MassExponent := Result.MassExponent + + (x.Elements[i].Exponent * + x.Elements[i].Unit.Dimensions.MassExponent); + Result.TimeExponent := Result.TimeExponent + + (x.Elements[i].Exponent * + x.Elements[i].Unit.Dimensions.TimeExponent); + Result.ElectricCurrentExponent := Result.ElectricCurrentExponent + + (x.Elements[i].Exponent * + x.Elements[i].Unit.Dimensions.ElectricCurrentExponent); + Result.ThermodynamicTemperatureExponent := + Result.ThermodynamicTemperatureExponent + + (x.Elements[i].Exponent * + x.Elements[i].Unit.Dimensions.ThermodynamicTemperatureExponent); + Result.AmountOfSubstanceExponent := + Result.AmountOfSubstanceExponent + (x.Elements[i].Exponent * + x.Elements[i].Unit.Dimensions.AmountOfSubstanceExponent); + Result.LuminousIntensityExponent := + Result.LuminousIntensityExponent + (x.Elements[i].Exponent * + x.Elements[i].Unit.Dimensions.LuminousIntensityExponent); + END_REPEAT; + ELSE + Result := x.Dimensions; + END_IF; + RETURN (Result); +END_FUNCTION; + +FUNCTION IfcDimensionsForSiUnit + (n : IfcSiUnitName ) + : IfcDimensionalExponents; + CASE n OF + METRE : RETURN (IfcDimensionalExponents + (1, 0, 0, 0, 0, 0, 0)); + SQUARE_METRE : RETURN (IfcDimensionalExponents + (2, 0, 0, 0, 0, 0, 0)); + CUBIC_METRE : RETURN (IfcDimensionalExponents + (3, 0, 0, 0, 0, 0, 0)); + GRAM : RETURN (IfcDimensionalExponents + (0, 1, 0, 0, 0, 0, 0)); + SECOND : RETURN (IfcDimensionalExponents + (0, 0, 1, 0, 0, 0, 0)); + AMPERE : RETURN (IfcDimensionalExponents + (0, 0, 0, 1, 0, 0, 0)); + KELVIN : RETURN (IfcDimensionalExponents + (0, 0, 0, 0, 1, 0, 0)); + MOLE : RETURN (IfcDimensionalExponents + (0, 0, 0, 0, 0, 1, 0)); + CANDELA : RETURN (IfcDimensionalExponents + (0, 0, 0, 0, 0, 0, 1)); + RADIAN : RETURN (IfcDimensionalExponents + (0, 0, 0, 0, 0, 0, 0)); + STERADIAN : RETURN (IfcDimensionalExponents + (0, 0, 0, 0, 0, 0, 0)); + HERTZ : RETURN (IfcDimensionalExponents + (0, 0, -1, 0, 0, 0, 0)); + NEWTON : RETURN (IfcDimensionalExponents + (1, 1, -2, 0, 0, 0, 0)); + PASCAL : RETURN (IfcDimensionalExponents + (-1, 1, -2, 0, 0, 0, 0)); + JOULE : RETURN (IfcDimensionalExponents + (2, 1, -2, 0, 0, 0, 0)); + WATT : RETURN (IfcDimensionalExponents + (2, 1, -3, 0, 0, 0, 0)); + COULOMB : RETURN (IfcDimensionalExponents + (0, 0, 1, 1, 0, 0, 0)); + VOLT : RETURN (IfcDimensionalExponents + (2, 1, -3, -1, 0, 0, 0)); + FARAD : RETURN (IfcDimensionalExponents + (-2, -1, 4, 1, 0, 0, 0)); + OHM : RETURN (IfcDimensionalExponents + (2, 1, -3, -2, 0, 0, 0)); + SIEMENS : RETURN (IfcDimensionalExponents + (-2, -1, 3, 2, 0, 0, 0)); + WEBER : RETURN (IfcDimensionalExponents + (2, 1, -2, -1, 0, 0, 0)); + TESLA : RETURN (IfcDimensionalExponents + (0, 1, -2, -1, 0, 0, 0)); + HENRY : RETURN (IfcDimensionalExponents + (2, 1, -2, -2, 0, 0, 0)); + DEGREE_CELSIUS : RETURN (IfcDimensionalExponents + (0, 0, 0, 0, 1, 0, 0)); + LUMEN : RETURN (IfcDimensionalExponents + (0, 0, 0, 0, 0, 0, 1)); + LUX : RETURN (IfcDimensionalExponents + (-2, 0, 0, 0, 0, 0, 1)); + BECQUEREL : RETURN (IfcDimensionalExponents + (0, 0, -1, 0, 0, 0, 0)); + GRAY : RETURN (IfcDimensionalExponents + (2, 0, -2, 0, 0, 0, 0)); + SIEVERT : RETURN (IfcDimensionalExponents + (2, 0, -2, 0, 0, 0, 0)); + OTHERWISE : RETURN (IfcDimensionalExponents + (0, 0, 0, 0, 0, 0, 0)); + END_CASE; +END_FUNCTION; + +FUNCTION IfcDotProduct + (Arg1, Arg2 : IfcDirection) + : REAL; + LOCAL + Scalar : REAL; + Vec1, Vec2 : IfcDirection; + Ndim : INTEGER; + END_LOCAL; + + IF NOT EXISTS (Arg1) OR NOT EXISTS (Arg2) THEN + Scalar := ?; + ELSE + IF (Arg1.Dim <> Arg2.Dim) THEN + Scalar := ?; + ELSE + BEGIN + Vec1 := IfcNormalise(Arg1); + Vec2 := IfcNormalise(Arg2); + Ndim := Arg1.Dim; + Scalar := 0.0; + REPEAT i := 1 TO Ndim; + Scalar := Scalar + Vec1.DirectionRatios[i]*Vec2.DirectionRatios[i]; + END_REPEAT; + END; + END_IF; + END_IF; + RETURN (Scalar); +END_FUNCTION; + +FUNCTION IfcFirstProjAxis + (ZAxis, Arg : IfcDirection) + : IfcDirection; + LOCAL + XAxis : IfcDirection; + V : IfcDirection; + Z : IfcDirection; + XVec : IfcVector; + END_LOCAL; + + IF (NOT EXISTS(ZAxis)) THEN + RETURN (?) ; + ELSE + Z := IfcNormalise(ZAxis); + IF NOT EXISTS(Arg) THEN + IF (Z.DirectionRatios <> [1.0,0.0,0.0]) THEN + V := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([1.0,0.0,0.0]); + ELSE + V := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0,1.0,0.0]); + END_IF; + ELSE + IF (Arg.Dim <> 3) THEN + RETURN (?) ; + END_IF; + IF ((IfcCrossProduct(Arg,Z).Magnitude) = 0.0) THEN + RETURN (?); + ELSE + V := IfcNormalise(Arg); + END_IF; + END_IF; + XVec := IfcScalarTimesVector(IfcDotProduct(V, Z), Z); + XAxis := IfcVectorDifference(V, XVec).Orientation; + XAxis := IfcNormalise(XAxis); + END_IF; + RETURN(XAxis); +END_FUNCTION; + +FUNCTION IfcLeapYear + (Year : IfcYearNumber) + : BOOLEAN; + + IF ((((Year MOD 4) = 0) AND ((Year MOD 100) <> 0)) OR + ((Year MOD 400) = 0)) THEN + RETURN(TRUE); + ELSE + RETURN(FALSE); + END_IF; +END_FUNCTION; + +FUNCTION IfcListToArray + (Lis : LIST [0:?] OF GENERIC : T; + Low,U : INTEGER) + : ARRAY OF GENERIC : T; + LOCAL + N : INTEGER; + Res : ARRAY [Low:U] OF GENERIC : T; + END_LOCAL; + + N := SIZEOF(Lis); + IF (N <> (U-Low +1)) THEN + RETURN(?); + ELSE + Res := [Lis[1] : N]; + REPEAT i := 2 TO N; + Res[Low+i-1] := Lis[i]; + END_REPEAT; + RETURN(Res); + END_IF; +END_FUNCTION; + +FUNCTION IfcLoopHeadToTail + (ALoop : IfcEdgeLoop) + : LOGICAL; + LOCAL + N : INTEGER; + P : LOGICAL := TRUE; + END_LOCAL; + + N := SIZEOF (ALoop.EdgeList); + REPEAT i := 2 TO N; + P := P AND (ALoop.EdgeList[i-1].EdgeEnd :=: + ALoop.EdgeList[i].EdgeStart); + END_REPEAT; + RETURN (P); +END_FUNCTION; + +FUNCTION IfcMlsTotalThickness + (LayerSet : IfcMaterialLayerSet) + : IfcLengthMeasure; + LOCAL + Max : IfcLengthMeasure := LayerSet.MaterialLayers[1].LayerThickness; + END_LOCAL; + + IF SIZEOF(LayerSet.MaterialLayers) > 1 THEN + REPEAT i := 2 TO HIINDEX(LayerSet.MaterialLayers); + Max := Max + LayerSet.MaterialLayers[i].LayerThickness; + END_REPEAT; + END_IF; + RETURN (Max); +END_FUNCTION; + +FUNCTION IfcNoOfLayers + (Element : IfcElement ) + : INTEGER; + + LOCAL + Association : BAG OF IfcRelAssociates := []; + MaterialAssociation : SET OF IfcRelAssociatesMaterial := []; + END_LOCAL; + + Association := USEDIN(Element, 'IFC2X3.IFCRELASSOCIATES.RELATEDOBJECTS'); + + IF SIZEOF (Association) > 0 THEN + REPEAT i := 1 TO HIINDEX(Association); + IF ('IFC2X3.IFCRELASSOCIATESMATERIAL' IN TYPEOF(Association[i])) THEN + MaterialAssociation := MaterialAssociation + Association[i]; + END_IF; + END_REPEAT; + END_IF; + + IF (SIZEOF(MaterialAssociation) <> 1) THEN + RETURN (?); + ELSE + IF 'IFC2X3.IFCMATERIAL' IN TYPEOF(MaterialAssociation[1].RelatingMaterial) THEN + RETURN (1); + END_IF; + IF 'IFC2X3.IFCMATERIALLAYERSETUSAGE' IN TYPEOF(MaterialAssociation[1].RelatingMaterial) THEN + RETURN (SIZEOF(MaterialAssociation[1].RelatingMaterial.ForLayerSet.MaterialLayers)); + END_IF; + IF 'IFC2X3.IFCMATERIALLIST' IN TYPEOF(MaterialAssociation[1].RelatingMaterial) THEN + RETURN (?); + END_IF; + END_IF; + + RETURN (?); +END_FUNCTION; + +FUNCTION IfcNormalise + (Arg : IfcVectorOrDirection) + : IfcVectorOrDirection; + LOCAL + Ndim : INTEGER; + V : IfcDirection + := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([1.,0.]); + Vec : IfcVector + := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector ( + IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([1.,0.]), 1.); + Mag : REAL; + Result : IfcVectorOrDirection + := V; + END_LOCAL; + + IF NOT EXISTS (Arg) THEN + RETURN (?); + ELSE + Ndim := Arg.Dim; + IF 'IFC2X3.IFCVECTOR' IN TYPEOF(Arg) THEN + BEGIN + V.DirectionRatios := Arg.Orientation.DirectionRatios; + Vec.Magnitude := Arg.Magnitude; + Vec.Orientation := V; + IF Arg.Magnitude = 0.0 THEN + RETURN(?); + ELSE + Vec.Magnitude := 1.0; + END_IF; + END; + ELSE + V.DirectionRatios := Arg.DirectionRatios; + END_IF; + Mag := 0.0; + REPEAT i := 1 TO Ndim; + Mag := Mag + V.DirectionRatios[i]*V.DirectionRatios[i]; + END_REPEAT; + IF Mag > 0.0 THEN + Mag := SQRT(Mag); + REPEAT i := 1 TO Ndim; + V.DirectionRatios[i] := V.DirectionRatios[i]/Mag; + END_REPEAT; + IF 'IFC2X3.IFCVECTOR' IN TYPEOF(arg) THEN + Vec.Orientation := V; + Result := Vec; + ELSE + Result := V; + END_IF; + ELSE + RETURN(?); + END_IF; + END_IF; + RETURN (Result); +END_FUNCTION; + +FUNCTION IfcOrthogonalComplement + (Vec : IfcDirection) + : IfcDirection; + LOCAL + Result : IfcDirection ; + END_LOCAL; + IF NOT EXISTS (Vec) OR (Vec.Dim <> 2) THEN + RETURN(?); + ELSE + Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([-Vec.DirectionRatios[2], Vec.DirectionRatios[1]]); + RETURN(Result); + END_IF; +END_FUNCTION; + +FUNCTION IfcPathHeadToTail + (APath : IfcPath) + : LOGICAL; + LOCAL + N : INTEGER := 0; + P : LOGICAL := UNKNOWN; + END_LOCAL; + N := SIZEOF (APath.EdgeList); + REPEAT i := 2 TO N; + P := P AND (APath.EdgeList[i-1].EdgeEnd :=: + APath.EdgeList[i].EdgeStart); + END_REPEAT; + RETURN (P); +END_FUNCTION; + +FUNCTION IfcSameAxis2Placement + (ap1, ap2 : IfcAxis2Placement; Epsilon : REAL) + : LOGICAL; + + RETURN (IfcSameDirection(ap1.P[1],ap2.P[1],Epsilon) AND + IfcSameDirection(ap1.P[2],ap2.P[2],Epsilon) AND + IfcSameCartesianPoint(ap1.Location,ap1.Location,Epsilon)); +END_FUNCTION; + +FUNCTION IfcSameCartesianPoint + (cp1, cp2 : IfcCartesianPoint; Epsilon : REAL) + : LOGICAL; + + LOCAL + cp1x : REAL := cp1.Coordinates[1]; + cp1y : REAL := cp1.Coordinates[2]; + cp1z : REAL := 0; + cp2x : REAL := cp2.Coordinates[1]; + cp2y : REAL := cp2.Coordinates[2]; + cp2z : REAL := 0; + END_LOCAL; + + IF (SIZEOF(cp1.Coordinates) > 2) THEN + cp1z := cp1.Coordinates[3]; + END_IF; + + IF (SIZEOF(cp2.Coordinates) > 2) THEN + cp2z := cp2.Coordinates[3]; + END_IF; + + RETURN (IfcSameValue(cp1x,cp2x,Epsilon) AND + IfcSameValue(cp1y,cp2y,Epsilon) AND + IfcSameValue(cp1z,cp2z,Epsilon)); +END_FUNCTION; + +FUNCTION IfcSameDirection + (dir1, dir2 : IfcDirection; Epsilon : REAL) + : LOGICAL; + LOCAL + dir1x : REAL := dir1.DirectionRatios[1]; + dir1y : REAL := dir1.DirectionRatios[2]; + dir1z : REAL := 0; + dir2x : REAL := dir2.DirectionRatios[1]; + dir2y : REAL := dir2.DirectionRatios[2]; + dir2z : REAL := 0; + END_LOCAL; + + IF (SIZEOF(dir1.DirectionRatios) > 2) THEN + dir1z := dir1.DirectionRatios[3]; + END_IF; + + IF (SIZEOF(dir2.DirectionRatios) > 2) THEN + dir2z := dir2.DirectionRatios[3]; + END_IF; + + RETURN (IfcSameValue(dir1x,dir2x,Epsilon) AND + IfcSameValue(dir1y,dir2y,Epsilon) AND + IfcSameValue(dir1z,dir2z,Epsilon)); +END_FUNCTION; + +FUNCTION IfcSameValidPrecision + (Epsilon1, Epsilon2 : REAL) + : LOGICAL; + LOCAL + ValidEps1, ValidEps2 : REAL; + DefaultEps : REAL := 0.000001; + DerivationOfEps : REAL := 1.001; + UpperEps : REAL := 1.0; + END_LOCAL; + + ValidEps1 := NVL(Epsilon1, DefaultEps); + ValidEps2 := NVL(Epsilon2, DefaultEps); + RETURN ((0.0 < ValidEps1) AND (ValidEps1 <= (DerivationOfEps * ValidEps2)) AND + (ValidEps2 <= (DerivationOfEps * ValidEps1)) AND (ValidEps2 < UpperEps)); +END_FUNCTION; + +FUNCTION IfcSameValue + (Value1, Value2 : REAL; Epsilon : REAL) + : LOGICAL; + LOCAL + ValidEps : REAL; + DefaultEps : REAL := 0.000001; + END_LOCAL; + + ValidEps := NVL(Epsilon, DefaultEps); + RETURN ((Value1 + ValidEps > Value2) AND (Value1 < Value2 + ValidEps)); +END_FUNCTION; + +FUNCTION IfcScalarTimesVector + (Scalar : REAL; Vec : IfcVectorOrDirection) + : IfcVector; + LOCAL + V : IfcDirection; + Mag : REAL; + Result : IfcVector; + END_LOCAL; + + IF NOT EXISTS (Scalar) OR NOT EXISTS (Vec) THEN + RETURN (?) ; + ELSE + IF 'IFC2X3.IFCVECTOR' IN TYPEOF (Vec) THEN + V := Vec.Orientation; + Mag := Scalar * Vec.Magnitude; + ELSE + V := Vec; + Mag := Scalar; + END_IF; + IF (Mag < 0.0 ) THEN + REPEAT i := 1 TO SIZEOF(V.DirectionRatios); + V.DirectionRatios[i] := -V.DirectionRatios[i]; + END_REPEAT; + Mag := -Mag; + END_IF; + Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector(IfcNormalise(V), Mag); + END_IF; + RETURN (Result); +END_FUNCTION; + +FUNCTION IfcSecondProjAxis + (ZAxis, XAxis, Arg: IfcDirection) + : IfcDirection; + LOCAL + YAxis : IfcVector; + V : IfcDirection; + Temp : IfcVector; + END_LOCAL; + + IF NOT EXISTS(Arg) THEN + V := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0,1.0,0.0]); + ELSE + V := Arg; + END_IF; + Temp := IfcScalarTimesVector(IfcDotProduct(V, ZAxis), ZAxis); + YAxis := IfcVectorDifference(V, Temp); + Temp := IfcScalarTimesVector(IfcDotProduct(V, XAxis), XAxis); + YAxis := IfcVectorDifference(YAxis, Temp); + YAxis := IfcNormalise(YAxis); + RETURN(YAxis.Orientation); +END_FUNCTION; + +FUNCTION IfcShapeRepresentationTypes + (RepType : IfcLabel; Items : SET OF IfcRepresentationItem) + : LOGICAL; + + LOCAL + Count : INTEGER := 0; + END_LOCAL; + + CASE RepType OF + 'Curve2D' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCCURVE' IN TYPEOF(temp)) + AND (temp.Dim = 2))); + END; + 'Annotation2D' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | ( + SIZEOF(TYPEOF(temp) * [ + 'IFC2X3.IFCPOINT', + 'IFC2X3.IFCCURVE', + 'IFC2X3.IFCGEOMETRICCURVESET', + 'IFC2X3.IFCANNOTATIONFILLAREA', + 'IFC2X3.IFCDEFINEDSYMBOL', + 'IFC2X3.IFCTEXTLITERAL', + 'IFC2X3.IFCDRAUGHTINGCALLOUT']) = 1) + )); + END; + 'GeometricSet' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCGEOMETRICSET' IN TYPEOF(temp)) + OR ('IFC2X3.IFCPOINT' IN TYPEOF(temp)) + OR ('IFC2X3.IFCCURVE' IN TYPEOF(temp)) + OR ('IFC2X3.IFCSURFACE' IN TYPEOF(temp)))); + END; + 'GeometricCurveSet' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCGEOMETRICCURVESET' IN TYPEOF(temp)) + OR ('IFC2X3.IFCGEOMETRICSET' IN TYPEOF(temp)) + OR ('IFC2X3.IFCPOINT' IN TYPEOF(temp)) + OR ('IFC2X3.IFCCURVE' IN TYPEOF(temp)))); + REPEAT i:=1 TO HIINDEX(Items); + IF ('IFC2X3.IFCGEOMETRICSET' IN TYPEOF(Items[i])) + THEN + IF (SIZEOF(QUERY(temp <* Items[i]\IfcGeometricSet.Elements | 'IFC2X3.IFCSURFACE' IN TYPEOF(temp))) > 0) + THEN + Count := Count - 1; + END_IF; + END_IF; + END_REPEAT; + END; + 'SurfaceModel' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | SIZEOF([ + 'IFC2X3.IFCSHELLBASEDSURFACEMODEL', + 'IFC2X3.IFCFACEBASEDSURFACEMODEL', + 'IFC2X3.IFCFACETEDBREP', + 'IFC2X3.IFCFACETEDBREPWITHVOIDS'] * TYPEOF(temp)) >= 1 + )); + END; + 'SolidModel' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCSOLIDMODEL' IN TYPEOF(temp)))); + END; + 'SweptSolid' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCSWEPTAREASOLID' IN TYPEOF(temp)))); + END; + 'CSG' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCBOOLEANRESULT' IN TYPEOF(temp)))); + END; + 'Clipping' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCBOOLEANCLIPPINGRESULT' IN TYPEOF(temp)))); + END; + 'AdvancedSweptSolid' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCSURFACECURVESWEPTAREASOLID' IN TYPEOF(temp)) + OR ('IFC2X3.IFCSWEPTDISKSOLID' IN TYPEOF(temp)))); + END; + 'Brep' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCFACETEDBREP' IN TYPEOF(temp)) + OR ('IFC2X3.IFCFACETEDBREPWITHVOIDS' IN TYPEOF(temp)))); + END; + 'BoundingBox' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCBOUNDINGBOX' IN TYPEOF(temp)))); + IF (SIZEOF(Items) > 1) + THEN + Count := 0; + END_IF; + END; + 'SectionedSpine' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCSECTIONEDSPINE' IN TYPEOF(temp)))); + END; + 'MappedRepresentation' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCMAPPEDITEM' IN TYPEOF(temp)))); + END; + OTHERWISE : RETURN(?); + END_CASE; + RETURN (Count = SIZEOF(Items)); +END_FUNCTION; + +FUNCTION IfcTopologyRepresentationTypes + (RepType : IfcLabel; Items : SET OF IfcRepresentationItem) + : LOGICAL; + + LOCAL + Count : INTEGER := 0; + END_LOCAL; + + CASE RepType OF + 'Vertex' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | + ('IFC2X3.IFCVERTEX' IN TYPEOF(temp)))); + END; + 'Edge' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | + ('IFC2X3.IFCEDGE' IN TYPEOF(temp)))); + END; + 'Path' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | + ('IFC2X3.IFCPATH' IN TYPEOF(temp)))); + END; + 'Face' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | + ('IFC2X3.IFCFACE' IN TYPEOF(temp)))); + END; + 'Shell' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | + ('IFC2X3.IFCOPENSHELL' IN TYPEOF(temp)) + OR ('IFC2X3.IFCCLOSEDSHELL' IN TYPEOF(temp)))); + END; + 'Undefined': RETURN(TRUE); + OTHERWISE : RETURN(?); + END_CASE; + RETURN (Count = SIZEOF(Items)); +END_FUNCTION; + +FUNCTION IfcUniquePropertyName + (Properties : SET [1:?] OF IfcProperty) + : LOGICAL; + + LOCAL + Names : SET OF IfcIdentifier := []; + END_LOCAL; + + REPEAT i:=1 TO HIINDEX(Properties); + Names := Names + Properties[i].Name; + END_REPEAT; + RETURN (SIZEOF(Names) = SIZEOF(Properties)); +END_FUNCTION; + +FUNCTION IfcValidCalendarDate + (Date : IfcCalendarDate) + : LOGICAL; + IF NOT ({1 <= Date.DayComponent <= 31}) THEN + RETURN(FALSE); + END_IF; + CASE Date.MonthComponent OF + 4 : RETURN({ 1<= Date.DayComponent <= 30}); + 6 : RETURN({ 1<= Date.DayComponent <= 30}); + 9 : RETURN({ 1<= Date.DayComponent <= 30}); + 11 : RETURN({ 1<= Date.DayComponent <= 30}); + 2 : + BEGIN + IF (IfcLeapYear(Date.YearComponent)) THEN + RETURN({ 1<= Date.DayComponent <= 29}); + ELSE + RETURN({ 1<= Date.DayComponent <= 28}); + END_IF; + END; + OTHERWISE : RETURN(TRUE); + END_CASE; +END_FUNCTION; + +FUNCTION IfcValidTime + (Time: IfcLocalTime) + : BOOLEAN; + IF EXISTS (Time.SecondComponent) THEN + RETURN (EXISTS (Time.MinuteComponent)); + ELSE + RETURN (TRUE); + END_IF; +END_FUNCTION; + +FUNCTION IfcVectorDifference + (Arg1, Arg2 : IfcVectorOrDirection) + : IfcVector; + LOCAL + Result : IfcVector; + Res, Vec1, Vec2 : IfcDirection; + Mag, Mag1, Mag2 : REAL; + Ndim : INTEGER; + END_LOCAL; + + IF ((NOT EXISTS (Arg1)) OR (NOT EXISTS (Arg2))) OR (Arg1.Dim <> Arg2.Dim) THEN + RETURN (?) ; + ELSE + BEGIN + IF 'IFC2X3.IFCVECTOR' IN TYPEOF(Arg1) THEN + Mag1 := Arg1.Magnitude; + Vec1 := Arg1.Orientation; + ELSE + Mag1 := 1.0; + Vec1 := Arg1; + END_IF; + IF 'IFC2X3.IFCVECTOR' IN TYPEOF(Arg2) THEN + Mag2 := Arg2.Magnitude; + Vec2 := Arg2.Orientation; + ELSE + Mag2 := 1.0; + Vec2 := Arg2; + END_IF; + Vec1 := IfcNormalise (Vec1); + Vec2 := IfcNormalise (Vec2); + Ndim := SIZEOF(Vec1.DirectionRatios); + Mag := 0.0; + Res := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0:Ndim]); + + REPEAT i := 1 TO Ndim; + Res.DirectionRatios[i] := Mag1*Vec1.DirectionRatios[i] - Mag2*Vec2.DirectionRatios[i]; + Mag := Mag + (Res.DirectionRatios[i]*Res.DirectionRatios[i]); + END_REPEAT; + + IF (Mag > 0.0 ) THEN + Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector( Res, SQRT(Mag)); + ELSE + Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector( Vec1, 0.0); + END_IF; + END; + END_IF; + RETURN (Result); +END_FUNCTION; + +FUNCTION IfcVectorSum + (Arg1, Arg2 : IfcVectorOrDirection) + : IfcVector; + LOCAL + Result : IfcVector; + Res, Vec1, Vec2 : IfcDirection; + Mag, Mag1, Mag2 : REAL; + Ndim : INTEGER; + END_LOCAL; + + IF ((NOT EXISTS (Arg1)) OR (NOT EXISTS (Arg2))) OR (Arg1.Dim <> Arg2.Dim) THEN + RETURN (?) ; + ELSE + BEGIN + IF 'IFC2X3.IFCVECTOR' IN TYPEOF(Arg1) THEN + Mag1 := Arg1.Magnitude; + Vec1 := Arg1.Orientation; + ELSE + Mag1 := 1.0; + Vec1 := Arg1; + END_IF; + IF 'IFC2X3.IFCVECTOR' IN TYPEOF(Arg2) THEN + Mag2 := Arg2.Magnitude; + Vec2 := Arg2.Orientation; + ELSE + Mag2 := 1.0; + Vec2 := Arg2; + END_IF; + Vec1 := IfcNormalise (Vec1); + Vec2 := IfcNormalise (Vec2); + Ndim := SIZEOF(Vec1.DirectionRatios); + Mag := 0.0; + Res := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0:Ndim]); + + REPEAT i := 1 TO Ndim; + Res.DirectionRatios[i] := Mag1*Vec1.DirectionRatios[i] + Mag2*Vec2.DirectionRatios[i]; + Mag := Mag + (Res.DirectionRatios[i]*Res.DirectionRatios[i]); + END_REPEAT; + + IF (Mag > 0.0 ) THEN + Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector( Res, SQRT(Mag)); + ELSE + Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector( Vec1, 0.0); + END_IF; + END; + END_IF; + RETURN (Result); +END_FUNCTION; + +RULE IfcRepresentationContextSameWCS FOR + (IfcGeometricRepresentationContext); + LOCAL + IsDifferent : LOGICAL := FALSE; + END_LOCAL; + IF (SIZEOF(IfcGeometricRepresentationContext) > 1) + THEN + REPEAT i := 2 TO HIINDEX(IfcGeometricRepresentationContext); + IF (IfcGeometricRepresentationContext[1].WorldCoordinateSystem :<>: IfcGeometricRepresentationContext[i].WorldCoordinateSystem) + THEN + IsDifferent := (NOT(IfcSameValidPrecision(IfcGeometricRepresentationContext[1].Precision, + IfcGeometricRepresentationContext[i].Precision))) + OR (NOT(IfcSameAxis2Placement(IfcGeometricRepresentationContext[1].WorldCoordinateSystem, + IfcGeometricRepresentationContext[i].WorldCoordinateSystem, + IfcGeometricRepresentationContext[1].Precision))); + IF (IsDifferent = TRUE) THEN + ESCAPE; + END_IF; + END_IF; + END_REPEAT; + END_IF; + WHERE + WR1 : IsDifferent = FALSE; +END_RULE; + +RULE IfcSingleProjectInstance FOR + (IfcProject); + WHERE + WR1 : SIZEOF(IfcProject) <= 1; +END_RULE; + +END_SCHEMA; diff --git a/src/mesh/assimp-master/scripts/StepImporter/step_entitylist.txt b/src/mesh/assimp-master/scripts/StepImporter/step_entitylist.txt new file mode 100644 index 0000000..223f57a --- /dev/null +++ b/src/mesh/assimp-master/scripts/StepImporter/step_entitylist.txt @@ -0,0 +1,1015 @@ +# ============================================================================== +# List of IFC structures needed by Assimp +# ============================================================================== +# use genentitylist.sh to update this list + +# This machine-generated list is not complete, it lacks many intermediate +# classes in the inheritance hierarchy. Those are magically augmented by the +# code generator. Also, the names of all used entities need to be present +# in the source code for this to work. +absorbed_dose_measure_with_unit +absorbed_dose_unit +abstract_variable +acceleration_measure_with_unit +acceleration_unit +action; +action_assignment +action_directive; +action_method; +action_method_assignment +action_method_relationship; +action_method_role; +action_property; +action_property_representation; +action_relationship; +action_request_assignment +action_request_solution; +action_request_status; +action_status; +address; +advanced_brep_shape_representation +advanced_face +alternate_product_relationship; +amount_of_substance_measure_with_unit +amount_of_substance_unit +angle_direction_reference +angular_dimension +angular_location +angular_size +angularity_tolerance +annotation_curve_occurrence +annotation_fill_area +annotation_fill_area_occurrence +annotation_occurrence +annotation_occurrence_associativity +annotation_occurrence_relationship; +annotation_plane +annotation_subfigure_occurrence +annotation_symbol +annotation_symbol_occurrence +annotation_text +annotation_text_character +annotation_text_occurrence +apex +application_context; +application_context_element +application_protocol_definition; +applied_action_assignment +applied_action_method_assignment +applied_action_request_assignment +applied_approval_assignment +applied_attribute_classification_assignment +applied_certification_assignment +applied_classification_assignment +applied_contract_assignment +applied_date_and_time_assignment +applied_date_assignment +applied_document_reference +applied_document_usage_constraint_assignment +applied_effectivity_assignment +applied_event_occurrence_assignment +applied_external_identification_assignment +applied_group_assignment +applied_identification_assignment +applied_name_assignment +applied_organization_assignment +applied_organizational_project_assignment +applied_person_and_organization_assignment +applied_presented_item +applied_security_classification_assignment +applied_time_interval_assignment +applied_usage_right +approval; +approval_assignment +approval_date_time; +approval_person_organization; +approval_relationship; +approval_role; +approval_status; +area_in_set; +area_measure_with_unit +area_unit +assembly_component_usage +assembly_component_usage_substitute; +assigned_requirement +atomic_formula +attribute_assertion +attribute_classification_assignment +attribute_language_assignment +attribute_value_assignment +attribute_value_role; +auxiliary_geometric_representation_item +axis1_placement +axis2_placement_2d +axis2_placement_3d +b_spline_curve +b_spline_curve_with_knots +b_spline_surface +b_spline_surface_with_knots +back_chaining_rule +back_chaining_rule_body +background_colour +beveled_sheet_representation +bezier_curve +bezier_surface +binary_generic_expression +binary_numeric_expression +binary_representation_item +block +boolean_expression +boolean_literal +boolean_representation_item +boolean_result +boundary_curve +bounded_curve +bounded_pcurve +bounded_surface +bounded_surface_curve +box_domain +boxed_half_space +breakdown_context +breakdown_element_group_assignment +breakdown_element_realization +breakdown_element_usage +breakdown_of +brep_with_voids +bytes_representation_item +calendar_date +camera_image +camera_image_3d_with_scale +camera_model +camera_model_d3 +camera_model_d3_multi_clipping +camera_model_d3_multi_clipping_intersection +camera_model_d3_multi_clipping_union +camera_model_d3_with_hlhsr +camera_model_with_light_sources +camera_usage +capacitance_measure_with_unit +capacitance_unit +cartesian_point +cartesian_transformation_operator +cartesian_transformation_operator_2d +cartesian_transformation_operator_3d +cc_design_approval +cc_design_certification +cc_design_contract +cc_design_date_and_time_assignment +cc_design_person_and_organization_assignment +cc_design_security_classification +cc_design_specification_reference +celsius_temperature_measure_with_unit +centre_of_symmetry +certification; +certification_assignment +certification_type; +change +change_request +character_glyph_font_usage; +character_glyph_style_outline +character_glyph_style_stroke +character_glyph_symbol +character_glyph_symbol_outline +character_glyph_symbol_stroke +characteristic_data_column_header +characteristic_data_column_header_link +characteristic_data_table_header +characteristic_data_table_header_decomposition +characteristic_type +characterized_class +characterized_object; +circle +circular_runout_tolerance +class +class_by_extension +class_by_intension +class_system +class_usage_effectivity_context_assignment +classification_assignment +classification_role; +closed_shell +coaxiality_tolerance +colour; +colour_rgb +colour_specification +common_datum +comparison_expression +complex_clause +complex_conjunctive_clause +complex_disjunctive_clause +complex_shelled_solid +composite_assembly_definition +composite_assembly_sequence_definition +composite_assembly_table +composite_curve +composite_curve_on_surface +composite_curve_segment +composite_material_designation +composite_shape_aspect +composite_sheet_representation +composite_text +composite_text_with_associated_curves +composite_text_with_blanking_box +composite_text_with_delineation +composite_text_with_extent +compound_representation_item +compound_shape_representation +concentricity_tolerance +concept_feature_operator; +concept_feature_relationship; +concept_feature_relationship_with_condition +conditional_concept_feature +conductance_measure_with_unit +conductance_unit +configurable_item +configuration_design; +configuration_effectivity +configuration_item; +configuration_item_hierarchical_relationship +configuration_item_relationship; +configuration_item_revision_sequence +configured_effectivity_assignment +configured_effectivity_context_assignment +conic +conical_stepped_hole_transition +conical_surface +connected_edge_set +connected_face_set +connected_face_sub_set +constructive_geometry_representation +constructive_geometry_representation_relationship +contact_ratio_representation +context_dependent_invisibility +context_dependent_over_riding_styled_item +context_dependent_shape_representation; +context_dependent_unit +contract; +contract_assignment +contract_relationship; +contract_type; +conversion_based_unit +coordinated_universal_time_offset; +csg_shape_representation +csg_solid +currency +currency_measure_with_unit +curve +curve_bounded_surface +curve_dimension +curve_replica +curve_style +curve_style_font +curve_style_font_and_scaling +curve_style_font_pattern +curve_style_rendering; +curve_swept_solid_shape_representation +cylindrical_surface +cylindricity_tolerance +data_environment; +date +date_and_time; +date_and_time_assignment +date_assignment +date_representation_item +date_role; +date_time_representation_item +date_time_role; +dated_effectivity +datum +datum_feature +datum_feature_callout +datum_reference; +datum_target +datum_target_callout +default_tolerance_table +default_tolerance_table_cell +defined_symbol +definitional_representation +definitional_representation_relationship +definitional_representation_relationship_with_same_context +degenerate_pcurve +degenerate_toroidal_surface +derived_shape_aspect +derived_unit +derived_unit_element; +description_attribute; +descriptive_representation_item +design_context +design_make_from_relationship +diameter_dimension +dielectric_constant_measure_with_unit +dimension_callout +dimension_callout_component_relationship +dimension_callout_relationship +dimension_curve +dimension_curve_directed_callout +dimension_curve_terminator +dimension_curve_terminator_to_projection_curve_associativity +dimension_pair +dimension_related_tolerance_zone_element; +dimension_text_associativity +dimensional_characteristic_representation; +dimensional_exponents; +dimensional_location +dimensional_location_with_path +dimensional_size +dimensional_size_with_path +directed_action +directed_dimensional_location +direction +document; +document_file +document_identifier +document_identifier_assignment +document_product_association; +document_product_equivalence +document_reference +document_relationship; +document_representation_type; +document_type; +document_usage_constraint; +document_usage_constraint_assignment +document_usage_role; +dose_equivalent_measure_with_unit +dose_equivalent_unit +double_offset_shelled_solid +draped_defined_transformation +draughting_annotation_occurrence +draughting_callout +draughting_callout_relationship; +draughting_elements +draughting_model +draughting_model_item_association +draughting_pre_defined_colour +draughting_pre_defined_curve_font +draughting_pre_defined_text_font +draughting_subfigure_representation +draughting_symbol_representation +draughting_text_literal_with_delineation +draughting_title; +drawing_definition; +drawing_revision +drawing_revision_sequence; +drawing_sheet_revision +drawing_sheet_revision_sequence +drawing_sheet_revision_usage +edge +edge_based_wireframe_model +edge_based_wireframe_shape_representation +edge_blended_solid +edge_curve +edge_loop +effectivity +effectivity_assignment +effectivity_context_assignment +effectivity_context_role; +effectivity_relationship; +electric_charge_measure_with_unit +electric_charge_unit +electric_current_measure_with_unit +electric_current_unit +electric_potential_measure_with_unit +electric_potential_unit +elementary_brep_shape_representation +elementary_surface +ellipse +energy_measure_with_unit +energy_unit +entity_assertion +enum_reference_prefix +environment; +evaluated_characteristic +evaluated_degenerate_pcurve +evaluation_product_definition +event_occurrence; +event_occurrence_assignment +event_occurrence_relationship; +event_occurrence_role; +exclusive_product_concept_feature_category +executed_action +expanded_uncertainty +explicit_procedural_geometric_representation_item_relationship +explicit_procedural_representation_item_relationship +explicit_procedural_representation_relationship +explicit_procedural_shape_representation_relationship +expression +expression_conversion_based_unit +extension +extent +external_class_library +external_identification_assignment +external_source; +external_source_relationship; +externally_defined_class +externally_defined_colour +externally_defined_context_dependent_unit +externally_defined_conversion_based_unit +externally_defined_currency +externally_defined_curve_font +externally_defined_dimension_definition +externally_defined_general_property +externally_defined_hatch_style +externally_defined_item; +externally_defined_item_relationship; +externally_defined_marker +externally_defined_picture_representation_item +externally_defined_representation_item +externally_defined_string +externally_defined_symbol +externally_defined_terminator_symbol +externally_defined_text_font +externally_defined_tile +externally_defined_tile_style +extruded_area_solid +extruded_face_solid +extruded_face_solid_with_draft_angle +extruded_face_solid_with_multiple_draft_angles +extruded_face_solid_with_trim_conditions +face +face_based_surface_model +face_bound +face_outer_bound +face_surface +faceted_brep +faceted_brep_shape_representation +fact_type +fill_area_style +fill_area_style_colour; +fill_area_style_hatching +fill_area_style_tile_coloured_region +fill_area_style_tile_curve_with_style +fill_area_style_tile_symbol_with_style +fill_area_style_tiles +flat_pattern_ply_representation_relationship +flatness_tolerance +force_measure_with_unit +force_unit +forward_chaining_rule +forward_chaining_rule_premise +founded_item +frequency_measure_with_unit +frequency_unit +func +functional_breakdown_context +functional_element_usage +functionally_defined_transformation; +general_material_property +general_property; +general_property_association; +general_property_relationship; +generic_character_glyph_symbol +generic_expression +generic_literal +generic_variable +geometric_alignment +geometric_curve_set +geometric_intersection +geometric_item_specific_usage +geometric_model_element_relationship +geometric_representation_context +geometric_representation_item +geometric_set +geometric_tolerance; +geometric_tolerance_relationship; +geometric_tolerance_with_datum_reference +geometric_tolerance_with_defined_unit +geometrical_tolerance_callout +geometrically_bounded_2d_wireframe_representation +geometrically_bounded_surface_shape_representation +geometrically_bounded_wireframe_shape_representation +global_assignment +global_uncertainty_assigned_context +global_unit_assigned_context +ground_fact +group; +group_assignment +group_relationship; +half_space_solid +hardness_representation +hidden_element_over_riding_styled_item +hyperbola +id_attribute; +identification_assignment +identification_role; +illuminance_measure_with_unit +illuminance_unit +included_text_block +inclusion_product_concept_feature +indirectly_selected_elements +indirectly_selected_shape_elements +inductance_measure_with_unit +inductance_unit +information_right +information_usage_right +instance_usage_context_assignment +instanced_feature +int_literal +integer_representation_item +intersection_curve +interval_expression +invisibility; +iso4217_currency +item_defined_transformation; +item_identified_representation_usage; +known_source +laid_defined_transformation +laminate_table +language +leader_curve +leader_directed_callout +leader_directed_dimension +leader_terminator +length_measure_with_unit +length_unit +light_source +light_source_ambient +light_source_directional +light_source_positional +light_source_spot +limits_and_fits; +line +line_profile_tolerance +linear_dimension +literal_conjunction +literal_disjunction +literal_number +local_time; +logical_literal +logical_representation_item +loop +loss_tangent_measure_with_unit +lot_effectivity +luminous_flux_measure_with_unit +luminous_flux_unit +luminous_intensity_measure_with_unit +luminous_intensity_unit +magnetic_flux_density_measure_with_unit +magnetic_flux_density_unit +magnetic_flux_measure_with_unit +magnetic_flux_unit +make_from_usage_option +manifold_solid_brep +manifold_subsurface_shape_representation +manifold_surface_shape_representation +mapped_item +mass_measure_with_unit +mass_unit +material_designation; +material_designation_characterization; +material_property +material_property_representation +measure_qualification; +measure_representation_item +measure_with_unit +mechanical_context +mechanical_design_and_draughting_relationship +mechanical_design_geometric_presentation_area +mechanical_design_geometric_presentation_representation +mechanical_design_presentation_representation_with_draughting +mechanical_design_shaded_presentation_area +mechanical_design_shaded_presentation_representation +min_and_major_ply_orientation_basis +modified_geometric_tolerance +modified_solid +modified_solid_with_placed_configuration +moments_of_inertia_representation +multi_language_attribute_assignment +multiple_arity_boolean_expression +multiple_arity_generic_expression +multiple_arity_numeric_expression +name_assignment +name_attribute; +named_unit +next_assembly_usage_occurrence +non_manifold_surface_shape_representation +null_representation_item +numeric_expression +object_role; +offset_curve_2d +offset_curve_3d +offset_surface +one_direction_repeat_factor +open_shell +ordinal_date +ordinate_dimension +organization; +organization_assignment +organization_relationship; +organization_role; +organizational_address +organizational_project; +organizational_project_assignment +organizational_project_relationship; +organizational_project_role; +oriented_closed_shell +oriented_edge +oriented_face +oriented_open_shell +oriented_path +oriented_surface +outer_boundary_curve +over_riding_styled_item +package_product_concept_feature +parabola +parallel_offset +parallelism_tolerance +parametric_representation_context +part_laminate_table +partial_document_with_structured_text_representation_assignment +path +pcurve +percentage_laminate_definition +percentage_laminate_table +percentage_ply_definition +perpendicular_to +perpendicularity_tolerance +person; +person_and_organization; +person_and_organization_address +person_and_organization_assignment +person_and_organization_role; +personal_address +physical_breakdown_context +physical_element_usage +picture_representation +picture_representation_item +placed_datum_target_feature +placed_feature +placement +planar_box +planar_extent +plane +plane_angle_measure_with_unit +plane_angle_unit +plus_minus_tolerance; +ply_laminate_definition +ply_laminate_sequence_definition +ply_laminate_table +point +point_and_vector +point_on_curve +point_on_surface +point_path +point_replica +point_style +polar_complex_number_literal +poly_loop +polyline +position_tolerance +positioned_sketch +power_measure_with_unit +power_unit +pre_defined_colour +pre_defined_curve_font +pre_defined_dimension_symbol +pre_defined_geometrical_tolerance_symbol +pre_defined_item; +pre_defined_marker +pre_defined_point_marker_symbol +pre_defined_surface_condition_symbol +pre_defined_surface_side_style +pre_defined_symbol +pre_defined_terminator_symbol +pre_defined_text_font +pre_defined_tile +precision_qualifier; +predefined_picture_representation_item +presentation_area +presentation_layer_assignment; +presentation_representation +presentation_set; +presentation_size; +presentation_style_assignment +presentation_style_by_context +presentation_view +presented_item +presented_item_representation; +pressure_measure_with_unit +pressure_unit +procedural_representation +procedural_representation_sequence +procedural_shape_representation +procedural_shape_representation_sequence +product; +product_category; +product_class +product_concept; +product_concept_context +product_concept_feature; +product_concept_feature_association; +product_concept_feature_category +product_concept_feature_category_usage +product_concept_relationship; +product_context +product_definition +product_definition_context +product_definition_context_association; +product_definition_context_role; +product_definition_effectivity +product_definition_element_relationship +product_definition_formation; +product_definition_formation_relationship; +product_definition_formation_with_specified_source +product_definition_group_assignment +product_definition_occurrence_relationship; +product_definition_relationship; +product_definition_shape +product_definition_substitute; +product_definition_usage +product_definition_with_associated_documents +product_identification +product_material_composition_relationship +product_related_product_category +product_specification +projected_zone_definition +projection_curve +projection_directed_callout +promissory_usage_occurrence +property_definition; +property_definition_relationship; +property_definition_representation; +qualified_representation_item +qualitative_uncertainty +quantified_assembly_component_usage +quasi_uniform_curve +quasi_uniform_surface +radioactivity_measure_with_unit +radioactivity_unit +radius_dimension +range_characteristic +ratio_measure_with_unit +ratio_unit +rational_b_spline_curve +rational_b_spline_surface +rational_representation_item +real_literal +real_representation_item +rectangular_composite_surface +rectangular_trimmed_surface +referenced_modified_datum +relative_event_occurrence +rep_item_group +reparametrised_composite_curve_segment +representation; +representation_context; +representation_item +representation_item_relationship; +representation_map; +representation_relationship; +representation_relationship_with_transformation +requirement_assigned_object +requirement_assignment +requirement_source +requirement_view_definition_relationship +resistance_measure_with_unit +resistance_unit +revolved_area_solid +revolved_face_solid +revolved_face_solid_with_trim_conditions +right_angular_wedge +right_circular_cone +right_circular_cylinder +right_to_usage_association +role_association; +roundness_tolerance +row_representation_item +row_value +row_variable +rule_action +rule_condition +rule_definition +rule_set +rule_set_group +rule_software_definition +rule_superseded_assignment +rule_supersedence +ruled_surface_swept_area_solid +runout_zone_definition +runout_zone_orientation; +runout_zone_orientation_reference_direction +satisfied_requirement +satisfies_requirement +satisfying_item +scalar_variable +scattering_parameter +sculptured_solid +seam_curve +security_classification; +security_classification_assignment +security_classification_level; +serial_numbered_effectivity +shape_aspect; +shape_aspect_associativity +shape_aspect_deriving_relationship +shape_aspect_relationship; +shape_definition_representation +shape_dimension_representation +shape_feature_definition +shape_representation +shape_representation_relationship +shape_representation_with_parameters +shell_based_surface_model +shell_based_wireframe_model +shell_based_wireframe_shape_representation +shelled_solid +si_absorbed_dose_unit +si_capacitance_unit +si_conductance_unit +si_dose_equivalent_unit +si_electric_charge_unit +si_electric_potential_unit +si_energy_unit +si_force_unit +si_frequency_unit +si_illuminance_unit +si_inductance_unit +si_magnetic_flux_density_unit +si_magnetic_flux_unit +si_power_unit +si_pressure_unit +si_radioactivity_unit +si_resistance_unit +si_unit +simple_boolean_expression +simple_clause +simple_generic_expression +simple_numeric_expression +slash_expression +smeared_material_definition +solid_angle_measure_with_unit +solid_angle_unit +solid_curve_font +solid_model +solid_replica +solid_with_angle_based_chamfer +solid_with_chamfered_edges +solid_with_circular_pattern +solid_with_circular_pocket +solid_with_circular_protrusion +solid_with_conical_bottom_round_hole +solid_with_constant_radius_edge_blend +solid_with_curved_slot +solid_with_depression +solid_with_double_offset_chamfer +solid_with_flat_bottom_round_hole +solid_with_general_pocket +solid_with_general_protrusion +solid_with_groove +solid_with_hole +solid_with_incomplete_circular_pattern +solid_with_incomplete_rectangular_pattern +solid_with_pocket +solid_with_protrusion +solid_with_rectangular_pattern +solid_with_rectangular_pocket +solid_with_rectangular_protrusion +solid_with_shape_element_pattern +solid_with_single_offset_chamfer +solid_with_slot +solid_with_spherical_bottom_round_hole +solid_with_stepped_round_hole +solid_with_stepped_round_hole_and_conical_transitions +solid_with_straight_slot +solid_with_tee_section_slot +solid_with_through_depression +solid_with_trapezoidal_section_slot +solid_with_variable_radius_edge_blend +source_for_requirement +sourced_requirement +specification_definition +specified_higher_usage_occurrence +sphere +spherical_surface +standard_uncertainty +start_request +start_work +straightness_tolerance +structured_dimension_callout +structured_text_composition +structured_text_representation +styled_item +subedge +subface +supplied_part_relationship +surface +surface_condition_callout +surface_curve +surface_curve_swept_area_solid +surface_of_linear_extrusion +surface_of_revolution +surface_patch +surface_profile_tolerance +surface_rendering_properties; +surface_replica +surface_side_style +surface_style_boundary +surface_style_control_grid +surface_style_fill_area +surface_style_parameter_line +surface_style_reflectance_ambient; +surface_style_reflectance_ambient_diffuse +surface_style_reflectance_ambient_diffuse_specular +surface_style_rendering; +surface_style_rendering_with_properties +surface_style_segmentation_curve +surface_style_silhouette +surface_style_transparent; +surface_style_usage +surface_texture_representation +surfaced_open_shell +swept_area_solid +swept_disk_solid +swept_face_solid +swept_surface +symbol +symbol_colour; +symbol_representation +symbol_representation_map +symbol_style +symbol_target +symmetric_shape_aspect +symmetry_tolerance +table_representation_item +tactile_appearance_representation +tagged_text_format +tagged_text_item +tangent +terminator_symbol +text_font; +text_font_family; +text_font_in_family; +text_literal +text_literal_with_associated_curves +text_literal_with_blanking_box +text_literal_with_delineation +text_literal_with_extent +text_string_representation +text_style +text_style_for_defined_font; +text_style_with_box_characteristics +text_style_with_mirror +text_style_with_spacing +thermal_resistance_measure_with_unit +thermal_resistance_unit +thermodynamic_temperature_measure_with_unit +thermodynamic_temperature_unit +thickened_face_solid +thickness_laminate_definition +thickness_laminate_table +time_interval; +time_interval_assignment +time_interval_based_effectivity +time_interval_relationship; +time_interval_role; +time_interval_with_bounds +time_measure_with_unit +time_unit +tolerance_value; +tolerance_zone +tolerance_zone_definition +tolerance_zone_form; +topological_representation_item +toroidal_surface +torus +total_runout_tolerance +track_blended_solid +track_blended_solid_with_end_conditions +transformation_with_derived_angle +trimmed_curve +two_direction_repeat_factor +type_qualifier; +unary_generic_expression +unary_numeric_expression +uncertainty_assigned_representation +uncertainty_measure_with_unit +uncertainty_qualifier +uniform_curve +uniform_resource_identifier +uniform_surface +usage_association +user_defined_curve_font +user_defined_marker +user_defined_terminator_symbol +user_selected_elements +user_selected_shape_elements +value_range +value_representation_item +variable_semantics +variational_representation_item +vector +vector_style +velocity_measure_with_unit +velocity_unit +versioned_action_request; +vertex +vertex_loop +vertex_point +vertex_shell +view_volume +visual_appearance_representation +volume_measure_with_unit +volume_unit +week_of_year_and_day_date +wire_shell +year_month +zone_structural_makeup -- cgit v1.2.1