summaryrefslogtreecommitdiff
path: root/libs/assimp/scripts/StepImporter
diff options
context:
space:
mode:
Diffstat (limited to 'libs/assimp/scripts/StepImporter')
-rw-r--r--libs/assimp/scripts/StepImporter/CppGenerator.py304
-rw-r--r--libs/assimp/scripts/StepImporter/ExpressReader.py123
-rw-r--r--libs/assimp/scripts/StepImporter/IFCReaderGen.cpp.template78
-rw-r--r--libs/assimp/scripts/StepImporter/IFCReaderGen.h.template91
-rw-r--r--libs/assimp/scripts/StepImporter/StepReaderGen.cpp.template78
-rw-r--r--libs/assimp/scripts/StepImporter/StepReaderGen.h.template90
-rw-r--r--libs/assimp/scripts/StepImporter/extract_step_token.py64
-rw-r--r--libs/assimp/scripts/StepImporter/genentitylist.sh3
-rw-r--r--libs/assimp/scripts/StepImporter/ifc_entitylist.txt111
-rw-r--r--libs/assimp/scripts/StepImporter/part403ts_wg3n2635mim_lf.exp16378
-rw-r--r--libs/assimp/scripts/StepImporter/schema_ap203e2_mim_lf.exp16378
-rw-r--r--libs/assimp/scripts/StepImporter/schema_ifc2x3.exp9571
-rw-r--r--libs/assimp/scripts/StepImporter/step_entitylist.txt1015
13 files changed, 44284 insertions, 0 deletions
diff --git a/libs/assimp/scripts/StepImporter/CppGenerator.py b/libs/assimp/scripts/StepImporter/CppGenerator.py
new file mode 100644
index 0000000..b6c8ed5
--- /dev/null
+++ b/libs/assimp/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<const DataType> arg = params[base++];{handle_unset}{convert}
+ }} while(0);
+"""
+template_allow_optional = r"""
+ if (dynamic_cast<const UNSET*>(&*arg)) break;"""
+template_allow_derived = r"""
+ if (dynamic_cast<const ISDERIVED*>(&*arg)) {{ in->ObjectHelper<Assimp::IFC::{type},{argcnt}>::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/libs/assimp/scripts/StepImporter/ExpressReader.py b/libs/assimp/scripts/StepImporter/ExpressReader.py
new file mode 100644
index 0000000..9cb3b72
--- /dev/null
+++ b/libs/assimp/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/libs/assimp/scripts/StepImporter/IFCReaderGen.cpp.template b/libs/assimp/scripts/StepImporter/IFCReaderGen.cpp.template
new file mode 100644
index 0000000..de1063d
--- /dev/null
+++ b/libs/assimp/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<NotImplemented>(const STEP::DB& db, const LIST& params, NotImplemented* in)
+{
+ return 0;
+}
+
+
+{converter-impl}
+
+} // ! STEP
+} // ! Assimp
+
+#endif
diff --git a/libs/assimp/scripts/StepImporter/IFCReaderGen.h.template b/libs/assimp/scripts/StepImporter/IFCReaderGen.h.template
new file mode 100644
index 0000000..2cad154
--- /dev/null
+++ b/libs/assimp/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<NotImplemented,0> {
+
+ };
+
+
+ // ******************************************************************************
+ // 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<IFC::type>(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/libs/assimp/scripts/StepImporter/StepReaderGen.cpp.template b/libs/assimp/scripts/StepImporter/StepReaderGen.cpp.template
new file mode 100644
index 0000000..5bb9bb9
--- /dev/null
+++ b/libs/assimp/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<NotImplemented>(const STEP::DB& db, const LIST& params, NotImplemented* in)
+{
+ return 0u;
+}
+
+
+{converter-impl}
+
+} // ! STEP
+} // ! Assimp
+
+#endif
diff --git a/libs/assimp/scripts/StepImporter/StepReaderGen.h.template b/libs/assimp/scripts/StepImporter/StepReaderGen.h.template
new file mode 100644
index 0000000..51ba550
--- /dev/null
+++ b/libs/assimp/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<NotImplemented,0> {
+
+};
+
+// ******************************************************************************
+// 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<IFC::type>(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/libs/assimp/scripts/StepImporter/extract_step_token.py b/libs/assimp/scripts/StepImporter/extract_step_token.py
new file mode 100644
index 0000000..106cf58
--- /dev/null
+++ b/libs/assimp/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/libs/assimp/scripts/StepImporter/genentitylist.sh b/libs/assimp/scripts/StepImporter/genentitylist.sh
new file mode 100644
index 0000000..e51959d
--- /dev/null
+++ b/libs/assimp/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/libs/assimp/scripts/StepImporter/ifc_entitylist.txt b/libs/assimp/scripts/StepImporter/ifc_entitylist.txt
new file mode 100644
index 0000000..14b05ca
--- /dev/null
+++ b/libs/assimp/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/libs/assimp/scripts/StepImporter/part403ts_wg3n2635mim_lf.exp b/libs/assimp/scripts/StepImporter/part403ts_wg3n2635mim_lf.exp
new file mode 100644
index 0000000..7935304
--- /dev/null
+++ b/libs/assimp/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;--<make a union of all implicit populations of the FOR-clause>
+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/libs/assimp/scripts/StepImporter/schema_ap203e2_mim_lf.exp b/libs/assimp/scripts/StepImporter/schema_ap203e2_mim_lf.exp
new file mode 100644
index 0000000..7935304
--- /dev/null
+++ b/libs/assimp/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;--<make a union of all implicit populations of the FOR-clause>
+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/libs/assimp/scripts/StepImporter/schema_ifc2x3.exp b/libs/assimp/scripts/StepImporter/schema_ifc2x3.exp
new file mode 100644
index 0000000..ae978a6
--- /dev/null
+++ b/libs/assimp/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/libs/assimp/scripts/StepImporter/step_entitylist.txt b/libs/assimp/scripts/StepImporter/step_entitylist.txt
new file mode 100644
index 0000000..223f57a
--- /dev/null
+++ b/libs/assimp/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