1(*
2   $Id: mim_lf.exp,v 1.40 2009/09/12 02:16:40 thomasrthurman Exp $
3   ISO TC184/SC4/WG3 N2601 - ISO/TS 10303-410 AP210 electronic assembly interconnect and packaging design - EXPRESS MIM Long form
4   Supersedes ISO TC184/SC4/WG3 N1707
5*)
6
7SCHEMA Ap210_electronic_assembly_interconnect_and_packaging_design_mim_lf;
8
9
10CONSTANT
11	dummy_gri : geometric_representation_item := representation_item('')||
12                                   geometric_representation_item();
13
14
15	dummy_tri : topological_representation_item := representation_item('')||
16                   topological_representation_item();
17
18
19	pre_defined_picture_representation_types : SET [0:?] OF STRING := [ 'JPEG', 'PNG', 'TIFF', 'BMP', 'GIF'];
20
21
22
23END_CONSTANT;
24
25TYPE absorbed_dose_measure = REAL;
26END_TYPE;
27
28TYPE acceleration_measure = REAL;
29END_TYPE;
30
31TYPE action_items = SELECT (
32	action_directive,
33	certification_item,
34	characterized_object,
35	classification_item,
36	configuration_effectivity,
37	document_reference_item,
38	identification_item,
39	organization,
40	person_and_organization,
41	product_definition,
42	product_definition_formation,
43	product_definition_formation_relationship,
44	product_definition_relationship,
45	requirement_assigned_item);
46END_TYPE;
47
48TYPE action_method_items = SELECT (
49	product,
50	product_definition_formation,
51	test_method_based_parameter_assignment);
52END_TYPE;
53
54TYPE action_request_item = SELECT (
55	product_definition,
56	product_definition_formation,
57	product_definition_formation_relationship,
58	product_definition_relationship,
59	property_definition,
60	versioned_action_request);
61END_TYPE;
62
63TYPE ahead_or_behind = ENUMERATION OF (
64	ahead,
65	exact,
66	behind );
67END_TYPE;
68
69TYPE amount_of_substance_measure = REAL;
70END_TYPE;
71
72TYPE angle_direction_reference_select = SELECT (
73	direction,
74	curve,
75	point_path);
76END_TYPE;
77
78TYPE angle_direction_reference_with_a2p3d_select = SELECT (
79	angle_direction_reference_select,
80	axis2_placement_3d);
81END_TYPE;
82
83TYPE angle_relator = ENUMERATION OF (
84	equal,
85	large,
86	small );
87END_TYPE;
88
89TYPE annotation_plane_element = SELECT (
90	draughting_callout,
91	styled_item);
92END_TYPE;
93
94TYPE annotation_representation_select = SELECT (
95	presentation_area,
96	presentation_view,
97	symbol_representation);
98END_TYPE;
99
100TYPE annotation_symbol_occurrence_item = SELECT (
101	annotation_symbol,
102	defined_symbol);
103END_TYPE;
104
105TYPE annotation_text_occurrence_item = SELECT (
106	text_literal,
107	annotation_text,
108	annotation_text_character,
109	composite_text);
110END_TYPE;
111
112TYPE approval_item = SELECT (
113	action,
114	action_directive,
115	alternate_product_relationship,
116	applied_action_assignment,
117	applied_usage_right,
118	assembly_component_usage_substitute,
119	certification,
120	configuration_effectivity,
121	configuration_item,
122	contract,
123	date,
124	directed_action,
125	document,
126	document_file,
127	effectivity,
128	executed_action,
129	frozen_assignment,
130	general_property_relationship,
131	group,
132	group_relationship,
133	information_usage_right,
134	product,
135	product_definition,
136	product_definition_formation,
137	product_definition_formation_relationship,
138	product_definition_relationship,
139	representation,
140	requirement_assignment,
141	security_classification,
142	shape_aspect_relationship,
143	versioned_action_request);
144END_TYPE;
145
146TYPE approved_item = SELECT (
147	certification,
148	change,
149	change_request,
150	configuration_effectivity,
151	configuration_item,
152	contract,
153	product,
154	security_classification,
155	start_request,
156	start_work);
157END_TYPE;
158
159TYPE area_measure = REAL;
160END_TYPE;
161
162TYPE area_or_view = SELECT (
163	presentation_area,
164	presentation_view);
165END_TYPE;
166
167TYPE attribute_classification_item = SELECT (
168	action_directive,
169	action_method,
170	action_property,
171	action_property_representation,
172	action_relationship,
173	action_request_solution,
174	action_request_status,
175	alternate_product_relationship,
176	applied_action_assignment,
177	applied_action_request_assignment,
178	applied_approval_assignment,
179	applied_certification_assignment,
180	applied_document_reference,
181	applied_document_usage_constraint_assignment,
182	applied_effectivity_assignment,
183	applied_event_occurrence_assignment,
184	applied_external_identification_assignment,
185	applied_identification_assignment,
186	applied_organization_assignment,
187	applied_organizational_project_assignment,
188	applied_person_and_organization_assignment,
189	approval,
190	approval_person_organization,
191	approval_relationship,
192	approval_status,
193	certification,
194	context_dependent_unit,
195	contract,
196	date_and_time_assignment,
197	date_assignment,
198	derived_unit,
199	descriptive_representation_item,
200	document_file,
201	document_relationship,
202	effectivity,
203	event_occurrence_relationship,
204	executed_action,
205	general_property,
206	general_property_relationship,
207	group,
208	group_relationship,
209	information_right,
210	information_usage_right,
211	language,
212	measure_representation_item,
213	measure_with_unit,
214	named_unit,
215	organization_relationship,
216	organizational_address,
217	organizational_project_relationship,
218	person_and_organization,
219	person_and_organization_address,
220	product,
221	product_category,
222	product_concept,
223	product_concept_context,
224	product_definition,
225	product_definition_context,
226	product_definition_formation,
227	product_definition_formation_relationship,
228	product_definition_relationship,
229	property_definition,
230	property_definition_relationship,
231	property_definition_representation,
232	representation,
233	representation_context,
234	representation_item,
235	security_classification,
236	time_interval_relationship,
237	uncertainty_measure_with_unit,
238	usage_association,
239	versioned_action_request);
240END_TYPE;
241
242TYPE attribute_language_item = SELECT (
243	alternate_product_relationship,
244	application_context,
245	applied_certification_assignment,
246	applied_document_reference,
247	applied_document_usage_constraint_assignment,
248	applied_external_identification_assignment,
249	applied_identification_assignment,
250	applied_organizational_project_assignment,
251	applied_security_classification_assignment,
252	approval,
253	approval_relationship,
254	approval_status,
255	assembly_component_usage_substitute,
256	attribute_value_assignment,
257	certification,
258	certification_type,
259	configuration_design,
260	configuration_item,
261	contract,
262	date_role,
263	date_time_role,
264	descriptive_representation_item,
265	document_relationship,
266	document_usage_role,
267	effectivity,
268	effectivity_relationship,
269	event_occurrence,
270	external_source,
271	general_property,
272	general_property_relationship,
273	geometric_representation_item,
274	geometric_tolerance,
275	identification_role,
276	information_right,
277	information_usage_right,
278	make_from_usage_option,
279	mapped_item,
280	multi_language_attribute_assignment,
281	object_role,
282	organization_relationship,
283	organization_role,
284	organizational_project,
285	organizational_project_relationship,
286	organizational_project_role,
287	person_and_organization,
288	person_and_organization_role,
289	product,
290	product_concept,
291	product_concept_relationship,
292	product_definition,
293	product_definition_context,
294	product_definition_formation,
295	product_definition_formation_relationship,
296	product_definition_relationship,
297	product_definition_shape,
298	product_related_product_category,
299	property_definition,
300	representation,
301	security_classification,
302	security_classification_assignment,
303	shape_aspect,
304	shape_aspect_relationship,
305	shape_representation,
306	time_interval_role,
307	topological_representation_item,
308	uncertainty_measure_with_unit,
309	uncertainty_qualifier,
310	usage_association);
311END_TYPE;
312
313TYPE attribute_type = SELECT (
314	label,
315	text);
316END_TYPE;
317
318TYPE axis2_placement = SELECT (
319	axis2_placement_2d,
320	axis2_placement_3d);
321END_TYPE;
322
323TYPE b_spline_curve_form = ENUMERATION OF (
324	polyline_form,
325	circular_arc,
326	elliptic_arc,
327	parabolic_arc,
328	hyperbolic_arc,
329	unspecified );
330END_TYPE;
331
332TYPE b_spline_surface_form = ENUMERATION OF (
333	plane_surf,
334	cylindrical_surf,
335	conical_surf,
336	spherical_surf,
337	toroidal_surf,
338	surf_of_revolution,
339	ruled_surf,
340	generalised_cone,
341	quadric_surf,
342	surf_of_linear_extrusion,
343	unspecified );
344END_TYPE;
345
346TYPE base_solid_select = SELECT (
347	solid_model,
348	csg_primitive,
349	boolean_result);
350WHERE
351	WR1 : NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRIMITIVE_2D' IN TYPEOF(SELF));
352END_TYPE;
353
354TYPE blend_end_condition_select = SELECT (
355	point_on_curve,
356	edge_curve,
357	vertex);
358END_TYPE;
359
360TYPE blend_radius_variation_type = ENUMERATION OF (
361	linear_blend,
362	cubic_blend,
363	unspecified_blend );
364END_TYPE;
365
366TYPE boolean_operand = SELECT (
367	solid_model,
368	half_space_solid,
369	csg_primitive,
370	boolean_result,
371	half_space_2d);
372END_TYPE;
373
374TYPE boolean_operand_2d = SELECT (
375	primitive_2d,
376	boolean_result_2d,
377	half_space_2d);
378END_TYPE;
379
380TYPE boolean_operator = ENUMERATION OF (
381	union,
382	intersection,
383	difference );
384END_TYPE;
385
386TYPE box_characteristic_select = SELECT (
387	box_height,
388	box_width,
389	box_slant_angle,
390	box_rotate_angle);
391END_TYPE;
392
393TYPE box_height = positive_ratio_measure;
394END_TYPE;
395
396TYPE box_rotate_angle = plane_angle_measure;
397END_TYPE;
398
399TYPE box_slant_angle = plane_angle_measure;
400END_TYPE;
401
402TYPE box_width = positive_ratio_measure;
403END_TYPE;
404
405TYPE camera_model_d3_multi_clipping_interection_select = SELECT (
406	camera_model_d3_multi_clipping_union,
407	plane);
408END_TYPE;
409
410TYPE camera_model_d3_multi_clipping_union_select = SELECT (
411	camera_model_d3_multi_clipping_intersection,
412	plane);
413END_TYPE;
414
415TYPE capacitance_measure = REAL;
416END_TYPE;
417
418TYPE category_usage_item = SELECT (
419	product_class);
420END_TYPE;
421
422TYPE cc_classified_item = SELECT (
423	assembly_component_usage,
424	product_definition_formation);
425END_TYPE;
426
427TYPE cc_person_organization_item = SELECT (
428	change,
429	change_request,
430	configuration_item,
431	contract,
432	product,
433	product_definition,
434	product_definition_formation,
435	security_classification,
436	start_request,
437	start_work);
438END_TYPE;
439
440TYPE cc_specified_item = SELECT (
441	product_definition,
442	shape_aspect);
443END_TYPE;
444
445TYPE celsius_temperature_measure = REAL;
446END_TYPE;
447
448TYPE central_or_parallel = ENUMERATION OF (
449	central,
450	parallel );
451END_TYPE;
452
453TYPE certification_item = SELECT (
454	alternate_product_relationship,
455	make_from_usage_option,
456	product_definition_formation,
457	product_definition_formation_relationship);
458END_TYPE;
459
460TYPE certified_item = SELECT (
461	supplied_part_relationship);
462END_TYPE;
463
464TYPE change_request_item = SELECT (
465	product_definition_formation);
466END_TYPE;
467
468TYPE character_spacing_select = SELECT (
469	length_measure,
470	ratio_measure,
471	measure_with_unit,
472	descriptive_measure);
473END_TYPE;
474
475TYPE character_style_select = SELECT (
476	character_glyph_style_stroke,
477	character_glyph_style_outline,
478	text_style_for_defined_font);
479END_TYPE;
480
481TYPE characterized_action_definition = SELECT (
482	action,
483	action_method,
484	action_method_relationship,
485	action_relationship);
486END_TYPE;
487
488TYPE characterized_definition = SELECT (
489	characterized_object,
490	characterized_product_definition,
491	shape_definition);
492END_TYPE;
493
494TYPE characterized_material_property = SELECT (
495	material_property_representation,
496	product_material_composition_relationship);
497END_TYPE;
498
499TYPE characterized_product_composition_value = SELECT (
500	measure_with_unit);
501END_TYPE;
502
503TYPE characterized_product_definition = SELECT (
504	product_definition,
505	product_definition_relationship);
506END_TYPE;
507
508TYPE class_usage_effectivity_context_item = SELECT (
509	product_definition);
510END_TYPE;
511
512TYPE classification_item = SELECT (
513	action,
514	action_directive,
515	action_method,
516	action_property,
517	action_relationship,
518	action_request_solution,
519	action_request_status,
520	address,
521	alternate_product_relationship,
522	applied_action_assignment,
523	applied_action_request_assignment,
524	applied_approval_assignment,
525	applied_certification_assignment,
526	applied_contract_assignment,
527	applied_date_and_time_assignment,
528	applied_date_assignment,
529	applied_document_reference,
530	applied_document_usage_constraint_assignment,
531	applied_effectivity_assignment,
532	applied_event_occurrence_assignment,
533	applied_external_identification_assignment,
534	applied_identification_assignment,
535	applied_organization_assignment,
536	applied_organizational_project_assignment,
537	applied_person_and_organization_assignment,
538	applied_security_classification_assignment,
539	approval,
540	approval_person_organization,
541	approval_relationship,
542	approval_status,
543	assembly_component_usage_substitute,
544	calendar_date,
545	certification,
546	characterized_class,
547	characterized_object,
548	class,
549	classified_item,
550	configuration_item,
551	context_dependent_unit,
552	contract,
553	conversion_based_unit,
554	date_and_time,
555	date_and_time_assignment,
556	date_assignment,
557	derived_unit,
558	descriptive_representation_item,
559	directed_action,
560	document_file,
561	document_relationship,
562	effectivity,
563	event_occurrence,
564	executed_action,
565	general_property,
566	general_property_relationship,
567	group,
568	identification_assignment,
569	information_right,
570	information_usage_right,
571	language,
572	material_designation,
573	measure_representation_item,
574	measure_with_unit,
575	multi_language_attribute_assignment,
576	named_unit,
577	organization,
578	organization_relationship,
579	organizational_address,
580	organizational_project,
581	organizational_project_relationship,
582	person,
583	person_and_organization_address,
584	product,
585	product_concept,
586	product_definition,
587	product_definition_context,
588	product_definition_formation,
589	product_definition_formation_relationship,
590	product_definition_relationship,
591	property_definition,
592	property_definition_representation,
593	representation,
594	representation_context,
595	representation_item,
596	security_classification,
597	stratum_technology_occurrence_relationship,
598	uncertainty_measure_with_unit,
599	usage_association,
600	versioned_action_request);
601END_TYPE;
602
603TYPE classified_item = SELECT (
604	product,
605	product_definition,
606	product_definition_formation);
607END_TYPE;
608
609TYPE component_material_relationship_assignment_item = SELECT (
610	assembly_component_usage,
611	assembly_item_number,
612	specification_definition);
613END_TYPE;
614
615TYPE compound_inner_area_boundary = SELECT (
616	set_inner_area_boundary);
617END_TYPE;
618
619TYPE compound_item_definition = SELECT (
620	list_representation_item,
621	set_representation_item);
622END_TYPE;
623
624TYPE conductance_measure = REAL;
625END_TYPE;
626
627TYPE configuration_design_item = SELECT (
628	product_definition,
629	product_definition_formation);
630END_TYPE;
631
632TYPE configured_effectivity_context_item = SELECT (
633	product_concept_feature_association);
634END_TYPE;
635
636TYPE configured_effectivity_item = SELECT (
637	product_definition);
638END_TYPE;
639
640TYPE constructive_geometry_representation_or_shape_represenation = SELECT (
641	constructive_geometry_representation,
642	shape_representation);
643END_TYPE;
644
645TYPE context_dependent_measure = REAL;
646END_TYPE;
647
648TYPE contract_item = SELECT (
649	action_directive,
650	alternate_product_relationship,
651	directed_action,
652	executed_action,
653	information_usage_right,
654	organization,
655	person_and_organization,
656	product,
657	product_definition_formation);
658END_TYPE;
659
660TYPE contracted_item = SELECT (
661	product_definition_formation);
662END_TYPE;
663
664TYPE count_measure = NUMBER;
665END_TYPE;
666
667TYPE csg_2d_area_select = SELECT (
668	axis2_placement_2d,
669	csg_primitive_solid_2d);
670END_TYPE;
671
672TYPE csg_2d_shape_select = SELECT (
673	mapped_item,
674	axis2_placement_2d,
675	csg_solid_2d);
676END_TYPE;
677
678TYPE csg_primitive = SELECT (
679	sphere,
680	block,
681	right_angular_wedge,
682	torus,
683	right_circular_cone,
684	right_circular_cylinder,
685	primitive_2d);
686END_TYPE;
687
688TYPE csg_select = SELECT (
689	boolean_result,
690	csg_primitive);
691END_TYPE;
692
693TYPE csg_select_2d = SELECT (
694	primitive_2d,
695	boolean_result_2d);
696END_TYPE;
697
698TYPE curve_font_or_scaled_curve_font_select = SELECT (
699	curve_style_font_select,
700	curve_style_font_and_scaling);
701END_TYPE;
702
703TYPE curve_on_surface = SELECT (
704	pcurve,
705	surface_curve,
706	composite_curve_on_surface);
707END_TYPE;
708
709TYPE curve_or_annotation_curve_occurrence = SELECT (
710	curve,
711	annotation_curve_occurrence);
712END_TYPE;
713
714TYPE curve_or_render = SELECT (
715	curve_style,
716	curve_style_rendering);
717END_TYPE;
718
719TYPE curve_style_font_select = SELECT (
720	curve_style_font,
721	pre_defined_curve_font,
722	externally_defined_curve_font);
723END_TYPE;
724
725TYPE date_and_time_item = SELECT (
726	action,
727	action_directive,
728	applied_action_assignment,
729	applied_organization_assignment,
730	applied_person_and_organization_assignment,
731	applied_security_classification_assignment,
732	approval_person_organization,
733	certification,
734	contract,
735	directed_action,
736	document,
737	document_file,
738	event_occurrence,
739	executed_action,
740	information_usage_right,
741	organizational_project,
742	product_definition,
743	product_definition_formation,
744	product_definition_relationship,
745	rule_action,
746	security_classification,
747	versioned_action_request);
748END_TYPE;
749
750TYPE date_item = SELECT (
751	action,
752	action_directive,
753	applied_action_assignment,
754	applied_organization_assignment,
755	applied_person_and_organization_assignment,
756	applied_security_classification_assignment,
757	approval_person_organization,
758	certification,
759	contract,
760	directed_action,
761	document,
762	document_file,
763	event_occurrence,
764	executed_action,
765	information_usage_right,
766	organizational_project,
767	product_definition,
768	product_definition_formation,
769	product_definition_relationship,
770	security_classification,
771	versioned_action_request);
772END_TYPE;
773
774TYPE date_time_item = SELECT (
775	approval_person_organization,
776	certification,
777	change,
778	change_request,
779	contract,
780	product_definition,
781	security_classification,
782	start_request,
783	start_work);
784END_TYPE;
785
786TYPE date_time_or_event_occurrence = SELECT (
787	date_time_select,
788	event_occurrence);
789END_TYPE;
790
791TYPE date_time_select = SELECT (
792	date,
793	date_and_time,
794	local_time);
795END_TYPE;
796
797TYPE day_in_month_number = INTEGER;
798WHERE
799	WR1 : {1 <= SELF <= 31};
800END_TYPE;
801
802TYPE day_in_week_number = INTEGER;
803WHERE
804	WR1 : { 1 <= SELF <= 7 };
805END_TYPE;
806
807TYPE day_in_year_number = INTEGER;
808WHERE
809	WR1 : {1 <= SELF <= 366};
810END_TYPE;
811
812TYPE defined_symbol_select = SELECT (
813	pre_defined_symbol,
814	externally_defined_symbol);
815END_TYPE;
816
817TYPE derived_property_select = SELECT (
818	property_definition,
819	action_property);
820END_TYPE;
821
822TYPE description_attribute_select = SELECT (
823	action_request_solution,
824	application_context,
825	approval_role,
826	configuration_design,
827	date_role,
828	date_time_role,
829	context_dependent_shape_representation,
830	effectivity,
831	external_source,
832	organization_role,
833	person_and_organization_role,
834	person_and_organization,
835	property_definition_representation,
836	representation);
837END_TYPE;
838
839TYPE descriptive_measure = STRING;
840END_TYPE;
841
842TYPE dimension_count = INTEGER;
843WHERE
844	WR1 : SELF > 0;
845END_TYPE;
846
847TYPE dimension_extent_usage = ENUMERATION OF (
848	origin,
849	target );
850END_TYPE;
851
852TYPE dimensional_characteristic = SELECT (
853	dimensional_location,
854	dimensional_size);
855END_TYPE;
856
857TYPE direction_count_select = SELECT (
858	u_direction_count,
859	v_direction_count);
860END_TYPE;
861
862TYPE document_identifier_assigned_item = SELECT (
863	document);
864END_TYPE;
865
866TYPE document_reference_item = SELECT (
867	action_method,
868	analytical_model_definition,
869	applied_external_identification_assignment,
870	assembly_component,
871	assembly_component_usage,
872	characterized_class,
873	characterized_object,
874	component_feature,
875	configuration_item,
876	descriptive_representation_item,
877	dimensional_size,
878	executed_action,
879	externally_defined_dimension_definition,
880	externally_defined_item,
881	group,
882	group_relationship,
883	information_right,
884	information_usage_right,
885	inter_stratum_feature,
886	material_designation,
887	measure_representation_item,
888	model_parameter,
889	package_terminal,
890	passage_technology,
891	physical_connectivity_definition,
892	physical_connectivity_element,
893	predefined_requirement_view_definition,
894	product,
895	product_category,
896	product_definition,
897	product_definition_formation,
898	product_definition_formation_relationship,
899	product_definition_relationship,
900	property_definition,
901	protocol_physical_layer_definition,
902	representation,
903	representation_item,
904	rule_set,
905	shape_aspect,
906	shape_aspect_relationship,
907	stratum,
908	stratum_feature,
909	stratum_surface,
910	stratum_technology,
911	structured_layout_component,
912	usage_association,
913	versioned_action_request);
914END_TYPE;
915
916TYPE dose_equivalent_measure = REAL;
917END_TYPE;
918
919TYPE draughting_callout_element = SELECT (
920	annotation_text_occurrence,
921	annotation_symbol_occurrence,
922	annotation_curve_occurrence);
923END_TYPE;
924
925TYPE draughting_model_item_association_select = SELECT (
926	annotation_occurrence,
927	draughting_callout);
928END_TYPE;
929
930TYPE draughting_model_item_select = SELECT (
931	mapped_item,
932	styled_item,
933	axis2_placement,
934	camera_model,
935	draughting_callout);
936END_TYPE;
937
938TYPE draughting_titled_item = SELECT (
939	drawing_revision,
940	drawing_sheet_revision);
941END_TYPE;
942
943TYPE effectivity_item = SELECT (
944	assembly_component_usage_substitute,
945	product,
946	product_definition,
947	product_definition_formation,
948	product_definition_relationship,
949	product_definition_substitute);
950END_TYPE;
951
952TYPE electric_charge_measure = REAL;
953END_TYPE;
954
955TYPE electric_current_measure = REAL;
956END_TYPE;
957
958TYPE electric_potential_measure = REAL;
959END_TYPE;
960
961TYPE energy_measure = REAL;
962END_TYPE;
963
964TYPE event_occurrence_item = SELECT (
965	organizational_project);
966END_TYPE;
967
968TYPE external_identification_item = SELECT (
969	action_relationship,
970	action_request_status,
971	applied_organization_assignment,
972	applied_person_and_organization_assignment,
973	approval,
974	approval_status,
975	assembly_bond_definition,
976	assembly_component,
977	composite_signal_property_relationship,
978	date_and_time_assignment,
979	date_assignment,
980	digital_analytical_model_vector_port,
981	document_file,
982	external_source,
983	externally_defined_class,
984	externally_defined_context_dependent_unit,
985	externally_defined_conversion_based_unit,
986	externally_defined_general_property,
987	externally_defined_physical_network_group,
988	externally_defined_physical_network_group_element_relationship,
989	externally_defined_picture_representation_item,
990	externally_defined_product_definition,
991	externally_defined_representation_item,
992	functional_specification,
993	land_physical_template,
994	organizational_address,
995	package,
996	package_terminal_template_definition,
997	printed_component,
998	product_definition,
999	property_definition,
1000	security_classification,
1001	shape_dimension_representation,
1002	shape_representation,
1003	signal,
1004	stratum,
1005	stratum_feature_based_derived_pattern,
1006	stratum_technology,
1007	trimmed_curve,
1008	versioned_action_request);
1009END_TYPE;
1010
1011TYPE fill_area_style_tile_shape_select = SELECT (
1012	fill_area_style_tile_curve_with_style,
1013	fill_area_style_tile_coloured_region,
1014	fill_area_style_tile_symbol_with_style,
1015	pre_defined_tile,
1016	externally_defined_tile);
1017END_TYPE;
1018
1019TYPE fill_style_select = SELECT (
1020	fill_area_style_colour,
1021	externally_defined_tile_style,
1022	fill_area_style_tiles,
1023	externally_defined_hatch_style,
1024	fill_area_style_hatching);
1025END_TYPE;
1026
1027TYPE font_select = SELECT (
1028	pre_defined_text_font,
1029	externally_defined_text_font,
1030	text_font);
1031END_TYPE;
1032
1033TYPE force_measure = REAL;
1034END_TYPE;
1035
1036TYPE founded_item_select = SELECT (
1037	founded_item,
1038	representation_item);
1039END_TYPE;
1040
1041TYPE frequency_measure = REAL;
1042END_TYPE;
1043
1044TYPE generalized_surface_select = SELECT (
1045	surface,
1046	face_surface,
1047	surfaced_open_shell);
1048END_TYPE;
1049
1050TYPE geometric_item_specific_usage_select = SELECT (
1051	shape_aspect,
1052	shape_aspect_relationship);
1053END_TYPE;
1054
1055TYPE geometric_set_select = SELECT (
1056	point,
1057	curve,
1058	surface);
1059END_TYPE;
1060
1061TYPE groupable_item = SELECT (
1062	assembly_component,
1063	assembly_component_usage,
1064	assembly_spacing_requirement,
1065	component_feature,
1066	component_functional_unit,
1067	geometric_representation_item,
1068	group_relationship,
1069	group_shape_aspect,
1070	layout_spacing_requirement,
1071	mapped_item,
1072	network_node_definition,
1073	package_product_concept_feature,
1074	part_connected_terminals_definition,
1075	physical_connectivity_definition,
1076	physical_network,
1077	predefined_requirement_view_definition,
1078	printed_part_template_terminal,
1079	product_concept_feature,
1080	product_definition,
1081	product_definition_formation,
1082	property_definition_representation,
1083	representation,
1084	representation_item,
1085	representation_relationship_with_transformation,
1086	shape_aspect,
1087	shape_aspect_relationship,
1088	shape_representation_relationship,
1089	stratum,
1090	styled_item,
1091	topological_representation_item);
1092WHERE
1093	WR1 : NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GROUP' IN TYPEOF(SELF));
1094END_TYPE;
1095
1096TYPE hour_in_day = INTEGER;
1097WHERE
1098	WR1 : { 0 <= SELF < 24 };
1099END_TYPE;
1100
1101TYPE id_attribute_select = SELECT (
1102	action,
1103	address,
1104	product_category,
1105	property_definition,
1106	shape_aspect,
1107	shape_aspect_relationship,
1108	application_context,
1109	group,
1110	organizational_project,
1111	representation);
1112END_TYPE;
1113
1114TYPE identification_item = SELECT (
1115	approval_status,
1116	characterized_class,
1117	class,
1118	configuration_item,
1119	contract,
1120	dimensional_size,
1121	document_file,
1122	general_property,
1123	group,
1124	group_relationship,
1125	information_right,
1126	information_usage_right,
1127	material_designation,
1128	organization,
1129	person_and_organization,
1130	product,
1131	product_category,
1132	product_class,
1133	product_concept,
1134	product_concept_feature,
1135	product_definition,
1136	product_definition_formation,
1137	product_identification,
1138	representation,
1139	rule_set,
1140	security_classification,
1141	security_classification_level,
1142	shape_aspect_relationship,
1143	shape_representation,
1144	usage_association);
1145END_TYPE;
1146
1147TYPE identifier = STRING;
1148END_TYPE;
1149
1150TYPE illuminance_measure = REAL;
1151END_TYPE;
1152
1153TYPE inductance_measure = REAL;
1154END_TYPE;
1155
1156TYPE instance_usage_context_select = SELECT (
1157	product_definition_relationship,
1158	product_definition_usage);
1159END_TYPE;
1160
1161TYPE invisibility_context = SELECT (
1162	draughting_model,
1163	presentation_representation,
1164	presentation_set);
1165END_TYPE;
1166
1167TYPE invisible_item = SELECT (
1168	draughting_callout,
1169	presentation_layer_assignment,
1170	representation,
1171	styled_item);
1172END_TYPE;
1173
1174TYPE ir_usage_item = action_items;
1175WHERE
1176	wr1 : NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONFIGURATION_EFFECTIVITY' IN TYPEOF(SELF));
1177END_TYPE;
1178
1179TYPE knot_type = ENUMERATION OF (
1180	uniform_knots,
1181	quasi_uniform_knots,
1182	piecewise_bezier_knots,
1183	unspecified );
1184END_TYPE;
1185
1186TYPE label = STRING;
1187END_TYPE;
1188
1189TYPE layered_item = SELECT (
1190	presentation_representation,
1191	representation_item);
1192END_TYPE;
1193
1194TYPE length_measure = REAL;
1195END_TYPE;
1196
1197TYPE limit_condition = ENUMERATION OF (
1198	maximum_material_condition,
1199	least_material_condition,
1200	regardless_of_feature_size );
1201END_TYPE;
1202
1203TYPE list_of_reversible_topology_item = LIST [0:?] OF reversible_topology_item;
1204END_TYPE;
1205
1206TYPE list_representation_item = LIST [1:?] OF representation_item;
1207END_TYPE;
1208
1209TYPE luminous_flux_measure = REAL;
1210END_TYPE;
1211
1212TYPE luminous_intensity_measure = REAL;
1213END_TYPE;
1214
1215TYPE magnetic_flux_density_measure = REAL;
1216END_TYPE;
1217
1218TYPE magnetic_flux_measure = REAL;
1219END_TYPE;
1220
1221TYPE managed_design_object = SELECT (
1222	action,
1223	action_directive,
1224	alternate_product_relationship,
1225	analog_port_variable,
1226	analytical_model_definition,
1227	analytical_model_make_from_relationship,
1228	analytical_model_port,
1229	analytical_model_port_assignment,
1230	analytical_representation,
1231	applied_approval_assignment,
1232	applied_date_and_time_assignment,
1233	applied_document_reference,
1234	applied_external_identification_assignment,
1235	applied_group_assignment,
1236	applied_identification_assignment,
1237	applied_organization_assignment,
1238	applied_person_and_organization_assignment,
1239	approval,
1240	approval_status,
1241	assembly_bond_definition,
1242	assembly_component,
1243	assembly_component_usage,
1244	assembly_component_usage_substitute,
1245	assembly_group_component_definition_placement_link,
1246	assembly_joint,
1247	auxiliary_characteristic_dimension_representation,
1248	bus_element_link,
1249	bus_structural_definition,
1250	calendar_date,
1251	certification,
1252	characterized_object,
1253	complex_clause,
1254	component_2d_location,
1255	component_3d_location,
1256	component_definition,
1257	component_feature,
1258	component_feature_relationship,
1259	component_functional_terminal,
1260	component_functional_unit,
1261	component_terminal,
1262	composite_curve_segment,
1263	composite_signal_property_relationship,
1264	conductive_interconnect_element_terminal_link,
1265	configuration_effectivity,
1266	configuration_item,
1267	connection_zone_interface_plane_relationship,
1268	connection_zone_map_identification,
1269	connector_based_interconnect_definition,
1270	contract,
1271	curve_style,
1272	curve_style_font,
1273	curve_style_font_and_scaling,
1274	curve_style_parameters_representation,
1275	date,
1276	date_and_time,
1277	datum,
1278	datum_difference_functional_unit_usage_view_terminal_assignment,
1279	descriptive_representation_item,
1280	design_composition_path,
1281	device_terminal_map,
1282	dielectric_crossover_area,
1283	dimension_related_tolerance_zone_element,
1284	dimensional_characteristic_representation,
1285	dimensional_location,
1286	dimensional_size,
1287	direct_stratum_component_join_implementation,
1288	direction,
1289	document,
1290	document_usage_constraint,
1291	draughting_pre_defined_text_font,
1292	effectivity,
1293	evaluated_characteristic,
1294	externally_defined_curve_font,
1295	externally_defined_hatch_style,
1296	externally_defined_item,
1297	externally_defined_text_font,
1298	externally_defined_tile_style,
1299	fabrication_joint,
1300	fill_area_style_hatching,
1301	fill_area_style_tiles,
1302	frozen_assignment,
1303	func,
1304	functional_specification,
1305	functional_terminal_group,
1306	functional_unit_terminal_definition,
1307	general_property_relationship,
1308	geometric_representation_context,
1309	geometric_representation_item,
1310	geometric_tolerance,
1311	geometric_tolerance_group,
1312	geometric_tolerance_relationship,
1313	group,
1314	group_product_definition,
1315	group_shape_aspect,
1316	interface_mounted_join,
1317	item_defined_transformation,
1318	join_shape_aspect,
1319	layer_connection_point,
1320	layout_junction,
1321	linear_array_component_definition_link,
1322	make_from_connectivity_relationship,
1323	make_from_feature_relationship,
1324	make_from_usage_option,
1325	mapped_item,
1326	material_designation,
1327	measure_qualification,
1328	measure_with_unit,
1329	model_parameter,
1330	network_node_definition,
1331	operational_requirement_relationship,
1332	organization,
1333	packaged_connector_terminal_relationship,
1334	parameter_assignment,
1335	parameter_assignment_override,
1336	part_connected_terminals_definition,
1337	passage_technology,
1338	person,
1339	person_and_organization,
1340	physical_connectivity_definition,
1341	physical_connectivity_element,
1342	physical_network,
1343	physical_node_requirement_to_implementing_component_allocation,
1344	plated_inter_stratum_feature,
1345	plus_minus_tolerance,
1346	pre_defined_item,
1347	predefined_requirement_view_definition,
1348	presentation_style_assignment,
1349	printed_connector_template_terminal_relationship,
1350	printed_part_template_connected_terminals_definition,
1351	printed_part_template_material,
1352	printed_part_template_material_link,
1353	product,
1354	product_category,
1355	product_concept,
1356	product_definition,
1357	product_definition_formation,
1358	product_definition_formation_relationship,
1359	product_definition_relationship,
1360	product_definition_with_associated_documents,
1361	product_specific_parameter_value_assignment,
1362	projected_zone_definition,
1363	promissory_usage_occurrence,
1364	property_definition,
1365	property_definition_relationship,
1366	property_definition_representation,
1367	range_characteristic,
1368	reference_composition_path,
1369	representation,
1370	representation_context,
1371	representation_item,
1372	representation_relationship,
1373	representation_relationship_with_transformation,
1374	requirement_assignment,
1375	requirement_view_definition_relationship,
1376	rule_action,
1377	runout_zone_orientation,
1378	runout_zone_orientation_reference_direction,
1379	scalar_terminal_definition_link,
1380	security_classification,
1381	sequential_laminate_passage_based_fabrication_joint,
1382	shape_aspect,
1383	shape_aspect_relationship,
1384	shape_dimension_representation,
1385	shape_representation,
1386	shape_representation_relationship,
1387	signal,
1388	simple_clause,
1389	solid_curve_font,
1390	specified_higher_usage_occurrence,
1391	stratum_feature_based_derived_pattern,
1392	stratum_feature_conductive_join,
1393	stratum_surface,
1394	stratum_technology,
1395	stratum_technology_occurrence_link,
1396	styled_item,
1397	text_font,
1398	tolerance_value,
1399	tolerance_zone_definition,
1400	tolerance_zone_form,
1401	usage_view_connection_zone_terminal_shape_relationship,
1402	vector,
1403	versioned_action_request);
1404END_TYPE;
1405
1406TYPE marker_select = SELECT (
1407	marker_type,
1408	pre_defined_marker);
1409END_TYPE;
1410
1411TYPE marker_type = ENUMERATION OF (
1412	dot,
1413	x,
1414	plus,
1415	asterisk,
1416	ring,
1417	square,
1418	triangle );
1419END_TYPE;
1420
1421TYPE mass_measure = REAL;
1422END_TYPE;
1423
1424TYPE measure_value = SELECT (
1425	absorbed_dose_measure,
1426	dose_equivalent_measure,
1427	radioactivity_measure,
1428	acceleration_measure,
1429	amount_of_substance_measure,
1430	area_measure,
1431	celsius_temperature_measure,
1432	context_dependent_measure,
1433	count_measure,
1434	descriptive_measure,
1435	capacitance_measure,
1436	electric_charge_measure,
1437	conductance_measure,
1438	electric_current_measure,
1439	electric_potential_measure,
1440	energy_measure,
1441	magnetic_flux_density_measure,
1442	force_measure,
1443	frequency_measure,
1444	illuminance_measure,
1445	inductance_measure,
1446	length_measure,
1447	luminous_flux_measure,
1448	luminous_intensity_measure,
1449	magnetic_flux_measure,
1450	mass_measure,
1451	numeric_measure,
1452	non_negative_length_measure,
1453	parameter_value,
1454	plane_angle_measure,
1455	positive_length_measure,
1456	positive_plane_angle_measure,
1457	positive_ratio_measure,
1458	power_measure,
1459	pressure_measure,
1460	ratio_measure,
1461	resistance_measure,
1462	solid_angle_measure,
1463	thermodynamic_temperature_measure,
1464	time_measure,
1465	velocity_measure,
1466	volume_measure);
1467END_TYPE;
1468
1469TYPE mechanical_design_and_draughting_relationship_select = SELECT (
1470	draughting_model,
1471	mechanical_design_geometric_presentation_representation,
1472	mechanical_design_presentation_representation_with_draughting,
1473	mechanical_design_shaded_presentation_representation,
1474	shape_representation);
1475END_TYPE;
1476
1477TYPE mechanical_design_geometric_presentation_area_items = SELECT (
1478	axis2_placement,
1479	mapped_item);
1480END_TYPE;
1481
1482TYPE mechanical_design_geometric_presentation_representation_items = SELECT (
1483	axis2_placement,
1484	camera_model_d3,
1485	mapped_item,
1486	styled_item);
1487END_TYPE;
1488
1489TYPE message = STRING;
1490END_TYPE;
1491
1492TYPE minute_in_hour = INTEGER;
1493WHERE
1494	WR1 : { 0 <= SELF <= 59 };
1495END_TYPE;
1496
1497TYPE month_in_year_number = INTEGER;
1498WHERE
1499	WR1 : { 1 <= SELF <= 12 };
1500END_TYPE;
1501
1502TYPE multi_language_attribute_item = SELECT (
1503	alternate_product_relationship,
1504	application_context,
1505	applied_certification_assignment,
1506	applied_document_reference,
1507	applied_document_usage_constraint_assignment,
1508	applied_external_identification_assignment,
1509	applied_identification_assignment,
1510	applied_organizational_project_assignment,
1511	approval,
1512	approval_relationship,
1513	approval_status,
1514	assembly_component_usage_substitute,
1515	attribute_value_assignment,
1516	certification,
1517	certification_type,
1518	colour,
1519	configuration_design,
1520	configuration_item,
1521	contract,
1522	date_role,
1523	date_time_role,
1524	descriptive_representation_item,
1525	document_relationship,
1526	document_usage_role,
1527	effectivity,
1528	effectivity_relationship,
1529	event_occurrence,
1530	external_source,
1531	general_property,
1532	general_property_relationship,
1533	geometric_representation_item,
1534	geometric_tolerance,
1535	identification_role,
1536	information_right,
1537	information_usage_right,
1538	make_from_usage_option,
1539	mapped_item,
1540	object_role,
1541	organization_relationship,
1542	organization_role,
1543	organizational_project,
1544	organizational_project_relationship,
1545	organizational_project_role,
1546	person_and_organization,
1547	person_and_organization_role,
1548	product,
1549	product_concept,
1550	product_concept_relationship,
1551	product_definition,
1552	product_definition_context,
1553	product_definition_formation,
1554	product_definition_formation_relationship,
1555	product_definition_relationship,
1556	product_definition_shape,
1557	product_related_product_category,
1558	property_definition,
1559	representation,
1560	representation_relationship,
1561	security_classification,
1562	security_classification_assignment,
1563	shape_aspect,
1564	shape_aspect_relationship,
1565	shape_representation,
1566	time_interval_role,
1567	topological_representation_item,
1568	uncertainty_measure_with_unit,
1569	usage_association);
1570END_TYPE;
1571
1572TYPE name_attribute_select = SELECT (
1573	action_request_solution,
1574	address,
1575	configuration_design,
1576	context_dependent_shape_representation,
1577	derived_unit,
1578	effectivity,
1579	person_and_organization,
1580	product_definition,
1581	product_definition_substitute,
1582	property_definition_representation);
1583END_TYPE;
1584
1585TYPE name_item = SELECT (
1586	assembly_component_usage,
1587	external_class_library,
1588	group,
1589	group_relationship,
1590	product,
1591	product_definition);
1592END_TYPE;
1593
1594TYPE non_negative_length_measure = length_measure;
1595WHERE
1596	WR1 : SELF >= 0.0;
1597END_TYPE;
1598
1599TYPE nonnegative_integer = INTEGER;
1600WHERE
1601	nonnegativity : SELF >= 0;
1602END_TYPE;
1603
1604TYPE null_style = ENUMERATION OF (
1605	null );
1606END_TYPE;
1607
1608TYPE numeric_measure = NUMBER;
1609END_TYPE;
1610
1611TYPE organization_item = SELECT (
1612	action,
1613	action_directive,
1614	alternate_product_relationship,
1615	applied_action_assignment,
1616	applied_classification_assignment,
1617	applied_identification_assignment,
1618	applied_security_classification_assignment,
1619	approval,
1620	assembly_component_usage_substitute,
1621	certification,
1622	class,
1623	configuration_item,
1624	contract,
1625	document_file,
1626	executed_action,
1627	general_property,
1628	information_usage_right,
1629	organizational_project,
1630	product,
1631	product_definition,
1632	product_definition_formation,
1633	product_definition_formation_relationship,
1634	property_definition,
1635	representation,
1636	rule_action,
1637	security_classification,
1638	shape_representation,
1639	versioned_action_request);
1640END_TYPE;
1641
1642TYPE orientation_basis_select = SELECT (
1643	axis2_placement_3d,
1644	min_and_major_ply_orientation_basis);
1645END_TYPE;
1646
1647TYPE parameter_value = REAL;
1648END_TYPE;
1649
1650TYPE pcurve_or_surface = SELECT (
1651	pcurve,
1652	surface);
1653END_TYPE;
1654
1655TYPE person_and_organization_item = SELECT (
1656	action,
1657	action_directive,
1658	alternate_product_relationship,
1659	applied_action_assignment,
1660	applied_classification_assignment,
1661	applied_identification_assignment,
1662	applied_security_classification_assignment,
1663	approval,
1664	assembly_component_usage_substitute,
1665	certification,
1666	configuration_item,
1667	contract,
1668	document_file,
1669	executed_action,
1670	general_property,
1671	information_usage_right,
1672	organizational_project,
1673	person_and_organization,
1674	product,
1675	product_definition,
1676	product_definition_formation,
1677	product_definition_formation_relationship,
1678	property_definition,
1679	rule_action,
1680	security_classification,
1681	shape_representation,
1682	versioned_action_request);
1683END_TYPE;
1684
1685TYPE person_organization_select = SELECT (
1686	person,
1687	organization,
1688	person_and_organization);
1689END_TYPE;
1690
1691TYPE picture_representation_item_select = SELECT (
1692	styled_item,
1693	planar_box,
1694	axis2_placement_2d);
1695END_TYPE;
1696
1697TYPE plane_angle_measure = REAL;
1698END_TYPE;
1699
1700TYPE plane_or_planar_box = SELECT (
1701	plane,
1702	planar_box);
1703END_TYPE;
1704
1705TYPE point_and_vector_member = SELECT (
1706	point,
1707	direction);
1708END_TYPE;
1709
1710TYPE point_and_vector_members = LIST [2:3] OF point_and_vector_member;
1711END_TYPE;
1712
1713TYPE point_path_members = LIST [1:?] OF point_and_vector;
1714END_TYPE;
1715
1716TYPE positive_integer = nonnegative_integer;
1717WHERE
1718	positivity : SELF > 0;
1719END_TYPE;
1720
1721TYPE positive_length_measure = non_negative_length_measure;
1722WHERE
1723	WR1 : SELF > 0.0;
1724END_TYPE;
1725
1726TYPE positive_plane_angle_measure = plane_angle_measure;
1727WHERE
1728	WR1 : SELF > 0.0;
1729END_TYPE;
1730
1731TYPE positive_ratio_measure = ratio_measure;
1732WHERE
1733	WR1 : SELF > 0.0;
1734END_TYPE;
1735
1736TYPE power_measure = REAL;
1737END_TYPE;
1738
1739TYPE preferred_surface_curve_representation = ENUMERATION OF (
1740	curve_3d,
1741	pcurve_s1,
1742	pcurve_s2 );
1743END_TYPE;
1744
1745TYPE presentable_text = STRING;
1746WHERE
1747	WR1 : control_characters_free(SELF);
1748END_TYPE;
1749
1750TYPE presentation_representation_select = SELECT (
1751	presentation_representation,
1752	presentation_set);
1753END_TYPE;
1754
1755TYPE presentation_size_assignment_select = SELECT (
1756	presentation_view,
1757	presentation_area,
1758	area_in_set);
1759END_TYPE;
1760
1761TYPE presentation_style_select = SELECT (
1762	point_style,
1763	curve_style,
1764	surface_style_usage,
1765	symbol_style,
1766	fill_area_style,
1767	text_style,
1768	null_style);
1769END_TYPE;
1770
1771TYPE presented_item_select = SELECT (
1772	action,
1773	action_method,
1774	action_relationship,
1775	product_concept,
1776	product_concept_feature,
1777	product_concept_feature_category,
1778	product_definition,
1779	product_definition_formation,
1780	product_definition_relationship);
1781END_TYPE;
1782
1783TYPE pressure_measure = REAL;
1784END_TYPE;
1785
1786TYPE product_definition_or_assembly_relationship = SELECT (
1787	assembly_component_usage,
1788	product_definition);
1789END_TYPE;
1790
1791TYPE product_definition_or_breakdown_element_usage = SELECT (
1792	product_definition,
1793	product_definition_usage);
1794END_TYPE;
1795
1796TYPE product_definition_or_product_definition_relationship = SELECT (
1797	product_definition,
1798	product_definition_usage);
1799END_TYPE;
1800
1801TYPE product_or_formation_or_definition = SELECT (
1802	product,
1803	product_definition_formation,
1804	product_definition);
1805END_TYPE;
1806
1807TYPE project_item = SELECT (
1808	executed_action,
1809	product_concept);
1810END_TYPE;
1811
1812TYPE radioactivity_measure = REAL;
1813END_TYPE;
1814
1815TYPE ratio_measure = REAL;
1816END_TYPE;
1817
1818TYPE rendering_properties_select = SELECT (
1819	surface_style_reflectance_ambient,
1820	surface_style_transparent);
1821END_TYPE;
1822
1823TYPE represented_definition = SELECT (
1824	general_property,
1825	property_definition,
1826	property_definition_relationship,
1827	shape_aspect,
1828	shape_aspect_relationship);
1829END_TYPE;
1830
1831TYPE requirement_assigned_item = SELECT (
1832	assembly_component_usage,
1833	assembly_item_number,
1834	assembly_joint,
1835	component_functional_unit,
1836	component_material_relationship,
1837	configuration_item,
1838	derived_laminate_assignment,
1839	descriptive_representation_item,
1840	dielectric_crossover_area,
1841	group,
1842	group_product_definition,
1843	group_relationship,
1844	group_shape_aspect,
1845	layered_interconnect_module_design_view,
1846	part_connected_terminals_definition,
1847	part_connected_terminals_element,
1848	passage_technology,
1849	physical_connectivity_definition,
1850	predefined_requirement_view_definition,
1851	product,
1852	product_class,
1853	product_definition,
1854	product_definition_formation,
1855	product_definition_relationship,
1856	property_definition,
1857	representation,
1858	shape_aspect,
1859	shape_aspect_relationship,
1860	shape_representation,
1861	statistical_dimensional_location,
1862	statistical_dimensional_size,
1863	statistical_geometric_tolerance,
1864	stratum_feature_conductive_join,
1865	stratum_technology,
1866	stratum_technology_occurrence,
1867	stratum_technology_occurrence_relationship,
1868	structured_template,
1869	thermal_isolation_removal_template);
1870END_TYPE;
1871
1872TYPE requirement_satisfaction_item = SELECT (
1873	requirement_assigned_item);
1874END_TYPE;
1875
1876TYPE requirement_source_item = SELECT (
1877	characterized_object,
1878	group,
1879	group_relationship,
1880	product,
1881	product_definition,
1882	product_definition_formation,
1883	product_definition_relationship,
1884	shape_aspect);
1885END_TYPE;
1886
1887TYPE resistance_measure = REAL;
1888END_TYPE;
1889
1890TYPE reversible_topology = SELECT (
1891	reversible_topology_item,
1892	list_of_reversible_topology_item,
1893	set_of_reversible_topology_item);
1894END_TYPE;
1895
1896TYPE reversible_topology_item = SELECT (
1897	edge,
1898	path,
1899	face,
1900	face_bound,
1901	closed_shell,
1902	open_shell);
1903END_TYPE;
1904
1905TYPE role_select = SELECT (
1906	action_assignment,
1907	action_request_assignment,
1908	approval_assignment,
1909	approval_date_time,
1910	certification_assignment,
1911	contract_assignment,
1912	document_reference,
1913	effectivity_assignment,
1914	group_assignment,
1915	name_assignment,
1916	security_classification_assignment);
1917END_TYPE;
1918
1919TYPE rule_superseded_item = SELECT (
1920	product_definition_formation);
1921END_TYPE;
1922
1923TYPE second_in_minute = REAL;
1924WHERE
1925	WR1 : { 0 <= SELF <= 60.0 };
1926END_TYPE;
1927
1928TYPE security_classification_item = SELECT (
1929	assembly_component_usage,
1930	document,
1931	document_file,
1932	make_from_usage_option,
1933	product,
1934	product_definition,
1935	product_definition_formation,
1936	product_definition_usage);
1937END_TYPE;
1938
1939TYPE set_inner_area_boundary = SET [1:?] OF primitive_2d;
1940END_TYPE;
1941
1942TYPE set_of_reversible_topology_item = SET [0:?] OF reversible_topology_item;
1943END_TYPE;
1944
1945TYPE set_representation_item = SET [1:?] OF representation_item;
1946END_TYPE;
1947
1948TYPE shading_curve_method = ENUMERATION OF (
1949	constant_colour,
1950	linear_colour );
1951END_TYPE;
1952
1953TYPE shading_surface_method = ENUMERATION OF (
1954	constant_shading,
1955	colour_shading,
1956	dot_shading,
1957	normal_shading );
1958END_TYPE;
1959
1960TYPE shape_definition = SELECT (
1961	product_definition_shape,
1962	shape_aspect,
1963	shape_aspect_relationship);
1964END_TYPE;
1965
1966TYPE shell = SELECT (
1967	vertex_shell,
1968	wire_shell,
1969	open_shell,
1970	closed_shell);
1971END_TYPE;
1972
1973TYPE si_prefix = ENUMERATION OF (
1974	exa,
1975	peta,
1976	tera,
1977	giga,
1978	mega,
1979	kilo,
1980	hecto,
1981	deca,
1982	deci,
1983	centi,
1984	milli,
1985	micro,
1986	nano,
1987	pico,
1988	femto,
1989	atto );
1990END_TYPE;
1991
1992TYPE si_unit_name = ENUMERATION OF (
1993	metre,
1994	gram,
1995	second,
1996	ampere,
1997	kelvin,
1998	mole,
1999	candela,
2000	radian,
2001	steradian,
2002	hertz,
2003	newton,
2004	pascal,
2005	joule,
2006	watt,
2007	coulomb,
2008	volt,
2009	farad,
2010	ohm,
2011	siemens,
2012	weber,
2013	tesla,
2014	henry,
2015	degree_Celsius,
2016	lumen,
2017	lux,
2018	becquerel,
2019	gray,
2020	sievert );
2021END_TYPE;
2022
2023TYPE size_select = SELECT (
2024	positive_length_measure,
2025	measure_with_unit,
2026	descriptive_measure);
2027END_TYPE;
2028
2029TYPE sketch_basis_select = SELECT (
2030	curve_bounded_surface,
2031	face_surface);
2032END_TYPE;
2033
2034TYPE solid_angle_measure = REAL;
2035END_TYPE;
2036
2037TYPE source = ENUMERATION OF (
2038	made,
2039	bought,
2040	not_known );
2041END_TYPE;
2042
2043TYPE source_item = SELECT (
2044	identifier,
2045	message);
2046END_TYPE;
2047
2048TYPE start_request_item = SELECT (
2049	product_definition_formation);
2050END_TYPE;
2051
2052TYPE string_representation_item_select = SELECT (
2053	descriptive_representation_item,
2054	included_text_block,
2055	structured_text_composition);
2056END_TYPE;
2057
2058TYPE style_context_select = SELECT (
2059	group,
2060	presentation_layer_assignment,
2061	presentation_set,
2062	representation,
2063	representation_item,
2064	representation_relationship);
2065END_TYPE;
2066
2067TYPE surface_side = ENUMERATION OF (
2068	positive,
2069	negative,
2070	both );
2071END_TYPE;
2072
2073TYPE surface_side_style_select = SELECT (
2074	surface_side_style,
2075	pre_defined_surface_side_style);
2076END_TYPE;
2077
2078TYPE surface_style_element_select = SELECT (
2079	surface_style_fill_area,
2080	surface_style_boundary,
2081	surface_style_silhouette,
2082	surface_style_segmentation_curve,
2083	surface_style_control_grid,
2084	surface_style_parameter_line,
2085	surface_style_rendering);
2086END_TYPE;
2087
2088TYPE symbol_style_select = SELECT (
2089	symbol_colour);
2090END_TYPE;
2091
2092TYPE text = STRING;
2093END_TYPE;
2094
2095TYPE text_alignment = label;
2096END_TYPE;
2097
2098TYPE text_delineation = label;
2099END_TYPE;
2100
2101TYPE text_or_character = SELECT (
2102	annotation_text,
2103	annotation_text_character,
2104	composite_text,
2105	text_literal);
2106END_TYPE;
2107
2108TYPE text_path = ENUMERATION OF (
2109	left,
2110	right,
2111	up,
2112	down );
2113END_TYPE;
2114
2115TYPE text_string_representation_item = SELECT (
2116	text_literal,
2117	annotation_text,
2118	annotation_text_character,
2119	composite_text,
2120	axis2_placement);
2121END_TYPE;
2122
2123TYPE thermodynamic_temperature_measure = REAL;
2124END_TYPE;
2125
2126TYPE time_interval_item = SELECT (
2127	action,
2128	time_interval_based_effectivity);
2129END_TYPE;
2130
2131TYPE time_measure = REAL;
2132END_TYPE;
2133
2134TYPE tolerance_method_definition = SELECT (
2135	tolerance_value,
2136	limits_and_fits);
2137END_TYPE;
2138
2139TYPE transformation = SELECT (
2140	item_defined_transformation,
2141	functionally_defined_transformation);
2142END_TYPE;
2143
2144TYPE transition_code = ENUMERATION OF (
2145	discontinuous,
2146	continuous,
2147	cont_same_gradient,
2148	cont_same_gradient_same_curvature );
2149END_TYPE;
2150
2151TYPE trim_condition_select = SELECT (
2152	length_measure,
2153	plane_angle_measure,
2154	generalized_surface_select,
2155	solid_model);
2156END_TYPE;
2157
2158TYPE trim_intent = ENUMERATION OF (
2159	blind,
2160	offset,
2161	through_all,
2162	unspecified,
2163	up_to_next );
2164END_TYPE;
2165
2166TYPE trimming_preference = ENUMERATION OF (
2167	cartesian,
2168	parameter,
2169	unspecified );
2170END_TYPE;
2171
2172TYPE trimming_select = SELECT (
2173	cartesian_point,
2174	parameter_value);
2175END_TYPE;
2176
2177TYPE u_direction_count = INTEGER;
2178WHERE
2179	WR1 : SELF > 1;
2180END_TYPE;
2181
2182TYPE unit = SELECT (
2183	derived_unit,
2184	named_unit);
2185END_TYPE;
2186
2187TYPE v_direction_count = INTEGER;
2188WHERE
2189	WR1 : SELF > 1;
2190END_TYPE;
2191
2192TYPE value_qualifier = SELECT (
2193	precision_qualifier,
2194	type_qualifier,
2195	uncertainty_qualifier);
2196END_TYPE;
2197
2198TYPE vector_or_direction = SELECT (
2199	vector,
2200	direction);
2201END_TYPE;
2202
2203TYPE velocity_measure = REAL;
2204END_TYPE;
2205
2206TYPE volume_measure = REAL;
2207END_TYPE;
2208
2209TYPE week_in_year_number = INTEGER;
2210WHERE
2211	WR1 : { 1 <= SELF <= 53 };
2212END_TYPE;
2213
2214TYPE work_item = SELECT (
2215	product_definition_formation);
2216END_TYPE;
2217
2218TYPE year_number = INTEGER;
2219END_TYPE;
2220
2221ENTITY absorbed_dose_measure_with_unit
2222	SUBTYPE OF (measure_with_unit);
2223WHERE
2224	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ABSORBED_DOSE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
2225END_ENTITY;
2226
2227
2228ENTITY absorbed_dose_unit
2229	SUBTYPE OF (derived_unit);
2230WHERE
2231	WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.gray);
2232END_ENTITY;
2233
2234
2235ENTITY abstract_variable
2236	SUBTYPE OF (property_definition, property_definition_representation, representation, representation_item);
2237END_ENTITY;
2238
2239
2240ENTITY acceleration_measure_with_unit
2241	SUBTYPE OF (measure_with_unit);
2242WHERE
2243	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ACCELERATION_UNIT' IN TYPEOF (SELF\measure_with_unit.unit_component);
2244END_ENTITY;
2245
2246
2247ENTITY acceleration_unit
2248	SUBTYPE OF (derived_unit);
2249WHERE
2250	WR1 : derive_dimensional_exponents(SELF) =
2251       dimensional_exponents ( 1.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0 );
2252END_ENTITY;
2253
2254
2255ENTITY across_port_variable
2256	SUBTYPE OF (port_variable);
2257END_ENTITY;
2258
2259
2260ENTITY action;
2261	name : label;
2262	description : OPTIONAL text;
2263	chosen_method : action_method;
2264DERIVE
2265	id : identifier := get_id_value(SELF);
2266WHERE
2267	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
2268END_ENTITY;
2269
2270
2271ENTITY action_assignment
2272	ABSTRACT SUPERTYPE;
2273	assigned_action : action;
2274DERIVE
2275	role : object_role := get_role(SELF);
2276WHERE
2277	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
2278END_ENTITY;
2279
2280
2281ENTITY action_directive;
2282	name : label;
2283	description : OPTIONAL text;
2284	analysis : text;
2285	comment : text;
2286	requests : SET [1:?] OF versioned_action_request;
2287END_ENTITY;
2288
2289
2290ENTITY action_method;
2291	name : label;
2292	description : OPTIONAL text;
2293	consequence : text;
2294	purpose : text;
2295END_ENTITY;
2296
2297
2298ENTITY action_method_assignment
2299	ABSTRACT SUPERTYPE;
2300	assigned_action_method : action_method;
2301	role : action_method_role;
2302END_ENTITY;
2303
2304
2305ENTITY action_method_relationship;
2306	name : label;
2307	description : OPTIONAL text;
2308	relating_method : action_method;
2309	related_method : action_method;
2310END_ENTITY;
2311
2312
2313ENTITY action_method_role;
2314	name : label;
2315	description : OPTIONAL text;
2316END_ENTITY;
2317
2318
2319ENTITY action_property;
2320	name : label;
2321	description : text;
2322	definition : characterized_action_definition;
2323END_ENTITY;
2324
2325
2326ENTITY action_property_representation;
2327	name : label;
2328	description : text;
2329	property : action_property;
2330	representation : representation;
2331END_ENTITY;
2332
2333
2334ENTITY action_relationship;
2335	name : label;
2336	description : OPTIONAL text;
2337	relating_action : action;
2338	related_action : action;
2339END_ENTITY;
2340
2341
2342ENTITY action_request_assignment
2343	ABSTRACT SUPERTYPE;
2344	assigned_action_request : versioned_action_request;
2345DERIVE
2346	role : object_role := get_role(SELF);
2347WHERE
2348	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
2349END_ENTITY;
2350
2351
2352ENTITY action_request_solution;
2353	method : action_method;
2354	request : versioned_action_request;
2355DERIVE
2356	description : text := get_description_value(SELF);
2357	name : label := get_name_value(SELF);
2358WHERE
2359	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
2360	WR2 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
2361END_ENTITY;
2362
2363
2364ENTITY action_request_status;
2365	status : label;
2366	assigned_request : versioned_action_request;
2367END_ENTITY;
2368
2369
2370ENTITY action_status;
2371	status : label;
2372	assigned_action : executed_action;
2373END_ENTITY;
2374
2375
2376ENTITY additive_laminate_text_component
2377	SUBTYPE OF (generic_laminate_text_component);
2378END_ENTITY;
2379
2380
2381ENTITY address;
2382	internal_location : OPTIONAL label;
2383	street_number : OPTIONAL label;
2384	street : OPTIONAL label;
2385	postal_box : OPTIONAL label;
2386	town : OPTIONAL label;
2387	region : OPTIONAL label;
2388	postal_code : OPTIONAL label;
2389	country : OPTIONAL label;
2390	facsimile_number : OPTIONAL label;
2391	telephone_number : OPTIONAL label;
2392	electronic_mail_address : OPTIONAL label;
2393	telex_number : OPTIONAL label;
2394DERIVE
2395	name : label := get_name_value(SELF);
2396	url : identifier := get_id_value(SELF);
2397WHERE
2398	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);
2399END_ENTITY;
2400
2401
2402ENTITY advanced_brep_shape_representation
2403	SUBTYPE OF (shape_representation);
2404WHERE
2405	WR1 : SIZEOF (
2406QUERY ( it <* SELF.items| NOT ( SIZEOF ([ 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MANIFOLD_SOLID_BREP', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACETED_BREP', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AXIS2_PLACEMENT_3D' ] * TYPEOF (it)) = 1) )) = 0;
2407	WR2 : SIZEOF (
2408QUERY ( it <* SELF.items| ( SIZEOF ([ 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MANIFOLD_SOLID_BREP', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM' ] * TYPEOF (it)) = 1) )) > 0;
2409	WR3 : SIZEOF (
2410QUERY ( msb <*
2411QUERY ( it <* SELF.items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF (it)) )| NOT ( SIZEOF (
2412QUERY ( csh <* msb_shells(msb)| NOT ( SIZEOF (
2413QUERY ( fcs <* csh\connected_face_set.cfs_faces| NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ADVANCED_FACE' IN TYPEOF (fcs)) )) = 0) )) = 0) )) = 0;
2414	WR4 : SIZEOF (
2415QUERY ( msb <*
2416QUERY ( it <* items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF (it)) )| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF (msb\manifold_solid_brep.outer)) )) = 0;
2417	WR5 : SIZEOF (
2418QUERY ( brv <*
2419QUERY ( it <* items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.BREP_WITH_VOIDS' IN TYPEOF (it)) )| NOT ( SIZEOF (
2420QUERY ( csh <* brv\brep_with_voids.voids| csh\oriented_closed_shell.orientation )) = 0) )) = 0;
2421	WR6 : SIZEOF (
2422QUERY ( mi <*
2423QUERY ( it <* items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ADVANCED_BREP_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0;
2424END_ENTITY;
2425
2426
2427ENTITY advanced_face
2428	SUBTYPE OF (face_surface);
2429WHERE
2430	WR1 : SIZEOF ([ 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ELEMENTARY_SURFACE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.B_SPLINE_SURFACE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SWEPT_SURFACE' ] * TYPEOF (face_geometry)) = 1;
2431	WR2 : SIZEOF (
2432QUERY ( elp_fbnds <*
2433QUERY ( bnds <* bounds| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF (
2434QUERY ( oe <* elp_fbnds.bound\path.edge_list| NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_CURVE' IN TYPEOF (oe\oriented_edge.edge_element)) )) = 0) )) = 0;
2435	WR3 : SIZEOF (
2436QUERY ( elp_fbnds <*
2437QUERY ( bnds <* bounds| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF (
2438QUERY ( oe <* elp_fbnds.bound\path.edge_list| NOT ( SIZEOF ([ 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LINE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONIC', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POLYLINE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_CURVE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.B_SPLINE_CURVE' ] * TYPEOF (oe.edge_element\edge_curve.edge_geometry)) = 1) )) = 0) )) = 0;
2439	WR4 : SIZEOF (
2440QUERY ( elp_fbnds <*
2441QUERY ( bnds <* bounds| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF (
2442QUERY ( oe <* elp_fbnds.bound\path.edge_list| NOT ((('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_POINT' IN TYPEOF (oe\edge.edge_start)) AND ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CARTESIAN_POINT' IN TYPEOF (oe\edge.edge_start\vertex_point.vertex_geometry))) AND (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_POINT' IN TYPEOF (oe\edge.edge_end)) AND ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CARTESIAN_POINT' IN TYPEOF (oe\edge.edge_end\vertex_point.vertex_geometry)))) )) = 0) )) = 0;
2443	WR5 : SIZEOF (
2444QUERY ( elp_fbnds <*
2445QUERY ( bnds <* bounds| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ORIENTED_PATH' IN TYPEOF (elp_fbnds.bound)) )) = 0;
2446	WR6 : NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SWEPT_SURFACE' IN TYPEOF (face_geometry)) OR ( SIZEOF ([ 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LINE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONIC', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POLYLINE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.B_SPLINE_CURVE' ] * TYPEOF (face_geometry\swept_surface.swept_curve)) = 1);
2447	WR7 : SIZEOF (
2448QUERY ( vlp_fbnds <*
2449QUERY ( bnds <* bounds| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) )| NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_POINT' IN TYPEOF (vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex)) AND ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CARTESIAN_POINT' IN TYPEOF (vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex\vertex_point.vertex_geometry))) )) = 0;
2450	WR8 : SIZEOF (
2451QUERY ( bnd <* bounds| NOT ( SIZEOF ([ 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_LOOP' ] * TYPEOF (bnd.bound)) = 1) )) = 0;
2452	WR9 : SIZEOF (
2453QUERY ( elp_fbnds <*
2454QUERY ( bnds <* bounds| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF (
2455QUERY ( oe <* elp_fbnds.bound\path.edge_list| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_CURVE' IN TYPEOF (oe\oriented_edge.edge_element\edge_curve.edge_geometry)) AND NOT ( SIZEOF (
2456QUERY ( sc_ag <* oe.edge_element\edge_curve.edge_geometry\surface_curve.associated_geometry| NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PCURVE' IN TYPEOF (sc_ag)) )) = 0) )) = 0) )) = 0;
2457	WR10 : (NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SWEPT_SURFACE' IN TYPEOF (face_geometry)) OR (NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POLYLINE' IN TYPEOF (face_geometry\swept_surface.swept_curve)) OR ( SIZEOF (face_geometry\swept_surface.swept_curve\polyline.points) >= 3))) AND ( SIZEOF (
2458QUERY ( elp_fbnds <*
2459QUERY ( bnds <* bounds| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF (
2460QUERY ( oe <* elp_fbnds.bound\path.edge_list| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_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);
2461END_ENTITY;
2462
2463
2464ENTITY aggregate_connectivity_requirement
2465	SUBTYPE OF (applied_group_assignment, product_definition);
2466END_ENTITY;
2467
2468
2469ENTITY allocated_passage_minimum_annular_ring
2470	SUBTYPE OF (characterized_object);
2471END_ENTITY;
2472
2473
2474ENTITY altered_package_terminal
2475	ABSTRACT SUPERTYPE OF (((shape_formed_terminal ANDOR surface_prepped_terminal) ANDOR length_trimmed_terminal))
2476	SUBTYPE OF (package_terminal);
2477END_ENTITY;
2478
2479
2480ENTITY alternate_product_relationship;
2481	name : label;
2482	definition : OPTIONAL text;
2483	alternate : product;
2484	base : product;
2485	basis : text;
2486UNIQUE
2487	UR1 : alternate, base;
2488WHERE
2489	WR1 : alternate :<>: base;
2490END_ENTITY;
2491
2492
2493ENTITY amount_of_substance_measure_with_unit
2494	SUBTYPE OF (measure_with_unit);
2495WHERE
2496	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AMOUNT_OF_SUBSTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
2497END_ENTITY;
2498
2499
2500ENTITY amount_of_substance_unit
2501	SUBTYPE OF (named_unit);
2502WHERE
2503	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);
2504END_ENTITY;
2505
2506
2507ENTITY analog_analytical_model_port
2508	SUBTYPE OF (analytical_model_port);
2509END_ENTITY;
2510
2511
2512ENTITY analog_port_variable
2513	SUBTYPE OF (representation, representation_item);
2514END_ENTITY;
2515
2516
2517ENTITY analytical_model_definition
2518	SUBTYPE OF (product_definition);
2519END_ENTITY;
2520
2521
2522ENTITY analytical_model_make_from_relationship
2523	SUBTYPE OF (product_definition_relationship);
2524	SELF\product_definition_relationship.related_product_definition : analytical_model_definition;
2525	SELF\product_definition_relationship.relating_product_definition : analytical_model_definition;
2526UNIQUE
2527	UR1 : relating_product_definition, related_product_definition;
2528END_ENTITY;
2529
2530
2531ENTITY analytical_model_parameter
2532	SUBTYPE OF (property_definition);
2533END_ENTITY;
2534
2535
2536ENTITY analytical_model_port
2537	SUBTYPE OF (property_definition, property_definition_representation, representation);
2538DERIVE
2539	SELF\property_definition_representation.definition : property_definition := SELF;
2540	SELF\property_definition_representation.used_representation : representation := SELF;
2541END_ENTITY;
2542
2543
2544ENTITY analytical_model_port_assignment
2545	SUBTYPE OF (property_definition_representation, representation_relationship);
2546	SELF\representation_relationship.rep_1 : analytical_representation;
2547	SELF\property_definition_representation.used_representation : analytical_model_port;
2548DERIVE
2549	SELF\representation_relationship.rep_2 : analytical_model_port := SELF\property_definition_representation.used_representation;
2550END_ENTITY;
2551
2552
2553ENTITY analytical_model_scalar_port
2554	SUBTYPE OF (analytical_model_vector_port);
2555END_ENTITY;
2556
2557
2558ENTITY analytical_model_vector_port
2559	SUBTYPE OF (analytical_model_port, compound_representation_item);
2560END_ENTITY;
2561
2562
2563ENTITY analytical_representation
2564	SUBTYPE OF (representation);
2565UNIQUE
2566	UR1 : SELF\representation.name;
2567END_ENTITY;
2568
2569
2570ENTITY angle_direction_reference
2571	SUBTYPE OF (representation_item_relationship, geometric_representation_item);
2572	SELF\representation_item_relationship.related_representation_item : angle_direction_reference_select;
2573	SELF\representation_item_relationship.relating_representation_item : orientation_basis_select;
2574WHERE
2575	WR1 : ((('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT_PATH' IN TYPEOF(related_representation_item)) AND
2576        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MIN_AND_MAJOR_PLY_ORIENTATION_BASIS' IN TYPEOF(relating_representation_item)))
2577        OR
2578		(NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT_PATH' IN TYPEOF(related_representation_item)) AND
2579        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF(relating_representation_item))));
2580END_ENTITY;
2581
2582
2583ENTITY angular_dimension
2584	SUBTYPE OF (dimension_curve_directed_callout);
2585END_ENTITY;
2586
2587
2588ENTITY angular_location
2589	SUBTYPE OF (dimensional_location);
2590	angle_selection : angle_relator;
2591END_ENTITY;
2592
2593
2594ENTITY angular_size
2595	SUBTYPE OF (dimensional_size);
2596	angle_selection : angle_relator;
2597END_ENTITY;
2598
2599
2600ENTITY angularity_tolerance
2601	SUBTYPE OF (geometric_tolerance_with_datum_reference);
2602WHERE
2603	WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) < 3;
2604END_ENTITY;
2605
2606
2607ENTITY annotation_curve_occurrence
2608	SUPERTYPE OF (ONEOF (dimension_curve, leader_curve, projection_curve))
2609	SUBTYPE OF (annotation_occurrence);
2610	SELF\styled_item.item : curve;
2611END_ENTITY;
2612
2613
2614ENTITY annotation_fill_area
2615	SUBTYPE OF (geometric_representation_item);
2616	boundaries : SET [1:?] OF curve;
2617WHERE
2618	WR1 : (SELF\geometric_representation_item.dim = 3) OR (SIZEOF (QUERY (curve <* SELF.boundaries |
2619          NOT (
2620              ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CIRCLE' IN TYPEOF (curve)) OR
2621              ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ELLIPSE' IN TYPEOF (curve)) OR
2622              ( ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.B_SPLINE_CURVE' IN TYPEOF (curve))
2623                   AND (curve\b_spline_curve.closed_curve = TRUE) ) OR
2624              ( ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMPOSITE_CURVE' IN TYPEOF (curve))
2625                   AND (curve\composite_curve.closed_curve = TRUE) ) OR
2626              ( ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POLYLINE' IN TYPEOF (curve))
2627                   AND (curve\polyline.points[LOINDEX(curve\polyline.points)] =
2628                        curve\polyline.points[HIINDEX(curve\polyline.points)]) )
2629              ) )) = 0);
2630END_ENTITY;
2631
2632
2633ENTITY annotation_fill_area_occurrence
2634	SUBTYPE OF (annotation_occurrence);
2635	fill_style_target : point;
2636	SELF\styled_item.item : annotation_fill_area;
2637END_ENTITY;
2638
2639
2640ENTITY annotation_occurrence
2641	SUPERTYPE OF (ONEOF (annotation_curve_occurrence, annotation_fill_area_occurrence, annotation_text_occurrence, annotation_symbol_occurrence))
2642	SUBTYPE OF (styled_item);
2643WHERE
2644	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN
2645             TYPEOF (SELF);
2646	WR2 : SIZEOF (QUERY (reps <* using_representations(SELF) |
2647        NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_REPRESENTATION_SELECT' IN TYPEOF(reps)))) = 0;
2648END_ENTITY;
2649
2650
2651ENTITY annotation_occurrence_associativity
2652	SUBTYPE OF (annotation_occurrence_relationship);
2653WHERE
2654	WR1 : SIZEOF (TYPEOF (SELF.related_annotation_occurrence) *
2655          ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE',
2656           'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PROJECTION_CURVE',
2657           'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LEADER_CURVE']) = 1;
2658END_ENTITY;
2659
2660
2661ENTITY annotation_occurrence_relationship;
2662	name : label;
2663	description : text;
2664	relating_annotation_occurrence : annotation_occurrence;
2665	related_annotation_occurrence : annotation_occurrence;
2666END_ENTITY;
2667
2668
2669ENTITY annotation_plane
2670	SUBTYPE OF (annotation_occurrence, geometric_representation_item);
2671	elements : OPTIONAL SET [1:?] OF annotation_plane_element;
2672	SELF\styled_item.item : plane_or_planar_box;
2673WHERE
2674	WR1 : SELF\geometric_representation_item.dim = 3;
2675	WR2 : NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'PLANAR_BOX' IN TYPEOF(SELF\styled_item.item)) OR
2676        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'AXIS2_PLACEMENT_3D' IN TYPEOF(SELF\styled_item.item\planar_box.placement));
2677	WR3 : (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'PLANAR_BOX' IN TYPEOF(SELF\styled_item.item)) AND
2678        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'CURVE_STYLE' IN TYPEOF(SELF\styled_item.styles[1]\presentation_style_assignment.styles[1]))) OR
2679        (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'PLANE' IN TYPEOF(SELF\styled_item.item)) AND
2680        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'FILL_AREA_STYLE' IN TYPEOF(SELF\styled_item.styles[1]\presentation_style_assignment.styles[1])));
2681	WR4 : (SIZEOF(SELF\styled_item.styles) = 1) AND
2682        (SIZEOF(SELF\styled_item.styles[1]\presentation_style_assignment.styles) = 1);
2683END_ENTITY;
2684
2685
2686ENTITY annotation_subfigure_occurrence
2687	SUBTYPE OF (annotation_symbol_occurrence);
2688WHERE
2689	WR1 : SIZEOF (QUERY (sty <* SELF.styles |
2690         NOT (SIZEOF (sty.styles) = 1)
2691       )) = 0;
2692	WR2 : SIZEOF (QUERY (sty <* SELF.styles |
2693         NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.NULL_STYLE'
2694               IN TYPEOF (sty.styles[1]))       ))=0;
2695	WR3 : ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_SYMBOL'
2696           IN TYPEOF (SELF.item));
2697	WR4 : ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DRAUGHTING_SUBFIGURE_REPRESENTATION'
2698           IN TYPEOF
2699           (SELF.item\mapped_item.mapping_source.mapped_representation));
2700END_ENTITY;
2701
2702
2703ENTITY annotation_symbol
2704	SUBTYPE OF (mapped_item);
2705	SELF\mapped_item.mapping_source : symbol_representation_map;
2706	SELF\mapped_item.mapping_target : symbol_target;
2707WHERE
2708	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN
2709          TYPEOF (SELF);
2710END_ENTITY;
2711
2712
2713ENTITY annotation_symbol_occurrence
2714	SUBTYPE OF (annotation_occurrence);
2715	SELF\styled_item.item : annotation_symbol_occurrence_item;
2716END_ENTITY;
2717
2718
2719ENTITY annotation_text
2720	SUBTYPE OF (mapped_item);
2721	SELF\mapped_item.mapping_target : axis2_placement;
2722WHERE
2723	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.TEXT_STRING_REPRESENTATION' IN
2724        TYPEOF( SELF\mapped_item.mapping_source.mapped_representation);
2725	WR2 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN
2726        TYPEOF( SELF);
2727END_ENTITY;
2728
2729
2730ENTITY annotation_text_character
2731	SUBTYPE OF (mapped_item);
2732	alignment : text_alignment;
2733	SELF\mapped_item.mapping_target : axis2_placement;
2734WHERE
2735	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CHARACTER_GLYPH_SYMBOL' IN
2736         TYPEOF (SELF\mapped_item.mapping_source.mapped_representation);
2737	WR2 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN
2738         TYPEOF (SELF);
2739END_ENTITY;
2740
2741
2742ENTITY annotation_text_occurrence
2743	SUBTYPE OF (annotation_occurrence);
2744	SELF\styled_item.item : annotation_text_occurrence_item;
2745END_ENTITY;
2746
2747
2748ENTITY apex
2749	SUBTYPE OF (derived_shape_aspect);
2750END_ENTITY;
2751
2752
2753ENTITY application_context;
2754	application : label;
2755DERIVE
2756	description : text := get_description_value(SELF);
2757	id : identifier := get_id_value(SELF);
2758INVERSE
2759	context_elements: SET [1:?] OF application_context_element FOR frame_of_reference;
2760WHERE
2761	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
2762	WR2 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
2763END_ENTITY;
2764
2765
2766ENTITY application_context_element
2767	SUPERTYPE OF (ONEOF (product_concept_context, product_context, product_definition_context));
2768	name : label;
2769	frame_of_reference : application_context;
2770END_ENTITY;
2771
2772
2773ENTITY application_protocol_definition;
2774	status : label;
2775	application_interpreted_model_schema_name : label;
2776	application_protocol_year : year_number;
2777	application : application_context;
2778END_ENTITY;
2779
2780
2781ENTITY applied_action_assignment
2782	SUBTYPE OF (action_assignment);
2783	items : SET [1:?] OF action_items;
2784END_ENTITY;
2785
2786
2787ENTITY applied_action_method_assignment
2788	SUBTYPE OF (action_method_assignment);
2789	items : SET [1:?] OF action_method_items;
2790END_ENTITY;
2791
2792
2793ENTITY applied_action_request_assignment
2794	SUBTYPE OF (action_request_assignment);
2795	items : SET [1:?] OF action_request_item;
2796END_ENTITY;
2797
2798
2799ENTITY applied_approval_assignment
2800	SUBTYPE OF (approval_assignment);
2801	items : SET [1:?] OF approval_item;
2802END_ENTITY;
2803
2804
2805ENTITY applied_attribute_classification_assignment
2806	SUBTYPE OF (attribute_classification_assignment);
2807	items : SET [1:?] OF attribute_classification_item;
2808	SELF\attribute_classification_assignment.assigned_class : class;
2809END_ENTITY;
2810
2811
2812ENTITY applied_certification_assignment
2813	SUBTYPE OF (certification_assignment);
2814	items : SET [1:?] OF certification_item;
2815END_ENTITY;
2816
2817
2818ENTITY applied_classification_assignment
2819	SUBTYPE OF (classification_assignment);
2820	items : SET [1:?] OF classification_item;
2821END_ENTITY;
2822
2823
2824ENTITY applied_contract_assignment
2825	SUBTYPE OF (contract_assignment);
2826	items : SET [1:?] OF contract_item;
2827END_ENTITY;
2828
2829
2830ENTITY applied_date_and_time_assignment
2831	SUBTYPE OF (date_and_time_assignment);
2832	items : SET [1:?] OF date_and_time_item;
2833END_ENTITY;
2834
2835
2836ENTITY applied_date_assignment
2837	SUBTYPE OF (date_assignment);
2838	items : SET [1:?] OF date_item;
2839END_ENTITY;
2840
2841
2842ENTITY applied_document_reference
2843	SUBTYPE OF (document_reference);
2844	items : SET [1:?] OF document_reference_item;
2845END_ENTITY;
2846
2847
2848ENTITY applied_document_usage_constraint_assignment
2849	SUBTYPE OF (document_usage_constraint_assignment);
2850	items : SET [1:?] OF document_reference_item;
2851END_ENTITY;
2852
2853
2854ENTITY applied_effectivity_assignment
2855	SUBTYPE OF (effectivity_assignment);
2856	items : SET [1:?] OF effectivity_item;
2857END_ENTITY;
2858
2859
2860ENTITY applied_event_occurrence_assignment
2861	SUBTYPE OF (event_occurrence_assignment);
2862	items : SET [1:?] OF event_occurrence_item;
2863END_ENTITY;
2864
2865
2866ENTITY applied_external_identification_assignment
2867	SUBTYPE OF (external_identification_assignment);
2868	items : SET [1:?] OF external_identification_item;
2869END_ENTITY;
2870
2871
2872ENTITY applied_group_assignment
2873	SUBTYPE OF (group_assignment);
2874	items : SET [1:?] OF groupable_item;
2875END_ENTITY;
2876
2877
2878ENTITY applied_identification_assignment
2879	SUBTYPE OF (identification_assignment);
2880	items : SET [1:?] OF identification_item;
2881END_ENTITY;
2882
2883
2884ENTITY applied_name_assignment
2885	SUBTYPE OF (name_assignment);
2886	item : name_item;
2887END_ENTITY;
2888
2889
2890ENTITY applied_organization_assignment
2891	SUBTYPE OF (organization_assignment);
2892	items : SET [1:?] OF organization_item;
2893END_ENTITY;
2894
2895
2896ENTITY applied_organizational_project_assignment
2897	SUBTYPE OF (organizational_project_assignment);
2898	items : SET [1:?] OF project_item;
2899END_ENTITY;
2900
2901
2902ENTITY applied_person_and_organization_assignment
2903	SUBTYPE OF (person_and_organization_assignment);
2904	items : SET [1:?] OF person_and_organization_item;
2905END_ENTITY;
2906
2907
2908ENTITY applied_presented_item
2909	SUBTYPE OF (presented_item);
2910	items : SET [1:?] OF presented_item_select;
2911END_ENTITY;
2912
2913
2914ENTITY applied_security_classification_assignment
2915	SUBTYPE OF (security_classification_assignment);
2916	items : SET [1:?] OF security_classification_item;
2917END_ENTITY;
2918
2919
2920ENTITY applied_time_interval_assignment
2921	SUBTYPE OF (time_interval_assignment);
2922	items : SET [0:?] OF time_interval_item;
2923END_ENTITY;
2924
2925
2926ENTITY applied_usage_right
2927	SUBTYPE OF (applied_action_assignment);
2928	SELF\applied_action_assignment.items : SET [1:?] OF ir_usage_item;
2929END_ENTITY;
2930
2931
2932ENTITY approval;
2933	status : approval_status;
2934	level : label;
2935END_ENTITY;
2936
2937
2938ENTITY approval_assignment
2939	ABSTRACT SUPERTYPE;
2940	assigned_approval : approval;
2941DERIVE
2942	role : object_role := get_role(SELF);
2943WHERE
2944	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
2945END_ENTITY;
2946
2947
2948ENTITY approval_date_time;
2949	date_time : date_time_select;
2950	dated_approval : approval;
2951DERIVE
2952	role : object_role := get_role(SELF);
2953WHERE
2954	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
2955END_ENTITY;
2956
2957
2958ENTITY approval_person_organization;
2959	person_organization : person_organization_select;
2960	authorized_approval : approval;
2961	role : approval_role;
2962END_ENTITY;
2963
2964
2965ENTITY approval_relationship;
2966	name : label;
2967	description : OPTIONAL text;
2968	relating_approval : approval;
2969	related_approval : approval;
2970END_ENTITY;
2971
2972
2973ENTITY approval_role;
2974	role : label;
2975DERIVE
2976	description : text := get_description_value(SELF);
2977WHERE
2978	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
2979END_ENTITY;
2980
2981
2982ENTITY approval_status;
2983	name : label;
2984END_ENTITY;
2985
2986
2987ENTITY area_component
2988	SUPERTYPE OF (connected_area_component)
2989	SUBTYPE OF (stratum_feature_template_component);
2990END_ENTITY;
2991
2992
2993ENTITY area_in_set;
2994	area : presentation_area;
2995	in_set : presentation_set;
2996END_ENTITY;
2997
2998
2999ENTITY area_measure_with_unit
3000	SUBTYPE OF (measure_with_unit);
3001WHERE
3002	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AREA_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
3003END_ENTITY;
3004
3005
3006ENTITY area_qualified_layout_spacing_requirement
3007	SUBTYPE OF (layout_spacing_requirement);
3008END_ENTITY;
3009
3010
3011ENTITY area_unit
3012	SUBTYPE OF (derived_unit);
3013WHERE
3014	WR1 : derive_dimensional_exponents(SELF) =
3015      dimensional_exponents ( 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 );
3016END_ENTITY;
3017
3018
3019ENTITY area_with_outer_boundary
3020	SUBTYPE OF (complex_area, half_space_2d);
3021	SELF\half_space_2d.base_curve : composite_curve;
3022END_ENTITY;
3023
3024
3025ENTITY array_placement_group
3026	SUPERTYPE OF (ONEOF (laminate_text_string_component, linear_array_placement_group_component, rectangular_array_placement_group_component))
3027	SUBTYPE OF (assembly_group_component);
3028END_ENTITY;
3029
3030
3031ENTITY assembly_bond_definition
3032	SUBTYPE OF (shape_aspect);
3033UNIQUE
3034	UR1 : SELF\shape_aspect.name;
3035END_ENTITY;
3036
3037
3038ENTITY assembly_component
3039	SUPERTYPE OF (ONEOF (physical_component, printed_component, laminate_component))
3040	SUBTYPE OF (component_definition, product_definition_shape);
3041DERIVE
3042	SELF\property_definition.definition : assembly_component := SELF;
3043WHERE
3044	WR1 : NOT EXISTS(SELF\property_definition.description);
3045END_ENTITY;
3046
3047
3048ENTITY assembly_component_usage
3049	SUPERTYPE OF (ONEOF (next_assembly_usage_occurrence, specified_higher_usage_occurrence, promissory_usage_occurrence))
3050	SUBTYPE OF (product_definition_usage);
3051	reference_designator : OPTIONAL identifier;
3052END_ENTITY;
3053
3054
3055ENTITY assembly_component_usage_substitute;
3056	name : label;
3057	definition : OPTIONAL text;
3058	base : assembly_component_usage;
3059	substitute : assembly_component_usage;
3060UNIQUE
3061	UR1 : base, substitute;
3062WHERE
3063	WR1 : base.relating_product_definition :=:
3064       substitute.relating_product_definition;
3065	WR2 : base :<>: substitute;
3066END_ENTITY;
3067
3068
3069ENTITY assembly_group_component
3070	SUBTYPE OF (assembly_component);
3071END_ENTITY;
3072
3073
3074ENTITY assembly_group_component_definition_placement_link
3075	SUBTYPE OF (product_definition, product_definition_relationship);
3076	SELF\product_definition_relationship.related_product_definition : assembly_component;
3077	SELF\product_definition_relationship.relating_product_definition : assembly_component;
3078WHERE
3079	WR1 : SELF\product_definition_relationship.related_product_definition :<>:
3080       SELF\product_definition_relationship.relating_product_definition;
3081	WR2 : acyclic_product_definition_relationship (SELF,
3082      [SELF\product_definition_relationship.related_product_definition],
3083      'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ASSEMBLY_GROUP_COMPONENT_DEFINITION_PLACEMENT_LINK');
3084END_ENTITY;
3085
3086
3087ENTITY assembly_group_spacing_requirement
3088	SUBTYPE OF (predefined_requirement_view_definition);
3089END_ENTITY;
3090
3091
3092ENTITY assembly_item_number
3093	SUBTYPE OF (group, applied_group_assignment);
3094	SELF\applied_group_assignment.items : SET [1:?] OF assembly_component_usage;
3095DERIVE
3096	SELF\group_assignment.assigned_group : group := SELF;
3097END_ENTITY;
3098
3099
3100ENTITY assembly_joint
3101	SUBTYPE OF (component_feature_joint);
3102WHERE
3103	WR1 : acyclic_shape_aspect_relationship(SELF,
3104       [SELF\shape_aspect_relationship.related_shape_aspect],
3105       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
3106       'ASSEMBLY_JOINT');
3107END_ENTITY;
3108
3109
3110ENTITY assembly_module_component
3111	SUBTYPE OF (physical_component);
3112END_ENTITY;
3113
3114
3115ENTITY assembly_module_design_view
3116	SUPERTYPE OF (ONEOF (layered_assembly_panel_design_view, layered_assembly_module_design_view))
3117	SUBTYPE OF (physical_unit);
3118END_ENTITY;
3119
3120
3121ENTITY assembly_module_interface_terminal
3122	SUBTYPE OF (assembly_module_terminal);
3123END_ENTITY;
3124
3125
3126ENTITY assembly_module_macro_component
3127	SUBTYPE OF (physical_component);
3128END_ENTITY;
3129
3130
3131ENTITY assembly_module_macro_component_join_terminal
3132	SUBTYPE OF (physical_component_terminal);
3133END_ENTITY;
3134
3135
3136ENTITY assembly_module_macro_terminal
3137	SUBTYPE OF (assembly_module_terminal);
3138END_ENTITY;
3139
3140
3141ENTITY assembly_module_terminal
3142	SUPERTYPE OF (ONEOF (assembly_module_interface_terminal, assembly_module_macro_terminal))
3143	SUBTYPE OF (shape_aspect);
3144END_ENTITY;
3145
3146
3147ENTITY assembly_module_usage_view
3148	SUPERTYPE OF (layered_assembly_module_usage_view)
3149	SUBTYPE OF (physical_unit);
3150END_ENTITY;
3151
3152
3153ENTITY assembly_shield_allocation
3154	SUBTYPE OF (electromagnetic_compatibility_requirement_allocation);
3155END_ENTITY;
3156
3157
3158ENTITY assembly_spacing_requirement
3159	SUBTYPE OF (predefined_requirement_view_definition);
3160END_ENTITY;
3161
3162
3163ENTITY assembly_to_part_connectivity_structure_allocation
3164	SUBTYPE OF (shape_aspect_relationship, shape_aspect);
3165	SELF\shape_aspect_relationship.related_shape_aspect : physical_connectivity_element;
3166	SELF\shape_aspect_relationship.relating_shape_aspect : part_connected_terminals_element;
3167DERIVE
3168	assembly_element : physical_connectivity_element := SELF\shape_aspect_relationship.related_shape_aspect;
3169	part_element : part_connected_terminals_element := SELF\shape_aspect_relationship.relating_shape_aspect;
3170END_ENTITY;
3171
3172
3173ENTITY assigned_requirement
3174	SUBTYPE OF (group_assignment);
3175	items : SET [1:1] OF product_definition;
3176	SELF\group_assignment.assigned_group : requirement_assignment;
3177END_ENTITY;
3178
3179
3180ENTITY atomic_formula
3181	SUBTYPE OF (compound_representation_item);
3182END_ENTITY;
3183
3184
3185ENTITY attribute_assertion
3186	SUBTYPE OF (fact_type, property_definition_representation, representation);
3187END_ENTITY;
3188
3189
3190ENTITY attribute_classification_assignment
3191	ABSTRACT SUPERTYPE;
3192	assigned_class : group;
3193	attribute_name : label;
3194	role : classification_role;
3195END_ENTITY;
3196
3197
3198ENTITY attribute_language_assignment
3199	SUBTYPE OF (attribute_classification_assignment);
3200	items : SET [1:?] OF attribute_language_item;
3201	SELF\attribute_classification_assignment.assigned_class : language;
3202WHERE
3203	WR1 : SELF\attribute_classification_assignment.role.name IN ['primary', 'translated'];
3204	WR2 : SELF\attribute_classification_assignment.attribute_name<> '';
3205END_ENTITY;
3206
3207
3208ENTITY attribute_value_assignment
3209	ABSTRACT SUPERTYPE;
3210	attribute_name : label;
3211	attribute_value : attribute_type;
3212	role : attribute_value_role;
3213END_ENTITY;
3214
3215
3216ENTITY attribute_value_role;
3217	name : label;
3218	description : OPTIONAL text;
3219END_ENTITY;
3220
3221
3222ENTITY auxiliary_characteristic_dimension_representation
3223	SUBTYPE OF (dimensional_characteristic_representation);
3224END_ENTITY;
3225
3226
3227ENTITY auxiliary_geometric_representation_item
3228	SUBTYPE OF (geometric_representation_item, variational_representation_item);
3229END_ENTITY;
3230
3231
3232ENTITY axis1_placement
3233	SUBTYPE OF (placement);
3234	axis : OPTIONAL direction;
3235DERIVE
3236	z : direction := NVL(normalise(axis), dummy_gri ||
3237                                 direction([0.0,0.0,1.0]));
3238WHERE
3239	WR1 : SELF\geometric_representation_item.dim  = 3;
3240END_ENTITY;
3241
3242
3243ENTITY axis2_placement_2d
3244	SUBTYPE OF (placement);
3245	ref_direction : OPTIONAL direction;
3246DERIVE
3247	p : LIST [2:2] OF direction := build_2axes(ref_direction);
3248WHERE
3249	WR1 : SELF\geometric_representation_item.dim = 2;
3250END_ENTITY;
3251
3252
3253ENTITY axis2_placement_3d
3254	SUBTYPE OF (placement);
3255	axis : OPTIONAL direction;
3256	ref_direction : OPTIONAL direction;
3257DERIVE
3258	p : LIST [3:3] OF direction := build_axes(axis,ref_direction);
3259WHERE
3260	WR1 : SELF\placement.location.dim = 3;
3261	WR2 : (NOT (EXISTS (axis))) OR (axis.dim = 3);
3262	WR3 : (NOT (EXISTS (ref_direction))) OR (ref_direction.dim = 3);
3263	WR4 : (NOT (EXISTS (axis))) OR (NOT (EXISTS (ref_direction))) OR
3264          (cross_product(axis,ref_direction).magnitude > 0.0);
3265END_ENTITY;
3266
3267
3268ENTITY axis_placement_2d_3d_mapping
3269	SUBTYPE OF (item_defined_transformation);
3270	SELF\item_defined_transformation.transform_item_1 : axis2_placement_2d;
3271	SELF\item_defined_transformation.transform_item_2 : axis2_placement_3d;
3272END_ENTITY;
3273
3274
3275ENTITY b_spline_curve
3276	SUPERTYPE OF ((ONEOF (uniform_curve, b_spline_curve_with_knots, quasi_uniform_curve, bezier_curve) ANDOR rational_b_spline_curve))
3277	SUBTYPE OF (bounded_curve);
3278	degree : INTEGER;
3279	control_points_list : LIST [2:?] OF cartesian_point;
3280	curve_form : b_spline_curve_form;
3281	closed_curve : LOGICAL;
3282	self_intersect : LOGICAL;
3283DERIVE
3284	control_points : ARRAY [0:upper_index_on_control_points] OF cartesian_point := list_to_array(control_points_list,0,
3285                                             upper_index_on_control_points);
3286	upper_index_on_control_points : INTEGER := (SIZEOF(control_points_list) - 1);
3287WHERE
3288	WR1 : ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.UNIFORM_CURVE' IN TYPEOF(self)) OR
3289        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.QUASI_UNIFORM_CURVE' IN TYPEOF(self)) OR
3290        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.BEZIER_CURVE' IN TYPEOF(self)) OR
3291        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.B_SPLINE_CURVE_WITH_KNOTS' IN TYPEOF(self));
3292END_ENTITY;
3293
3294
3295ENTITY b_spline_curve_with_knots
3296	SUBTYPE OF (b_spline_curve);
3297	knot_multiplicities : LIST [2:?] OF INTEGER;
3298	knots : LIST [2:?] OF parameter_value;
3299	knot_spec : knot_type;
3300DERIVE
3301	upper_index_on_knots : INTEGER := SIZEOF(knots);
3302WHERE
3303	WR1 : constraints_param_b_spline(degree, upper_index_on_knots,
3304                               upper_index_on_control_points,
3305                               knot_multiplicities, knots);
3306	WR2 : SIZEOF(knot_multiplicities) = upper_index_on_knots;
3307END_ENTITY;
3308
3309
3310ENTITY b_spline_surface
3311	SUPERTYPE OF ((ONEOF (b_spline_surface_with_knots, uniform_surface, quasi_uniform_surface, bezier_surface) ANDOR rational_b_spline_surface))
3312	SUBTYPE OF (bounded_surface);
3313	u_degree : INTEGER;
3314	v_degree : INTEGER;
3315	control_points_list : LIST [2:?] OF LIST [2:?] OF cartesian_point;
3316	surface_form : b_spline_surface_form;
3317	u_closed : LOGICAL;
3318	v_closed : LOGICAL;
3319	self_intersect : LOGICAL;
3320DERIVE
3321	control_points : ARRAY [0:u_upper] OF ARRAY [0:v_upper] OF cartesian_point := make_array_of_array(control_points_list,
3322                                              0,u_upper,0,v_upper);
3323	u_upper : INTEGER := SIZEOF(control_points_list) - 1;
3324	v_upper : INTEGER := SIZEOF(control_points_list[1]) - 1;
3325WHERE
3326	WR1 : ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.UNIFORM_SURFACE' IN TYPEOF(SELF)) OR
3327        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.QUASI_UNIFORM_SURFACE' IN TYPEOF(SELF)) OR
3328        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.BEZIER_SURFACE' IN TYPEOF(SELF)) OR
3329        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.B_SPLINE_SURFACE_WITH_KNOTS' IN TYPEOF(SELF));
3330END_ENTITY;
3331
3332
3333ENTITY b_spline_surface_with_knots
3334	SUBTYPE OF (b_spline_surface);
3335	u_multiplicities : LIST [2:?] OF INTEGER;
3336	v_multiplicities : LIST [2:?] OF INTEGER;
3337	u_knots : LIST [2:?] OF parameter_value;
3338	v_knots : LIST [2:?] OF parameter_value;
3339	knot_spec : knot_type;
3340DERIVE
3341	knot_u_upper : INTEGER := SIZEOF(u_knots);
3342	knot_v_upper : INTEGER := SIZEOF(v_knots);
3343WHERE
3344	WR1 : constraints_param_b_spline(SELF\b_spline_surface.u_degree,
3345                   knot_u_upper, SELF\b_spline_surface.u_upper,
3346                               u_multiplicities, u_knots);
3347	WR2 : constraints_param_b_spline(SELF\b_spline_surface.v_degree,
3348                   knot_v_upper, SELF\b_spline_surface.v_upper,
3349                               v_multiplicities, v_knots);
3350	WR3 : SIZEOF(u_multiplicities) = knot_u_upper;
3351	WR4 : SIZEOF(v_multiplicities) = knot_v_upper;
3352END_ENTITY;
3353
3354
3355ENTITY back_chaining_rule
3356	SUBTYPE OF (rule_definition);
3357END_ENTITY;
3358
3359
3360ENTITY back_chaining_rule_body
3361	SUBTYPE OF (property_definition, property_definition_representation, representation);
3362END_ENTITY;
3363
3364
3365ENTITY background_colour
3366	SUBTYPE OF (colour);
3367	presentation : area_or_view;
3368UNIQUE
3369	UR1 : presentation;
3370END_ENTITY;
3371
3372
3373ENTITY bare_die
3374	SUBTYPE OF (physical_unit);
3375END_ENTITY;
3376
3377
3378ENTITY bare_die_bottom_surface
3379	SUBTYPE OF (bare_die_surface);
3380END_ENTITY;
3381
3382
3383ENTITY bare_die_component
3384	SUBTYPE OF (physical_component);
3385END_ENTITY;
3386
3387
3388ENTITY bare_die_edge_segment_surface
3389	SUBTYPE OF (shape_aspect, shape_aspect_relationship);
3390	SELF\shape_aspect_relationship.related_shape_aspect : edge_segment_vertex;
3391	SELF\shape_aspect_relationship.relating_shape_aspect : edge_segment_vertex;
3392WHERE
3393	WR1 : SELF\shape_aspect_relationship.relating_shape_aspect :<>:
3394       SELF\shape_aspect_relationship.related_shape_aspect;
3395END_ENTITY;
3396
3397
3398ENTITY bare_die_edge_surface
3399	SUBTYPE OF (bare_die_surface);
3400WHERE
3401	WR1 : SELF\shape_aspect.product_definitional;
3402	WR2 : SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect ||
3403       SELF\part_mounting_feature ||
3404       SELF\bare_die_edge_surface ||
3405       SELF\bare_die_surface)) = 0;
3406END_ENTITY;
3407
3408
3409ENTITY bare_die_surface
3410	ABSTRACT SUPERTYPE OF (ONEOF (bare_die_bottom_surface, bare_die_top_surface, bare_die_edge_surface))
3411	SUBTYPE OF (part_mounting_feature);
3412	SELF\shape_aspect.of_shape : bare_die;
3413WHERE
3414	WR1 : SELF\shape_aspect.product_definitional;
3415END_ENTITY;
3416
3417
3418ENTITY bare_die_template_terminal
3419	SUBTYPE OF (part_feature_template_definition, shape_aspect);
3420END_ENTITY;
3421
3422
3423ENTITY bare_die_terminal
3424	SUBTYPE OF (minimally_defined_bare_die_terminal, placed_feature);
3425END_ENTITY;
3426
3427
3428ENTITY bare_die_top_surface
3429	SUBTYPE OF (bare_die_surface);
3430WHERE
3431	WR1 : SELF\shape_aspect.product_definitional;
3432	WR2 : SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect ||
3433       SELF\part_mounting_feature ||
3434       SELF\bare_die_top_surface ||
3435       SELF\bare_die_surface)) = 0;
3436END_ENTITY;
3437
3438
3439ENTITY basic_multi_stratum_printed_component
3440	SUBTYPE OF (printed_component);
3441END_ENTITY;
3442
3443
3444ENTITY basic_multi_stratum_printed_part_template
3445	SUBTYPE OF (printed_part_template);
3446END_ENTITY;
3447
3448
3449ENTITY beveled_sheet_representation
3450	SUBTYPE OF (shape_representation);
3451END_ENTITY;
3452
3453
3454ENTITY bezier_curve
3455	SUBTYPE OF (b_spline_curve);
3456END_ENTITY;
3457
3458
3459ENTITY bezier_surface
3460	SUBTYPE OF (b_spline_surface);
3461END_ENTITY;
3462
3463
3464ENTITY binary_generic_expression
3465	ABSTRACT SUPERTYPE
3466	SUBTYPE OF (generic_expression);
3467	operands : LIST [2:2] OF generic_expression;
3468END_ENTITY;
3469
3470
3471ENTITY binary_numeric_expression
3472	ABSTRACT SUPERTYPE
3473	SUBTYPE OF (numeric_expression, binary_generic_expression);
3474	SELF\binary_generic_expression.operands : LIST [2:2] OF numeric_expression;
3475END_ENTITY;
3476
3477
3478ENTITY binary_representation_item
3479	SUBTYPE OF (representation_item);
3480	binary_value : BINARY;
3481END_ENTITY;
3482
3483
3484ENTITY blind_passage_template
3485	SUBTYPE OF (unsupported_passage_template);
3486END_ENTITY;
3487
3488
3489ENTITY blind_via
3490	ABSTRACT SUPERTYPE OF (ONEOF (non_conductive_base_blind_via, plated_conductive_base_blind_via))
3491	SUBTYPE OF (via);
3492END_ENTITY;
3493
3494
3495ENTITY block
3496	SUBTYPE OF (geometric_representation_item);
3497	position : axis2_placement_3d;
3498	x : positive_length_measure;
3499	y : positive_length_measure;
3500	z : positive_length_measure;
3501END_ENTITY;
3502
3503
3504ENTITY boolean_expression
3505	ABSTRACT SUPERTYPE OF (ONEOF (simple_boolean_expression, multiple_arity_boolean_expression, comparison_expression, interval_expression))
3506	SUBTYPE OF (expression);
3507END_ENTITY;
3508
3509
3510ENTITY boolean_literal
3511	SUBTYPE OF (simple_boolean_expression, generic_literal);
3512	the_value : BOOLEAN;
3513END_ENTITY;
3514
3515
3516ENTITY boolean_representation_item
3517	SUBTYPE OF (representation_item, boolean_literal);
3518END_ENTITY;
3519
3520
3521ENTITY boolean_result
3522	SUBTYPE OF (geometric_representation_item);
3523	operator : boolean_operator;
3524	first_operand : boolean_operand;
3525	second_operand : boolean_operand;
3526END_ENTITY;
3527
3528
3529ENTITY boolean_result_2d
3530	SUBTYPE OF (boolean_result);
3531	SELF\boolean_result.first_operand : boolean_operand_2d;
3532	SELF\boolean_result.second_operand : boolean_operand_2d;
3533END_ENTITY;
3534
3535
3536ENTITY boundary_curve
3537	SUBTYPE OF (composite_curve_on_surface);
3538WHERE
3539	WR1 : SELF\composite_curve.closed_curve;
3540END_ENTITY;
3541
3542
3543ENTITY bounded_curve
3544	SUPERTYPE OF (ONEOF (polyline, b_spline_curve, trimmed_curve, bounded_pcurve, bounded_surface_curve, composite_curve))
3545	SUBTYPE OF (curve);
3546END_ENTITY;
3547
3548
3549ENTITY bounded_pcurve
3550	SUBTYPE OF (pcurve, bounded_curve);
3551WHERE
3552	WR1 : ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.BOUNDED_CURVE' IN
3553                   TYPEOF(SELF\pcurve.reference_to_curve.items[1]));
3554END_ENTITY;
3555
3556
3557ENTITY bounded_surface
3558	SUPERTYPE OF (ONEOF (b_spline_surface, rectangular_trimmed_surface, curve_bounded_surface, rectangular_composite_surface))
3559	SUBTYPE OF (surface);
3560END_ENTITY;
3561
3562
3563ENTITY bounded_surface_curve
3564	SUBTYPE OF (surface_curve, bounded_curve);
3565WHERE
3566	WR1 : ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.BOUNDED_CURVE' IN
3567             TYPEOF(SELF\surface_curve.curve_3d));
3568END_ENTITY;
3569
3570
3571ENTITY box_domain
3572	SUBTYPE OF (founded_item);
3573	corner : cartesian_point;
3574	xlength : positive_length_measure;
3575	ylength : positive_length_measure;
3576	zlength : positive_length_measure;
3577WHERE
3578	WR1 : SIZEOF(QUERY(item <* USEDIN(SELF,'')|
3579             NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.BOXED_HALF_SPACE'
3580                    IN TYPEOF(item)))) = 0;
3581END_ENTITY;
3582
3583
3584ENTITY boxed_half_space
3585	SUBTYPE OF (half_space_solid);
3586	enclosure : box_domain;
3587END_ENTITY;
3588
3589
3590ENTITY breakdown_context
3591	SUBTYPE OF (product_definition_relationship);
3592END_ENTITY;
3593
3594
3595ENTITY breakdown_element_group_assignment
3596	SUBTYPE OF (group_assignment);
3597	items : SET [1:1] OF product_definition_or_breakdown_element_usage;
3598	SELF\group_assignment.assigned_group : product_definition_element_relationship;
3599END_ENTITY;
3600
3601
3602ENTITY breakdown_element_realization
3603	SUBTYPE OF (characterized_object, product_definition_element_relationship);
3604END_ENTITY;
3605
3606
3607ENTITY breakdown_element_usage
3608	SUBTYPE OF (product_definition_relationship);
3609END_ENTITY;
3610
3611
3612ENTITY breakdown_of
3613	SUBTYPE OF (product_definition_relationship);
3614END_ENTITY;
3615
3616
3617ENTITY breakout_footprint_definition
3618	SUBTYPE OF (generic_footprint_definition);
3619END_ENTITY;
3620
3621
3622ENTITY breakout_occurrence
3623	SUBTYPE OF (footprint_occurrence);
3624END_ENTITY;
3625
3626
3627ENTITY brep_with_voids
3628	SUBTYPE OF (manifold_solid_brep);
3629	voids : SET [1:?] OF oriented_closed_shell;
3630END_ENTITY;
3631
3632
3633ENTITY buried_via
3634	SUBTYPE OF (via);
3635END_ENTITY;
3636
3637
3638ENTITY bus_element_link
3639	SUBTYPE OF (product_definition, product_definition_relationship);
3640UNIQUE
3641	UR1 : SELF\product_definition_relationship.related_product_definition, SELF\product_definition_relationship.relating_product_definition;
3642WHERE
3643	WR1 : SELF\product_definition_relationship.related_product_definition :<>:
3644       SELF\product_definition_relationship.relating_product_definition;
3645END_ENTITY;
3646
3647
3648ENTITY bus_structural_definition
3649	SUBTYPE OF (product_definition);
3650END_ENTITY;
3651
3652
3653ENTITY bytes_representation_item
3654	SUBTYPE OF (binary_representation_item);
3655DERIVE
3656	no_of_bytes : INTEGER := BLENGTH(SELF\binary_representation_item.binary_value) DIV 8;
3657WHERE
3658	WR1 : BLENGTH(SELF\binary_representation_item.binary_value) MOD 8 = 0;
3659END_ENTITY;
3660
3661
3662ENTITY cable_component
3663	SUBTYPE OF (physical_component);
3664END_ENTITY;
3665
3666
3667ENTITY cable_terminal
3668	SUBTYPE OF (shape_aspect);
3669	SELF\shape_aspect.of_shape : cable_usage_view;
3670END_ENTITY;
3671
3672
3673ENTITY cable_usage_view
3674	SUBTYPE OF (physical_unit);
3675END_ENTITY;
3676
3677
3678ENTITY calendar_date
3679	SUBTYPE OF (date);
3680	day_component : day_in_month_number;
3681	month_component : month_in_year_number;
3682WHERE
3683	WR1 : valid_calendar_date (SELF);
3684END_ENTITY;
3685
3686
3687ENTITY camera_image
3688	SUBTYPE OF (mapped_item);
3689	SELF\mapped_item.mapping_source : camera_usage;
3690	SELF\mapped_item.mapping_target : planar_box;
3691WHERE
3692	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM'
3693        IN TYPEOF (SELF);
3694END_ENTITY;
3695
3696
3697ENTITY camera_image_3d_with_scale
3698	SUBTYPE OF (camera_image);
3699DERIVE
3700	scale : positive_ratio_measure := ((SELF\mapped_item.mapping_target\
3701           planar_extent.size_in_x) / (SELF\mapped_item.mapping_source.
3702           mapping_origin\camera_model_d3.perspective_of_volume.view_window.
3703           size_in_x));
3704WHERE
3705	WR1 : ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CAMERA_MODEL_D3'
3706         IN TYPEOF (SELF\mapped_item.mapping_source.mapping_origin));
3707	WR2 : aspect_ratio(SELF\mapped_item.mapping_target) =
3708           aspect_ratio(SELF\mapped_item.mapping_source.mapping_origin\
3709           camera_model_d3.perspective_of_volume.view_window);
3710	WR3 : SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3.
3711           perspective_of_volume.front_plane_clipping
3712           AND
3713           SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3.
3714           perspective_of_volume.view_volume_sides_clipping;
3715	WR4 : (SELF\mapped_item.mapping_target\planar_extent.size_in_x > 0)
3716           AND
3717           (SELF\mapped_item.mapping_target\planar_extent.size_in_y > 0);
3718	WR5 : (SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3.
3719           perspective_of_volume.view_window.size_in_x > 0)
3720           AND
3721           (SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3.
3722           perspective_of_volume.view_window.size_in_y > 0);
3723	WR6 : ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
3724            'AXIS2_PLACEMENT_2D' IN TYPEOF (SELF\mapped_item.
3725           mapping_target\planar_box.placement))
3726           AND NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
3727           'AXIS2_PLACEMENT_3D' IN TYPEOF (SELF\mapped_item.
3728           mapping_target\planar_box.placement));
3729END_ENTITY;
3730
3731
3732ENTITY camera_model
3733	ABSTRACT SUPERTYPE
3734	SUBTYPE OF (geometric_representation_item);
3735WHERE
3736	WR1 : (SIZEOF (USEDIN (SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
3737                                  'ITEM_DEFINED_TRANSFORMATION.' +
3738                                  'TRANSFORM_ITEM_1')) +
3739            SIZEOF (USEDIN (SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
3740                                  'REPRESENTATION_MAP.MAPPING_ORIGIN'))
3741            ) > 0;
3742	WR2 : SIZEOF(USEDIN(SELF,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
3743                              'STYLED_ITEM.ITEM')) = 0;
3744END_ENTITY;
3745
3746
3747ENTITY camera_model_d3
3748	SUBTYPE OF (camera_model);
3749	view_reference_system : axis2_placement_3d;
3750	perspective_of_volume : view_volume;
3751WHERE
3752	WR1 : (dot_product (SELF.view_reference_system.p[3],
3753           SELF.perspective_of_volume.view_window.placement.p[3]) = 1.0)
3754           AND
3755           (SELF.view_reference_system.location.coordinates[3] =
3756           SELF.perspective_of_volume.view_window.
3757             placement.location.coordinates[3]);
3758	WR2 : SELF\geometric_representation_item.dim = 3;
3759END_ENTITY;
3760
3761
3762ENTITY camera_model_d3_multi_clipping
3763	SUBTYPE OF (camera_model_d3);
3764	shape_clipping : SET [1:?] OF camera_model_d3_multi_clipping_interection_select;
3765END_ENTITY;
3766
3767
3768ENTITY camera_model_d3_multi_clipping_intersection
3769	SUBTYPE OF (geometric_representation_item);
3770	shape_clipping : SET [2:?] OF camera_model_d3_multi_clipping_interection_select;
3771END_ENTITY;
3772
3773
3774ENTITY camera_model_d3_multi_clipping_union
3775	SUBTYPE OF (geometric_representation_item);
3776	shape_clipping : SET [2:?] OF camera_model_d3_multi_clipping_union_select;
3777END_ENTITY;
3778
3779
3780ENTITY camera_model_d3_with_hlhsr
3781	SUBTYPE OF (camera_model_d3);
3782	hidden_line_surface_removal : BOOLEAN;
3783END_ENTITY;
3784
3785
3786ENTITY camera_model_with_light_sources
3787	SUBTYPE OF (camera_model_d3);
3788	sources : SET [1:?] OF light_source;
3789END_ENTITY;
3790
3791
3792ENTITY camera_usage
3793	SUBTYPE OF (representation_map);
3794	SELF\representation_map.mapping_origin : camera_model;
3795WHERE
3796	WR1 : NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRESENTATION_REPRESENTATION'
3797          IN TYPEOF(SELF\representation_map.mapped_representation));
3798END_ENTITY;
3799
3800
3801ENTITY capacitance_measure_with_unit
3802	SUBTYPE OF (measure_with_unit);
3803WHERE
3804	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CAPACITANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
3805END_ENTITY;
3806
3807
3808ENTITY capacitance_unit
3809	SUBTYPE OF (derived_unit);
3810WHERE
3811	WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.farad);
3812END_ENTITY;
3813
3814
3815ENTITY cartesian_point
3816	SUBTYPE OF (point);
3817	coordinates : LIST [1:3] OF length_measure;
3818END_ENTITY;
3819
3820
3821ENTITY cartesian_transformation_operator
3822	SUPERTYPE OF (ONEOF (cartesian_transformation_operator_2d, cartesian_transformation_operator_3d))
3823	SUBTYPE OF (geometric_representation_item, functionally_defined_transformation);
3824	axis1 : OPTIONAL direction;
3825	axis2 : OPTIONAL direction;
3826	local_origin : cartesian_point;
3827	scale : OPTIONAL REAL;
3828DERIVE
3829	scl : REAL := NVL(scale, 1.0);
3830WHERE
3831	WR1 : scl > 0.0;
3832END_ENTITY;
3833
3834
3835ENTITY cartesian_transformation_operator_2d
3836	SUBTYPE OF (cartesian_transformation_operator);
3837DERIVE
3838	u : LIST [2:2] OF direction := base_axis(2,SELF\cartesian_transformation_operator.axis1,
3839                   SELF\cartesian_transformation_operator.axis2,?);
3840WHERE
3841	WR1 : SELF\geometric_representation_item.dim = 2;
3842END_ENTITY;
3843
3844
3845ENTITY cartesian_transformation_operator_3d
3846	SUBTYPE OF (cartesian_transformation_operator);
3847	axis3 : OPTIONAL direction;
3848DERIVE
3849	u : LIST [3:3] OF direction := base_axis(3,SELF\cartesian_transformation_operator.axis1,
3850                        SELF\cartesian_transformation_operator.axis2,axis3);
3851WHERE
3852	WR1 : SELF\geometric_representation_item.dim = 3;
3853END_ENTITY;
3854
3855
3856ENTITY category_model_parameter
3857	SUBTYPE OF (model_parameter);
3858END_ENTITY;
3859
3860
3861ENTITY cc_design_approval
3862	SUBTYPE OF (approval_assignment);
3863	items : SET [1:?] OF approved_item;
3864END_ENTITY;
3865
3866
3867ENTITY cc_design_certification
3868	SUBTYPE OF (certification_assignment);
3869	items : SET [1:?] OF certified_item;
3870END_ENTITY;
3871
3872
3873ENTITY cc_design_contract
3874	SUBTYPE OF (contract_assignment);
3875	items : SET [1:?] OF contracted_item;
3876END_ENTITY;
3877
3878
3879ENTITY cc_design_date_and_time_assignment
3880	SUBTYPE OF (date_and_time_assignment);
3881	items : SET [1:?] OF date_time_item;
3882END_ENTITY;
3883
3884
3885ENTITY cc_design_person_and_organization_assignment
3886	SUBTYPE OF (person_and_organization_assignment);
3887	items : SET [1:?] OF cc_person_organization_item;
3888WHERE
3889	WR1 : cc_design_person_and_organization_correlation(SELF);
3890END_ENTITY;
3891
3892
3893ENTITY cc_design_security_classification
3894	SUBTYPE OF (security_classification_assignment);
3895	items : SET [1:?] OF cc_classified_item;
3896END_ENTITY;
3897
3898
3899ENTITY cc_design_specification_reference
3900	SUBTYPE OF (document_reference);
3901	items : SET [1:?] OF cc_specified_item;
3902END_ENTITY;
3903
3904
3905ENTITY celsius_temperature_measure_with_unit
3906	SUBTYPE OF (measure_with_unit);
3907WHERE
3908	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.THERMODYNAMIC_TEMPERATURE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
3909END_ENTITY;
3910
3911
3912ENTITY centre_of_symmetry
3913	SUBTYPE OF (derived_shape_aspect);
3914WHERE
3915	WR1 : SIZEOF
3916        (QUERY(sadr<*SELF\derived_shape_aspect.deriving_relationships|
3917    NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SYMMETRIC_SHAPE_ASPECT'
3918     IN TYPEOF
3919     (sadr\shape_aspect_relationship.related_shape_aspect))))=0;
3920END_ENTITY;
3921
3922
3923ENTITY certification;
3924	name : label;
3925	purpose : text;
3926	kind : certification_type;
3927END_ENTITY;
3928
3929
3930ENTITY certification_assignment
3931	ABSTRACT SUPERTYPE;
3932	assigned_certification : certification;
3933DERIVE
3934	role : object_role := get_role(SELF);
3935WHERE
3936	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
3937END_ENTITY;
3938
3939
3940ENTITY certification_type;
3941	description : label;
3942END_ENTITY;
3943
3944
3945ENTITY change
3946	SUBTYPE OF (action_assignment);
3947	items : SET [1:?] OF work_item;
3948END_ENTITY;
3949
3950
3951ENTITY change_request
3952	SUBTYPE OF (action_request_assignment);
3953	items : SET [1:?] OF change_request_item;
3954END_ENTITY;
3955
3956
3957ENTITY character_glyph_font_usage;
3958	character : generic_character_glyph_symbol;
3959	font : text_font;
3960END_ENTITY;
3961
3962
3963ENTITY character_glyph_style_outline
3964	SUBTYPE OF (founded_item);
3965	outline_style : curve_style;
3966END_ENTITY;
3967
3968
3969ENTITY character_glyph_style_stroke
3970	SUBTYPE OF (founded_item);
3971	stroke_style : curve_style;
3972END_ENTITY;
3973
3974
3975ENTITY character_glyph_symbol
3976	SUBTYPE OF (generic_character_glyph_symbol);
3977	character_box : planar_extent;
3978	baseline_ratio : ratio_measure;
3979DERIVE
3980	box_height : length_measure := character_box.size_in_y;
3981WHERE
3982	WR1 : {0.0 <= baseline_ratio <= 1.0};
3983	WR2 : item_in_context(SELF.character_box,
3984                       SELF\representation.context_of_items);
3985	WR3 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POSITIVE_LENGTH_MEASURE'
3986        IN TYPEOF (SELF.box_height);
3987END_ENTITY;
3988
3989
3990ENTITY character_glyph_symbol_outline
3991	SUBTYPE OF (character_glyph_symbol);
3992	outlines : SET [1:?] OF annotation_fill_area;
3993WHERE
3994	WR1 : SELF.outlines <= SELF\representation.items;
3995END_ENTITY;
3996
3997
3998ENTITY character_glyph_symbol_stroke
3999	SUBTYPE OF (character_glyph_symbol);
4000	strokes : SET [1:?] OF curve;
4001WHERE
4002	WR1 : SELF.strokes <= SELF\representation.items;
4003END_ENTITY;
4004
4005
4006ENTITY characteristic_data_column_header
4007	SUBTYPE OF (general_property);
4008END_ENTITY;
4009
4010
4011ENTITY characteristic_data_column_header_link
4012	SUBTYPE OF (general_property_relationship);
4013END_ENTITY;
4014
4015
4016ENTITY characteristic_data_table_header
4017	SUBTYPE OF (general_property);
4018END_ENTITY;
4019
4020
4021ENTITY characteristic_data_table_header_decomposition
4022	SUBTYPE OF (general_property_relationship);
4023END_ENTITY;
4024
4025
4026ENTITY characteristic_type
4027	SUBTYPE OF (group);
4028END_ENTITY;
4029
4030
4031ENTITY characterized_class
4032	SUBTYPE OF (characterized_object, class);
4033END_ENTITY;
4034
4035
4036ENTITY characterized_object;
4037	name : label;
4038	description : OPTIONAL text;
4039END_ENTITY;
4040
4041
4042ENTITY circle
4043	SUBTYPE OF (conic);
4044	radius : positive_length_measure;
4045END_ENTITY;
4046
4047
4048ENTITY circular_area
4049	SUBTYPE OF (primitive_2d);
4050	centre : cartesian_point;
4051	radius : positive_length_measure;
4052END_ENTITY;
4053
4054
4055ENTITY circular_runout_tolerance
4056	SUBTYPE OF (geometric_tolerance_with_datum_reference);
4057WHERE
4058	WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 2;
4059END_ENTITY;
4060
4061
4062ENTITY class
4063	SUBTYPE OF (group);
4064END_ENTITY;
4065
4066
4067ENTITY class_by_extension
4068	SUBTYPE OF (class);
4069END_ENTITY;
4070
4071
4072ENTITY class_by_intension
4073	SUBTYPE OF (class);
4074END_ENTITY;
4075
4076
4077ENTITY class_system
4078	SUBTYPE OF (group);
4079END_ENTITY;
4080
4081
4082ENTITY class_usage_effectivity_context_assignment
4083	SUBTYPE OF (effectivity_context_assignment);
4084	items : SET [1:?] OF class_usage_effectivity_context_item;
4085WHERE
4086	WR1 : SELF.role.name = 'class usage influence';
4087	WR2 : SIZEOF( QUERY( i <* SELF.items | NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(i)) )) = 0;
4088	WR3 : ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.APPLIED_EFFECTIVITY_ASSIGNMENT' IN TYPEOF(SELF.assigned_effectivity_assignment)) AND
4089        (SIZEOF(TYPEOF(SELF.assigned_effectivity_assignment.assigned_effectivity) ) = 1) AND
4090        (SELF.assigned_effectivity_assignment.assigned_effectivity.id = 'class usage') AND
4091        (SIZEOF( QUERY( i <* SELF.assigned_effectivity_assignment\applied_effectivity_assignment.items |
4092        NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY_USAGE' IN TYPEOF(i)) )) = 0);
4093END_ENTITY;
4094
4095
4096ENTITY classification_assignment
4097	ABSTRACT SUPERTYPE;
4098	assigned_class : group;
4099	role : classification_role;
4100END_ENTITY;
4101
4102
4103ENTITY classification_role;
4104	name : label;
4105	description : OPTIONAL text;
4106END_ENTITY;
4107
4108
4109ENTITY closed_curve_style_parameters
4110	SUBTYPE OF (curve_style_parameters_representation);
4111END_ENTITY;
4112
4113
4114ENTITY closed_shell
4115	SUBTYPE OF (connected_face_set);
4116END_ENTITY;
4117
4118
4119ENTITY coaxiality_tolerance
4120	SUBTYPE OF (geometric_tolerance_with_datum_reference);
4121WHERE
4122	WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 2;
4123END_ENTITY;
4124
4125
4126ENTITY colour;
4127END_ENTITY;
4128
4129
4130ENTITY colour_rgb
4131	SUBTYPE OF (colour_specification);
4132	red : REAL;
4133	green : REAL;
4134	blue : REAL;
4135WHERE
4136	WR1 : {0.0 <= red <= 1.0};
4137	WR2 : {0.0 <= green <= 1.0};
4138	WR3 : {0.0 <= blue <= 1.0};
4139END_ENTITY;
4140
4141
4142ENTITY colour_specification
4143	SUBTYPE OF (colour);
4144	name : label;
4145END_ENTITY;
4146
4147
4148ENTITY common_datum
4149	SUBTYPE OF (composite_shape_aspect, datum);
4150WHERE
4151	WR1 : SIZEOF (SELF\composite_shape_aspect.component_relationships) = 2;
4152	WR2 : SIZEOF (QUERY ( sar <* SELF\composite_shape_aspect.component_relationships|
4153                      NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DATUM' IN TYPEOF (sar.related_shape_aspect)) AND
4154                          NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMMON_DATUM' IN TYPEOF (sar.related_shape_aspect))) )) = 0;
4155END_ENTITY;
4156
4157
4158ENTITY comparison_expression
4159	ABSTRACT SUPERTYPE
4160	SUBTYPE OF (boolean_expression, binary_generic_expression);
4161	SELF\binary_generic_expression.operands : LIST [2:2] OF expression;
4162WHERE
4163	WR1 : (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.NUMERIC_EXPRESSION'
4164IN TYPEOF(SELF\binary_generic_expression.operands[1]))
4165		AND
4166		 	('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.NUMERIC_EXPRESSION'
4167IN TYPEOF(SELF\binary_generic_expression.operands[2])))
4168OR
4169 (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.BOOLEAN_EXPRESSION'
4170IN TYPEOF(SELF\binary_generic_expression.operands[1]))
4171		AND
4172		 	('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.BOOLEAN_EXPRESSION'
4173	IN TYPEOF(SELF\binary_generic_expression.operands[2])))
4174OR
4175(('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STRING_EXPRESSION'
4176IN TYPEOF(SELF\binary_generic_expression.operands[1]))
4177		AND
4178		 	('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STRING_EXPRESSION'
4179IN TYPEOF(SELF\binary_generic_expression.operands[2])));
4180END_ENTITY;
4181
4182
4183ENTITY complex_area
4184	ABSTRACT SUPERTYPE OF (area_with_outer_boundary)
4185	SUBTYPE OF (primitive_2d);
4186END_ENTITY;
4187
4188
4189ENTITY complex_clause
4190	SUBTYPE OF (compound_representation_item);
4191END_ENTITY;
4192
4193
4194ENTITY complex_conjunctive_clause
4195	SUBTYPE OF (complex_clause);
4196END_ENTITY;
4197
4198
4199ENTITY complex_disjunctive_clause
4200	SUBTYPE OF (complex_clause);
4201END_ENTITY;
4202
4203
4204ENTITY complex_passage_padstack_definition
4205	SUBTYPE OF (stratum_stack_dependent_template, passage_padstack_definition);
4206END_ENTITY;
4207
4208
4209ENTITY complex_shelled_solid
4210	SUBTYPE OF (shelled_solid);
4211	thickened_face_list : LIST [1:?] OF SET [1:?] OF face_surface;
4212	thickness_list : LIST [1:?] OF length_measure;
4213WHERE
4214	WR1 : SIZEOF(thickened_face_list) = SIZEOF(thickness_list);
4215	WR2 : SIZEOF(QUERY(q <* thickness_list | (q = 0))) = 0;
4216END_ENTITY;
4217
4218
4219ENTITY component_2d_location
4220	SUBTYPE OF (context_dependent_shape_representation, shape_representation_relationship, representation_relationship_with_transformation, definitional_representation_relationship);
4221DERIVE
4222	SELF\context_dependent_shape_representation.representation_relation : component_2d_location := SELF;
4223WHERE
4224	WR1 : SELF\representation_relationship.name = 'component 2d location';
4225END_ENTITY;
4226
4227
4228ENTITY component_3d_location
4229	SUBTYPE OF (context_dependent_shape_representation, shape_representation_relationship, representation_relationship_with_transformation, definitional_representation_relationship);
4230DERIVE
4231	SELF\context_dependent_shape_representation.representation_relation : component_3d_location := SELF;
4232WHERE
4233	WR1 : SELF\representation_relationship.name = 'component 3d location';
4234END_ENTITY;
4235
4236
4237ENTITY component_definition
4238	SUBTYPE OF (product_definition, product_definition_relationship);
4239DERIVE
4240	SELF\product_definition_relationship.related_product_definition : component_definition := SELF;
4241WHERE
4242	WR1 : NOT EXISTS(SELF\product_definition_relationship.description);
4243	WR2 : NOT EXISTS(SELF\property_definition.description);
4244	WR3 : SELF\product_definition_relationship.id = SELF\product_definition.id;
4245	WR4 : SELF\product_definition_relationship.name = 'definition usage';
4246	WR5 : NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'PRODUCT_DEFINITION_USAGE' IN TYPEOF(SELF));
4247END_ENTITY;
4248
4249
4250ENTITY component_feature
4251	SUPERTYPE OF (ONEOF (physical_component_feature, laminate_component_feature))
4252	SUBTYPE OF (shape_aspect);
4253	SELF\shape_aspect.of_shape : assembly_component;
4254END_ENTITY;
4255
4256
4257ENTITY component_feature_joint
4258	SUBTYPE OF (shape_aspect_relationship, shape_aspect);
4259	SELF\shape_aspect_relationship.related_shape_aspect : component_feature;
4260	SELF\shape_aspect_relationship.relating_shape_aspect : component_feature;
4261END_ENTITY;
4262
4263
4264ENTITY component_feature_relationship
4265	SUBTYPE OF (shape_aspect_relationship);
4266	SELF\shape_aspect_relationship.related_shape_aspect : component_feature;
4267	SELF\shape_aspect_relationship.relating_shape_aspect : component_feature;
4268WHERE
4269	WR1 : SELF\shape_aspect_relationship.related_shape_aspect :<>:
4270       SELF\shape_aspect_relationship.relating_shape_aspect;
4271END_ENTITY;
4272
4273
4274ENTITY component_functional_terminal
4275	SUBTYPE OF (shape_aspect);
4276END_ENTITY;
4277
4278
4279ENTITY component_functional_unit
4280	SUBTYPE OF (product_definition);
4281END_ENTITY;
4282
4283
4284ENTITY component_material_relationship
4285	SUBTYPE OF (group, property_definition);
4286	SELF\property_definition.definition : physical_unit;
4287END_ENTITY;
4288
4289
4290ENTITY component_material_relationship_assignment
4291	SUBTYPE OF (group_assignment, role_association);
4292	items : SET [1:1] OF component_material_relationship_assignment_item;
4293	SELF\group_assignment.assigned_group : component_material_relationship;
4294DERIVE
4295	SELF\role_association.item_with_role : component_material_relationship_assignment := SELF;
4296END_ENTITY;
4297
4298
4299ENTITY component_mating_constraint_condition
4300	SUBTYPE OF (shape_aspect);
4301UNIQUE
4302	UR1 : SELF\shape_aspect.name, SELF\shape_aspect.of_shape;
4303END_ENTITY;
4304
4305
4306ENTITY component_mounting_feature
4307	SUBTYPE OF (physical_component_feature);
4308END_ENTITY;
4309
4310
4311ENTITY component_part_2d_non_planar_geometric_representation_relationship
4312	SUBTYPE OF (shape_representation_relationship, representation_relationship_with_transformation);
4313END_ENTITY;
4314
4315
4316ENTITY component_terminal
4317	SUPERTYPE OF (ONEOF (physical_component_terminal, laminate_component_join_terminal))
4318	SUBTYPE OF (component_feature);
4319END_ENTITY;
4320
4321
4322ENTITY component_termination_passage
4323	SUBTYPE OF (plated_passage);
4324END_ENTITY;
4325
4326
4327ENTITY component_termination_passage_template
4328	SUBTYPE OF (continuous_template, inter_stratum_feature_template);
4329END_ENTITY;
4330
4331
4332ENTITY composite_array_shape_aspect
4333	SUPERTYPE OF (ONEOF (linear_composite_array_shape_aspect, rectangular_composite_array_shape_aspect))
4334	SUBTYPE OF (composite_shape_aspect);
4335END_ENTITY;
4336
4337
4338ENTITY composite_array_shape_aspect_link
4339	SUBTYPE OF (shape_aspect, shape_aspect_relationship);
4340WHERE
4341	WR1 : SELF\shape_aspect_relationship.related_shape_aspect :<>:
4342       SELF\shape_aspect_relationship.relating_shape_aspect;
4343END_ENTITY;
4344
4345
4346ENTITY composite_assembly_definition
4347	SUBTYPE OF (product_definition);
4348WHERE
4349	WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF,
4350                             'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
4351                             'PRODUCT_DEFINITION_RELATIONSHIP.' +
4352                             'RELATING_PRODUCT_DEFINITION') |
4353                             'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
4354                             'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN
4355                             TYPEOF (pdr))) = 1;
4356END_ENTITY;
4357
4358
4359ENTITY composite_assembly_sequence_definition
4360	SUBTYPE OF (product_definition);
4361WHERE
4362	WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF,
4363                             'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
4364                             'PRODUCT_DEFINITION_RELATIONSHIP.' +
4365                             'RELATING_PRODUCT_DEFINITION') |
4366                             'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
4367                             'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN
4368                             TYPEOF (pdr))) > 0;
4369END_ENTITY;
4370
4371
4372ENTITY composite_assembly_table
4373	SUBTYPE OF (part_laminate_table);
4374END_ENTITY;
4375
4376
4377ENTITY composite_curve
4378	SUBTYPE OF (bounded_curve);
4379	segments : LIST [1:?] OF composite_curve_segment;
4380	self_intersect : LOGICAL;
4381DERIVE
4382	closed_curve : LOGICAL := segments[n_segments].transition <> discontinuous;
4383	n_segments : INTEGER := SIZEOF(segments);
4384WHERE
4385	WR1 : ((NOT closed_curve) AND (SIZEOF(QUERY(temp <* segments |
4386                temp.transition = discontinuous)) = 1)) OR
4387            ((closed_curve) AND (SIZEOF(QUERY(temp <* segments |
4388                temp.transition = discontinuous)) = 0));
4389END_ENTITY;
4390
4391
4392ENTITY composite_curve_on_surface
4393	SUPERTYPE OF (boundary_curve)
4394	SUBTYPE OF (composite_curve);
4395DERIVE
4396	basis_surface : SET [0:2] OF surface := get_basis_surface(SELF);
4397WHERE
4398	WR1 : SIZEOF(basis_surface) > 0;
4399	WR2 : constraints_composite_curve_on_surface(SELF);
4400END_ENTITY;
4401
4402
4403ENTITY composite_curve_segment
4404	SUBTYPE OF (founded_item);
4405	transition : transition_code;
4406	same_sense : BOOLEAN;
4407	parent_curve : curve;
4408INVERSE
4409	using_curves: BAG [1:?] OF composite_curve FOR segments;
4410WHERE
4411	WR1 : ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.BOUNDED_CURVE' IN TYPEOF(parent_curve));
4412END_ENTITY;
4413
4414
4415ENTITY composite_group_shape_aspect
4416	SUBTYPE OF (composite_shape_aspect);
4417END_ENTITY;
4418
4419
4420ENTITY composite_material_designation
4421	SUBTYPE OF (material_designation);
4422END_ENTITY;
4423
4424
4425ENTITY composite_shape_aspect
4426	SUBTYPE OF (shape_aspect);
4427INVERSE
4428	component_relationships: SET [2:?] OF shape_aspect_relationship FOR relating_shape_aspect;
4429END_ENTITY;
4430
4431
4432ENTITY composite_sheet_representation
4433	SUBTYPE OF (shape_representation);
4434WHERE
4435	WR1 : SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
4436        'GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION',
4437        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
4438        'MANIFOLD_SURFACE_SHAPE_REPRESENTATION'] * TYPEOF (SELF)) = 1;
4439END_ENTITY;
4440
4441
4442ENTITY composite_signal_property_relationship
4443	SUBTYPE OF (property_definition, property_definition_relationship);
4444WHERE
4445	WR1 : SELF\property_definition_relationship.related_property_definition.definition :<>:
4446       SELF\property_definition_relationship.relating_property_definition.definition;
4447END_ENTITY;
4448
4449
4450ENTITY composite_text
4451	SUBTYPE OF (geometric_representation_item);
4452	collected_text : SET [2:?] OF text_or_character;
4453WHERE
4454	WR1 : acyclic_composite_text( SELF, SELF.collected_text);
4455END_ENTITY;
4456
4457
4458ENTITY composite_text_with_associated_curves
4459	SUBTYPE OF (composite_text);
4460	associated_curves : SET [1:?] OF curve;
4461END_ENTITY;
4462
4463
4464ENTITY composite_text_with_blanking_box
4465	SUBTYPE OF (composite_text);
4466	blanking : planar_box;
4467END_ENTITY;
4468
4469
4470ENTITY composite_text_with_delineation
4471	SUBTYPE OF (composite_text);
4472	delineation : text_delineation;
4473END_ENTITY;
4474
4475
4476ENTITY composite_text_with_extent
4477	SUBTYPE OF (composite_text);
4478	extent : planar_extent;
4479END_ENTITY;
4480
4481
4482ENTITY composite_unit_shape_aspect
4483	SUBTYPE OF (composite_shape_aspect);
4484END_ENTITY;
4485
4486
4487ENTITY compound_representation_item
4488	SUPERTYPE OF (ONEOF (point_and_vector, point_path, row_representation_item, table_representation_item))
4489	SUBTYPE OF (representation_item);
4490	item_element : compound_item_definition;
4491END_ENTITY;
4492
4493
4494ENTITY compound_shape_representation
4495	SUBTYPE OF (shape_representation);
4496WHERE
4497	WR1 : ( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'GEOMETRIC_REPRESENTATION_CONTEXT'
4498        IN TYPEOF ( SELF.context_of_items ) ) AND (
4499        SELF.context_of_items\
4500        geometric_representation_context.coordinate_space_dimension =3 );
4501	WR2 : SIZEOF ( QUERY ( cbsr_i <* SELF.items | SIZEOF (
4502        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'EDGE_BASED_WIREFRAME_MODEL' ,
4503         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'FACE_BASED_SURFACE_MODEL' ,
4504         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'MAPPED_ITEM' , 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
4505         'AXIS2_PLACEMENT_3D']* TYPEOF ( cbsr_i ) ) <>1 ) ) =0;
4506	WR3 : SIZEOF ( QUERY ( cbsr_i <* SELF.items | SIZEOF (
4507        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'EDGE_BASED_WIREFRAME_MODEL' ,
4508         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'FACE_BASED_SURFACE_MODEL' ,
4509         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'MAPPED_ITEM']* TYPEOF ( cbsr_i ) ) =1 ) ) >0;
4510	WR4 : SIZEOF ( QUERY ( cbsr_i <* SELF.items | (
4511         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'MAPPED_ITEM' IN TYPEOF ( cbsr_i ) )
4512         AND ( SIZEOF ( ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
4513         'COMPOUND_SHAPE_REPRESENTATION' , 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
4514         'EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION' ,
4515         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
4516         'NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION']* TYPEOF (
4517         cbsr_i\ mapped_item.mapping_source ) ) <>1 ) ) ) =0;
4518END_ENTITY;
4519
4520
4521ENTITY concentricity_tolerance
4522	SUBTYPE OF (geometric_tolerance_with_datum_reference);
4523WHERE
4524	WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) = 1;
4525END_ENTITY;
4526
4527
4528ENTITY concept_feature_operator;
4529	name : label;
4530	description : OPTIONAL text;
4531END_ENTITY;
4532
4533
4534ENTITY concept_feature_relationship;
4535	name : label;
4536	description : OPTIONAL text;
4537	relating_product_concept_feature : product_concept_feature;
4538	related_product_concept_feature : product_concept_feature;
4539END_ENTITY;
4540
4541
4542ENTITY concept_feature_relationship_with_condition
4543	SUBTYPE OF (concept_feature_relationship);
4544	conditional_operator : concept_feature_operator;
4545END_ENTITY;
4546
4547
4548ENTITY conditional_concept_feature
4549	SUBTYPE OF (product_concept_feature);
4550	condition : concept_feature_relationship_with_condition;
4551END_ENTITY;
4552
4553
4554ENTITY conductance_measure_with_unit
4555	SUBTYPE OF (measure_with_unit);
4556WHERE
4557	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONDUCTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
4558END_ENTITY;
4559
4560
4561ENTITY conductance_unit
4562	SUBTYPE OF (derived_unit);
4563WHERE
4564	WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.siemens);
4565END_ENTITY;
4566
4567
4568ENTITY conductive_interconnect_element
4569	ABSTRACT SUPERTYPE OF (ONEOF (unrouted_conductive_interconnect_element, conductive_interconnect_element_with_pre_defined_transitions))
4570	SUBTYPE OF (stratum_feature_template_component);
4571END_ENTITY;
4572
4573
4574ENTITY conductive_interconnect_element_terminal_link
4575	SUBTYPE OF (shape_aspect, shape_aspect_relationship);
4576	SELF\shape_aspect_relationship.related_shape_aspect : laminate_component_feature;
4577	SELF\shape_aspect_relationship.relating_shape_aspect : laminate_component_feature;
4578WHERE
4579	WR1 : SELF\shape_aspect_relationship.related_shape_aspect :<>:
4580        SELF\shape_aspect_relationship.relating_shape_aspect;
4581END_ENTITY;
4582
4583
4584ENTITY conductive_interconnect_element_with_pre_defined_transitions
4585	SUBTYPE OF (conductive_interconnect_element, item_identified_representation_usage);
4586DERIVE
4587	SELF\item_identified_representation_usage.definition : property_definition := SELF;
4588END_ENTITY;
4589
4590
4591ENTITY configurable_item
4592	SUBTYPE OF (configuration_item);
4593	item_concept_feature : SET [1:?] OF product_concept_feature_association;
4594END_ENTITY;
4595
4596
4597ENTITY configuration_design;
4598	configuration : configuration_item;
4599	design : configuration_design_item;
4600DERIVE
4601	description : text := get_description_value (SELF);
4602	name : label := get_name_value (SELF);
4603UNIQUE
4604	UR1 : configuration, design;
4605WHERE
4606	WR1 : SIZEOF (USEDIN (SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
4607                             'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
4608	WR2 : SIZEOF (USEDIN (SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
4609                             'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
4610END_ENTITY;
4611
4612
4613ENTITY configuration_effectivity
4614	SUBTYPE OF (product_definition_effectivity);
4615	configuration : configuration_design;
4616UNIQUE
4617	UR1 : configuration, SELF\product_definition_effectivity.usage, SELF\effectivity.id;
4618WHERE
4619	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_DEFINITION_USAGE' IN
4620        TYPEOF (SELF\product_definition_effectivity.usage);
4621END_ENTITY;
4622
4623
4624ENTITY configuration_item;
4625	id : identifier;
4626	name : label;
4627	description : OPTIONAL text;
4628	item_concept : product_concept;
4629	purpose : OPTIONAL label;
4630END_ENTITY;
4631
4632
4633ENTITY configuration_item_hierarchical_relationship
4634	SUBTYPE OF (configuration_item_relationship);
4635END_ENTITY;
4636
4637
4638ENTITY configuration_item_relationship;
4639	name : label;
4640	description : OPTIONAL text;
4641	relating_configuration_item : configuration_item;
4642	related_configuration_item : configuration_item;
4643END_ENTITY;
4644
4645
4646ENTITY configuration_item_revision_sequence
4647	SUBTYPE OF (configuration_item_relationship);
4648END_ENTITY;
4649
4650
4651ENTITY configured_effectivity_assignment
4652	SUBTYPE OF (effectivity_assignment);
4653	items : SET [1:?] OF configured_effectivity_item;
4654WHERE
4655	WR1 : (SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EFFECTIVITY'] * TYPEOF(SELF.assigned_effectivity) ) = 1)
4656	AND (SELF.assigned_effectivity.id = 'configuration validity');
4657	WR2 : SIZEOF(SELF.items) = 1;
4658	WR3 : SIZEOF( QUERY( i <* SELF.items | NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(i))
4659	OR NOT (i\product_definition.frame_of_reference.name IN ['conceptual definition','part occurrence', 'functional definition','alternative definition']) )) = 0;
4660	WR4 : SELF.role.name IN ['design', 'usage'];
4661	WR5 : (SELF.role.name <> 'design')
4662	OR (SIZEOF( QUERY( i <* SELF.items | ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(i)) AND (i\product_definition.frame_of_reference.name = 'part occurrence') )) = 0);
4663	WR6 : (SELF.role.name <> 'usage') OR (SIZEOF( QUERY( i <* SELF.items | ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(i)) AND (i\product_definition.frame_of_reference.name = 'conceptual definition') )) = 0);
4664	WR7 : SELF.role.description IN ['exception', 'inherited', 'local'];
4665	WR8 : SIZEOF( QUERY( x <* USEDIN(SELF,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'EFFECTIVITY_CONTEXT_ASSIGNMENT.ASSIGNED_EFFECTIVITY_ASSIGNMENT') | 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONFIGURED_EFFECTIVITY_CONTEXT_ASSIGNMENT' IN TYPEOF(x) )) = 1;
4666END_ENTITY;
4667
4668
4669ENTITY configured_effectivity_context_assignment
4670	SUBTYPE OF (effectivity_context_assignment);
4671	items : SET [1:?] OF configured_effectivity_context_item;
4672	SELF\effectivity_context_assignment.assigned_effectivity_assignment : configured_effectivity_assignment;
4673WHERE
4674	WR1 : SIZEOF(SELF.items) = 1;
4675END_ENTITY;
4676
4677
4678ENTITY conic
4679	SUPERTYPE OF (ONEOF (circle, ellipse, hyperbola, parabola))
4680	SUBTYPE OF (curve);
4681	position : axis2_placement;
4682END_ENTITY;
4683
4684
4685ENTITY conical_stepped_hole_transition
4686	SUBTYPE OF (geometric_representation_item);
4687	transition_number : positive_integer;
4688	cone_apex_angle : plane_angle_measure;
4689	cone_base_radius : positive_length_measure;
4690END_ENTITY;
4691
4692
4693ENTITY conical_surface
4694	SUBTYPE OF (elementary_surface);
4695	radius : length_measure;
4696	semi_angle : plane_angle_measure;
4697WHERE
4698	WR1 : radius >= 0.0;
4699END_ENTITY;
4700
4701
4702ENTITY connected_area_component
4703	SUBTYPE OF (area_component);
4704END_ENTITY;
4705
4706
4707ENTITY connected_edge_set
4708	SUBTYPE OF (topological_representation_item);
4709	ces_edges : SET [1:?] OF edge;
4710END_ENTITY;
4711
4712
4713ENTITY connected_face_set
4714	SUPERTYPE OF (ONEOF (closed_shell, open_shell))
4715	SUBTYPE OF (topological_representation_item);
4716	cfs_faces : SET [1:?] OF face;
4717END_ENTITY;
4718
4719
4720ENTITY connected_face_sub_set
4721	SUBTYPE OF (connected_face_set);
4722	parent_face_set : connected_face_set;
4723END_ENTITY;
4724
4725
4726ENTITY connection_zone_based_assembly_joint
4727	SUBTYPE OF (assembly_joint);
4728END_ENTITY;
4729
4730
4731ENTITY connection_zone_based_fabrication_joint
4732	SUBTYPE OF (fabrication_joint);
4733END_ENTITY;
4734
4735
4736ENTITY connection_zone_interface_plane_relationship
4737	SUBTYPE OF (shape_aspect, shape_aspect_relationship);
4738UNIQUE
4739	UR1 : SELF\shape_aspect_relationship.name;
4740END_ENTITY;
4741
4742
4743ENTITY connection_zone_map_identification
4744	SUBTYPE OF (shape_aspect, representation_relationship);
4745	SELF\representation_relationship.rep_1 : usage_view_connection_zone_terminal_shape_relationship;
4746	SELF\representation_relationship.rep_2 : usage_view_connection_zone_terminal_shape_relationship;
4747WHERE
4748	WR1 : SELF\representation_relationship.rep_2 :<>:
4749        SELF\representation_relationship.rep_1;
4750END_ENTITY;
4751
4752
4753ENTITY connector_based_interconnect_definition
4754	SUBTYPE OF (property_definition);
4755	SELF\property_definition.definition : physical_unit_interconnect_definition;
4756UNIQUE
4757	UR1 : SELF\property_definition.name, definition;
4758END_ENTITY;
4759
4760
4761ENTITY constructive_geometry_representation
4762	SUBTYPE OF (representation);
4763WHERE
4764	WR1 : ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(SELF.context_of_items)) AND ({2 <= SELF.context_of_items\geometric_representation_context. coordinate_space_dimension <= 3});
4765	WR2 : SIZEOF( QUERY( cgr_i <* SELF.items | SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PLACEMENT', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE_SURFACE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_POINT'] * TYPEOF(cgr_i)) <> 1 )) = 0;
4766	WR3 : SIZEOF( USEDIN( SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.REP_2') ) > 0;
4767	WR4 : SIZEOF( USEDIN( SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'REPRESENTATION_MAP.MAPPED_REPRESENTATION') ) = 0;
4768END_ENTITY;
4769
4770
4771ENTITY constructive_geometry_representation_relationship
4772	SUBTYPE OF (representation_relationship);
4773	SELF\representation_relationship.rep_1 : constructive_geometry_representation_or_shape_represenation;
4774	SELF\representation_relationship.rep_2 : constructive_geometry_representation;
4775WHERE
4776	WR1 : (SELF.rep_1.context_of_items :=: SELF.rep_2.context_of_items) AND ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(SELF.rep_1.context_of_items));
4777	WR2 : NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION' IN TYPEOF(SELF));
4778END_ENTITY;
4779
4780
4781ENTITY contact_ratio_representation
4782	SUBTYPE OF (representation);
4783WHERE
4784	WR1 : ( SIZEOF ( SELF.items ) =1 ) AND ( SIZEOF ( QUERY ( i <*
4785        SELF.items | ( SIZEOF ( ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
4786        'MEASURE_REPRESENTATION_ITEM' , 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
4787        'VALUE_RANGE']* TYPEOF ( i ) ) =1 ) AND ( i.name =
4788        'ratio value' ) ) ) =1 );
4789	WR2 : ( SIZEOF ( QUERY ( pdr <* USEDIN ( SELF ,
4790        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+
4791        'USED_REPRESENTATION' ) | pdr. name =
4792        'contact ratio reference' ) ) =1 ) AND ( SIZEOF ( QUERY (
4793        pdr <* USEDIN ( SELF ,
4794        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+
4795        'USED_REPRESENTATION' ) | ( pdr.name =
4796        'contact ratio reference' ) AND ( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
4797        'PRODUCT_DEFINITION' IN TYPEOF ( pdr\property_definition_representation.definition\property_definition.definition ) ) ) ) =1 );
4798	WR3 : ( SIZEOF ( USEDIN ( SELF ,
4799        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+
4800        'USED_REPRESENTATION' ) ) =1 ) AND ( SIZEOF ( QUERY ( pdr
4801        <* USEDIN ( SELF ,
4802        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+
4803        'USED_REPRESENTATION' ) | SIZEOF ( QUERY ( gpa <* USEDIN (
4804        pdr.definition ,
4805        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'GENERAL_PROPERTY_ASSOCIATION.'+
4806        'DERIVED_DEFINITION' ) | ( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
4807        'GENERAL_PROPERTY' IN TYPEOF ( gpa.base_definition ) ) AND
4808        ( gpa.base_definition.name ='surface_condition' ) ) ) =1 )
4809        ) =1 );
4810END_ENTITY;
4811
4812
4813ENTITY contact_size_dependent_land
4814	SUBTYPE OF (land);
4815END_ENTITY;
4816
4817
4818ENTITY context_dependent_invisibility
4819	SUBTYPE OF (invisibility);
4820	presentation_context : invisibility_context;
4821END_ENTITY;
4822
4823
4824ENTITY context_dependent_over_riding_styled_item
4825	SUBTYPE OF (over_riding_styled_item);
4826	style_context : LIST [1:?] OF style_context_select;
4827WHERE
4828	WR1 : (SIZEOF(QUERY(sc <* SELF.style_context | 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(sc)))= 1) OR
4829(SIZEOF(QUERY(sc <* SELF.style_context |
4830     ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM' IN TYPEOF(sc))
4831  OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.REPRESENTATION_RELATIONSHIP' IN TYPEOF(sc)) ))
4832  = SIZEOF(style_context));
4833END_ENTITY;
4834
4835
4836ENTITY context_dependent_shape_representation;
4837	representation_relation : shape_representation_relationship;
4838	represented_product_relation : product_definition_shape;
4839DERIVE
4840	description : text := get_description_value(SELF);
4841	name : label := get_name_value(SELF);
4842WHERE
4843	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP' IN TYPEOF(SELF.represented_product_relation.definition);
4844	WR2 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
4845	WR3 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
4846END_ENTITY;
4847
4848
4849ENTITY context_dependent_unit
4850	SUBTYPE OF (named_unit);
4851	name : label;
4852END_ENTITY;
4853
4854
4855ENTITY continuous_template
4856	SUBTYPE OF (geometric_template);
4857END_ENTITY;
4858
4859
4860ENTITY contract;
4861	name : label;
4862	purpose : text;
4863	kind : contract_type;
4864END_ENTITY;
4865
4866
4867ENTITY contract_assignment
4868	ABSTRACT SUPERTYPE;
4869	assigned_contract : contract;
4870DERIVE
4871	role : object_role := get_role(SELF);
4872WHERE
4873	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
4874END_ENTITY;
4875
4876
4877ENTITY contract_relationship;
4878	id : identifier;
4879	name : label;
4880	description : OPTIONAL text;
4881	relating_contract : contract;
4882	related_contract : contract;
4883END_ENTITY;
4884
4885
4886ENTITY contract_type;
4887	description : label;
4888END_ENTITY;
4889
4890
4891ENTITY conversion_based_unit
4892	SUBTYPE OF (named_unit);
4893	name : label;
4894	conversion_factor : measure_with_unit;
4895WHERE
4896	WR1 : SELF\named_unit.dimensions = derive_dimensional_exponents(conversion_factor\measure_with_unit.unit_component);
4897END_ENTITY;
4898
4899
4900ENTITY coordinated_geometric_relationship_with_2d_3d_placement_transformation
4901	SUBTYPE OF (shape_representation_relationship, representation_relationship_with_transformation);
4902	SELF\representation_relationship_with_transformation.transformation_operator : axis_placement_2d_3d_mapping;
4903WHERE
4904	WR1 : acyclic_representation_relationship(SELF,
4905       [SELF\representation_relationship.rep_2],
4906        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'REPRESENTATION');
4907	WR2 : NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DEFINITIONAL_REPRESENTATION_RELATIONSHIP' IN TYPEOF(SELF));
4908END_ENTITY;
4909
4910
4911ENTITY coordinated_universal_time_offset;
4912	hour_offset : INTEGER;
4913	minute_offset : OPTIONAL INTEGER;
4914	sense : ahead_or_behind;
4915DERIVE
4916	actual_minute_offset : INTEGER := NVL(minute_offset,0);
4917WHERE
4918	WR1 : { 0 <= hour_offset < 24 };
4919	WR2 : { 0 <= actual_minute_offset <= 59 };
4920	WR3 : NOT (((hour_offset <> 0) OR (actual_minute_offset <>0)) AND (sense = exact));
4921END_ENTITY;
4922
4923
4924ENTITY copy_stratum_technology_occurrence_relationship
4925	SUBTYPE OF (derived_stratum_technology_occurrence_relationship);
4926END_ENTITY;
4927
4928
4929ENTITY counterbore_passage_template
4930	SUBTYPE OF (unsupported_passage_template);
4931END_ENTITY;
4932
4933
4934ENTITY countersunk_passage_template
4935	SUBTYPE OF (unsupported_passage_template);
4936END_ENTITY;
4937
4938
4939ENTITY csg_2d_shape_representation
4940	SUBTYPE OF (shape_representation);
4941	SELF\representation.items : SET [1:?] OF csg_2d_shape_select;
4942WHERE
4943	WR1 : SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 2;
4944	WR2 : SIZEOF(QUERY ( it <* SELF.items |
4945       (SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CSG_SOLID']
4946  	   * TYPEOF(it)) = 1)
4947  	   OR
4948	   (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM'
4949	   IN TYPEOF(it)) AND
4950	   ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
4951	   'CSG_2D_SHAPE_REPRESENTATION'
4952	   IN TYPEOF(it\mapped_item.mapping_source.mapped_representation)))
4953       )) >= 1;
4954	WR3 : SIZEOF(QUERY ( it <* SELF.items |
4955       (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM'
4956       IN TYPEOF(it)) AND (NOT ((
4957       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
4958       'CSG_2D_SHAPE_REPRESENTATION')
4959       IN TYPEOF(it\mapped_item.mapping_source.mapped_representation)))) )) = 0;
4960END_ENTITY;
4961
4962
4963ENTITY csg_primitive_solid_2d
4964	SUBTYPE OF (csg_solid_2d);
4965	SELF\csg_solid.tree_root_expression : primitive_2d;
4966END_ENTITY;
4967
4968
4969ENTITY csg_shape_representation
4970	SUBTYPE OF (shape_representation);
4971WHERE
4972	WR1 : SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3;
4973	WR2 : SIZEOF (
4974QUERY ( it <* SELF.items| ( SIZEOF ([ 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CSG_SOLID', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AXIS2_PLACEMENT_3D', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SOLID_REPLICA', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.REVOLVED_FACE_SOLID', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EXTRUDED_FACE_SOLID' ] * TYPEOF (it)) <> 1) )) = 0;
4975	WR3 : SIZEOF (
4976QUERY ( mi <*
4977QUERY ( it <* SELF.items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CSG_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0;
4978	WR4 : SIZEOF (
4979QUERY ( sr <*
4980QUERY ( it <* SELF.items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SOLID_REPLICA' IN TYPEOF (it)) )| ( SIZEOF ([ 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CSG_SOLID', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.REVOLVED_FACE_SOLID', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EXTRUDED_FACE_SOLID' ] * TYPEOF (sr\solid_replica.parent_solid)) = 0) )) = 0;
4981	WR5 : SIZEOF (
4982QUERY ( it <* SELF.items| NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF (it)) )) > 0;
4983END_ENTITY;
4984
4985
4986ENTITY csg_solid
4987	SUBTYPE OF (solid_model);
4988	tree_root_expression : csg_select;
4989END_ENTITY;
4990
4991
4992ENTITY csg_solid_2d
4993	SUBTYPE OF (csg_solid);
4994	SELF\csg_solid.tree_root_expression : csg_select_2d;
4995WHERE
4996	WR1 : valid_csg_2d_primitives(SELF);
4997END_ENTITY;
4998
4999
5000ENTITY currency
5001	ABSTRACT SUPERTYPE OF (ONEOF (externally_defined_currency, iso4217_currency))
5002	SUBTYPE OF (context_dependent_unit);
5003WHERE
5004	WR1 : ((SELF\named_unit.dimensions.length_exponent = 0.0) AND
5005           (SELF\named_unit.dimensions.mass_exponent = 0.0) AND
5006           (SELF\named_unit.dimensions.time_exponent = 0.0) AND
5007           (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND
5008           (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND
5009           (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND
5010           (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0));
5011END_ENTITY;
5012
5013
5014ENTITY currency_measure_with_unit
5015	SUBTYPE OF (measure_with_unit);
5016	SELF\measure_with_unit.unit_component : currency;
5017END_ENTITY;
5018
5019
5020ENTITY current_design_assignment
5021	SUBTYPE OF (design_object_management_assignment);
5022END_ENTITY;
5023
5024
5025ENTITY current_design_object_assignment
5026	SUBTYPE OF (design_object_management_assignment);
5027END_ENTITY;
5028
5029
5030ENTITY curve
5031	SUPERTYPE OF (ONEOF (line, conic, pcurve, surface_curve, offset_curve_2d, offset_curve_3d, curve_replica))
5032	SUBTYPE OF (geometric_representation_item);
5033END_ENTITY;
5034
5035
5036ENTITY curve_bounded_surface
5037	SUBTYPE OF (bounded_surface);
5038	basis_surface : surface;
5039	boundaries : SET [1:?] OF boundary_curve;
5040	implicit_outer : BOOLEAN;
5041WHERE
5042	WR1 : (NOT implicit_outer) OR
5043         (SIZEOF (QUERY (temp <* boundaries |
5044           'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.OUTER_BOUNDARY_CURVE' IN TYPEOF(temp))) = 0);
5045	WR2 : (NOT(implicit_outer)) OR
5046                ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.BOUNDED_SURFACE' IN TYPEOF(basis_surface));
5047	WR3 : SIZEOF(QUERY(temp <* boundaries |
5048                  'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.OUTER_BOUNDARY_CURVE' IN
5049                                         TYPEOF(temp))) <= 1;
5050	WR4 : SIZEOF(QUERY(temp <* boundaries |
5051            (temp\composite_curve_on_surface.basis_surface [1] <>
5052                                         SELF.basis_surface))) = 0;
5053END_ENTITY;
5054
5055
5056ENTITY curve_dimension
5057	SUBTYPE OF (dimension_curve_directed_callout);
5058END_ENTITY;
5059
5060
5061ENTITY curve_replica
5062	SUBTYPE OF (curve);
5063	parent_curve : curve;
5064	transformation : cartesian_transformation_operator;
5065WHERE
5066	WR1 : transformation.dim = parent_curve.dim;
5067	WR2 : acyclic_curve_replica (SELF, parent_curve);
5068END_ENTITY;
5069
5070
5071ENTITY curve_style
5072	SUBTYPE OF (founded_item);
5073	name : label;
5074	curve_font : curve_font_or_scaled_curve_font_select;
5075	curve_width : size_select;
5076	curve_colour : colour;
5077END_ENTITY;
5078
5079
5080ENTITY curve_style_font
5081	SUBTYPE OF (founded_item);
5082	name : label;
5083	pattern_list : LIST [1:?] OF curve_style_font_pattern;
5084END_ENTITY;
5085
5086
5087ENTITY curve_style_font_and_scaling
5088	SUBTYPE OF (founded_item);
5089	name : label;
5090	curve_font : curve_style_font_select;
5091	curve_font_scaling : REAL;
5092END_ENTITY;
5093
5094
5095ENTITY curve_style_font_pattern
5096	SUBTYPE OF (founded_item);
5097	visible_segment_length : positive_length_measure;
5098	invisible_segment_length : positive_length_measure;
5099END_ENTITY;
5100
5101
5102ENTITY curve_style_parameters_representation
5103	SUBTYPE OF (representation);
5104END_ENTITY;
5105
5106
5107ENTITY curve_style_parameters_with_ends
5108	SUBTYPE OF (curve_style_parameters_representation);
5109END_ENTITY;
5110
5111
5112ENTITY curve_style_rendering;
5113	rendering_method : shading_curve_method;
5114	rendering_properties : surface_rendering_properties;
5115END_ENTITY;
5116
5117
5118ENTITY curve_swept_solid_shape_representation
5119	SUBTYPE OF (shape_representation);
5120WHERE
5121	WR1 : SIZEOF (QUERY (it <* SELF.items |
5122          NOT (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SWEPT_AREA_SOLID',
5123                'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SWEPT_DISK_SOLID',
5124                'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM',
5125                'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AXIS2_PLACEMENT_3D'] *
5126                   TYPEOF(it)) = 1))) = 0;
5127	WR2 : SIZEOF (QUERY (it <* SELF.items |
5128         SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SWEPT_AREA_SOLID',
5129                'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SWEPT_DISK_SOLID',
5130          'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM'] * TYPEOF(it)) =1 )) > 0;
5131	WR3 : SIZEOF (QUERY (mi <*  QUERY (it <* items |
5132                 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)) |
5133   NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_SWEPT_SOLID_SHAPE_REPRESENTATION' IN
5134             TYPEOF(mi\mapped_item.mapping_source.
5135                           mapped_representation)))) = 0;
5136	WR4 : SIZEOF (QUERY (scsas <* QUERY (it <* SELF.items |
5137        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_CURVE_SWEPT_AREA_SOLID' IN
5138              TYPEOF(it)) |
5139          NOT(('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_CURVE' IN
5140                 TYPEOF(scsas\surface_curve_swept_area_solid.directrix)) OR
5141                   ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PCURVE' IN
5142                   TYPEOF(scsas\surface_curve_swept_area_solid.directrix))))) = 0;
5143END_ENTITY;
5144
5145
5146ENTITY cutout
5147	SUPERTYPE OF (ONEOF (physical_connectivity_interrupting_cutout, plated_cutout, partially_plated_cutout))
5148	SUBTYPE OF (inter_stratum_feature);
5149END_ENTITY;
5150
5151
5152ENTITY cutout_edge_segment
5153	SUPERTYPE OF (plated_cutout_edge_segment)
5154	SUBTYPE OF (inter_stratum_feature, shape_aspect_relationship);
5155	SELF\shape_aspect_relationship.related_shape_aspect : edge_segment_vertex;
5156	SELF\shape_aspect_relationship.relating_shape_aspect : edge_segment_vertex;
5157WHERE
5158	WR1 : SELF\shape_aspect_relationship.relating_shape_aspect :<>:
5159        SELF\shape_aspect_relationship.related_shape_aspect;
5160END_ENTITY;
5161
5162
5163ENTITY cylindrical_surface
5164	SUBTYPE OF (elementary_surface);
5165	radius : positive_length_measure;
5166END_ENTITY;
5167
5168
5169ENTITY cylindricity_tolerance
5170	SUBTYPE OF (geometric_tolerance);
5171WHERE
5172	WR1 : NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF));
5173END_ENTITY;
5174
5175
5176ENTITY data_environment;
5177	name : label;
5178	description : text;
5179	elements : SET [1:?] OF property_definition_representation;
5180END_ENTITY;
5181
5182
5183ENTITY date
5184	SUPERTYPE OF (ONEOF (calendar_date, ordinal_date, week_of_year_and_day_date, year_month));
5185	year_component : year_number;
5186END_ENTITY;
5187
5188
5189ENTITY date_and_time;
5190	date_component : date;
5191	time_component : local_time;
5192END_ENTITY;
5193
5194
5195ENTITY date_and_time_assignment
5196	ABSTRACT SUPERTYPE;
5197	assigned_date_and_time : date_and_time;
5198	role : date_time_role;
5199END_ENTITY;
5200
5201
5202ENTITY date_assignment
5203	ABSTRACT SUPERTYPE;
5204	assigned_date : date;
5205	role : date_role;
5206END_ENTITY;
5207
5208
5209ENTITY date_representation_item
5210	SUBTYPE OF (representation_item, date);
5211END_ENTITY;
5212
5213
5214ENTITY date_role;
5215	name : label;
5216DERIVE
5217	description : text := get_description_value (SELF);
5218WHERE
5219	WR1 : SIZEOF (USEDIN (SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
5220END_ENTITY;
5221
5222
5223ENTITY date_time_representation_item
5224	SUBTYPE OF (representation_item, date_and_time);
5225END_ENTITY;
5226
5227
5228ENTITY date_time_role;
5229	name : label;
5230DERIVE
5231	description : text := get_description_value (SELF);
5232WHERE
5233	WR1 : SIZEOF (USEDIN (SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
5234END_ENTITY;
5235
5236
5237ENTITY dated_effectivity
5238	SUBTYPE OF (effectivity);
5239	effectivity_end_date : OPTIONAL date_time_or_event_occurrence;
5240	effectivity_start_date : date_time_or_event_occurrence;
5241END_ENTITY;
5242
5243
5244ENTITY datum
5245	SUBTYPE OF (shape_aspect);
5246	identification : identifier;
5247INVERSE
5248	established_by_relationships: SET [1:?] OF shape_aspect_relationship FOR related_shape_aspect;
5249WHERE
5250	WR1 : ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMMON_DATUM' IN TYPEOF(SELF)) XOR
5251       ((SIZEOF(QUERY(x <* SELF\datum.established_by_relationships |
5252       ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DATUM_FEATURE' IN TYPEOF(x\shape_aspect_relationship.relating_shape_aspect)))) = 1) XOR
5253       (SIZEOF(QUERY(x <* SELF\datum.established_by_relationships |
5254       ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DATUM_TARGET' IN TYPEOF(x\shape_aspect_relationship.relating_shape_aspect)))) >= 1));
5255END_ENTITY;
5256
5257
5258ENTITY datum_difference
5259	SUBTYPE OF (shape_aspect, shape_aspect_relationship);
5260	SELF\shape_aspect_relationship.related_shape_aspect : datum;
5261	SELF\shape_aspect_relationship.relating_shape_aspect : datum;
5262WHERE
5263	WR1 : SELF\shape_aspect_relationship.relating_shape_aspect :<>:
5264        SELF\shape_aspect_relationship.related_shape_aspect;
5265END_ENTITY;
5266
5267
5268ENTITY datum_difference_based_characteristic
5269	SUBTYPE OF (representation_item);
5270END_ENTITY;
5271
5272
5273ENTITY datum_difference_based_model_parameter
5274	SUBTYPE OF (model_parameter);
5275END_ENTITY;
5276
5277
5278ENTITY datum_difference_functional_unit_usage_view_terminal_assignment
5279	SUBTYPE OF (shape_aspect_relationship);
5280	SELF\shape_aspect_relationship.related_shape_aspect : functional_unit_terminal_definition;
5281	SELF\shape_aspect_relationship.relating_shape_aspect : datum_difference;
5282END_ENTITY;
5283
5284
5285ENTITY datum_feature
5286	SUBTYPE OF (shape_aspect);
5287INVERSE
5288	feature_basis_relationship: SET [1:?] OF shape_aspect_relationship FOR relating_shape_aspect;
5289WHERE
5290	WR1 : SIZEOF(QUERY(sar <* SELF\datum_feature.feature_basis_relationship
5291       | ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DATUM' IN TYPEOF
5292       (sar\shape_aspect_relationship.related_shape_aspect)))) = 1;
5293	WR2 : SELF\shape_aspect.product_definitional = TRUE;
5294END_ENTITY;
5295
5296
5297ENTITY datum_feature_callout
5298	SUBTYPE OF (draughting_callout);
5299END_ENTITY;
5300
5301
5302ENTITY datum_reference;
5303	precedence : INTEGER;
5304	referenced_datum : datum;
5305WHERE
5306	WR1 : precedence > 0;
5307END_ENTITY;
5308
5309
5310ENTITY datum_target
5311	SUBTYPE OF (shape_aspect);
5312	target_id : identifier;
5313INVERSE
5314	target_basis_relationship: SET [1:?] OF shape_aspect_relationship FOR relating_shape_aspect;
5315WHERE
5316	WR1 : SIZEOF(QUERY(sar <* SELF\datum_target.target_basis_relationship
5317       | ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DATUM' IN TYPEOF
5318       (sar\shape_aspect_relationship.related_shape_aspect)))) = 1;
5319	WR2 : SELF\shape_aspect.product_definitional = TRUE;
5320END_ENTITY;
5321
5322
5323ENTITY datum_target_callout
5324	SUBTYPE OF (draughting_callout);
5325END_ENTITY;
5326
5327
5328ENTITY default_attachment_size_based_land_physical_template
5329	SUBTYPE OF (land_physical_template, shape_aspect);
5330DERIVE
5331	SELF\shape_aspect.of_shape : default_attachment_size_based_land_physical_template := SELF;
5332END_ENTITY;
5333
5334
5335ENTITY default_passage_based_land_physical_template
5336	ABSTRACT SUPERTYPE OF (ONEOF (default_plated_passage_based_land_physical_template, default_unsupported_passage_based_land_physical_template))
5337	SUBTYPE OF (land_physical_template);
5338END_ENTITY;
5339
5340
5341ENTITY default_plated_passage_based_land_physical_template
5342	SUBTYPE OF (default_passage_based_land_physical_template);
5343END_ENTITY;
5344
5345
5346ENTITY default_tolerance_table
5347	SUBTYPE OF (representation);
5348WHERE
5349	WR1 : SIZEOF( QUERY( i <* SELF.items | NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DEFAULT_TOLERANCE_TABLE_CELL' IN TYPEOF(i)) )) = 0;
5350	WR2 : (SIZEOF( QUERY( rr <* USEDIN(SELF,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.REP_1') | rr.name < 'general tolerance definition' )) = 0) AND (SIZEOF( QUERY( rr <* USEDIN(SELF,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.REP_1') | (rr.name = 'general tolerance definition') AND (rr.rep_2.name < 'default tolerance') )) = 0) AND (SIZEOF( USEDIN(SELF,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.REP_2') ) = 0);
5351END_ENTITY;
5352
5353
5354ENTITY default_tolerance_table_cell
5355	SUBTYPE OF (compound_representation_item);
5356WHERE
5357	WR1 : SIZEOF(QUERY( x <* USEDIN(SELF,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'REPRESENTATION.ITEMS') | 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'DEFAULT_TOLERANCE_TABLE' IN TYPEOF(x)))=1;
5358	WR2 : default_tolerance_table_cell_wr2(SELF\compound_representation_item.item_element);
5359	WR3 : default_tolerance_table_cell_wr3(SELF\compound_representation_item.item_element);
5360	WR4 : default_tolerance_table_cell_wr4(SELF\compound_representation_item.item_element);
5361	WR5 : default_tolerance_table_cell_wr5(SELF\compound_representation_item.item_element);
5362END_ENTITY;
5363
5364
5365ENTITY default_trace_template
5366	SUBTYPE OF (trace_template);
5367END_ENTITY;
5368
5369
5370ENTITY default_unsupported_passage_based_land_physical_template
5371	SUBTYPE OF (default_passage_based_land_physical_template);
5372END_ENTITY;
5373
5374
5375ENTITY default_value_property_definition_representation
5376	SUBTYPE OF (property_definition_representation);
5377END_ENTITY;
5378
5379
5380ENTITY defined_symbol
5381	SUBTYPE OF (geometric_representation_item);
5382	definition : defined_symbol_select;
5383	target : symbol_target;
5384END_ENTITY;
5385
5386
5387ENTITY definitional_representation
5388	SUBTYPE OF (representation);
5389WHERE
5390	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PARAMETRIC_REPRESENTATION_CONTEXT' IN
5391          TYPEOF (SELF\representation.context_of_items );
5392END_ENTITY;
5393
5394
5395ENTITY definitional_representation_relationship
5396	SUBTYPE OF (representation_relationship);
5397WHERE
5398	WR1 : acyclic_representation_relationship(SELF,
5399         [SELF\representation_relationship.rep_2],
5400         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'REPRESENTATION');
5401END_ENTITY;
5402
5403
5404ENTITY definitional_representation_relationship_with_same_context
5405	SUBTYPE OF (definitional_representation_relationship);
5406WHERE
5407	WR1 : SELF\representation_relationship.rep_1.context_of_items :=:
5408            SELF\representation_relationship.rep_2.context_of_items;
5409END_ENTITY;
5410
5411
5412ENTITY degenerate_pcurve
5413	SUBTYPE OF (point);
5414	basis_surface : surface;
5415	reference_to_curve : definitional_representation;
5416WHERE
5417	WR1 : SIZEOF(reference_to_curve\representation.items) = 1;
5418	WR2 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE' IN TYPEOF
5419                    (reference_to_curve\representation.items[1]);
5420	WR3 : reference_to_curve\representation.
5421                   items[1]\geometric_representation_item.dim =2;
5422END_ENTITY;
5423
5424
5425ENTITY degenerate_toroidal_surface
5426	SUBTYPE OF (toroidal_surface);
5427	select_outer : BOOLEAN;
5428WHERE
5429	WR1 : major_radius <   minor_radius;
5430END_ENTITY;
5431
5432
5433ENTITY dependent_electrical_isolation_removal_component
5434	SUBTYPE OF (electrical_isolation_laminate_component);
5435END_ENTITY;
5436
5437
5438ENTITY dependent_electrical_isolation_removal_template
5439	SUBTYPE OF (electrical_isolation_removal_template);
5440END_ENTITY;
5441
5442
5443ENTITY dependent_thermal_isolation_removal_component
5444	SUBTYPE OF (thermal_isolation_removal_component);
5445END_ENTITY;
5446
5447
5448ENTITY dependent_thermal_isolation_removal_template
5449	SUBTYPE OF (thermal_isolation_removal_template);
5450END_ENTITY;
5451
5452
5453ENTITY derived_laminate_assignment
5454	SUBTYPE OF (property_definition_relationship);
5455END_ENTITY;
5456
5457
5458ENTITY derived_shape_aspect
5459	SUPERTYPE OF (ONEOF (apex, centre_of_symmetry, geometric_alignment, geometric_intersection, parallel_offset, perpendicular_to, extension, tangent))
5460	SUBTYPE OF (shape_aspect);
5461INVERSE
5462	deriving_relationships: SET [1:?] OF shape_aspect_relationship FOR relating_shape_aspect;
5463WHERE
5464	WR1 : SIZEOF (QUERY (dr <*
5465          SELF\derived_shape_aspect.deriving_relationships |
5466          NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
5467               'SHAPE_ASPECT_DERIVING_RELATIONSHIP'
5468          IN TYPEOF (dr)))) = 0;
5469END_ENTITY;
5470
5471
5472ENTITY derived_stratum
5473	SUBTYPE OF (stratum);
5474END_ENTITY;
5475
5476
5477ENTITY derived_stratum_technology_occurrence_relationship
5478	ABSTRACT SUPERTYPE OF (ONEOF (copy_stratum_technology_occurrence_relationship, inverse_copy_stratum_technology_occurrence_relationship))
5479	SUBTYPE OF (stratum_technology_occurrence_relationship);
5480END_ENTITY;
5481
5482
5483ENTITY derived_unit
5484	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));
5485	elements : SET [1:?] OF derived_unit_element;
5486DERIVE
5487	name : label := get_name_value(SELF);
5488WHERE
5489	WR1 : (SIZEOF(elements) > 1) OR ((SIZEOF(elements) = 1) AND (elements[1].exponent <> 1.0));
5490	WR2 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
5491END_ENTITY;
5492
5493
5494ENTITY derived_unit_element;
5495	unit : named_unit;
5496	exponent : REAL;
5497END_ENTITY;
5498
5499
5500ENTITY description_attribute;
5501	attribute_value : text;
5502	described_item : description_attribute_select;
5503END_ENTITY;
5504
5505
5506ENTITY descriptive_representation_item
5507	SUPERTYPE OF (ONEOF (tagged_text_item, uniform_resource_identifier))
5508	SUBTYPE OF (representation_item);
5509	description : text;
5510END_ENTITY;
5511
5512
5513ENTITY design_composition_path
5514	SUBTYPE OF (applied_group_assignment, product_definition);
5515END_ENTITY;
5516
5517
5518ENTITY design_context
5519	SUBTYPE OF (product_definition_context);
5520WHERE
5521	WR1 : SELF.life_cycle_stage = 'design';
5522END_ENTITY;
5523
5524
5525ENTITY design_layer_stratum
5526	SUBTYPE OF (stratum);
5527END_ENTITY;
5528
5529
5530ENTITY design_make_from_relationship
5531	SUBTYPE OF (product_definition_relationship);
5532END_ENTITY;
5533
5534
5535ENTITY design_object_management_assignment
5536	SUBTYPE OF (action_assignment);
5537	items : SET [1:?] OF managed_design_object;
5538END_ENTITY;
5539
5540
5541ENTITY design_object_management_relationship_action
5542	SUBTYPE OF (action);
5543END_ENTITY;
5544
5545
5546ENTITY design_specific_stratum_technology_mapping_relationship
5547	SUBTYPE OF (stratum_technology_mapping_relationship, property_definition);
5548	SELF\property_definition.definition : library_to_design_stack_model_mapping;
5549DERIVE
5550	scope : library_to_design_stack_model_mapping := SELF\property_definition.definition;
5551END_ENTITY;
5552
5553
5554ENTITY design_stack_model
5555	SUBTYPE OF (stratum_stack_model);
5556END_ENTITY;
5557
5558
5559ENTITY device_terminal_map
5560	SUBTYPE OF (shape_aspect, shape_aspect_relationship);
5561	SELF\shape_aspect_relationship.relating_shape_aspect : packaged_part_terminal;
5562UNIQUE
5563	UR1 : SELF\shape_aspect_relationship.related_shape_aspect, relating_shape_aspect;
5564END_ENTITY;
5565
5566
5567ENTITY diameter_dimension
5568	SUBTYPE OF (dimension_curve_directed_callout);
5569END_ENTITY;
5570
5571
5572ENTITY dielectric_constant_measure_with_unit
5573	SUBTYPE OF (ratio_measure_with_unit);
5574END_ENTITY;
5575
5576
5577ENTITY dielectric_crossover_area
5578	SUBTYPE OF (shape_aspect, shape_aspect_relationship);
5579END_ENTITY;
5580
5581
5582ENTITY dielectric_material_passage
5583	SUBTYPE OF (inter_stratum_feature);
5584END_ENTITY;
5585
5586
5587ENTITY digital_analytical_model_port
5588	SUBTYPE OF (analytical_model_port);
5589END_ENTITY;
5590
5591
5592ENTITY digital_analytical_model_scalar_port
5593	SUBTYPE OF (digital_analytical_model_vector_port, analytical_model_scalar_port);
5594END_ENTITY;
5595
5596
5597ENTITY digital_analytical_model_vector_port
5598	SUBTYPE OF (analytical_model_vector_port);
5599END_ENTITY;
5600
5601
5602ENTITY dimension_callout
5603	SUBTYPE OF (draughting_callout);
5604WHERE
5605	WR1 : ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LEADER_DIRECTED_CALLOUT'
5606        IN (TYPEOF (SELF))) XOR
5607       (SIZEOF (QUERY(dce_1 <* SELF\draughting_callout.contents |
5608       ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LEADER_CURVE'
5609        IN (TYPEOF(dce_1))))) = 0);
5610	WR2 : ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PROJECTION_DIRECTED_CALLOUT'
5611        IN (TYPEOF (SELF))) XOR
5612       (SIZEOF (QUERY(dce_1 <* SELF\draughting_callout.contents |
5613       ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PROJECTION_CURVE'
5614        IN (TYPEOF(dce_1))))) = 0);
5615	WR3 : ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT'
5616        IN (TYPEOF (SELF))) XOR
5617       (SIZEOF (QUERY(dce_1 <* SELF\draughting_callout.contents |
5618       ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DIMENSION_CURVE'
5619        IN (TYPEOF(dce_1))))) = 0);
5620END_ENTITY;
5621
5622
5623ENTITY dimension_callout_component_relationship
5624	SUBTYPE OF (draughting_callout_relationship);
5625WHERE
5626	WR1 : SELF.name IN ['prefix', 'suffix'];
5627	WR2 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STRUCTURED_DIMENSION_CALLOUT'
5628           IN TYPEOF (SELF.relating_draughting_callout);
5629	WR3 : SIZEOF (TYPEOF (SELF.related_draughting_callout) *
5630       ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LEADER_DIRECTED_CALLOUT',
5631        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PROJECTION_DIRECTED_CALLOUT',
5632        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT',
5633        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STRUCTURED_DIMENSION_CALLOUT']) = 0;
5634	WR4 : SELF.related_draughting_callout.contents *
5635       SELF.relating_draughting_callout.contents =
5636       SELF.related_draughting_callout.contents;
5637	WR5 : ((SELF.name = 'prefix') AND
5638       (SIZEOF (QUERY (ato <* QUERY (con <*
5639                 SELF.related_draughting_callout.contents |
5640         ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_TEXT_OCCURRENCE'
5641             IN TYPEOF(con))) |
5642         NOT (ato.name = 'prefix text')
5643       )) = 0));
5644	WR6 : ((SELF.name = 'suffix') AND
5645       (SIZEOF (QUERY (ato <* QUERY (con <*
5646                 SELF.related_draughting_callout.contents |
5647         ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_TEXT_OCCURRENCE'
5648             IN TYPEOF(con))) |
5649         NOT (ato.name = 'suffix text')
5650       )) = 0));
5651END_ENTITY;
5652
5653
5654ENTITY dimension_callout_relationship
5655	SUBTYPE OF (draughting_callout_relationship);
5656WHERE
5657	WR1 : SELF.name IN ['primary', 'secondary'];
5658	WR2 : SIZEOF (TYPEOF (SELF.relating_draughting_callout) *
5659       ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANGULAR_DIMENSION',
5660        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_DIMENSION',
5661        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DIAMETER_DIMENSION',
5662        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LEADER_DIRECTED_DIMENSION',
5663        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LINEAR_DIMENSION',
5664        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ORDINATE_DIMENSION',
5665        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.RADIUS_DIMENSION'])>=1;
5666	WR3 : SIZEOF (TYPEOF (SELF.related_draughting_callout) *
5667       ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT',
5668        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PROJECTION_DIRECTED_CALLOUT',
5669        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LEADER_DIRECTED_CALLOUT']) = 0;
5670	WR4 : SELF.related_draughting_callout.contents *
5671       SELF.relating_draughting_callout.contents =
5672       SELF.related_draughting_callout.contents;
5673END_ENTITY;
5674
5675
5676ENTITY dimension_curve
5677	SUBTYPE OF (annotation_curve_occurrence);
5678WHERE
5679	WR1 : (SIZEOF(
5680          QUERY(dct <* USEDIN(SELF,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
5681                'TERMINATOR_SYMBOL.ANNOTATED_CURVE')
5682               | (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
5683                  'DIMENSION_CURVE_TERMINATOR' IN TYPEOF(dct))
5684                  ))
5685          ) <= 2);
5686	WR2 : SIZEOF(
5687            QUERY( dcdc <* USEDIN(SELF,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
5688                   'DRAUGHTING_CALLOUT.CONTENTS') |
5689                   ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
5690                    'DIMENSION_CURVE_DIRECTED_CALLOUT' IN TYPEOF(dcdc)))
5691          )>= 1;
5692	WR3 : (SIZEOF(
5693            QUERY(dct1 <* USEDIN(SELF,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
5694                  'TERMINATOR_SYMBOL.ANNOTATED_CURVE')
5695               | (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
5696                  'DIMENSION_CURVE_TERMINATOR' IN TYPEOF(dct1))
5697                  AND (dct1\dimension_curve_terminator.role = dimension_extent_usage.origin)))
5698          ) <= 1)
5699        AND
5700        (SIZEOF(
5701            QUERY (dct2 <* USEDIN(SELF,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
5702                   'TERMINATOR_SYMBOL.ANNOTATED_CURVE')
5703                 | (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
5704                   'DIMENSION_CURVE_TERMINATOR' IN TYPEOF(dct2))
5705                   AND (dct2\dimension_curve_terminator.role = dimension_extent_usage.target)))
5706         ) <= 1);
5707END_ENTITY;
5708
5709
5710ENTITY dimension_curve_directed_callout
5711	SUBTYPE OF (draughting_callout);
5712WHERE
5713	WR1 : SIZEOF(QUERY(d_c<*SELF\draughting_callout.contents |
5714        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DIMENSION_CURVE' IN (TYPEOF(d_c))))=1;
5715	WR2 : SIZEOF(SELF\draughting_callout.contents) >= 2;
5716END_ENTITY;
5717
5718
5719ENTITY dimension_curve_terminator
5720	SUBTYPE OF (terminator_symbol);
5721	role : dimension_extent_usage;
5722WHERE
5723	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DIMENSION_CURVE' IN TYPEOF
5724        (SELF\terminator_symbol.annotated_curve);
5725END_ENTITY;
5726
5727
5728ENTITY dimension_curve_terminator_to_projection_curve_associativity
5729	SUBTYPE OF (annotation_occurrence_associativity);
5730	SELF\annotation_occurrence_relationship.related_annotation_occurrence : projection_curve;
5731	SELF\annotation_occurrence_relationship.relating_annotation_occurrence : dimension_curve_terminator;
5732END_ENTITY;
5733
5734
5735ENTITY dimension_pair
5736	SUBTYPE OF (draughting_callout_relationship);
5737WHERE
5738	WR1 : SELF.name IN ['chained', 'parallel'];
5739	WR2 : SIZEOF (TYPEOF (SELF.relating_draughting_callout) *
5740       ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANGULAR_DIMENSION',
5741        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_DIMENSION',
5742        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DIAMETER_DIMENSION',
5743        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LINEAR_DIMENSION',
5744        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ORDINATE_DIMENSION',
5745        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.RADIUS_DIMENSION'])=1;
5746	WR3 : SIZEOF (TYPEOF (SELF.related_draughting_callout) *
5747       ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANGULAR_DIMENSION',
5748        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_DIMENSION',
5749        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DIAMETER_DIMENSION',
5750        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LINEAR_DIMENSION',
5751        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ORDINATE_DIMENSION',
5752        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.RADIUS_DIMENSION'])=1;
5753END_ENTITY;
5754
5755
5756ENTITY dimension_related_tolerance_zone_element;
5757	related_dimension : dimensional_location;
5758	related_element : tolerance_zone_definition;
5759END_ENTITY;
5760
5761
5762ENTITY dimension_text_associativity
5763	SUBTYPE OF (text_literal, mapped_item);
5764WHERE
5765	WR1 : ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHAPE_DIMENSION_REPRESENTATION'
5766          IN TYPEOF (SELF\mapped_item.
5767                          mapping_source.mapped_representation));
5768	WR2 : ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DRAUGHTING_CALLOUT'
5769          IN TYPEOF (SELF\mapped_item.mapping_target));
5770	WR3 : SIZEOF (QUERY (ato <* QUERY (si <*
5771          USEDIN (SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM.ITEM') |
5772            ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_TEXT_OCCURRENCE'
5773              IN TYPEOF(si))) |
5774          NOT (SIZEOF( QUERY (dc <*
5775             USEDIN (ato, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
5776                          'DRAUGHTING_CALLOUT.CONTENTS') |
5777               ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DRAUGHTING_CALLOUT'
5778             IN TYPEOF (dc)))
5779            * [SELF\mapped_item.mapping_target]) = 1)
5780          )) = 0;
5781END_ENTITY;
5782
5783
5784ENTITY dimensional_characteristic_representation;
5785	dimension : dimensional_characteristic;
5786	representation : shape_dimension_representation;
5787END_ENTITY;
5788
5789
5790ENTITY dimensional_exponents;
5791	length_exponent : REAL;
5792	mass_exponent : REAL;
5793	time_exponent : REAL;
5794	electric_current_exponent : REAL;
5795	thermodynamic_temperature_exponent : REAL;
5796	amount_of_substance_exponent : REAL;
5797	luminous_intensity_exponent : REAL;
5798END_ENTITY;
5799
5800
5801ENTITY dimensional_location
5802	SUPERTYPE OF (ONEOF (angular_location, dimensional_location_with_path))
5803	SUBTYPE OF (shape_aspect_relationship);
5804END_ENTITY;
5805
5806
5807ENTITY dimensional_location_with_path
5808	SUBTYPE OF (dimensional_location);
5809	path : shape_aspect;
5810END_ENTITY;
5811
5812
5813ENTITY dimensional_size
5814	SUPERTYPE OF (ONEOF (angular_size, dimensional_size_with_path));
5815	applies_to : shape_aspect;
5816	name : label;
5817WHERE
5818	WR1 : applies_to.product_definitional = TRUE;
5819END_ENTITY;
5820
5821
5822ENTITY dimensional_size_property
5823	SUBTYPE OF (dimensional_size, property_definition);
5824END_ENTITY;
5825
5826
5827ENTITY dimensional_size_with_path
5828	SUBTYPE OF (dimensional_size);
5829	path : shape_aspect;
5830END_ENTITY;
5831
5832
5833ENTITY direct_stratum_component_join_implementation
5834	SUBTYPE OF (shape_aspect_relationship);
5835END_ENTITY;
5836
5837
5838ENTITY directed_action
5839	SUBTYPE OF (executed_action);
5840	directive : action_directive;
5841END_ENTITY;
5842
5843
5844ENTITY directed_dimensional_location
5845	SUBTYPE OF (dimensional_location);
5846END_ENTITY;
5847
5848
5849ENTITY direction
5850	SUBTYPE OF (geometric_representation_item);
5851	direction_ratios : LIST [2:3] OF REAL;
5852WHERE
5853	WR1 : SIZEOF(QUERY(tmp <* direction_ratios | tmp <> 0.0)) > 0;
5854END_ENTITY;
5855
5856
5857ENTITY document;
5858	id : identifier;
5859	name : label;
5860	description : OPTIONAL text;
5861	kind : document_type;
5862INVERSE
5863	representation_types: SET [0:?] OF document_representation_type FOR represented_document;
5864END_ENTITY;
5865
5866
5867ENTITY document_file
5868	SUBTYPE OF (document, characterized_object);
5869WHERE
5870	WR1 : SELF\characterized_object.name = '';
5871	WR2 : NOT EXISTS(SELF\characterized_object.description);
5872	WR3 : SIZEOF( QUERY( drt <* SELF\document.representation_types |
5873               drt.name IN ['digital','physical'])) = 1;
5874END_ENTITY;
5875
5876
5877ENTITY document_identifier
5878	SUBTYPE OF (group);
5879UNIQUE
5880	UR1 : SELF\group.name, SELF\group.description;
5881END_ENTITY;
5882
5883
5884ENTITY document_identifier_assignment
5885	SUBTYPE OF (group_assignment);
5886	items : SET [1:?] OF document_identifier_assigned_item;
5887	SELF\group_assignment.assigned_group : document_identifier;
5888END_ENTITY;
5889
5890
5891ENTITY document_product_association;
5892	name : label;
5893	description : OPTIONAL text;
5894	relating_document : document;
5895	related_product : product_or_formation_or_definition;
5896END_ENTITY;
5897
5898
5899ENTITY document_product_equivalence
5900	SUBTYPE OF (document_product_association);
5901WHERE
5902	WR1 : SELF\document_product_association.name = 'equivalence';
5903	WR2 : NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_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,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.name = 'document' )) = 1));
5904	WR3 : NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_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, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.name = 'document')) = 1));
5905	WR4 : NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_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, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.name = 'document' )) = 1));
5906END_ENTITY;
5907
5908
5909ENTITY document_reference
5910	ABSTRACT SUPERTYPE;
5911	assigned_document : document;
5912	source : label;
5913DERIVE
5914	role : object_role := get_role(SELF);
5915WHERE
5916	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
5917END_ENTITY;
5918
5919
5920ENTITY document_relationship;
5921	name : label;
5922	description : OPTIONAL text;
5923	relating_document : document;
5924	related_document : document;
5925END_ENTITY;
5926
5927
5928ENTITY document_representation_type;
5929	name : label;
5930	represented_document : document;
5931END_ENTITY;
5932
5933
5934ENTITY document_type;
5935	product_data_type : label;
5936END_ENTITY;
5937
5938
5939ENTITY document_usage_constraint;
5940	source : document;
5941	subject_element : label;
5942	subject_element_value : text;
5943END_ENTITY;
5944
5945
5946ENTITY document_usage_constraint_assignment
5947	ABSTRACT SUPERTYPE;
5948	assigned_document_usage : document_usage_constraint;
5949	role : document_usage_role;
5950END_ENTITY;
5951
5952
5953ENTITY document_usage_role;
5954	name : label;
5955	description : OPTIONAL text;
5956END_ENTITY;
5957
5958
5959ENTITY documentation_layer_stratum
5960	SUBTYPE OF (stratum);
5961END_ENTITY;
5962
5963
5964ENTITY dose_equivalent_measure_with_unit
5965	SUBTYPE OF (measure_with_unit);
5966WHERE
5967	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DOSE_EQUIVALENT_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
5968END_ENTITY;
5969
5970
5971ENTITY dose_equivalent_unit
5972	SUBTYPE OF (derived_unit);
5973WHERE
5974	WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.sievert);
5975END_ENTITY;
5976
5977
5978ENTITY double_offset_shelled_solid
5979	SUBTYPE OF (shelled_solid);
5980	thickness2 : length_measure;
5981WHERE
5982	WR1 : thickness2 <> 0;
5983	WR2 : SELF\shelled_solid.thickness <> thickness2;
5984END_ENTITY;
5985
5986
5987ENTITY draped_defined_transformation
5988	SUBTYPE OF (transformation_with_derived_angle);
5989END_ENTITY;
5990
5991
5992ENTITY draughting_annotation_occurrence
5993	SUBTYPE OF (annotation_occurrence);
5994WHERE
5995	WR1 : (NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_CURVE_OCCURRENCE'
5996            IN TYPEOF (SELF))) OR
5997    (SIZEOF (QUERY (sty <* SELF.styles |
5998       NOT ((SIZEOF (sty.styles) = 1)
5999         AND ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE'
6000                 IN TYPEOF (sty.styles[1]))) )) = 0);
6001	WR2 : (NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE'
6002            IN TYPEOF (SELF))) OR    (SIZEOF (QUERY (sty <* SELF.styles |
6003      NOT ((SIZEOF (sty.styles) = 1)
6004        AND ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FILL_AREA_STYLE'
6005                IN TYPEOF (sty.styles[1]))) )) = 0);
6006	WR3 : (NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE'
6007            IN TYPEOF (SELF))) OR    (SIZEOF (QUERY (bound <*
6008                     SELF.item\annotation_fill_area.boundaries |
6009       NOT (SIZEOF (QUERY (si <*
6010                   USEDIN (bound, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
6011                                  'STYLED_ITEM.ITEM') |
6012         ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
6013             'ANNOTATION_CURVE_OCCURRENCE' IN TYPEOF (si)))) > 0))) = 0);
6014	WR4 : (NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE'
6015            IN TYPEOF (SELF))) OR    (SIZEOF (QUERY (sty <* SELF.styles |
6016       NOT ((SIZEOF (sty.styles) = 1)           AND
6017            (SIZEOF (TYPEOF (sty.styles[1]) *
6018                ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SYMBOL_STYLE',
6019                 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.NULL_STYLE']) = 1)) )) = 0);
6020	WR5 : (NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE'
6021             IN TYPEOF (SELF)) AND
6022         ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_SYMBOL'
6023             IN TYPEOF(SELF.item)))) OR
6024         (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
6025                   'DRAUGHTING_SYMBOL_REPRESENTATION',
6026                  'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
6027                  'DRAUGHTING_SUBFIGURE_REPRESENTATION'] *
6028          TYPEOF (SELF.item\mapped_item.mapping_source.
6029                  mapped_representation)) = 1);
6030	WR6 : (NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_TEXT_OCCURRENCE'
6031            IN TYPEOF (SELF))) OR
6032    (SIZEOF (QUERY (sty <* SELF.styles |
6033       NOT ((SIZEOF (sty.styles) = 1)
6034        AND ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.TEXT_STYLE'
6035                IN TYPEOF (sty.styles[1]))) )) = 0);
6036	WR7 : (NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_TEXT_OCCURRENCE'
6037             IN TYPEOF (SELF))) OR
6038         (SIZEOF (TYPEOF(SELF.item) *
6039             ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMPOSITE_TEXT',
6040              'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.TEXT_LITERAL']) = 1);
6041	WR8 : (NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_TEXT_OCCURRENCE'
6042             IN TYPEOF (SELF)) AND
6043         ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMPOSITE_TEXT'
6044             IN TYPEOF (SELF.item)))) OR    (SIZEOF (QUERY (tl <*
6045                   SELF.item\composite_text.collected_text |
6046             NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.TEXT_LITERAL'
6047             IN TYPEOF (tl)) )) = 0);
6048	WR9 : (NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_TEXT_OCCURRENCE'
6049             IN TYPEOF (SELF)) AND
6050         ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.TEXT_LITERAL'
6051             IN TYPEOF (SELF.item)))) OR (SELF.item\text_literal.alignment
6052             IN ['baseline left', 'baseline centre', 'baseline right']);
6053	WR10 : (NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_TEXT_OCCURRENCE'
6054             IN TYPEOF (SELF)) AND
6055         ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMPOSITE_TEXT'
6056             IN TYPEOF (SELF.item)))) OR
6057         (SIZEOF (QUERY (tl <* QUERY (text <* SELF.
6058                  item\composite_text.collected_text
6059             |('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.TEXT_LITERAL' IN TYPEOF(text))) |
6060          NOT (tl\text_literal.alignment IN
6061         ['baseline left', 'baseline centre', 'baseline right']) )) = 0);
6062	WR11 : NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_TEXT_OCCURRENCE'
6063             IN TYPEOF(SELF)) AND
6064         ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMPOSITE_TEXT'
6065             IN TYPEOF (SELF.item))) OR check_text_alignment(SELF.item);
6066	WR12 : NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_TEXT_OCCURRENCE'
6067             IN TYPEOF(SELF)) AND
6068         ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMPOSITE_TEXT'
6069             IN TYPEOF (SELF.item))) OR check_text_font(SELF.item);
6070	WR13 : (NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_TEXT_OCCURRENCE'
6071             IN TYPEOF(SELF)) AND
6072         ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMPOSITE_TEXT'
6073               IN TYPEOF (SELF.item)))) OR
6074         (SIZEOF (QUERY (tl <* QUERY (text <*
6075            SELF.item\composite_text.collected_text |
6076            ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.TEXT_LITERAL' IN TYPEOF (text))) |
6077             NOT (SIZEOF (TYPEOF(tl) *
6078                  ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
6079                   'TEXT_LITERAL_WITH_BLANKING_BOX',
6080                   'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
6081                   'TEXT_LITERAL_WITH_ASSOCIATED_CURVES']) = 0) )) = 0);
6082	WR14 : (NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_TEXT_OCCURRENCE'
6083             IN TYPEOF (SELF)) AND
6084         ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.TEXT_LITERAL_WITH_ASSOCIATED_CURVES'
6085             IN TYPEOF (SELF.item)))) OR
6086    (SIZEOF (QUERY (crv <*
6087                   SELF.item\text_literal_with_associated_curves.
6088                   associated_curves |
6089      NOT (SIZEOF (QUERY (si <*  USEDIN (crv,
6090             'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM.ITEM') |
6091        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_CURVE_OCCURRENCE'
6092            IN TYPEOF (si)) )) > 0) )) = 0);
6093	WR15 : (NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_TEXT_OCCURRENCE'
6094             IN TYPEOF (SELF)) AND
6095         ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMPOSITE_TEXT_WITH_ASSOCIATED_CURVES'
6096             IN TYPEOF (SELF.item)))) OR
6097          (SIZEOF (QUERY (crv <*
6098                SELF.item\composite_text_with_associated_curves.
6099                associated_curves |
6100           NOT (SIZEOF (QUERY (si <*  USEDIN (crv,
6101                'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM.ITEM') |
6102               ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_CURVE_OCCURRENCE'
6103           IN TYPEOF (si)) )) > 0) )) = 0);
6104	WR16 : SIZEOF (QUERY (cs <* QUERY (sty <* SELF.styles |
6105      ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE' IN TYPEOF (sty.styles[1])))
6106      | NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LENGTH_MEASURE_WITH_UNIT'
6107        IN TYPEOF (cs.styles[1]\curve_style.curve_width)) AND
6108       ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POSITIVE_LENGTH_MEASURE'
6109        IN TYPEOF (cs.styles[1]\curve_style.
6110        curve_width\measure_with_unit.value_component))))) = 0;
6111	WR17 : SIZEOF (QUERY (fas <* QUERY (sty <* SELF.styles |
6112      ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FILL_AREA_STYLE'
6113          IN TYPEOF (sty.styles[1]))) |
6114      NOT ((SIZEOF (QUERY (fs <* fas.styles[1]\fill_area_style.fill_styles
6115                    | ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FILL_AREA_STYLE_TILES'
6116                       IN TYPEOF (fs)))) <= 1)
6117       AND (SIZEOF (QUERY (fst <* QUERY (fs <*
6118                           fas.styles[1]\fill_area_style.fill_styles |
6119              ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FILL_AREA_STYLE_TILES'
6120                  IN TYPEOF (fs))) |
6121                 NOT (SIZEOF (fst\fill_area_style_tiles.tiles) = 1)
6122           )) = 0))
6123    )) = 0;
6124	WR18 : SIZEOF (QUERY (fas <* QUERY (sty <* SELF.styles |
6125           ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FILL_AREA_STYLE'
6126            IN TYPEOF (sty.styles[1]))) |
6127             NOT (SIZEOF (QUERY (fsh <* QUERY (fs <*
6128                          fas.styles[1]\fill_area_style.fill_styles |
6129             ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FILL_AREA_STYLE_HATCHING'
6130               IN TYPEOF (fs))) |
6131        NOT (fsh\fill_area_style_hatching.point_of_reference_hatch_line :=:
6132             fsh\fill_area_style_hatching.pattern_start)  )) = 0)  )) = 0;
6133	WR19 : SIZEOF (QUERY (ts <* QUERY (sty <* SELF.styles |
6134         ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.TEXT_STYLE'
6135         IN TYPEOF(sty.styles[1]))) |
6136             NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
6137                  'TEXT_STYLE_WITH_BOX_CHARACTERISTICS'
6138             IN TYPEOF (ts.styles[1])))) = 0;
6139	WR20 : SIZEOF (QUERY (ts <* QUERY (sty <* SELF.styles |
6140         ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.TEXT_STYLE_WITH_BOX_CHARACTERISTICS'
6141             IN TYPEOF (sty.styles[1]))) |
6142           NOT (SIZEOF (ts.styles[1]\text_style_with_box_characteristics.
6143                characteristics) = 4) )) = 0;
6144END_ENTITY;
6145
6146
6147ENTITY draughting_callout
6148	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))
6149	SUBTYPE OF (geometric_representation_item);
6150	contents : SET [1:?] OF draughting_callout_element;
6151WHERE
6152	WR1 : (SIZEOF (QUERY (l_1 <* SELF\draughting_callout.contents |
6153        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LEADER_CURVE' IN (TYPEOF(l_1)))) = 0) OR
6154        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LEADER_DIRECTED_CALLOUT' IN (TYPEOF(SELF))) AND
6155        (SIZEOF (QUERY (l_1 <* SELF\draughting_callout.contents |
6156        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PROJECTION_CURVE' IN (TYPEOF(l_1)))) = 0) OR
6157        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PROJECTION_DIRECTED_CALLOUT' IN (TYPEOF(SELF))) AND
6158        (SIZEOF (QUERY (l_1 <* SELF\draughting_callout.contents |
6159        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DIMENSION_CURVE' IN (TYPEOF(l_1)))) = 0) OR
6160        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT' IN (TYPEOF(SELF)));
6161END_ENTITY;
6162
6163
6164ENTITY draughting_callout_relationship;
6165	name : label;
6166	description : text;
6167	relating_draughting_callout : draughting_callout;
6168	related_draughting_callout : draughting_callout;
6169END_ENTITY;
6170
6171
6172ENTITY draughting_elements
6173	SUBTYPE OF (draughting_callout);
6174WHERE
6175	WR1 : SIZEOF (QUERY (l_c <* QUERY (con <* SELF.contents |
6176              ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LEADER_CURVE' IN TYPEOF(con))) |
6177              NOT (SIZEOF (QUERY (ldc <* USEDIN (l_c,
6178               'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'DRAUGHTING_CALLOUT.CONTENTS') |
6179              ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LEADER_DIRECTED_CALLOUT'
6180              IN TYPEOF (ldc)))) <= 1)))=0;
6181	WR2 : NOT    ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT'
6182              IN TYPEOF(SELF)) OR
6183              (SIZEOF (QUERY (con <* SELF.contents |
6184              ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PROJECTION_CURVE' IN
6185               TYPEOF (con)))) <= 2);
6186	WR3 : SIZEOF (QUERY (rc <* USEDIN (SELF,
6187              'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DRAUGHTING_CALLOUT_' +
6188              'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT') |
6189              ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
6190               'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF (rc)) AND
6191              (rc.name = 'primary') )) <= 1;
6192	WR4 : SIZEOF (QUERY (rc <* USEDIN (SELF,
6193              'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DRAUGHTING_CALLOUT_' +
6194              'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT') |
6195               ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
6196                'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF (rc)) AND
6197                (rc.name = 'secondary') )) <= 1;
6198	WR5 : SIZEOF (QUERY (sec <* QUERY (rc <* USEDIN (SELF,
6199               'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DRAUGHTING_CALLOUT_' +
6200               'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT') |
6201               ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
6202                'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF (rc)) AND
6203                (rc.name = 'secondary') ) |
6204         NOT (SIZEOF (QUERY (prim <* USEDIN (SELF,
6205               'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DRAUGHTING_CALLOUT_' +
6206               'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT') |
6207               ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
6208                'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF (prim)) AND
6209                (prim.name = 'primary') )) = 1))) = 0;
6210END_ENTITY;
6211
6212
6213ENTITY draughting_model
6214	SUBTYPE OF (representation);
6215	SELF\representation.items : SET [1:?] OF draughting_model_item_select;
6216UNIQUE
6217	UR1 : SELF\representation.name;
6218WHERE
6219	WR1 : SIZEOF (QUERY (mi <* QUERY (it <* SELF.items |
6220         ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM' IN TYPEOF(it))) |
6221         NOT (
6222           SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHAPE_REPRESENTATION',
6223                    'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DRAUGHTING_MODEL'] *
6224              TYPEOF (mi\mapped_item.mapping_source.
6225                      mapped_representation)) = 1
6226        ))) = 0;
6227	WR2 : SIZEOF (QUERY (smi <* QUERY (si <* QUERY (it <* SELF.items |
6228        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM' IN TYPEOF(it))) |
6229        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM' IN
6230            TYPEOF(si\styled_item.item))) |
6231        (NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHAPE_REPRESENTATION' IN
6232                 TYPEOF(smi\styled_item.item\mapped_item.
6233                        mapping_source.mapped_representation))
6234            AND
6235             (SIZEOF (QUERY (sty <* smi\styled_item.styles |
6236               (NOT (SIZEOF (QUERY (psa <* sty.styles |
6237                       (NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE' IN TYPEOF(psa))))) = 1
6238             )))) = 1)))
6239        )) = 0;
6240END_ENTITY;
6241
6242
6243ENTITY draughting_model_item_association
6244	SUBTYPE OF (item_identified_representation_usage);
6245	SELF\item_identified_representation_usage.definition : shape_definition;
6246	SELF\item_identified_representation_usage.identified_item : draughting_model_item_association_select;
6247	SELF\item_identified_representation_usage.used_representation : draughting_model;
6248END_ENTITY;
6249
6250
6251ENTITY draughting_pre_defined_colour
6252	SUBTYPE OF (pre_defined_colour);
6253WHERE
6254	WR1 : SELF.name IN
6255      ['red',
6256       'green',
6257       'blue',
6258       'yellow',
6259       'magenta',
6260       'cyan',
6261       'black',
6262       'white'];
6263END_ENTITY;
6264
6265
6266ENTITY draughting_pre_defined_curve_font
6267	SUBTYPE OF (pre_defined_curve_font);
6268WHERE
6269	WR1 : SELF.name IN
6270        ['continuous',
6271         'chain',
6272         'chain double dash',
6273         'dashed',
6274         'dotted'];
6275END_ENTITY;
6276
6277
6278ENTITY draughting_pre_defined_text_font
6279	SUBTYPE OF (pre_defined_text_font);
6280WHERE
6281	WR1 : SELF.name[1:8] = 'ISO 3098';
6282END_ENTITY;
6283
6284
6285ENTITY draughting_subfigure_representation
6286	SUBTYPE OF (symbol_representation);
6287WHERE
6288	WR1 : SIZEOF (QUERY (item <* SELF\representation.items |
6289         NOT (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_OCCURRENCE',
6290              'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DRAUGHTING_CALLOUT',
6291              'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AXIS2_PLACEMENT']
6292               * TYPEOF (item)) = 1))) = 0;
6293	WR2 : SIZEOF (QUERY (item <* SELF\representation.items |
6294         SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_OCCURRENCE',
6295                  'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DRAUGHTING_CALLOUT'] *
6296           TYPEOF (item)) = 1)) >= 1;
6297	WR3 : SIZEOF (QUERY (srm <* QUERY (rm <*
6298          USEDIN (SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
6299                        'REPRESENTATION_MAP.MAPPED_REPRESENTATION') |
6300          ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SYMBOL_REPRESENTATION_MAP'
6301             IN TYPEOF(rm))) |
6302            NOT (SIZEOF (QUERY (a_s <* QUERY (mi <* srm.map_usage |
6303            ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_SYMBOL' IN TYPEOF(mi)))
6304          | NOT (SIZEOF (QUERY (aso <*
6305            USEDIN (a_s, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
6306                         'STYLED_ITEM.ITEM') |
6307          NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_SUBFIGURE_OCCURRENCE'
6308            IN TYPEOF(aso)))) = 0))) = 0))) > 0;
6309	WR4 : NOT (acyclic_mapped_item_usage (SELF));
6310	WR5 : SIZEOF (SELF.context_of_items.representations_in_context) = 1;
6311END_ENTITY;
6312
6313
6314ENTITY draughting_symbol_representation
6315	SUBTYPE OF (symbol_representation);
6316UNIQUE
6317	UR1 : SELF\representation.name;
6318WHERE
6319	WR1 : SIZEOF (QUERY (item <* SELF\representation.items |
6320         NOT (SIZEOF (TYPEOF (item) *
6321            ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_CURVE_OCCURRENCE',
6322             'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE',
6323             'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE',
6324             'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_TEXT_OCCURRENCE',
6325             'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AXIS2_PLACEMENT']) = 1)
6326       )) = 0;
6327	WR2 : SIZEOF (QUERY (item <* SELF\representation.items |
6328         (SIZEOF (TYPEOF (item) *
6329            ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_CURVE_OCCURRENCE',
6330             'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE',
6331             'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE',
6332             'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_TEXT_OCCURRENCE']) = 1)
6333       )) >= 1;
6334	WR3 : SIZEOF (QUERY (item <* SELF\representation.items |
6335         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_SUBFIGURE_OCCURRENCE'
6336          IN TYPEOF (item))) = 0;
6337	WR4 : SIZEOF (QUERY (srm <* QUERY (rm <*
6338          USEDIN (SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
6339                        'REPRESENTATION_MAP.MAPPED_REPRESENTATION') |
6340          ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SYMBOL_REPRESENTATION_MAP'
6341             IN TYPEOF(rm))) |
6342         (SIZEOF (QUERY (a_s <* QUERY (mi <* srm.map_usage |
6343           ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_SYMBOL' IN TYPEOF(mi))) |
6344         NOT (SIZEOF (QUERY(aso <*
6345             USEDIN(a_s, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
6346                         'STYLED_ITEM.ITEM') |
6347             NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE'
6348                  IN TYPEOF(aso))
6349          )) = 0) )) = 0) )) > 0;
6350	WR5 : NOT (acyclic_mapped_item_usage (SELF));
6351	WR6 : SIZEOF (SELF.context_of_items.representations_in_context) = 1;
6352END_ENTITY;
6353
6354
6355ENTITY draughting_text_literal_with_delineation
6356	SUBTYPE OF (text_literal_with_delineation);
6357WHERE
6358	WR1 : SELF.delineation IN ['underline', 'overline'];
6359END_ENTITY;
6360
6361
6362ENTITY draughting_title;
6363	items : SET [1:?] OF draughting_titled_item;
6364	language : label;
6365	contents : text;
6366END_ENTITY;
6367
6368
6369ENTITY drawing_definition;
6370	drawing_number : identifier;
6371	drawing_type : OPTIONAL label;
6372END_ENTITY;
6373
6374
6375ENTITY drawing_revision
6376	SUBTYPE OF (presentation_set);
6377	revision_identifier : identifier;
6378	drawing_identifier : drawing_definition;
6379	intended_scale : OPTIONAL text;
6380UNIQUE
6381	UR1 : revision_identifier, drawing_identifier;
6382END_ENTITY;
6383
6384
6385ENTITY drawing_revision_sequence;
6386	predecessor : drawing_revision;
6387	successor : drawing_revision;
6388WHERE
6389	WR1 : predecessor :<>: successor;
6390END_ENTITY;
6391
6392
6393ENTITY drawing_sheet_revision
6394	SUBTYPE OF (presentation_area);
6395	revision_identifier : identifier;
6396WHERE
6397	WR1 : SIZEOF( QUERY(item <* SELF\representation.items |
6398       ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM' IN (TYPEOF(item)))
6399       AND
6400       ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DRAWING_SHEET_REVISION' IN
6401       (TYPEOF(item\mapped_item.mapping_source.mapped_representation)))))=0;
6402END_ENTITY;
6403
6404
6405ENTITY drawing_sheet_revision_sequence
6406	SUBTYPE OF (representation_relationship);
6407WHERE
6408	WR1 : SELF\representation_relationship.rep_1 :<>:
6409       SELF\representation_relationship.rep_2;
6410	WR2 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DRAWING_SHEET_REVISION'
6411       IN TYPEOF (SELF\representation_relationship.rep_1);
6412	WR3 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DRAWING_SHEET_REVISION'
6413       IN TYPEOF (SELF\representation_relationship.rep_2);
6414END_ENTITY;
6415
6416
6417ENTITY drawing_sheet_revision_usage
6418	SUBTYPE OF (area_in_set);
6419	sheet_number : identifier;
6420UNIQUE
6421	UR1 : sheet_number, SELF\area_in_set.in_set;
6422WHERE
6423	WR1 : ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DRAWING_SHEET_REVISION' IN
6424                  TYPEOF(SELF\area_in_set.area))
6425              AND
6426              ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DRAWING_REVISION'
6427               IN TYPEOF (SELF\area_in_set.in_set));
6428END_ENTITY;
6429
6430
6431ENTITY edge
6432	SUPERTYPE OF (ONEOF (edge_curve, oriented_edge, subedge))
6433	SUBTYPE OF (topological_representation_item);
6434	edge_start : vertex;
6435	edge_end : vertex;
6436END_ENTITY;
6437
6438
6439ENTITY edge_based_wireframe_model
6440	SUBTYPE OF (geometric_representation_item);
6441	ebwm_boundary : SET [1:?] OF connected_edge_set;
6442END_ENTITY;
6443
6444
6445ENTITY edge_based_wireframe_shape_representation
6446	SUBTYPE OF (shape_representation);
6447WHERE
6448	WR1 : SIZEOF (
6449QUERY ( it <* SELF.items| NOT ( SIZEOF ([ 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_BASED_WIREFRAME_MODEL', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AXIS2_PLACEMENT_3D' ] * TYPEOF (it)) = 1) )) = 0;
6450	WR2 : SIZEOF (
6451QUERY ( it <* SELF.items| ( SIZEOF ([ 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_BASED_WIREFRAME_MODEL', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM' ] * TYPEOF (it)) = 1) )) >= 1;
6452	WR3 : SIZEOF (
6453QUERY ( ebwm <*
6454QUERY ( it <* SELF.items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF (
6455QUERY ( eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT ( SIZEOF (
6456QUERY ( edges <* eb.ces_edges| NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_CURVE' IN TYPEOF (edges)) )) = 0) )) = 0) )) = 0;
6457	WR4 : SIZEOF (
6458QUERY ( ebwm <*
6459QUERY ( it <* SELF.items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF (
6460QUERY ( eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT ( SIZEOF (
6461QUERY ( pline_edges <*
6462QUERY ( edges <* eb.ces_edges| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POLYLINE' IN TYPEOF (edges\edge_curve.edge_geometry)) )| NOT ( SIZEOF (pline_edges\edge_curve.edge_geometry\polyline.points) > 2) )) = 0) )) = 0) )) = 0;
6463	WR5 : SIZEOF (
6464QUERY ( ebwm <*
6465QUERY ( it <* SELF.items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF (
6466QUERY ( eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT ( SIZEOF (
6467QUERY ( edges <* eb.ces_edges| NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_POINT' IN TYPEOF (edges.edge_start)) AND ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_POINT' IN TYPEOF (edges.edge_end))) )) = 0) )) = 0) )) = 0;
6468	WR6 : SIZEOF (
6469QUERY ( ebwm <*
6470QUERY ( it <* SELF.items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF (
6471QUERY ( eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT ( SIZEOF (
6472QUERY ( edges <* eb.ces_edges| NOT valid_wireframe_edge_curve(edges\edge_curve.edge_geometry) )) = 0) )) = 0) )) = 0;
6473	WR7 : SIZEOF (
6474QUERY ( ebwm <*
6475QUERY ( it <* SELF.items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF (
6476QUERY ( eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT ( SIZEOF (
6477QUERY ( 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;
6478	WR8 : SIZEOF (
6479QUERY ( mi <*
6480QUERY ( it <* SELF.items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0;
6481	WR9 : SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3;
6482END_ENTITY;
6483
6484
6485ENTITY edge_blended_solid
6486	ABSTRACT SUPERTYPE OF ((track_blended_solid ANDOR ONEOF (solid_with_constant_radius_edge_blend, solid_with_variable_radius_edge_blend, solid_with_chamfered_edges)))
6487	SUBTYPE OF (modified_solid);
6488	blended_edges : LIST [1:?] OF  UNIQUE edge_curve;
6489END_ENTITY;
6490
6491
6492ENTITY edge_curve
6493	SUBTYPE OF (edge, geometric_representation_item);
6494	edge_geometry : curve;
6495	same_sense : BOOLEAN;
6496END_ENTITY;
6497
6498
6499ENTITY edge_loop
6500	SUBTYPE OF (loop, path);
6501DERIVE
6502	ne : INTEGER := SIZEOF(SELF\path.edge_list);
6503WHERE
6504	WR1 : (SELF\path.edge_list[1].edge_start) :=:
6505        (SELF\path.edge_list[ne].edge_end);
6506END_ENTITY;
6507
6508
6509ENTITY edge_segment_cross_section
6510	SUBTYPE OF (shape_definition_3d_intersection);
6511END_ENTITY;
6512
6513
6514ENTITY edge_segment_vertex
6515	SUBTYPE OF (datum);
6516END_ENTITY;
6517
6518
6519ENTITY effectivity
6520	SUPERTYPE OF (ONEOF (serial_numbered_effectivity, dated_effectivity, lot_effectivity, time_interval_based_effectivity));
6521	id : identifier;
6522DERIVE
6523	description : text := get_description_value(SELF);
6524	name : label := get_name_value(SELF);
6525WHERE
6526	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
6527	WR2 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
6528END_ENTITY;
6529
6530
6531ENTITY effectivity_assignment
6532	ABSTRACT SUPERTYPE;
6533	assigned_effectivity : effectivity;
6534DERIVE
6535	role : object_role := get_role(SELF);
6536WHERE
6537	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
6538END_ENTITY;
6539
6540
6541ENTITY effectivity_context_assignment
6542	ABSTRACT SUPERTYPE;
6543	assigned_effectivity_assignment : effectivity_assignment;
6544	role : effectivity_context_role;
6545END_ENTITY;
6546
6547
6548ENTITY effectivity_context_role;
6549	name : label;
6550	description : OPTIONAL text;
6551END_ENTITY;
6552
6553
6554ENTITY effectivity_relationship;
6555	name : label;
6556	description : OPTIONAL text;
6557	related_effectivity : effectivity;
6558	relating_effectivity : effectivity;
6559END_ENTITY;
6560
6561
6562ENTITY electric_charge_measure_with_unit
6563	SUBTYPE OF (measure_with_unit);
6564WHERE
6565	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ELECTRIC_CHARGE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
6566END_ENTITY;
6567
6568
6569ENTITY electric_charge_unit
6570	SUBTYPE OF (derived_unit);
6571WHERE
6572	WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.coulomb);
6573END_ENTITY;
6574
6575
6576ENTITY electric_current_measure_with_unit
6577	SUBTYPE OF (measure_with_unit);
6578WHERE
6579	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ELECTRIC_CURRENT_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
6580END_ENTITY;
6581
6582
6583ENTITY electric_current_unit
6584	SUBTYPE OF (named_unit);
6585WHERE
6586	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);
6587END_ENTITY;
6588
6589
6590ENTITY electric_potential_measure_with_unit
6591	SUBTYPE OF (measure_with_unit);
6592WHERE
6593	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ELECTRIC_POTENTIAL_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
6594END_ENTITY;
6595
6596
6597ENTITY electric_potential_unit
6598	SUBTYPE OF (derived_unit);
6599WHERE
6600	WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.volt);
6601END_ENTITY;
6602
6603
6604ENTITY electrical_isolation_laminate_component
6605	SUBTYPE OF (material_removal_laminate_component);
6606END_ENTITY;
6607
6608
6609ENTITY electrical_isolation_removal_template
6610	SUBTYPE OF (material_removal_feature_template);
6611END_ENTITY;
6612
6613
6614ENTITY electrical_network
6615	SUBTYPE OF (functional_unit);
6616END_ENTITY;
6617
6618
6619ENTITY electromagnetic_compatibility_requirement_allocation
6620	SUPERTYPE OF (assembly_shield_allocation)
6621	SUBTYPE OF (requirement_assignment);
6622END_ENTITY;
6623
6624
6625ENTITY elementary_brep_shape_representation
6626	SUBTYPE OF (shape_representation);
6627WHERE
6628	WR1 : SIZEOF (QUERY (it <* SELF.items |
6629          NOT (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MANIFOLD_SOLID_BREP',
6630                'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACETED_BREP',
6631                'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM',
6632                'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AXIS2_PLACEMENT_3D'] *
6633                   TYPEOF(it)) = 1))) = 0;
6634	WR2 : SIZEOF (QUERY (it <* SELF.items |
6635         SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MANIFOLD_SOLID_BREP',
6636         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM'] * TYPEOF(it)) =1 )) > 0;
6637	WR3 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items |
6638           'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) |
6639           NOT (SIZEOF (QUERY (csh <* msb_shells(msb) |
6640            NOT (SIZEOF (QUERY(fcs <* csh.cfs_faces |
6641              NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE_SURFACE' IN TYPEOF(fcs)))) = 0
6642                 ))) = 0
6643                   ))) = 0;
6644	WR4 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items |
6645           'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) |
6646           NOT (SIZEOF (QUERY (csh <* msb_shells(msb) |
6647            NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces |
6648              NOT(('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ELEMENTARY_SURFACE' IN
6649                   TYPEOF(fcs\face_surface.face_geometry))
6650             ))) = 0
6651                 ))) = 0
6652                   ))) = 0;
6653	WR5 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items |
6654           'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) |
6655           NOT (SIZEOF (QUERY (csh <* msb_shells(msb) |
6656             NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces |
6657               NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds |
6658         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) |
6659                NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list |
6660                  NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_CURVE' IN
6661            TYPEOF(oe.edge_element)))) = 0
6662                   ))) = 0
6663                 ))) = 0
6664               ))) = 0
6665             ))) = 0;
6666	WR6 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items |
6667           'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) |
6668           NOT (SIZEOF (QUERY (csh <* msb_shells(msb) |
6669             NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces |
6670               NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds |
6671         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) |
6672                 NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list |
6673                   NOT (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LINE',
6674                         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONIC',
6675                         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POLYLINE'] *
6676            TYPEOF(oe.edge_element\edge_curve.edge_geometry)) = 1 )
6677               )) = 0
6678               ))) = 0
6679                 ))) = 0
6680                   ))) = 0
6681                    ))) = 0;
6682	WR7 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items |
6683           'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) |
6684           NOT (SIZEOF (QUERY (csh <* msb_shells(msb) |
6685             NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces |
6686               NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds |
6687         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) |
6688                 NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list |
6689            NOT(('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_POINT' IN TYPEOF(oe.edge_start))
6690                AND ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_POINT' IN
6691                 TYPEOF(oe.edge_end))
6692            ))) = 0
6693              ))) = 0
6694               ))) = 0
6695                 ))) = 0
6696                   ))) = 0;
6697	WR8 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items |
6698           'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) |
6699           NOT (SIZEOF (QUERY (csh <* msb_shells(msb) |
6700             NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces |
6701               NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds |
6702         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) |
6703                NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list |
6704                   ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POLYLINE' IN
6705            TYPEOF(oe.edge_element\edge_curve.edge_geometry)) AND
6706            (NOT (SIZEOF (oe\oriented_edge.edge_element\
6707                  edge_curve.edge_geometry\polyline.points) >= 3))
6708               )) = 0
6709               ))) = 0
6710                 ))) = 0
6711                   ))) = 0
6712                    ))) = 0;
6713	WR9 : SIZEOF (QUERY (msb <* QUERY (it <* items |
6714          'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) |
6715          'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF
6716              (msb\manifold_solid_brep.outer)))
6717             = 0;
6718	WR10 : SIZEOF (QUERY (brv <* QUERY (it <* items |
6719          'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.BREP_WITH_VOIDS' IN TYPEOF(it)) |
6720          NOT (SIZEOF (QUERY (csh <* brv\brep_with_voids.voids |
6721           csh\oriented_closed_shell.orientation)) = 0))) = 0;
6722	WR11 : SIZEOF (QUERY (mi <*  QUERY (it <* items |
6723                 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)) |
6724          NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ELEMENTARY_BREP_SHAPE_REPRESENTATION' IN
6725             TYPEOF(mi\mapped_item.mapping_source.
6726                           mapped_representation)))) = 0;
6727	WR12 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items |
6728            'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) |
6729            NOT (SIZEOF (QUERY (csh <* msb_shells(msb) |
6730              NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces |
6731               NOT (SIZEOF(QUERY (vlp_fbnds <* QUERY (bnds <* fcs.bounds |
6732         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_LOOP' IN TYPEOF(bnds.bound)) |
6733           NOT(('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_POINT' IN
6734               TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex)) AND
6735                ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CARTESIAN_POINT' IN
6736                   TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.
6737                     loop_vertex\vertex_point.vertex_geometry))
6738            ))) = 0))) = 0))) = 0))) =0;
6739END_ENTITY;
6740
6741
6742ENTITY elementary_surface
6743	SUPERTYPE OF (ONEOF (plane, cylindrical_surface, conical_surface, spherical_surface, toroidal_surface))
6744	SUBTYPE OF (surface);
6745	position : axis2_placement_3d;
6746END_ENTITY;
6747
6748
6749ENTITY ellipse
6750	SUBTYPE OF (conic);
6751	semi_axis_1 : positive_length_measure;
6752	semi_axis_2 : positive_length_measure;
6753END_ENTITY;
6754
6755
6756ENTITY elliptic_area
6757	SUBTYPE OF (primitive_2d);
6758	position : axis2_placement_2d;
6759	semi_axis_1 : positive_length_measure;
6760	semi_axis_2 : positive_length_measure;
6761END_ENTITY;
6762
6763
6764ENTITY energy_measure_with_unit
6765	SUBTYPE OF (measure_with_unit);
6766WHERE
6767	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ENERGY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
6768END_ENTITY;
6769
6770
6771ENTITY energy_unit
6772	SUBTYPE OF (derived_unit);
6773WHERE
6774	WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.joule);
6775END_ENTITY;
6776
6777
6778ENTITY entity_assertion
6779	SUBTYPE OF (fact_type);
6780END_ENTITY;
6781
6782
6783ENTITY enum_reference_prefix
6784	SUBTYPE OF (descriptive_representation_item);
6785END_ENTITY;
6786
6787
6788ENTITY environment;
6789	syntactic_representation : generic_variable;
6790	semantics : variable_semantics;
6791END_ENTITY;
6792
6793
6794ENTITY equivalent_stackup_model_definition
6795	SUBTYPE OF (product_definition, product_definition_relationship);
6796	SELF\product_definition_relationship.related_product_definition : stratum_stack_model;
6797	SELF\product_definition_relationship.relating_product_definition : stratum_stack_model;
6798DERIVE
6799	equivalent_stackup_model : stratum_stack_model := SELF\product_definition_relationship.related_product_definition;
6800	primary_stackup_model : stratum_stack_model := SELF\product_definition_relationship.relating_product_definition;
6801WHERE
6802	WR1 : primary_stackup_model :<>: equivalent_stackup_model;
6803END_ENTITY;
6804
6805
6806ENTITY equivalent_sub_stack_definition
6807	SUBTYPE OF (product_definition);
6808END_ENTITY;
6809
6810
6811ENTITY evaluated_characteristic
6812	SUBTYPE OF (representation, representation_relationship);
6813UNIQUE
6814  UR1: SELF\representation_relationship.rep_1, SELF\representation_relationship.rep_2;
6815WHERE
6816	WR1 : SELF\representation_relationship.rep_1 <>
6817       SELF\representation_relationship.rep_2;
6818END_ENTITY;
6819
6820
6821ENTITY evaluated_degenerate_pcurve
6822	SUBTYPE OF (degenerate_pcurve);
6823	equivalent_point : cartesian_point;
6824END_ENTITY;
6825
6826
6827ENTITY evaluation_product_definition
6828	SUBTYPE OF (product_definition);
6829END_ENTITY;
6830
6831
6832ENTITY event_occurrence;
6833	id : identifier;
6834	name : label;
6835	description : OPTIONAL text;
6836END_ENTITY;
6837
6838
6839ENTITY event_occurrence_assignment
6840	ABSTRACT SUPERTYPE;
6841	assigned_event_occurrence : event_occurrence;
6842	role : event_occurrence_role;
6843END_ENTITY;
6844
6845
6846ENTITY event_occurrence_relationship;
6847	name : label;
6848	description : OPTIONAL text;
6849	relating_event : event_occurrence;
6850	related_event : event_occurrence;
6851END_ENTITY;
6852
6853
6854ENTITY event_occurrence_role;
6855	name : label;
6856	description : OPTIONAL text;
6857END_ENTITY;
6858
6859
6860ENTITY exclusive_product_concept_feature_category
6861	SUBTYPE OF (product_concept_feature_category);
6862END_ENTITY;
6863
6864
6865ENTITY executed_action
6866	SUBTYPE OF (action);
6867END_ENTITY;
6868
6869
6870ENTITY expanded_uncertainty
6871	SUBTYPE OF (standard_uncertainty);
6872	coverage_factor : REAL;
6873END_ENTITY;
6874
6875
6876ENTITY explicit_procedural_geometric_representation_item_relationship
6877	SUBTYPE OF (explicit_procedural_representation_item_relationship);
6878	SELF\representation_item_relationship.related_representation_item : geometric_representation_item;
6879	SELF\representation_item_relationship.relating_representation_item : procedural_shape_representation_sequence;
6880WHERE
6881	WR1 : NOT (
6882    'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PROCEDURAL_SHAPE_REPRESENTATION_SEQUENCE'
6883    IN TYPEOF(
6884      SELF\representation_item_relationship.related_representation_item));
6885END_ENTITY;
6886
6887
6888ENTITY explicit_procedural_representation_item_relationship
6889	SUBTYPE OF (representation_item_relationship);
6890	SELF\representation_item_relationship.relating_representation_item : procedural_representation_sequence;
6891WHERE
6892	WR1 : NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PROCEDURAL_REPRESENTATION_SEQUENCE'
6893    IN TYPEOF(
6894      SELF\representation_item_relationship.related_representation_item));
6895	WR2 : SIZEOF(QUERY(q <* using_representations(
6896    SELF\representation_item_relationship.related_representation_item) |
6897    item_in_context(
6898      SELF\representation_item_relationship.relating_representation_item,
6899      q.context_of_items))) > 0;
6900END_ENTITY;
6901
6902
6903ENTITY explicit_procedural_representation_relationship
6904	SUBTYPE OF (representation_relationship);
6905	SELF\representation_relationship.rep_1 : procedural_representation;
6906WHERE
6907	WR1 : (NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PROCEDURAL_REPRESENTATION'
6908    IN TYPEOF(SELF\representation_relationship.rep_2))) AND
6909    (NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VARIATIONAL_REPRESENTATION'
6910    IN TYPEOF(SELF\representation_relationship.rep_2)));
6911	WR2 : SELF\representation_relationship.rep_1.context_of_items :=:
6912    SELF\representation_relationship.rep_2.context_of_items;
6913END_ENTITY;
6914
6915
6916ENTITY explicit_procedural_shape_representation_relationship
6917	SUBTYPE OF (explicit_procedural_representation_relationship);
6918	SELF\representation_relationship.rep_1 : procedural_shape_representation;
6919	SELF\representation_relationship.rep_2 : shape_representation;
6920END_ENTITY;
6921
6922
6923ENTITY expression
6924	ABSTRACT SUPERTYPE OF (ONEOF (numeric_expression, boolean_expression))
6925	SUBTYPE OF (generic_expression);
6926END_ENTITY;
6927
6928
6929ENTITY expression_conversion_based_unit
6930	SUBTYPE OF (context_dependent_unit, variable_semantics);
6931INVERSE
6932	associated_variable_environment: environment FOR semantics;
6933END_ENTITY;
6934
6935
6936ENTITY extension
6937	SUBTYPE OF (derived_shape_aspect);
6938WHERE
6939	WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1;
6940END_ENTITY;
6941
6942
6943ENTITY extent
6944	SUBTYPE OF (characterized_object);
6945END_ENTITY;
6946
6947
6948ENTITY external_class_library
6949	SUBTYPE OF (external_source);
6950END_ENTITY;
6951
6952
6953ENTITY external_identification_assignment
6954	ABSTRACT SUPERTYPE
6955	SUBTYPE OF (identification_assignment);
6956	source : external_source;
6957END_ENTITY;
6958
6959
6960ENTITY external_source;
6961	source_id : source_item;
6962DERIVE
6963	description : text := get_description_value(SELF);
6964WHERE
6965	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
6966END_ENTITY;
6967
6968
6969ENTITY external_source_relationship;
6970	name : label;
6971	description : OPTIONAL text;
6972	relating_source : external_source;
6973	related_source : external_source;
6974END_ENTITY;
6975
6976
6977ENTITY externally_defined_class
6978	SUBTYPE OF (class, externally_defined_item);
6979END_ENTITY;
6980
6981
6982ENTITY externally_defined_colour
6983	SUBTYPE OF (colour_specification, externally_defined_item);
6984END_ENTITY;
6985
6986
6987ENTITY externally_defined_context_dependent_unit
6988	SUBTYPE OF (context_dependent_unit, externally_defined_item);
6989END_ENTITY;
6990
6991
6992ENTITY externally_defined_conversion_based_unit
6993	SUBTYPE OF (conversion_based_unit, externally_defined_item);
6994END_ENTITY;
6995
6996
6997ENTITY externally_defined_currency
6998	SUBTYPE OF (currency, externally_defined_context_dependent_unit);
6999END_ENTITY;
7000
7001
7002ENTITY externally_defined_curve_font
7003	SUBTYPE OF (externally_defined_item);
7004END_ENTITY;
7005
7006
7007ENTITY externally_defined_dimension_definition
7008	SUBTYPE OF (dimensional_size, externally_defined_item);
7009WHERE
7010	WR1 : (SELF\externally_defined_item.item_id = 'external size dimension') AND (SELF\externally_defined_item.source.source_id = 'external size dimension specification');
7011	WR2 : 1 >= SIZEOF(QUERY ( adr <* USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.APPLIED_DOCUMENT_REFERENCE.ITEMS')| (adr.assigned_document.description = 'external size dimension specification') ));
7012END_ENTITY;
7013
7014
7015ENTITY externally_defined_general_property
7016	SUBTYPE OF (general_property, externally_defined_item);
7017END_ENTITY;
7018
7019
7020ENTITY externally_defined_hatch_style
7021	SUBTYPE OF (externally_defined_item, geometric_representation_item);
7022END_ENTITY;
7023
7024
7025ENTITY externally_defined_item;
7026	item_id : source_item;
7027	source : external_source;
7028END_ENTITY;
7029
7030
7031ENTITY externally_defined_item_relationship;
7032	name : label;
7033	description : OPTIONAL text;
7034	relating_item : externally_defined_item;
7035	related_item : externally_defined_item;
7036END_ENTITY;
7037
7038
7039ENTITY externally_defined_marker
7040	SUBTYPE OF (externally_defined_symbol, pre_defined_marker);
7041END_ENTITY;
7042
7043
7044ENTITY externally_defined_physical_network_group
7045	SUBTYPE OF (physical_network_group);
7046END_ENTITY;
7047
7048
7049ENTITY externally_defined_physical_network_group_element_relationship
7050	SUBTYPE OF (physical_network_group_element_relationship);
7051END_ENTITY;
7052
7053
7054ENTITY externally_defined_picture_representation_item
7055	SUBTYPE OF (picture_representation_item);
7056INVERSE
7057	source: applied_external_identification_assignment FOR items;
7058WHERE
7059	WR1 : NOT (SELF\representation_item.name IN pre_defined_picture_representation_types);
7060END_ENTITY;
7061
7062
7063ENTITY externally_defined_product_definition
7064	SUPERTYPE OF (library_defined_product_definition)
7065	SUBTYPE OF (product_definition, externally_defined_item);
7066END_ENTITY;
7067
7068
7069ENTITY externally_defined_representation_item
7070	SUBTYPE OF (representation_item, externally_defined_item);
7071END_ENTITY;
7072
7073
7074ENTITY externally_defined_string
7075	SUBTYPE OF (externally_defined_representation_item);
7076END_ENTITY;
7077
7078
7079ENTITY externally_defined_symbol
7080	SUBTYPE OF (externally_defined_item);
7081END_ENTITY;
7082
7083
7084ENTITY externally_defined_terminator_symbol
7085	SUBTYPE OF (externally_defined_symbol);
7086END_ENTITY;
7087
7088
7089ENTITY externally_defined_text_font
7090	SUBTYPE OF (externally_defined_item);
7091END_ENTITY;
7092
7093
7094ENTITY externally_defined_tile
7095	SUBTYPE OF (externally_defined_item);
7096END_ENTITY;
7097
7098
7099ENTITY externally_defined_tile_style
7100	SUBTYPE OF (externally_defined_item, geometric_representation_item);
7101END_ENTITY;
7102
7103
7104ENTITY extruded_area_solid
7105	SUBTYPE OF (swept_area_solid);
7106	extruded_direction : direction;
7107	depth : positive_length_measure;
7108WHERE
7109	WR1 : dot_product(
7110        (SELF\swept_area_solid.swept_area.basis_surface\
7111        elementary_surface.position.p[3]), extruded_direction) <> 0.0;
7112END_ENTITY;
7113
7114
7115ENTITY extruded_face_solid
7116	SUBTYPE OF (swept_face_solid);
7117	extruded_direction : direction;
7118	depth : positive_length_measure;
7119WHERE
7120	WR1 : dot_product(
7121        (SELF\swept_face_solid.swept_face.face_geometry\
7122        elementary_surface.position.p[3]), extruded_direction) <> 0.0;
7123END_ENTITY;
7124
7125
7126ENTITY extruded_face_solid_with_draft_angle
7127	SUBTYPE OF (extruded_face_solid_with_trim_conditions);
7128	draft_angle : plane_angle_measure;
7129WHERE
7130	WR1 : draft_angle <> 0;
7131END_ENTITY;
7132
7133
7134ENTITY extruded_face_solid_with_multiple_draft_angles
7135	SUBTYPE OF (extruded_face_solid_with_trim_conditions);
7136	drafted_edges : LIST [2:?] OF SET [1:?] OF edge_curve;
7137	draft_angles : LIST [2:?] OF plane_angle_measure;
7138WHERE
7139	WR1 : SIZEOF(drafted_edges) = SIZEOF(draft_angles);
7140	WR2 : SIZEOF(QUERY(q <* draft_angles | q = 0)) = 0;
7141	WR3 : SIZEOF(QUERY(q <* drafted_edges | (SIZEOF(QUERY(r <* q | NOT
7142         (SELF\swept_face_solid.swept_face IN
7143          using_items(r,[])))) > 0))) = 0;
7144END_ENTITY;
7145
7146
7147ENTITY extruded_face_solid_with_trim_conditions
7148	SUPERTYPE OF (ONEOF (extruded_face_solid_with_draft_angle, extruded_face_solid_with_multiple_draft_angles))
7149	SUBTYPE OF (extruded_face_solid);
7150	first_trim_condition : trim_condition_select;
7151	second_trim_condition : trim_condition_select;
7152	first_trim_intent : trim_intent;
7153	second_trim_intent : trim_intent;
7154	first_offset : non_negative_length_measure;
7155	second_offset : non_negative_length_measure;
7156WHERE
7157	WR1 : NOT(('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PLANE_ANGLE_MEASURE'
7158         IN TYPEOF(first_trim_condition)) OR
7159         ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PLANE_ANGLE_MEASURE'
7160         IN TYPEOF(second_trim_condition)));
7161	WR2 : NOT ((('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LENGTH_MEASURE'
7162         IN TYPEOF(first_trim_condition)) AND
7163         ((first_trim_intent = trim_intent.offset)
7164         OR (first_trim_intent = trim_intent.up_to_next))) OR
7165         (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LENGTH_MEASURE'
7166         IN TYPEOF(second_trim_condition)) AND
7167         ((second_trim_intent = trim_intent.offset)
7168         OR (second_trim_intent = trim_intent.up_to_next))));
7169	WR3 : NOT (((NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LENGTH_MEASURE'
7170         IN TYPEOF(first_trim_condition))) AND
7171         ((first_trim_intent = trim_intent.blind)
7172         OR (first_trim_intent = trim_intent.through_all))) OR
7173         ((NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LENGTH_MEASURE'
7174         IN TYPEOF(second_trim_condition))) AND
7175         ((second_trim_intent = trim_intent.blind)
7176         OR (second_trim_intent = trim_intent.through_all))));
7177	WR4 : (((first_trim_intent = trim_intent.offset)
7178           AND (first_offset > 0)) XOR
7179         ((first_trim_intent <> trim_intent.offset)
7180           AND (first_offset = 0))) AND
7181         (((second_trim_intent = trim_intent.offset)
7182           AND (second_offset > 0)) XOR
7183         ((second_trim_intent <> trim_intent.offset)
7184            AND (second_offset = 0)));
7185	WR5 : NOT((('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LENGTH_MEASURE'
7186         IN TYPEOF(first_trim_condition)) AND
7187            ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LENGTH_MEASURE'
7188         IN TYPEOF(second_trim_condition))) AND
7189         (first_trim_condition = second_trim_condition));
7190END_ENTITY;
7191
7192
7193ENTITY fabrication_joint
7194	SUBTYPE OF (component_feature_joint);
7195WHERE
7196	WR1 : acyclic_shape_aspect_relationship(SELF,
7197       [SELF\shape_aspect_relationship.related_shape_aspect],
7198       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
7199       'FABRICATION_JOINT');
7200END_ENTITY;
7201
7202
7203ENTITY face
7204	SUPERTYPE OF (ONEOF (face_surface, subface, oriented_face))
7205	SUBTYPE OF (topological_representation_item);
7206	bounds : SET [1:?] OF face_bound;
7207WHERE
7208	WR1 : NOT (mixed_loop_type_set(list_to_set(list_face_loops(SELF))));
7209	WR2 : SIZEOF(QUERY(temp <* bounds | 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE_OUTER_BOUND' IN
7210                                               TYPEOF(temp))) <= 1;
7211END_ENTITY;
7212
7213
7214ENTITY face_based_surface_model
7215	SUBTYPE OF (geometric_representation_item);
7216	fbsm_faces : SET [1:?] OF connected_face_set;
7217END_ENTITY;
7218
7219
7220ENTITY face_bound
7221	SUBTYPE OF (topological_representation_item);
7222	bound : loop;
7223	orientation : BOOLEAN;
7224END_ENTITY;
7225
7226
7227ENTITY face_outer_bound
7228	SUBTYPE OF (face_bound);
7229END_ENTITY;
7230
7231
7232ENTITY face_surface
7233	SUBTYPE OF (face, geometric_representation_item);
7234	face_geometry : surface;
7235	same_sense : BOOLEAN;
7236WHERE
7237	WR1 : NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ORIENTED_SURFACE' IN TYPEOF(face_geometry));
7238END_ENTITY;
7239
7240
7241ENTITY faceted_brep
7242	SUBTYPE OF (manifold_solid_brep);
7243END_ENTITY;
7244
7245
7246ENTITY faceted_brep_shape_representation
7247	SUBTYPE OF (shape_representation);
7248WHERE
7249	WR1 : SIZEOF (
7250QUERY ( it <* items| NOT ( SIZEOF ([ 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACETED_BREP', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AXIS2_PLACEMENT_3D' ] * TYPEOF (it)) = 1) )) = 0;
7251	WR2 : SIZEOF (
7252QUERY ( it <* items| ( SIZEOF ([ 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACETED_BREP', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM' ] * TYPEOF (it)) = 1) )) > 0;
7253	WR3 : SIZEOF (
7254QUERY ( fbrep <*
7255QUERY ( it <* items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACETED_BREP' IN TYPEOF (it)) )| NOT ( SIZEOF (
7256QUERY ( csh <* msb_shells(fbrep)| NOT ( SIZEOF (
7257QUERY ( fcs <* csh\connected_face_set.cfs_faces| NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE_SURFACE' IN TYPEOF (fcs)) AND (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PLANE' IN TYPEOF (fcs\face_surface.face_geometry)) AND ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CARTESIAN_POINT' IN TYPEOF (fcs\face_surface.face_geometry\elementary_surface.position.location)))) )) = 0) )) = 0) )) = 0;
7258	WR4 : SIZEOF (
7259QUERY ( fbrep <*
7260QUERY ( it <* items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACETED_BREP' IN TYPEOF (it)) )| NOT ( SIZEOF (
7261QUERY ( csh <* msb_shells(fbrep)| NOT ( SIZEOF (
7262QUERY ( fcs <* csh\connected_face_set.cfs_faces| NOT ( SIZEOF (
7263QUERY ( bnds <* fcs.bounds| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE_OUTER_BOUND' IN TYPEOF (bnds)) )) = 1) )) = 0) )) = 0) )) = 0;
7264	WR5 : SIZEOF (
7265QUERY ( msb <*
7266QUERY ( it <* items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF (it)) )| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF (msb\manifold_solid_brep.outer)) )) = 0;
7267	WR6 : SIZEOF (
7268QUERY ( brv <*
7269QUERY ( it <* items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.BREP_WITH_VOIDS' IN TYPEOF (it)) )| NOT ( SIZEOF (
7270QUERY ( csh <* brv\brep_with_voids.voids| csh\oriented_closed_shell.orientation )) = 0) )) = 0;
7271	WR7 : SIZEOF (
7272QUERY ( mi <*
7273QUERY ( it <* items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACETED_BREP_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0;
7274END_ENTITY;
7275
7276
7277ENTITY fact_type
7278	SUBTYPE OF (property_definition);
7279END_ENTITY;
7280
7281
7282ENTITY feature_definition_with_connection_area
7283	SUBTYPE OF (shape_feature_definition);
7284END_ENTITY;
7285
7286
7287ENTITY fiducial
7288	SUBTYPE OF (laminate_component);
7289END_ENTITY;
7290
7291
7292ENTITY fiducial_part_feature
7293	SUBTYPE OF (part_tooling_feature);
7294END_ENTITY;
7295
7296
7297ENTITY fiducial_stratum_feature
7298	SUBTYPE OF (stratum_feature);
7299END_ENTITY;
7300
7301
7302ENTITY fill_area_style
7303	SUBTYPE OF (founded_item);
7304	name : label;
7305	fill_styles : SET [1:?] OF fill_style_select;
7306WHERE
7307	WR1 : SIZEOF(QUERY(fill_style <* SELF.fill_styles |
7308         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
7309         'FILL_AREA_STYLE_COLOUR' IN
7310         TYPEOF(fill_style)
7311         )) <= 1;
7312END_ENTITY;
7313
7314
7315ENTITY fill_area_style_colour;
7316	name : label;
7317	fill_colour : colour;
7318END_ENTITY;
7319
7320
7321ENTITY fill_area_style_hatching
7322	SUBTYPE OF (geometric_representation_item);
7323	hatch_line_appearance : curve_style;
7324	start_of_next_hatch_line : one_direction_repeat_factor;
7325	point_of_reference_hatch_line : cartesian_point;
7326	pattern_start : cartesian_point;
7327	hatch_line_angle : plane_angle_measure;
7328END_ENTITY;
7329
7330
7331ENTITY fill_area_style_tile_coloured_region
7332	SUBTYPE OF (geometric_representation_item);
7333	closed_curve : curve_or_annotation_curve_occurrence;
7334	region_colour : colour;
7335WHERE
7336	WR1 : (NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE' IN TYPEOF (closed_curve))) OR
7337        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CIRCLE' IN TYPEOF (closed_curve)) OR
7338        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ELLIPSE' IN TYPEOF (closed_curve)) OR
7339        ( ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.B_SPLINE_CURVE' IN TYPEOF (closed_curve))
7340             AND (closed_curve\b_spline_curve.closed_curve = TRUE) ) OR
7341        ( ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMPOSITE_CURVE' IN TYPEOF (closed_curve))
7342             AND (closed_curve\composite_curve.closed_curve = TRUE) ) OR
7343        ( ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POLYLINE' IN TYPEOF (closed_curve))
7344             AND (closed_curve\polyline.points[LOINDEX(closed_curve\polyline.points)] =
7345                  closed_curve\polyline.points[HIINDEX(closed_curve\polyline.points)]) );
7346END_ENTITY;
7347
7348
7349ENTITY fill_area_style_tile_curve_with_style
7350	SUBTYPE OF (geometric_representation_item);
7351	styled_curve : annotation_curve_occurrence;
7352END_ENTITY;
7353
7354
7355ENTITY fill_area_style_tile_symbol_with_style
7356	SUBTYPE OF (geometric_representation_item);
7357	symbol : annotation_symbol_occurrence;
7358END_ENTITY;
7359
7360
7361ENTITY fill_area_style_tiles
7362	SUBTYPE OF (geometric_representation_item);
7363	tiling_pattern : two_direction_repeat_factor;
7364	tiles : SET [1:?] OF fill_area_style_tile_shape_select;
7365	tiling_scale : positive_ratio_measure;
7366END_ENTITY;
7367
7368
7369ENTITY fill_area_template
7370	SUBTYPE OF (parametric_template);
7371END_ENTITY;
7372
7373
7374ENTITY filled_via
7375	SUBTYPE OF (via);
7376END_ENTITY;
7377
7378
7379ENTITY flat_pattern_ply_representation_relationship
7380	SUBTYPE OF (shape_representation_relationship);
7381WHERE
7382	WR1 : 'AP210_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION' IN
7383        (TYPEOF (SELF\representation_relationship.rep_1) *
7384         TYPEOF (SELF\representation_relationship.rep_2));
7385	WR2 : SELF\representation_relationship.rep_1.
7386        context_of_items\geometric_representation_context.
7387        coordinate_space_dimension = 3;
7388END_ENTITY;
7389
7390
7391ENTITY flatness_tolerance
7392	SUBTYPE OF (geometric_tolerance);
7393WHERE
7394	WR1 : NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF));
7395END_ENTITY;
7396
7397
7398ENTITY footprint_definition
7399	SUBTYPE OF (generic_footprint_definition);
7400END_ENTITY;
7401
7402
7403ENTITY footprint_library_stratum_technology
7404	SUBTYPE OF (stratum_technology);
7405END_ENTITY;
7406
7407
7408ENTITY footprint_occurrence
7409	SUBTYPE OF (structured_layout_component);
7410END_ENTITY;
7411
7412
7413ENTITY footprint_occurrence_product_definition_relationship
7414	SUBTYPE OF (structured_layout_component_sub_assembly_relationship);
7415END_ENTITY;
7416
7417
7418ENTITY force_measure_with_unit
7419	SUBTYPE OF (measure_with_unit);
7420WHERE
7421	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FORCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
7422END_ENTITY;
7423
7424
7425ENTITY force_unit
7426	SUBTYPE OF (derived_unit);
7427WHERE
7428	WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.newton);
7429END_ENTITY;
7430
7431
7432ENTITY forward_chaining_rule
7433	SUBTYPE OF (rule_definition);
7434END_ENTITY;
7435
7436
7437ENTITY forward_chaining_rule_premise
7438	SUBTYPE OF (property_definition, property_definition_representation, representation);
7439END_ENTITY;
7440
7441
7442ENTITY founded_item
7443	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));
7444DERIVE
7445	users : SET [0:?] OF founded_item_select := using_items(SELF,[]);
7446WHERE
7447	WR1 : SIZEOF(users) > 0;
7448	WR2 : NOT(SELF IN users);
7449END_ENTITY;
7450
7451
7452ENTITY frequency_measure_with_unit
7453	SUBTYPE OF (measure_with_unit);
7454WHERE
7455	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FREQUENCY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
7456END_ENTITY;
7457
7458
7459ENTITY frequency_unit
7460	SUBTYPE OF (derived_unit);
7461WHERE
7462	WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.hertz);
7463END_ENTITY;
7464
7465
7466ENTITY frozen_assignment
7467	SUBTYPE OF (approval_assignment);
7468	items : SET [1:?] OF managed_design_object;
7469END_ENTITY;
7470
7471
7472ENTITY func
7473	SUBTYPE OF (compound_representation_item);
7474END_ENTITY;
7475
7476
7477ENTITY functional_breakdown_context
7478	SUBTYPE OF (breakdown_context);
7479END_ENTITY;
7480
7481
7482ENTITY functional_element_usage
7483	SUBTYPE OF (breakdown_element_usage);
7484END_ENTITY;
7485
7486
7487ENTITY functional_specification
7488	SUBTYPE OF (representation);
7489END_ENTITY;
7490
7491
7492ENTITY functional_specification_definition
7493	SUBTYPE OF (functional_unit);
7494END_ENTITY;
7495
7496
7497ENTITY functional_terminal_group
7498	SUBTYPE OF (group);
7499UNIQUE
7500	UR1 : SELF\group.name;
7501END_ENTITY;
7502
7503
7504ENTITY functional_unit
7505	SUBTYPE OF (product_definition, product_definition_shape);
7506DERIVE
7507	SELF\property_definition.definition : functional_unit := SELF;
7508WHERE
7509	WR1 : SIZEOF (USEDIN (SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +'NAME_ATTRIBUTE.NAMED_ITEM')) = 0;
7510	WR2 : NOT EXISTS(SELF\property_definition.description);
7511END_ENTITY;
7512
7513
7514ENTITY functional_unit_terminal_definition
7515	SUBTYPE OF (shape_aspect);
7516	SELF\shape_aspect.of_shape : functional_unit;
7517END_ENTITY;
7518
7519
7520ENTITY functionally_defined_transformation;
7521	name : label;
7522	description : OPTIONAL text;
7523END_ENTITY;
7524
7525
7526ENTITY general_material_property
7527	SUBTYPE OF (general_property);
7528WHERE
7529	WR1 : SIZEOF( QUERY( gpa <* USEDIN(SELF,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GENERAL_PROPERTY_ASSOCIATION.BASE_DEFINITION') |
7530        NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MATERIAL_PROPERTY' IN TYPEOF(gpa.derived_definition)) )) = 0;
7531END_ENTITY;
7532
7533
7534ENTITY general_property;
7535	id : identifier;
7536	name : label;
7537	description : OPTIONAL text;
7538END_ENTITY;
7539
7540
7541ENTITY general_property_association;
7542	name : label;
7543	description : OPTIONAL text;
7544	base_definition : general_property;
7545	derived_definition : derived_property_select;
7546WHERE
7547	WR1 : SIZEOF(USEDIN(derived_definition, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'GENERAL_PROPERTY_ASSOCIATION.' + 'DERIVED_DEFINITION')) = 1;
7548	WR2 : derived_definition.name = base_definition.name;
7549END_ENTITY;
7550
7551
7552ENTITY general_property_relationship;
7553	name : label;
7554	description : OPTIONAL text;
7555	relating_property : general_property;
7556	related_property : general_property;
7557END_ENTITY;
7558
7559
7560ENTITY generic_character_glyph_symbol
7561	ABSTRACT SUPERTYPE
7562	SUBTYPE OF (symbol_representation);
7563END_ENTITY;
7564
7565
7566ENTITY generic_expression
7567	ABSTRACT SUPERTYPE OF (ONEOF (simple_generic_expression, unary_generic_expression, binary_generic_expression, multiple_arity_generic_expression));
7568WHERE
7569	WR1 : is_acyclic(SELF);
7570END_ENTITY;
7571
7572
7573ENTITY generic_footprint_definition
7574	ABSTRACT SUPERTYPE OF (ONEOF (footprint_definition, breakout_footprint_definition))
7575	SUBTYPE OF (multi_stratum_structured_template);
7576END_ENTITY;
7577
7578
7579ENTITY generic_laminate_text_component
7580	ABSTRACT SUPERTYPE OF (ONEOF (additive_laminate_text_component, material_removal_laminate_text_component))
7581	SUBTYPE OF (laminate_component);
7582END_ENTITY;
7583
7584
7585ENTITY generic_literal
7586	ABSTRACT SUPERTYPE
7587	SUBTYPE OF (simple_generic_expression);
7588END_ENTITY;
7589
7590
7591ENTITY generic_variable
7592	ABSTRACT SUPERTYPE
7593	SUBTYPE OF (simple_generic_expression);
7594INVERSE
7595	interpretation: environment FOR syntactic_representation;
7596END_ENTITY;
7597
7598
7599ENTITY geometric_alignment
7600	SUBTYPE OF (derived_shape_aspect);
7601WHERE
7602	WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)> 1;
7603END_ENTITY;
7604
7605
7606ENTITY geometric_curve_set
7607	SUBTYPE OF (geometric_set);
7608WHERE
7609	WR1 : SIZEOF(QUERY(temp <* SELF\geometric_set.elements |
7610                            'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE' IN TYPEOF(temp))) = 0;
7611END_ENTITY;
7612
7613
7614ENTITY geometric_intersection
7615	SUBTYPE OF (derived_shape_aspect);
7616WHERE
7617	WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)> 1;
7618END_ENTITY;
7619
7620
7621ENTITY geometric_item_specific_usage
7622	SUBTYPE OF (item_identified_representation_usage);
7623	SELF\item_identified_representation_usage.definition : geometric_item_specific_usage_select;
7624	SELF\item_identified_representation_usage.identified_item : geometric_representation_item;
7625	SELF\item_identified_representation_usage.used_representation : shape_representation;
7626END_ENTITY;
7627
7628
7629ENTITY geometric_model_element_relationship
7630	SUBTYPE OF (geometric_representation_item, representation_item_relationship);
7631	SELF\representation_item_relationship.related_representation_item : geometric_representation_item;
7632	SELF\representation_item_relationship.relating_representation_item : geometric_representation_item;
7633UNIQUE
7634	UR1 : relating_representation_item, related_representation_item;
7635WHERE
7636	WR1 : SELF\representation_item_relationship.relating_representation_item :<>:
7637        SELF\representation_item_relationship.related_representation_item;
7638END_ENTITY;
7639
7640
7641ENTITY geometric_representation_context
7642	SUBTYPE OF (representation_context);
7643	coordinate_space_dimension : dimension_count;
7644END_ENTITY;
7645
7646
7647ENTITY geometric_representation_item
7648	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, primitive_2d, right_angular_wedge, half_space_solid, half_space_2d, 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))
7649	SUBTYPE OF (representation_item);
7650DERIVE
7651	dim : dimension_count := dimension_of(SELF);
7652WHERE
7653	WR1 : SIZEOF (QUERY (using_rep <* using_representations (SELF) |
7654      NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN
7655      TYPEOF (using_rep.context_of_items)))) = 0;
7656END_ENTITY;
7657
7658
7659ENTITY geometric_set
7660	SUBTYPE OF (geometric_representation_item);
7661	elements : SET [1:?] OF geometric_set_select;
7662END_ENTITY;
7663
7664
7665ENTITY geometric_template
7666	ABSTRACT SUPERTYPE
7667	SUBTYPE OF (part_template_definition);
7668END_ENTITY;
7669
7670
7671ENTITY geometric_tolerance;
7672	name : label;
7673	description : text;
7674	magnitude : measure_with_unit;
7675	toleranced_shape_aspect : shape_aspect;
7676WHERE
7677	WR1 : ('NUMBER' IN TYPEOF
7678       (magnitude\measure_with_unit.value_component)) AND
7679       (magnitude\measure_with_unit.value_component >= 0.0);
7680END_ENTITY;
7681
7682
7683ENTITY geometric_tolerance_group
7684	SUBTYPE OF (property_definition);
7685END_ENTITY;
7686
7687
7688ENTITY geometric_tolerance_relationship;
7689	name : label;
7690	description : text;
7691	relating_geometric_tolerance : geometric_tolerance;
7692	related_geometric_tolerance : geometric_tolerance;
7693END_ENTITY;
7694
7695
7696ENTITY geometric_tolerance_with_datum_reference
7697	SUBTYPE OF (geometric_tolerance);
7698	datum_system : SET [1:?] OF datum_reference;
7699END_ENTITY;
7700
7701
7702ENTITY geometric_tolerance_with_defined_unit
7703	SUBTYPE OF (geometric_tolerance);
7704	unit_size : measure_with_unit;
7705WHERE
7706	WR1 : ('NUMBER' IN TYPEOF
7707       (unit_size\measure_with_unit.value_component)) AND
7708       (unit_size\measure_with_unit.value_component > 0.0);
7709END_ENTITY;
7710
7711
7712ENTITY geometrical_tolerance_callout
7713	SUBTYPE OF (draughting_callout);
7714END_ENTITY;
7715
7716
7717ENTITY geometrically_bounded_2d_wireframe_representation
7718	SUBTYPE OF (shape_representation);
7719WHERE
7720	WR1 : SELF.context_of_items\geometric_representation_context.
7721            coordinate_space_dimension = 2;
7722	WR2 : SIZEOF (QUERY (item <* SELF.items |
7723         NOT (SIZEOF (TYPEOF (item) *
7724['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GEOMETRIC_CURVE_SET',
7725'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AXIS2_PLACEMENT_2D',
7726            'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM']) = 1)
7727       )) = 0;
7728	WR3 : SIZEOF (QUERY (item <* SELF.items |
7729         SIZEOF (TYPEOF (item) *
7730['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GEOMETRIC_CURVE_SET',
7731            'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM']) = 1
7732       )) >= 1;
7733	WR4 : SIZEOF (QUERY (mi <* QUERY (item <* SELF.items |
7734     ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM'
7735           IN TYPEOF (item))) |
7736         NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
7737              'GEOMETRICALLY_BOUNDED_2D_WIREFRAME_REPRESENTATION'
7738           IN TYPEOF
7739              (mi\mapped_item.mapping_source.mapped_representation))
7740       )) = 0;
7741	WR5 : SIZEOF (QUERY (gcs <* QUERY (item <* SELF.items |
7742     ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GEOMETRIC_CURVE_SET'
7743                IN TYPEOF (item))) |
7744         NOT (SIZEOF (QUERY (elem <* gcs\geometric_set.elements |
7745           NOT (SIZEOF (TYPEOF (elem) *
7746             ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.B_SPLINE_CURVE',
7747              'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CIRCLE',
7748              'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMPOSITE_CURVE',
7749              'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ELLIPSE',
7750              'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.OFFSET_CURVE_2D',
7751              'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT',
7752              'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POLYLINE',
7753              'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.TRIMMED_CURVE']) =
7754               1)
7755         )) = 0)
7756       )) = 0;
7757	WR6 : SIZEOF (QUERY (gcs <* QUERY (item <* SELF.items |
7758     ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GEOMETRIC_CURVE_SET'
7759                IN TYPEOF (item))) |
7760         NOT (SIZEOF (QUERY (crv <*
7761           QUERY (elem <* gcs\geometric_set.elements |
7762              ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE'
7763                   IN TYPEOF (elem))) |
7764           NOT (valid_basis_curve_in_2d_wireframe
7765              (crv))
7766         )) = 0)
7767       )) = 0;
7768	WR7 : SIZEOF (QUERY (gcs <* QUERY (item <* SELF.items |
7769       ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GEOMETRIC_CURVE_SET'
7770                IN TYPEOF (item))) |
7771         NOT (SIZEOF (QUERY (pnt <*
7772           QUERY (elem <* gcs\geometric_set.elements |
7773             ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT'
7774                  IN TYPEOF(elem))) |
7775             NOT (SIZEOF (TYPEOF (pnt) *
7776               ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CARTESIAN_POINT',
7777                'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT_ON_CURVE'])
7778          = 1)
7779         )) = 0)
7780       )) = 0;
7781END_ENTITY;
7782
7783
7784ENTITY geometrically_bounded_surface_shape_representation
7785	SUBTYPE OF (shape_representation);
7786WHERE
7787	WR1 : SIZEOF(QUERY(it <* SELF.items | NOT (SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GEOMETRIC_SET', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AXIS2_PLACEMENT_3D'] * TYPEOF(it)) = 1))) = 0;
7788	WR2 : SIZEOF(QUERY(it <* SELF.items | SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GEOMETRIC_SET', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM'] * TYPEOF(it)) = 1)) > 0;
7789	WR3 : SIZEOF(QUERY(mi <* QUERY(it <* SELF.items | 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)) | NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_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 | ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GEOMETRIC_SET' IN TYPEOF(mr_it)))) > 0)))) = 0;
7790	WR4 : SIZEOF(QUERY(gs <* QUERY(it <* SELF.items | 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GEOMETRIC_SET' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(pnt <* QUERY(gsel <* gs\geometric_set.elements | 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT' IN TYPEOF(gsel)) | NOT (gbsf_check_point(pnt)))) = 0))) = 0;
7791	WR5 : SIZEOF(QUERY(gs <* QUERY(it <* SELF.items | 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GEOMETRIC_SET' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(cv <* QUERY(gsel <* gs\geometric_set.elements | 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE' IN TYPEOF(gsel)) | NOT (gbsf_check_curve(cv)))) = 0))) = 0;
7792	WR6 : SIZEOF(QUERY(gs <* QUERY(it <* SELF.items | 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GEOMETRIC_SET' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(sf <* QUERY(gsel <* gs\geometric_set.elements | 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE' IN TYPEOF(gsel)) | NOT (gbsf_check_surface(sf)))) = 0))) = 0;
7793	WR7 : SIZEOF(QUERY(gs <* QUERY(it <* SELF.items | 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GEOMETRIC_SET' IN TYPEOF(it)) | SIZEOF(QUERY(gsel <* gs\geometric_set.elements | 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE' IN TYPEOF(gsel))) > 0)) > 0;
7794END_ENTITY;
7795
7796
7797ENTITY geometrically_bounded_wireframe_shape_representation
7798	SUBTYPE OF (shape_representation);
7799WHERE
7800	WR1 : SIZEOF (
7801QUERY ( it <* SELF.items| NOT ( SIZEOF ( TYPEOF (it) * [ 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GEOMETRIC_CURVE_SET', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AXIS2_PLACEMENT_3D', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM' ]) = 1) )) = 0;
7802	WR2 : SIZEOF (
7803QUERY ( it <* SELF.items| ( SIZEOF ( TYPEOF (it) * [ 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GEOMETRIC_CURVE_SET', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM' ]) = 1) )) >= 1;
7804	WR3 : SIZEOF (
7805QUERY ( gcs <*
7806QUERY ( it <* SELF.items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF (it)) )| NOT ( SIZEOF (
7807QUERY ( crv <*
7808QUERY ( elem <* gcs\geometric_set.elements| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE' IN TYPEOF (elem)) )| NOT valid_geometrically_bounded_wf_curve(crv) )) = 0) )) = 0;
7809	WR4 : SIZEOF (
7810QUERY ( gcs <*
7811QUERY ( it <* SELF.items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF (it)) )| NOT ( SIZEOF (
7812QUERY ( pnts <*
7813QUERY ( elem <* gcs\geometric_set.elements| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT' IN TYPEOF (elem)) )| NOT valid_geometrically_bounded_wf_point(pnts) )) = 0) )) = 0;
7814	WR5 : SIZEOF (
7815QUERY ( gcs <*
7816QUERY ( it <* SELF.items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF (it)) )| NOT ( SIZEOF (
7817QUERY ( cnc <*
7818QUERY ( elem <* gcs\geometric_set.elements| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONIC' IN TYPEOF (elem)) )| NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF (cnc\conic.position)) )) = 0) )) = 0;
7819	WR6 : SIZEOF (
7820QUERY ( gcs <*
7821QUERY ( it <* SELF.items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF (it)) )| NOT ( SIZEOF (
7822QUERY ( pline <*
7823QUERY ( elem <* gcs\geometric_set.elements| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POLYLINE' IN TYPEOF (elem)) )| NOT ( SIZEOF (pline\polyline.points) > 2) )) = 0) )) = 0;
7824	WR7 : SIZEOF (
7825QUERY ( mi <*
7826QUERY ( it <* SELF.items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0;
7827END_ENTITY;
7828
7829
7830ENTITY global_assignment
7831	SUBTYPE OF (representation_item_relationship);
7832END_ENTITY;
7833
7834
7835ENTITY global_uncertainty_assigned_context
7836	SUBTYPE OF (representation_context);
7837	uncertainty : SET [1:?] OF uncertainty_measure_with_unit;
7838END_ENTITY;
7839
7840
7841ENTITY global_unit_assigned_context
7842	SUBTYPE OF (representation_context);
7843	units : SET [1:?] OF unit;
7844END_ENTITY;
7845
7846
7847ENTITY ground_fact
7848	SUBTYPE OF (atomic_formula);
7849END_ENTITY;
7850
7851
7852ENTITY group;
7853	name : label;
7854	description : OPTIONAL text;
7855DERIVE
7856	id : identifier := get_id_value(SELF);
7857WHERE
7858	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
7859END_ENTITY;
7860
7861
7862ENTITY group_assignment
7863	ABSTRACT SUPERTYPE;
7864	assigned_group : group;
7865DERIVE
7866	role : object_role := get_role(SELF);
7867WHERE
7868	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
7869END_ENTITY;
7870
7871
7872ENTITY group_product_definition
7873	SUBTYPE OF (component_definition);
7874END_ENTITY;
7875
7876
7877ENTITY group_relationship;
7878	name : label;
7879	description : OPTIONAL text;
7880	relating_group : group;
7881	related_group : group;
7882END_ENTITY;
7883
7884
7885ENTITY group_shape_aspect
7886	SUBTYPE OF (shape_aspect);
7887END_ENTITY;
7888
7889
7890ENTITY guided_wave_terminal
7891	SUBTYPE OF (package_terminal);
7892END_ENTITY;
7893
7894
7895ENTITY half_space_2d
7896	SUBTYPE OF (geometric_representation_item);
7897	base_curve : curve;
7898	agreement_flag : BOOLEAN;
7899END_ENTITY;
7900
7901
7902ENTITY half_space_solid
7903	SUBTYPE OF (geometric_representation_item);
7904	base_surface : surface;
7905	agreement_flag : BOOLEAN;
7906END_ENTITY;
7907
7908
7909ENTITY hardness_representation
7910	SUBTYPE OF (representation);
7911WHERE
7912	WR1 : ( {2<= SIZEOF ( SELF.items ) <=4} ) AND ( SIZEOF ( QUERY (
7913        i <* items | ( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
7914        'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF ( i ) ) AND (
7915        i.name IN [ 'measuring method' , 'measuring position' ] ) )
7916        ) + SIZEOF ( QUERY ( i <* items | ( SIZEOF (
7917        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'MEASURE_REPRESENTATION_ITEM' ,
7918        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'VALUE_RANGE']* TYPEOF ( i ) ) =1 )
7919        AND ( i.name IN ['depth' , 'hardness'] ) ) ) = SIZEOF (
7920        SELF.items ) );
7921	WR2 : SIZEOF ( QUERY ( i <* SELF.items | i.name =
7922        'measuring method' ) ) =1;
7923	WR3 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='hardness' ) )
7924        =1;
7925	WR4 : SIZEOF ( QUERY ( i <* SELF.items | i.name =
7926        'measuring position' ) ) <=1;
7927	WR5 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='depth' ) )
7928        <=1;
7929	WR6 : ( SIZEOF ( USEDIN ( SELF ,
7930        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+
7931        'USED_REPRESENTATION' ) ) =1 ) AND ( SIZEOF ( QUERY ( pdr
7932        <* USEDIN ( SELF ,
7933        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+
7934        'USED_REPRESENTATION' ) | SIZEOF ( QUERY ( gpa <* USEDIN (
7935        pdr. definition ,
7936        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'GENERAL_PROPERTY_ASSOCIATION.'+
7937        'DERIVED_DEFINITION' ) | ( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
7938        'GENERAL_PROPERTY' IN TYPEOF ( gpa. base_definition ) ) AND
7939        ( gpa. base_definition.name ='surface_condition' ) ) ) =1 )
7940        ) =1 );
7941END_ENTITY;
7942
7943
7944ENTITY hatch_area_template
7945	SUBTYPE OF (fill_area_template);
7946END_ENTITY;
7947
7948
7949ENTITY hatch_line_element
7950	SUBTYPE OF (geometric_representation_item, representation_item_relationship);
7951	SELF\representation_item_relationship.related_representation_item : measure_representation_item;
7952	SELF\representation_item_relationship.relating_representation_item : line;
7953END_ENTITY;
7954
7955
7956ENTITY hidden_element_over_riding_styled_item
7957	SUBTYPE OF (context_dependent_over_riding_styled_item);
7958	SELF\styled_item.item : camera_image;
7959	SELF\context_dependent_over_riding_styled_item.style_context : LIST [1:1] OF presentation_view;
7960INVERSE
7961	container: SET [1:?] OF presentation_view FOR items;
7962WHERE
7963	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CAMERA_MODEL_D3_WITH_HLHSR' IN TYPEOF
7964                (SELF.item\mapped_item.mapping_source.mapping_origin);
7965END_ENTITY;
7966
7967
7968ENTITY hyperbola
7969	SUBTYPE OF (conic);
7970	semi_axis : positive_length_measure;
7971	semi_imag_axis : positive_length_measure;
7972END_ENTITY;
7973
7974
7975ENTITY id_attribute;
7976	attribute_value : identifier;
7977	identified_item : id_attribute_select;
7978END_ENTITY;
7979
7980
7981ENTITY identification_assignment
7982	ABSTRACT SUPERTYPE;
7983	assigned_id : identifier;
7984	role : identification_role;
7985END_ENTITY;
7986
7987
7988ENTITY identification_role;
7989	name : label;
7990	description : OPTIONAL text;
7991END_ENTITY;
7992
7993
7994ENTITY illuminance_measure_with_unit
7995	SUBTYPE OF (measure_with_unit);
7996WHERE
7997	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ILLUMINANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
7998END_ENTITY;
7999
8000
8001ENTITY illuminance_unit
8002	SUBTYPE OF (derived_unit);
8003WHERE
8004	WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.lux);
8005END_ENTITY;
8006
8007
8008ENTITY impedance_measurement_setup_requirement
8009	SUBTYPE OF (predefined_requirement_view_definition);
8010END_ENTITY;
8011
8012
8013ENTITY impedance_requirement
8014	SUBTYPE OF (predefined_requirement_view_definition);
8015END_ENTITY;
8016
8017
8018ENTITY included_text_block
8019	SUBTYPE OF (mapped_item);
8020WHERE
8021	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STRUCTURED_TEXT_REPRESENTATION' IN TYPEOF(SELF\mapped_item.mapping_source.mapped_representation);
8022END_ENTITY;
8023
8024
8025ENTITY inclusion_product_concept_feature
8026	SUBTYPE OF (conditional_concept_feature);
8027WHERE
8028	WR1 : NOT ( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'PACKAGE_PRODUCT_CONCEPT_FEATURE' IN TYPEOF ( SELF ) );
8029	WR2 : SIZEOF (QUERY
8030									( cfr <* USEDIN
8031											( SELF ,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP.RELATING_PRODUCT_CONCEPT_FEATURE' )
8032											|
8033											'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN TYPEOF( cfr )
8034									)
8035								) +
8036				 SIZEOF(QUERY
8037				 					( cfr <* USEDIN
8038				 							(SELF , 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP.RELATED_PRODUCT_CONCEPT_FEATURE' )
8039				 							|
8040											'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN TYPEOF(cfr)
8041									)
8042								)= 0;
8043	WR3 : SELF.condition.conditional_operator.name = 'implication';
8044END_ENTITY;
8045
8046
8047ENTITY indirect_stratum_component_join_implementation
8048	SUBTYPE OF (plated_inter_stratum_feature);
8049END_ENTITY;
8050
8051
8052ENTITY indirectly_selected_elements
8053	SUBTYPE OF (user_selected_elements);
8054	indirectly_picked_items : SET [1:?] OF representation_item;
8055END_ENTITY;
8056
8057
8058ENTITY indirectly_selected_shape_elements
8059	SUBTYPE OF (indirectly_selected_elements, user_selected_shape_elements);
8060WHERE
8061	WR1 : SIZEOF(QUERY(q <*
8062    SELF\indirectly_selected_elements.indirectly_picked_items
8063    | NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHAPE_REPRESENTATION_ITEM'
8064    IN TYPEOF(q)))) = 0;
8065END_ENTITY;
8066
8067
8068ENTITY inductance_measure_with_unit
8069	SUBTYPE OF (measure_with_unit);
8070WHERE
8071	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.INDUCTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
8072END_ENTITY;
8073
8074
8075ENTITY inductance_unit
8076	SUBTYPE OF (derived_unit);
8077WHERE
8078	WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.henry);
8079END_ENTITY;
8080
8081
8082ENTITY information_right
8083	SUBTYPE OF (action_method);
8084END_ENTITY;
8085
8086
8087ENTITY information_usage_right
8088	SUBTYPE OF (action_method);
8089END_ENTITY;
8090
8091
8092ENTITY instance_usage_context_assignment
8093	SUBTYPE OF (product_definition_context);
8094	items : SET [1:?] OF instance_usage_context_select;
8095END_ENTITY;
8096
8097
8098ENTITY instanced_feature
8099	SUBTYPE OF (shape_aspect, shape_feature_definition);
8100WHERE
8101	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_DEFINITION' IN
8102         TYPEOF(SELF\shape_aspect.of_shape.definition);
8103	WR2 : SELF\shape_aspect.product_definitional;
8104END_ENTITY;
8105
8106
8107ENTITY int_literal
8108	SUBTYPE OF (literal_number);
8109	SELF\literal_number.the_value : INTEGER;
8110END_ENTITY;
8111
8112
8113ENTITY integer_representation_item
8114	SUBTYPE OF (representation_item, int_literal);
8115END_ENTITY;
8116
8117
8118ENTITY integral_shield
8119	SUBTYPE OF (laminate_component);
8120END_ENTITY;
8121
8122
8123ENTITY inter_stratum_feature
8124	SUPERTYPE OF (ONEOF (cutout, interconnect_module_edge))
8125	SUBTYPE OF (laminate_component);
8126END_ENTITY;
8127
8128
8129ENTITY inter_stratum_feature_dependent_land
8130	ABSTRACT SUPERTYPE OF (ONEOF (plated_passage_dependent_land, unsupported_passage_dependent_land))
8131	SUBTYPE OF (land);
8132END_ENTITY;
8133
8134
8135ENTITY inter_stratum_feature_edge_segment_template
8136	SUBTYPE OF (part_template_definition, shape_aspect_relationship);
8137	SELF\shape_aspect_relationship.related_shape_aspect : edge_segment_vertex;
8138	SELF\shape_aspect_relationship.relating_shape_aspect : edge_segment_vertex;
8139WHERE
8140	WR1 : SELF\shape_aspect_relationship.relating_shape_aspect :<>:
8141       SELF\shape_aspect_relationship.related_shape_aspect;
8142END_ENTITY;
8143
8144
8145ENTITY inter_stratum_feature_edge_segment_template_with_cross_section
8146	SUBTYPE OF (inter_stratum_feature_edge_segment_template);
8147END_ENTITY;
8148
8149
8150ENTITY inter_stratum_feature_edge_template
8151	SUBTYPE OF (part_template_definition);
8152END_ENTITY;
8153
8154
8155ENTITY inter_stratum_feature_template
8156	SUPERTYPE OF (ONEOF (component_termination_passage_template, unsupported_passage_template, via_template))
8157	SUBTYPE OF (geometric_template);
8158END_ENTITY;
8159
8160
8161ENTITY interconnect_module_component
8162	SUBTYPE OF (physical_component);
8163END_ENTITY;
8164
8165
8166ENTITY interconnect_module_component_surface_feature
8167	SUBTYPE OF (physical_component_feature);
8168END_ENTITY;
8169
8170
8171ENTITY interconnect_module_cutout_segment_surface
8172	SUBTYPE OF (shape_aspect, shape_aspect_relationship);
8173	SELF\shape_aspect_relationship.related_shape_aspect : edge_segment_vertex;
8174	SELF\shape_aspect_relationship.relating_shape_aspect : edge_segment_vertex;
8175WHERE
8176	WR1 : SELF\shape_aspect_relationship.relating_shape_aspect :<>:
8177       SELF\shape_aspect_relationship.related_shape_aspect;
8178END_ENTITY;
8179
8180
8181ENTITY interconnect_module_design_object_category
8182	SUBTYPE OF (characterized_object);
8183END_ENTITY;
8184
8185
8186ENTITY interconnect_module_design_view
8187	SUPERTYPE OF (layered_interconnect_module_design_view)
8188	SUBTYPE OF (physical_unit);
8189END_ENTITY;
8190
8191
8192ENTITY interconnect_module_edge
8193	SUPERTYPE OF (ONEOF (partially_plated_interconnect_module_edge, plated_interconnect_module_edge))
8194	SUBTYPE OF (inter_stratum_feature);
8195END_ENTITY;
8196
8197
8198ENTITY interconnect_module_edge_segment
8199	SUPERTYPE OF (ONEOF (plated_interconnect_module_edge_segment, unplated_interconnect_module_edge_segment))
8200	SUBTYPE OF (inter_stratum_feature, shape_aspect_relationship);
8201	SELF\shape_aspect_relationship.related_shape_aspect : edge_segment_vertex;
8202	SELF\shape_aspect_relationship.relating_shape_aspect : edge_segment_vertex;
8203WHERE
8204	WR1 : SELF\shape_aspect_relationship.relating_shape_aspect :<>:
8205        SELF\shape_aspect_relationship.related_shape_aspect;
8206END_ENTITY;
8207
8208
8209ENTITY interconnect_module_edge_segment_surface
8210	SUBTYPE OF (shape_aspect, shape_aspect_relationship);
8211	SELF\shape_aspect_relationship.related_shape_aspect : edge_segment_vertex;
8212	SELF\shape_aspect_relationship.relating_shape_aspect : edge_segment_vertex;
8213WHERE
8214	WR1 : SELF\shape_aspect_relationship.relating_shape_aspect :<>:
8215       SELF\shape_aspect_relationship.related_shape_aspect;
8216END_ENTITY;
8217
8218
8219ENTITY interconnect_module_interface_terminal
8220	SUBTYPE OF (interconnect_module_terminal);
8221END_ENTITY;
8222
8223
8224ENTITY interconnect_module_macro_component
8225	SUBTYPE OF (physical_component);
8226END_ENTITY;
8227
8228
8229ENTITY interconnect_module_macro_component_join_terminal
8230	SUBTYPE OF (physical_component_terminal);
8231END_ENTITY;
8232
8233
8234ENTITY interconnect_module_macro_terminal
8235	SUBTYPE OF (interconnect_module_terminal);
8236END_ENTITY;
8237
8238
8239ENTITY interconnect_module_stratum_based_terminal
8240	SUBTYPE OF (interconnect_module_terminal);
8241END_ENTITY;
8242
8243
8244ENTITY interconnect_module_terminal
8245	SUPERTYPE OF (ONEOF (interconnect_module_interface_terminal, interconnect_module_macro_terminal))
8246	SUBTYPE OF (shape_aspect);
8247END_ENTITY;
8248
8249
8250ENTITY interconnect_module_usage_view
8251	SUPERTYPE OF (layered_interconnect_module_usage_view)
8252	SUBTYPE OF (physical_unit);
8253END_ENTITY;
8254
8255
8256ENTITY interconnect_shield_allocation
8257	SUBTYPE OF (requirement_assignment);
8258END_ENTITY;
8259
8260
8261ENTITY interface_access_component_definition
8262	SUBTYPE OF (laminate_component);
8263END_ENTITY;
8264
8265
8266ENTITY interface_access_material_removal_laminate_component
8267	SUBTYPE OF (material_removal_laminate_component);
8268END_ENTITY;
8269
8270
8271ENTITY interface_access_stratum_feature_template_component
8272	SUBTYPE OF (stratum_feature_template_component);
8273END_ENTITY;
8274
8275
8276ENTITY interface_component
8277	SUBTYPE OF (physical_component);
8278END_ENTITY;
8279
8280
8281ENTITY interface_mounted_join
8282	SUBTYPE OF (shape_aspect_relationship, shape_aspect);
8283END_ENTITY;
8284
8285
8286ENTITY interface_plane
8287	SUBTYPE OF (shape_aspect);
8288END_ENTITY;
8289
8290
8291ENTITY interfaced_group_component
8292	SUBTYPE OF (assembly_group_component);
8293END_ENTITY;
8294
8295
8296ENTITY interfacial_connection
8297	SUBTYPE OF (via);
8298END_ENTITY;
8299
8300
8301ENTITY internal_probe_access_area
8302	SUBTYPE OF (probe_access_area);
8303END_ENTITY;
8304
8305
8306ENTITY intersection_curve
8307	SUBTYPE OF (surface_curve);
8308WHERE
8309	WR1 : SIZEOF(SELF\surface_curve.associated_geometry) = 2;
8310	WR2 : associated_surface(SELF\surface_curve.associated_geometry[1]) <>
8311             associated_surface(SELF\surface_curve.associated_geometry[2]);
8312END_ENTITY;
8313
8314
8315ENTITY interval_expression
8316	SUBTYPE OF (boolean_expression, multiple_arity_generic_expression);
8317DERIVE
8318	interval_high : generic_expression := SELF\multiple_arity_generic_expression.operands[3];
8319	interval_item : generic_expression := SELF\multiple_arity_generic_expression.operands[2];
8320	interval_low : generic_expression := SELF\multiple_arity_generic_expression.operands[1];
8321WHERE
8322	WR1 : ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EXPRESSION'
8323				IN TYPEOF(interval_low))
8324		AND ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EXPRESSION'
8325				IN TYPEOF(interval_item) )
8326		AND ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EXPRESSION'
8327				IN TYPEOF(interval_high));
8328	WR2 : (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STRING_EXPRESSION'
8329				IN TYPEOF (SELF.interval_low))
8330			AND ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STRING_EXPRESSION'
8331				IN TYPEOF (SELF.interval_high))
8332			AND ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STRING_EXPRESSION'
8333				IN TYPEOF (SELF.interval_item)))
8334		OR
8335		(('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STRING_EXPRESSION'
8336				IN TYPEOF(SELF.interval_low))
8337			AND ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.NUMERIC_EXPRESSION'
8338				IN TYPEOF(SELF.interval_item))
8339			AND ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.NUMERIC_EXPRESSION'
8340				IN TYPEOF(SELF.interval_high)));
8341END_ENTITY;
8342
8343
8344ENTITY inverse_copy_stratum_technology_occurrence_relationship
8345	SUBTYPE OF (derived_stratum_technology_occurrence_relationship);
8346END_ENTITY;
8347
8348
8349ENTITY invisibility;
8350	invisible_items : SET [1:?] OF invisible_item;
8351END_ENTITY;
8352
8353
8354ENTITY iso4217_currency
8355	SUBTYPE OF (currency);
8356END_ENTITY;
8357
8358
8359ENTITY item_defined_transformation;
8360	name : label;
8361	description : OPTIONAL text;
8362	transform_item_1 : representation_item;
8363	transform_item_2 : representation_item;
8364END_ENTITY;
8365
8366
8367ENTITY item_identified_representation_usage;
8368	name : label;
8369	description : OPTIONAL text;
8370	definition : represented_definition;
8371	used_representation : representation;
8372	identified_item : representation_item;
8373WHERE
8374	WR1 : SELF.used_representation IN using_representations(SELF.identified_item);
8375END_ENTITY;
8376
8377
8378ENTITY item_restricted_requirement
8379	SUBTYPE OF (group, predefined_requirement_view_definition);
8380END_ENTITY;
8381
8382
8383ENTITY join_shape_aspect
8384	SUBTYPE OF (shape_aspect);
8385END_ENTITY;
8386
8387
8388ENTITY keepout_design_object_category
8389	SUBTYPE OF (characterized_object);
8390END_ENTITY;
8391
8392
8393ENTITY known_source
8394	SUBTYPE OF (external_source, pre_defined_item);
8395END_ENTITY;
8396
8397
8398ENTITY laid_defined_transformation
8399	SUBTYPE OF (transformation_with_derived_angle);
8400END_ENTITY;
8401
8402
8403ENTITY laminate_component
8404	SUPERTYPE OF ((ONEOF (material_removal_laminate_component, (stratum_feature_template_component ANDOR probe_access_area), inter_stratum_feature, generic_laminate_text_component, laminate_text_string_component) ANDOR fiducial))
8405	SUBTYPE OF (assembly_component);
8406END_ENTITY;
8407
8408
8409ENTITY laminate_component_feature
8410	SUPERTYPE OF (ONEOF (laminate_component_interface_terminal, laminate_component_join_terminal))
8411	SUBTYPE OF (component_feature);
8412END_ENTITY;
8413
8414
8415ENTITY laminate_component_interface_terminal
8416	SUBTYPE OF (laminate_component_feature);
8417END_ENTITY;
8418
8419
8420ENTITY laminate_component_join_terminal
8421	SUBTYPE OF (laminate_component_feature, component_terminal);
8422END_ENTITY;
8423
8424
8425ENTITY laminate_group_component_make_from_relationship
8426	SUBTYPE OF (make_from_usage_option);
8427	SELF\product_definition_relationship.related_product_definition : assembly_group_component;
8428	SELF\product_definition_relationship.relating_product_definition : assembly_group_component;
8429END_ENTITY;
8430
8431
8432ENTITY laminate_table
8433	SUPERTYPE OF (ONEOF (part_laminate_table, zone_structural_makeup))
8434	SUBTYPE OF (product_definition);
8435END_ENTITY;
8436
8437
8438ENTITY laminate_text_string_component
8439	SUBTYPE OF (array_placement_group, laminate_component);
8440END_ENTITY;
8441
8442
8443ENTITY land
8444	SUPERTYPE OF (ONEOF (contact_size_dependent_land, inter_stratum_feature_dependent_land))
8445	SUBTYPE OF (stratum_feature_template_component);
8446END_ENTITY;
8447
8448
8449ENTITY land_physical_template
8450	SUPERTYPE OF (ONEOF (default_passage_based_land_physical_template, default_attachment_size_based_land_physical_template))
8451	SUBTYPE OF (stratum_feature_template);
8452END_ENTITY;
8453
8454
8455ENTITY land_template_terminal
8456	SUBTYPE OF (shape_aspect);
8457END_ENTITY;
8458
8459
8460ENTITY land_with_join_terminal
8461	SUBTYPE OF (land, laminate_component_join_terminal);
8462DERIVE
8463	SELF\shape_aspect.of_shape : land_with_join_terminal := SELF;
8464END_ENTITY;
8465
8466
8467ENTITY language
8468	SUBTYPE OF (group);
8469WHERE
8470	WR1 : SELF\group.name <> '';
8471END_ENTITY;
8472
8473
8474ENTITY layer_connection_point
8475	SUBTYPE OF (shape_aspect);
8476UNIQUE
8477	UR1 : SELF\shape_aspect.name, SELF\shape_aspect.of_shape;
8478END_ENTITY;
8479
8480
8481ENTITY layer_qualified_layout_spacing_requirement
8482	SUBTYPE OF (layout_spacing_requirement);
8483END_ENTITY;
8484
8485
8486ENTITY layer_stack_region
8487	SUBTYPE OF (instanced_feature);
8488END_ENTITY;
8489
8490
8491ENTITY layered_assembly_module_design_view
8492	SUBTYPE OF (assembly_module_design_view);
8493END_ENTITY;
8494
8495
8496ENTITY layered_assembly_module_usage_view
8497	SUBTYPE OF (assembly_module_usage_view);
8498END_ENTITY;
8499
8500
8501ENTITY layered_assembly_panel_design_view
8502	SUBTYPE OF (assembly_module_design_view);
8503END_ENTITY;
8504
8505
8506ENTITY layered_interconnect_module_design_view
8507	SUPERTYPE OF (layered_interconnect_panel_design_view)
8508	SUBTYPE OF (interconnect_module_design_view);
8509END_ENTITY;
8510
8511
8512ENTITY layered_interconnect_module_usage_view
8513	SUBTYPE OF (interconnect_module_usage_view);
8514END_ENTITY;
8515
8516
8517ENTITY layered_interconnect_panel_design_view
8518	SUBTYPE OF (layered_interconnect_module_design_view);
8519END_ENTITY;
8520
8521
8522ENTITY layout_junction
8523	SUBTYPE OF (shape_aspect);
8524END_ENTITY;
8525
8526
8527ENTITY layout_macro_component
8528	SUBTYPE OF (printed_component);
8529END_ENTITY;
8530
8531
8532ENTITY layout_macro_definition
8533	SUBTYPE OF (layered_interconnect_module_design_view);
8534END_ENTITY;
8535
8536
8537ENTITY layout_macro_definition_terminal_to_usage_terminal_assignment
8538	SUBTYPE OF (shape_aspect, shape_aspect_relationship);
8539	SELF\shape_aspect_relationship.related_shape_aspect : printed_part_template_terminal;
8540UNIQUE
8541  UR1: SELF\shape_aspect_relationship.name;
8542END_ENTITY;
8543
8544
8545ENTITY layout_macro_floor_plan_template
8546	SUBTYPE OF (printed_part_template);
8547END_ENTITY;
8548
8549
8550ENTITY layout_spacing_contextual_area
8551	SUBTYPE OF (shape_aspect);
8552END_ENTITY;
8553
8554
8555ENTITY layout_spacing_requirement
8556	SUBTYPE OF (predefined_requirement_view_definition);
8557END_ENTITY;
8558
8559
8560ENTITY leader_curve
8561	SUBTYPE OF (annotation_curve_occurrence);
8562WHERE
8563	WR1 : SIZEOF(
8564          QUERY(ldc <* USEDIN( SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
8565                       'DRAUGHTING_CALLOUT.CONTENTS')
8566                   |   'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
8567                       'LEADER_DIRECTED_CALLOUT'  IN TYPEOF(ldc))) >= 1;
8568END_ENTITY;
8569
8570
8571ENTITY leader_directed_callout
8572	SUBTYPE OF (draughting_callout);
8573WHERE
8574	WR1 : SIZEOF (QUERY (l_1 <* SELF\draughting_callout.contents |
8575        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LEADER_CURVE' IN (TYPEOF(l_1)))) >= 1;
8576	WR2 : SIZEOF(SELF\draughting_callout.contents) >=2;
8577END_ENTITY;
8578
8579
8580ENTITY leader_directed_dimension
8581	SUBTYPE OF (leader_directed_callout);
8582WHERE
8583	WR1 : SIZEOF (QUERY (con <* SELF.contents |
8584       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LEADER_CURVE' IN TYPEOF (con)))=1;
8585END_ENTITY;
8586
8587
8588ENTITY leader_terminator
8589	SUBTYPE OF (terminator_symbol);
8590WHERE
8591	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LEADER_CURVE' IN TYPEOF
8592        (SELF\terminator_symbol.annotated_curve);
8593END_ENTITY;
8594
8595
8596ENTITY length_measure_with_unit
8597	SUBTYPE OF (measure_with_unit);
8598WHERE
8599	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LENGTH_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
8600END_ENTITY;
8601
8602
8603ENTITY length_trimmed_terminal
8604	SUBTYPE OF (altered_package_terminal);
8605END_ENTITY;
8606
8607
8608ENTITY length_unit
8609	SUBTYPE OF (named_unit);
8610WHERE
8611	WR1 : (SELF\named_unit.dimensions.length_exponent = 1.0) AND
8612    (SELF\named_unit.dimensions.mass_exponent = 0.0) AND
8613    (SELF\named_unit.dimensions.time_exponent = 0.0) AND
8614    (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND
8615    (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND
8616    (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND
8617    (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0);
8618END_ENTITY;
8619
8620
8621ENTITY library_defined_product_definition
8622	SUBTYPE OF (externally_defined_product_definition);
8623DERIVE
8624	library : external_source := SELF\externally_defined_item.source;
8625END_ENTITY;
8626
8627
8628ENTITY library_stack_model
8629	SUBTYPE OF (stratum_stack_model);
8630END_ENTITY;
8631
8632
8633ENTITY library_to_design_stack_model_mapping
8634	SUBTYPE OF (product_definition_relationship);
8635END_ENTITY;
8636
8637
8638ENTITY light_source
8639	SUPERTYPE OF (ONEOF (light_source_ambient, light_source_directional, light_source_positional, light_source_spot))
8640	SUBTYPE OF (geometric_representation_item);
8641	light_colour : colour;
8642WHERE
8643	WR1 : SIZEOF(USEDIN(SELF,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
8644                              'STYLED_ITEM.ITEM')) = 0;
8645END_ENTITY;
8646
8647
8648ENTITY light_source_ambient
8649	SUBTYPE OF (light_source);
8650END_ENTITY;
8651
8652
8653ENTITY light_source_directional
8654	SUBTYPE OF (light_source);
8655	orientation : direction;
8656END_ENTITY;
8657
8658
8659ENTITY light_source_positional
8660	SUBTYPE OF (light_source);
8661	position : cartesian_point;
8662	constant_attenuation : REAL;
8663	distance_attenuation : REAL;
8664END_ENTITY;
8665
8666
8667ENTITY light_source_spot
8668	SUBTYPE OF (light_source);
8669	position : cartesian_point;
8670	orientation : direction;
8671	concentration_exponent : REAL;
8672	constant_attenuation : REAL;
8673	distance_attenuation : REAL;
8674	spread_angle : positive_plane_angle_measure;
8675END_ENTITY;
8676
8677
8678ENTITY limits_and_fits;
8679	form_variance : label;
8680	zone_variance : label;
8681	grade : label;
8682	source : text;
8683END_ENTITY;
8684
8685
8686ENTITY line
8687	SUBTYPE OF (curve);
8688	pnt : cartesian_point;
8689	dir : vector;
8690WHERE
8691	WR1 : dir.dim  = pnt.dim;
8692END_ENTITY;
8693
8694
8695ENTITY line_profile_tolerance
8696	SUBTYPE OF (geometric_tolerance);
8697WHERE
8698	WR1 : NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)) OR ( SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 3);
8699	WR2 : SIZEOF (
8700QUERY ( sar <* USEDIN (SELF\geometric_tolerance.toleranced_shape_aspect, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| (sar.name IN [ 'affected plane association', 'resulting intersection curve association' ]) )) = 1;
8701END_ENTITY;
8702
8703
8704ENTITY linear_array_component_definition_link
8705	SUBTYPE OF (product_definition, product_definition_relationship);
8706	SELF\product_definition_relationship.related_product_definition : linear_array_placement_group_component;
8707	SELF\product_definition_relationship.relating_product_definition : linear_array_placement_group_component;
8708WHERE
8709	WR1 : SELF\product_definition_relationship.related_product_definition :<>:
8710       SELF\product_definition_relationship.relating_product_definition;
8711	WR2 : acyclic_product_definition_relationship (SELF,
8712      [SELF\product_definition_relationship.related_product_definition],
8713      'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LINEAR_ARRAY_COMPONENT_DEFINITION_LINK');
8714END_ENTITY;
8715
8716
8717ENTITY linear_array_placement_group_component
8718	SUBTYPE OF (array_placement_group);
8719END_ENTITY;
8720
8721
8722ENTITY linear_composite_array_shape_aspect
8723	SUBTYPE OF (composite_array_shape_aspect);
8724END_ENTITY;
8725
8726
8727ENTITY linear_composite_array_shape_aspect_link
8728	SUBTYPE OF (shape_aspect, shape_aspect_relationship);
8729	SELF\shape_aspect_relationship.related_shape_aspect : linear_composite_array_shape_aspect;
8730	SELF\shape_aspect_relationship.relating_shape_aspect : linear_composite_array_shape_aspect;
8731WHERE
8732	WR1 : SELF\shape_aspect_relationship.related_shape_aspect :<>:
8733       SELF\shape_aspect_relationship.relating_shape_aspect;
8734END_ENTITY;
8735
8736
8737ENTITY linear_dimension
8738	SUBTYPE OF (dimension_curve_directed_callout);
8739END_ENTITY;
8740
8741
8742ENTITY linear_profile_tolerance
8743	SUBTYPE OF (physical_unit_geometric_tolerance);
8744END_ENTITY;
8745
8746
8747ENTITY literal_conjunction
8748	SUBTYPE OF (simple_clause);
8749END_ENTITY;
8750
8751
8752ENTITY literal_disjunction
8753	SUBTYPE OF (simple_clause);
8754END_ENTITY;
8755
8756
8757ENTITY literal_number
8758	ABSTRACT SUPERTYPE OF (ONEOF (int_literal, real_literal))
8759	SUBTYPE OF (simple_numeric_expression, generic_literal);
8760	the_value : NUMBER;
8761END_ENTITY;
8762
8763
8764ENTITY local_linear_stack
8765	SUBTYPE OF (stratum_sub_stack);
8766END_ENTITY;
8767
8768
8769ENTITY local_time;
8770	hour_component : hour_in_day;
8771	minute_component : OPTIONAL minute_in_hour;
8772	second_component : OPTIONAL second_in_minute;
8773	zone : coordinated_universal_time_offset;
8774WHERE
8775	WR1 : valid_time (SELF);
8776END_ENTITY;
8777
8778
8779ENTITY location_shape_representation
8780	SUBTYPE OF (shape_representation);
8781WHERE
8782	WR1 : SIZEOF(SELF.items)= 1;
8783	WR2 : SIZEOF(QUERY(i <* SELF.items | 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'POINT' IN TYPEOF(i)))= 1;
8784END_ENTITY;
8785
8786
8787ENTITY logical_literal
8788	SUBTYPE OF (generic_literal);
8789	lit_value : LOGICAL;
8790END_ENTITY;
8791
8792
8793ENTITY logical_representation_item
8794	SUBTYPE OF (representation_item, logical_literal);
8795END_ENTITY;
8796
8797
8798ENTITY loop
8799	SUPERTYPE OF (ONEOF (vertex_loop, edge_loop, poly_loop))
8800	SUBTYPE OF (topological_representation_item);
8801END_ENTITY;
8802
8803
8804ENTITY loss_tangent_measure_with_unit
8805	SUBTYPE OF (ratio_measure_with_unit);
8806END_ENTITY;
8807
8808
8809ENTITY lot_effectivity
8810	SUBTYPE OF (effectivity);
8811	effectivity_lot_id : identifier;
8812	effectivity_lot_size : measure_with_unit;
8813END_ENTITY;
8814
8815
8816ENTITY luminous_flux_measure_with_unit
8817	SUBTYPE OF (measure_with_unit);
8818WHERE
8819	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LUMINOUS_FLUX_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
8820END_ENTITY;
8821
8822
8823ENTITY luminous_flux_unit
8824	SUBTYPE OF (named_unit);
8825WHERE
8826	WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.lumen);
8827END_ENTITY;
8828
8829
8830ENTITY luminous_intensity_measure_with_unit
8831	SUBTYPE OF (measure_with_unit);
8832WHERE
8833	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LUMINOUS_INTENSITY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
8834END_ENTITY;
8835
8836
8837ENTITY luminous_intensity_unit
8838	SUBTYPE OF (named_unit);
8839WHERE
8840	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);
8841END_ENTITY;
8842
8843
8844ENTITY magnetic_flux_density_measure_with_unit
8845	SUBTYPE OF (measure_with_unit);
8846WHERE
8847	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAGNETIC_FLUX_DENSITY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
8848END_ENTITY;
8849
8850
8851ENTITY magnetic_flux_density_unit
8852	SUBTYPE OF (derived_unit);
8853WHERE
8854	WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.tesla);
8855END_ENTITY;
8856
8857
8858ENTITY magnetic_flux_measure_with_unit
8859	SUBTYPE OF (measure_with_unit);
8860WHERE
8861	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAGNETIC_FLUX_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
8862END_ENTITY;
8863
8864
8865ENTITY magnetic_flux_unit
8866	SUBTYPE OF (derived_unit);
8867WHERE
8868	WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.weber);
8869END_ENTITY;
8870
8871
8872ENTITY make_from_connectivity_relationship
8873	SUBTYPE OF (shape_aspect_relationship);
8874	SELF\shape_aspect_relationship.related_shape_aspect : physical_connectivity_definition;
8875	SELF\shape_aspect_relationship.relating_shape_aspect : physical_connectivity_definition;
8876END_ENTITY;
8877
8878
8879ENTITY make_from_feature_relationship
8880	SUBTYPE OF (component_feature_relationship);
8881END_ENTITY;
8882
8883
8884ENTITY make_from_functional_unit_terminal_definition_relationship
8885	SUBTYPE OF (shape_aspect, shape_aspect_relationship);
8886UNIQUE
8887	UR1 : SELF\shape_aspect_relationship.relating_shape_aspect, SELF\shape_aspect_relationship.related_shape_aspect;
8888WHERE
8889	WR1 : relating_shape_aspect.of_shape :<>:
8890        related_shape_aspect.of_shape;
8891	WR2 : SELF\shape_aspect.product_definitional = FALSE;
8892END_ENTITY;
8893
8894
8895ENTITY make_from_model_port_relationship
8896	SUBTYPE OF (representation, representation_relationship);
8897	SELF\representation_relationship.rep_1 : analytical_model_port;
8898	SELF\representation_relationship.rep_2 : analytical_model_port;
8899UNIQUE
8900	UR1 : rep_1, rep_2;
8901WHERE
8902	WR1 : rep_1 :<>: rep_2;
8903END_ENTITY;
8904
8905
8906ENTITY make_from_part_feature_relationship
8907	SUBTYPE OF (shape_aspect, shape_aspect_relationship);
8908UNIQUE
8909	UR1 : SELF\shape_aspect_relationship.relating_shape_aspect, SELF\shape_aspect_relationship.related_shape_aspect;
8910WHERE
8911	WR1 : SELF\shape_aspect.product_definitional = FALSE;
8912END_ENTITY;
8913
8914
8915ENTITY make_from_usage_option
8916	SUBTYPE OF (product_definition_usage);
8917	ranking : INTEGER;
8918	ranking_rationale : text;
8919	quantity : measure_with_unit;
8920WHERE
8921	WR1 : (NOT ('NUMBER' IN TYPEOF(quantity.value_component)))
8922       OR (quantity.value_component > 0);
8923END_ENTITY;
8924
8925
8926ENTITY manifold_constraining_context_dependent_shape_representation
8927	SUBTYPE OF (context_dependent_shape_representation, representation_relationship);
8928END_ENTITY;
8929
8930
8931ENTITY manifold_solid_brep
8932	SUBTYPE OF (solid_model);
8933	outer : closed_shell;
8934END_ENTITY;
8935
8936
8937ENTITY manifold_subsurface_shape_representation
8938	SUBTYPE OF (shape_representation);
8939WHERE
8940	WR1 : SIZEOF (QUERY (it <* SELF.items |
8941          NOT (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONNECTED_FACE_SUB_SET',
8942                'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM',
8943                'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AXIS2_PLACEMENT_3D'] *
8944                   TYPEOF(it)) = 1))) = 0;
8945	WR2 : SIZEOF (QUERY (it <* SELF.items |
8946         SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONNECTED_FACE_SUB_SET',
8947         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM'] * TYPEOF(it)) =1 )) > 0;
8948	WR3 : SIZEOF (QUERY (mi <*  QUERY (it <* items |
8949                 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)) |
8950   NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MANIFOLD_SUBSURFACE_SHAPE_REPRESENTATION' IN
8951             TYPEOF(mi\mapped_item.mapping_source.
8952                           mapped_representation)))) = 0;
8953	WR4 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items |
8954           'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) |
8955          NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.OPEN_SHELL' IN TYPEOF(cfss)))) = 0;
8956	WR5 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items |
8957           'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) |
8958          NOT( (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONNECTED_FACE_SUB_SET' IN
8959                   TYPEOF(cfss\connected_face_sub_set.parent_face_set))AND
8960           (SIZEOF(QUERY(fac <* cfss\connected_face_sub_set.parent_face_set\connected_face_set.cfs_faces | NOT
8961                 advanced_face_properties(fac))) = 0)) OR
8962            (SIZEOF(QUERY(fac <* cfss\connected_face_sub_set.parent_face_set\connected_face_set.cfs_faces | NOT
8963              ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ADVANCED_FACE' IN TYPEOF(fac)))) = 0)
8964                    ))) = 0;
8965	WR6 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items |
8966           'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) |
8967          ( SIZEOF (QUERY (fac <* cfss\connected_face_set.cfs_faces  | NOT
8968              advanced_face_properties(fac))) = 0))) = 0;
8969	WR7 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items |
8970          'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) |
8971             NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces |
8972               ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND
8973            NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds |
8974         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) |
8975                NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list |
8976                  NOT(('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_CURVE' IN
8977            TYPEOF(oe.edge_element)) OR
8978           ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SUBEDGE' IN
8979            TYPEOF(oe.edge_element)) ))) = 0
8980                   ))) = 0
8981                 ))) = 0
8982             ))) = 0;
8983	WR8 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items |
8984           'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) |
8985             NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces |
8986           ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND
8987               NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds |
8988         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) |
8989                 NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list |
8990          NOT(('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_POINT' IN TYPEOF(oe.edge_start))
8991                AND ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_POINT' IN
8992                 TYPEOF(oe.edge_end))
8993            ))) = 0
8994              ))) = 0
8995               ))) = 0
8996                   ))) = 0;
8997	WR9 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items |
8998           'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) |
8999             NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces |
9000              ( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND
9001              ( NOT (SIZEOF(QUERY  (bnds <* fcs.bounds |
9002         NOT (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP',
9003                'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_LOOP'] *
9004                   TYPEOF(bnds.bound)) = 1 )
9005                   )) = 0)
9006                 ))) = 0
9007             ))) = 0;
9008	WR10 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items |
9009           'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) |
9010             NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces |
9011              ( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND
9012              ( NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds |
9013         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) |
9014                 NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list |
9015                   NOT (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LINE',
9016                         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONIC',
9017                         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POLYLINE',
9018                         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_CURVE',
9019                         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.B_SPLINE_CURVE' ] *
9020            TYPEOF(oe.edge_element\edge_curve.edge_geometry)) = 1 )
9021               )) = 0
9022               ))) = 0
9023                 )))) = 0
9024                    ))) = 0;
9025	WR11 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items |
9026           'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) |
9027             NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces |
9028              ( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND
9029               (NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds |
9030         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) |
9031                NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list |
9032                   ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_CURVE' IN
9033            TYPEOF(oe.edge_element\edge_curve.edge_geometry)) AND
9034            (NOT ((SIZEOF (QUERY (sc_ag <*
9035            oe.edge_element\edge_curve.edge_geometry\
9036            surface_curve.associated_geometry |
9037            NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PCURVE' IN
9038            TYPEOF(sc_ag)))) = 0)))
9039               )) = 0
9040               ))) = 0
9041                   )))) = 0
9042                    ))) = 0;
9043	WR12 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items |
9044           'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) |
9045             NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces |
9046              ( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND
9047               (NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds |
9048         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) |
9049                NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list |
9050                   ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POLYLINE' IN
9051            TYPEOF(oe.edge_element\edge_curve.edge_geometry)) AND
9052            (NOT (SIZEOF (oe\oriented_edge.edge_element\
9053                  edge_curve.edge_geometry\polyline.points) >= 3))
9054               )) = 0
9055               ))) = 0
9056                   )))) = 0
9057                    ))) = 0;
9058END_ENTITY;
9059
9060
9061ENTITY manifold_surface_shape_representation
9062	SUBTYPE OF (shape_representation);
9063WHERE
9064	WR1 : SIZEOF (QUERY (it <* SELF.items |
9065       NOT (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHELL_BASED_SURFACE_MODEL',
9066       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM',
9067       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AXIS2_PLACEMENT_3D'] * TYPEOF (it)) = 1))) = 0;
9068	WR2 : SIZEOF (QUERY (it <* SELF.items |
9069       SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHELL_BASED_SURFACE_MODEL',
9070       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM'] * TYPEOF (it)) = 1)) > 0;
9071	WR3 : SIZEOF (QUERY (mi <* QUERY (it <* SELF.items |
9072       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) |
9073       NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MANIFOLD_SURFACE_SHAPE_REPRESENTATION'
9074       IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation))
9075       AND
9076       (SIZEOF(QUERY (mr_it <*
9077       mi\mapped_item.mapping_source.mapped_representation.items |
9078       ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHELL_BASED_SURFACE_MODEL'
9079       IN TYPEOF (mr_it)))) > 0 )))) = 0;
9080	WR4 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items |
9081       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
9082       NOT (SIZEOF (QUERY (sh <*
9083       sbsm\shell_based_surface_model.sbsm_boundary |
9084       NOT (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.OPEN_SHELL',
9085       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ORIENTED_CLOSED_SHELL',
9086       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CLOSED_SHELL']
9087       * TYPEOF (sh)) = 1))) = 0))) = 0;
9088	WR5 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items |
9089       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
9090       NOT (SIZEOF (QUERY (cfs <*
9091       sbsm\shell_based_surface_model.sbsm_boundary |
9092       NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
9093       NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE_SURFACE' IN TYPEOF (fa)) )) = 0)))
9094       = 0))) = 0;
9095	WR6 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items |
9096       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
9097       NOT (SIZEOF (QUERY (cfs <*
9098       sbsm\shell_based_surface_model.sbsm_boundary |
9099       NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
9100       NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
9101       OR
9102       (msf_surface_check(fa\face_surface.face_geometry))))) = 0)))
9103       = 0))) = 0;
9104	WR7 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items |
9105       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
9106       NOT (SIZEOF (QUERY (cfs <*
9107       sbsm\shell_based_surface_model.sbsm_boundary |
9108       NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
9109       NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
9110       OR
9111       (SIZEOF (QUERY (bnds <* fa.bounds |
9112       NOT (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP',
9113       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_LOOP']
9114       * TYPEOF (bnds.bound)) = 1))) = 0)))) = 0))) = 0))) = 0;
9115	WR8 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items|
9116       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
9117       NOT (SIZEOF (QUERY (cfs <*
9118       sbsm\shell_based_surface_model.sbsm_boundary |
9119       NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
9120       NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
9121       OR
9122       (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds |
9123       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) |
9124       NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list |
9125       NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_CURVE' IN TYPEOF
9126       (oe.edge_element)))) = 0))) = 0)))) = 0))) = 0))) = 0;
9127	WR9 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items |
9128       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
9129       NOT (SIZEOF (QUERY (cfs <*
9130       sbsm\shell_based_surface_model.sbsm_boundary |
9131       NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
9132       NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
9133       OR
9134       (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds |
9135       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) |
9136       NOT (SIZEOF (QUERY (oe_cv <* QUERY (oe <*
9137       elp_fbnds\path.edge_list |
9138       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_CURVE' IN TYPEOF (oe.edge_element)) |
9139       NOT (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.B_SPLINE_CURVE',
9140       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONIC',
9141       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_REPLICA',
9142       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LINE',
9143       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.OFFSET_CURVE_3D',
9144       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PCURVE',
9145       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POLYLINE',
9146       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_CURVE'] *
9147       TYPEOF (oe_cv.edge_element\edge_curve.edge_geometry))
9148       = 1))) = 0))) = 0)))) = 0))) = 0))) = 0;
9149	WR10 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items |
9150       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
9151       NOT (SIZEOF (QUERY (cfs <*
9152       sbsm\shell_based_surface_model.sbsm_boundary |
9153       NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
9154       NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
9155       OR
9156       (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds |
9157       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) |
9158       NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list |
9159       NOT (msf_curve_check (oe.edge_element\edge_curve.edge_geometry))))
9160       = 0))) = 0)))) = 0))) = 0))) = 0;
9161	WR11 : SIZEOF (QUERY(sbsm <* QUERY (it <* SELF.items |
9162       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
9163       NOT (SIZEOF (QUERY (cfs <*
9164       sbsm\shell_based_surface_model.sbsm_boundary |
9165       NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
9166       NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
9167       OR
9168       (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds |
9169       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) |
9170       NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list|
9171       NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_POINT' IN TYPEOF
9172       (oe.edge_element.edge_start))
9173       AND
9174       ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_POINT' IN
9175       TYPEOF (oe.edge_element.edge_end)))))
9176       = 0))) = 0)))) = 0))) = 0))) = 0;
9177	WR12 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items |
9178       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
9179       NOT (SIZEOF (QUERY (cfs <*
9180       sbsm\shell_based_surface_model.sbsm_boundary |
9181       NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
9182       NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
9183       OR
9184       (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds |
9185       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) |
9186       NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list |
9187       NOT ((SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CARTESIAN_POINT',
9188       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DEGENERATE_PCURVE',
9189       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT_ON_CURVE',
9190       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT_ON_SURFACE'] * TYPEOF
9191       (oe.edge_element.edge_start\vertex_point.vertex_geometry)) = 1)
9192       AND
9193       (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CARTESIAN_POINT',
9194       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DEGENERATE_PCURVE',
9195       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT_ON_CURVE',
9196       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT_ON_SURFACE'] * TYPEOF
9197       (oe.edge_element.edge_end\vertex_point.vertex_geometry)) = 1
9198       )))) = 0))) = 0)))) = 0))) = 0))) = 0;
9199	WR13 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items |
9200       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
9201       NOT (SIZEOF (QUERY (cfs <*
9202       sbsm\shell_based_surface_model.sbsm_boundary |
9203       NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
9204       NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
9205       OR
9206       (SIZEOF (QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds |
9207       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) |
9208       NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_POINT' IN TYPEOF
9209       (vlp_fbnds\vertex_loop.loop_vertex)))) = 0)))) = 0)))
9210       = 0))) = 0;
9211	WR14 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items |
9212       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
9213       NOT (SIZEOF (QUERY (cfs <*
9214       sbsm\shell_based_surface_model.sbsm_boundary |
9215       NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
9216       NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
9217       OR
9218       (SIZEOF (QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds |
9219       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) |
9220       NOT (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CARTESIAN_POINT',
9221       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DEGENERATE_PCURVE',
9222       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT_ON_CURVE',
9223       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT_ON_SURFACE'] * TYPEOF
9224       (vlp_fbnds\vertex_loop.loop_vertex\vertex_point.vertex_geometry))
9225       = 1))) = 0)))) = 0))) = 0))) = 0;
9226END_ENTITY;
9227
9228
9229ENTITY mapped_item
9230	SUBTYPE OF (representation_item);
9231	mapping_source : representation_map;
9232	mapping_target : representation_item;
9233WHERE
9234	WR1 : acyclic_mapped_representation(SELF);
9235END_ENTITY;
9236
9237
9238ENTITY mass_measure_with_unit
9239	SUBTYPE OF (measure_with_unit);
9240WHERE
9241	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MASS_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
9242END_ENTITY;
9243
9244
9245ENTITY mass_unit
9246	SUBTYPE OF (named_unit);
9247WHERE
9248	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);
9249END_ENTITY;
9250
9251
9252ENTITY material_designation;
9253	name : label;
9254	definitions : SET [1:?] OF characterized_definition;
9255END_ENTITY;
9256
9257
9258ENTITY material_designation_characterization;
9259	name : label;
9260	description : text;
9261	designation : material_designation;
9262	property : characterized_material_property;
9263END_ENTITY;
9264
9265
9266ENTITY material_designation_with_conductivity_classification
9267	SUBTYPE OF (material_designation);
9268END_ENTITY;
9269
9270
9271ENTITY material_electrical_conductivity_category
9272	SUBTYPE OF (group);
9273END_ENTITY;
9274
9275
9276ENTITY material_property
9277	SUBTYPE OF (property_definition);
9278UNIQUE
9279  UR1: SELF\property_definition.name, SELF\property_definition.definition;
9280WHERE
9281	WR1 : ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CHARACTERIZED_OBJECT' IN
9282          TYPEOF(SELF\property_definition.definition)) OR
9283       (SIZEOF(bag_to_set(USEDIN(SELF ,
9284                     'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9285                     'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) -
9286              QUERY(temp <* bag_to_set(USEDIN(SELF ,
9287                       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9288                       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) |
9289                       ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9290                      'MATERIAL_PROPERTY_REPRESENTATION' IN
9291                      TYPEOF(temp)))) = 0);
9292END_ENTITY;
9293
9294
9295ENTITY material_property_representation
9296	SUBTYPE OF (property_definition_representation);
9297	dependent_environment : data_environment;
9298END_ENTITY;
9299
9300
9301ENTITY material_removal_feature_template
9302	SUBTYPE OF (single_stratum_continuous_template);
9303END_ENTITY;
9304
9305
9306ENTITY material_removal_laminate_component
9307	SUBTYPE OF (laminate_component);
9308END_ENTITY;
9309
9310
9311ENTITY material_removal_laminate_text_component
9312	SUBTYPE OF (generic_laminate_text_component);
9313END_ENTITY;
9314
9315
9316ENTITY material_removal_structured_component
9317	SUBTYPE OF (structured_layout_component);
9318END_ENTITY;
9319
9320
9321ENTITY material_removal_structured_template
9322	SUBTYPE OF (single_stratum_structured_template);
9323END_ENTITY;
9324
9325
9326ENTITY measure_qualification;
9327	name : label;
9328	description : text;
9329	qualified_measure : measure_with_unit;
9330	qualifiers : SET [1:?] OF value_qualifier;
9331WHERE
9332	WR1 : SIZEOF(QUERY(temp <* qualifiers |
9333             'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRECISION_QUALIFIER'
9334             IN TYPEOF(temp))) < 2;
9335	WR2 : NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.REPRESENTATION_ITEM'
9336           IN TYPEOF(SELF\measure_qualification.qualified_measure));
9337END_ENTITY;
9338
9339
9340ENTITY measure_representation_item
9341	SUBTYPE OF (representation_item, measure_with_unit);
9342END_ENTITY;
9343
9344
9345ENTITY measure_with_unit
9346	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));
9347	value_component : measure_value;
9348	unit_component : unit;
9349WHERE
9350	WR1 : valid_units(SELF);
9351END_ENTITY;
9352
9353
9354ENTITY mechanical_context
9355	SUBTYPE OF (product_context);
9356WHERE
9357	WR1 : SELF.discipline_type = 'mechanical';
9358END_ENTITY;
9359
9360
9361ENTITY mechanical_design_and_draughting_relationship
9362	SUBTYPE OF (definitional_representation_relationship_with_same_context);
9363	SELF\representation_relationship.rep_1 : mechanical_design_and_draughting_relationship_select;
9364	SELF\representation_relationship.rep_2 : mechanical_design_and_draughting_relationship_select;
9365WHERE
9366	WR1 : NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'DRAUGHTING_MODEL' IN TYPEOF(rep_2)) OR
9367       (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'DRAUGHTING_MODEL' IN TYPEOF(rep_1)) OR
9368        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'SHAPE_REPRESENTATION' IN TYPEOF(rep_1)));
9369	WR2 : NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION' IN TYPEOF(rep_2)) OR
9370       (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION' IN TYPEOF(rep_1)) OR
9371        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'SHAPE_REPRESENTATION' IN TYPEOF(rep_1)));
9372	WR3 : NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION' IN TYPEOF(rep_2)) OR
9373       (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION' IN TYPEOF(rep_1)) OR
9374        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'SHAPE_REPRESENTATION' IN TYPEOF(rep_1)));
9375END_ENTITY;
9376
9377
9378ENTITY mechanical_design_geometric_presentation_area
9379	SUBTYPE OF (presentation_area);
9380	SELF\representation.items : SET [1:?] OF mechanical_design_geometric_presentation_area_items;
9381WHERE
9382	WR1 : SIZEOF(QUERY(it1 <* SELF.items |
9383        NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM'
9384        IN TYPEOF(it1))
9385        OR
9386        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRESENTATION_VIEW'
9387        IN TYPEOF
9388        (it1\mapped_item.mapping_source.mapped_representation)))) = 0;
9389	WR2 : SIZEOF(QUERY(pv <* QUERY(mi1 <* QUERY(it1 <* SELF.items |
9390        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM'
9391        IN TYPEOF(it1)) |
9392        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRESENTATION_VIEW'
9393        IN TYPEOF
9394        (mi1\mapped_item.mapping_source.mapped_representation)) |
9395        -- search in all presentation_views for axis2_placements and
9396        -- mapped_items and for the subtype of mapped_item
9397        -- camera_image_3d_with_scale; the latter shall reference
9398        -- a mechanical_design_geometric_presentation_representation;
9399        -- the supertype mapped_item shall reference presentation_view.
9400        NOT (SIZEOF(QUERY(it2 <* pv\mapped_item.mapping_source.
9401        mapped_representation\representation.items |
9402        NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AXIS2_PLACEMENT'
9403        IN TYPEOF(it2))
9404        OR
9405        (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM'
9406        IN TYPEOF(it2)) AND NOT
9407        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9408        'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(it2))) AND NOT (
9409        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRESENTATION_VIEW'
9410        IN TYPEOF
9411        (it2\mapped_item.mapping_source.mapped_representation)))
9412        OR
9413        (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9414        'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(it2))
9415        AND NOT (
9416        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9417        'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION'
9418        IN TYPEOF (it2\mapped_item.mapping_source.mapped_representation) ))
9419        ))) = 0))) = 0;
9420	WR3 : (SIZEOF(QUERY(ps <* USEDIN (SELF,
9421        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9422        'PRESENTATION_SIZE.UNIT') | ((ps.size\planar_extent.size_in_x <= 0)
9423        OR
9424        (ps.size\planar_extent.size_in_y <= 0)))) = 0)
9425        AND
9426        (SIZEOF(QUERY(ais <* USEDIN (SELF,
9427        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9428        'AREA_IN_SET.AREA') |
9429        (SIZEOF(QUERY(ps <* USEDIN (ais,
9430        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9431        'PRESENTATION_SIZE.UNIT') |
9432        ((ps.size\planar_extent.size_in_x <= 0)
9433        OR
9434        (ps.size\planar_extent.size_in_y <= 0)))) > 0))) = 0);
9435	WR4 : (SIZEOF(QUERY(ps <* USEDIN (SELF,
9436        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9437        'PRESENTATION_SIZE.UNIT') |
9438        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9439        'AXIS2_PLACEMENT_2D' IN TYPEOF (ps.size.placement)))) = 1)
9440        AND
9441        (SIZEOF(QUERY(ps <* USEDIN (SELF,
9442        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9443        'PRESENTATION_SIZE.UNIT') |
9444        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9445        'AXIS2_PLACEMENT_3D' IN TYPEOF (ps.size.placement)))) = 0)
9446        OR
9447        ((SIZEOF(QUERY(ais <* USEDIN (SELF,
9448        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9449        'AREA_IN_SET.AREA') |
9450        (SIZEOF(QUERY(ps <* USEDIN (ais,
9451        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9452        'PRESENTATION_SIZE.UNIT') |
9453        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9454        'AXIS2_PLACEMENT_2D' IN TYPEOF (ps.size.placement)))) = 1))) = 1)
9455        AND
9456        (SIZEOF(QUERY(ais <* USEDIN (SELF,
9457        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9458        'AREA_IN_SET.AREA') |
9459        (SIZEOF(QUERY(ps <* USEDIN (ais,
9460        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9461        'PRESENTATION_SIZE.UNIT') |
9462        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9463        'AXIS2_PLACEMENT_3D' IN TYPEOF (ps.size.placement)))) = 0))) = 1));
9464END_ENTITY;
9465
9466
9467ENTITY mechanical_design_geometric_presentation_representation
9468	SUBTYPE OF (representation);
9469	SELF\representation.items : SET [1:?] OF mechanical_design_geometric_presentation_representation_items;
9470WHERE
9471	WR1 : SIZEOF(QUERY(mi <* QUERY(it <* SELF.items |
9472        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM'
9473        IN TYPEOF(it))) | NOT (SIZEOF(
9474        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9475        'SHAPE_REPRESENTATION',
9476        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9477        'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION']
9478        * TYPEOF(mi\mapped_item.mapping_source.mapped_representation))
9479        = 1))) = 0;
9480	WR2 : SIZEOF(QUERY(smi <* QUERY(si <* QUERY(it <* SELF.items |
9481        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM'
9482        IN TYPEOF(it))) |
9483        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM'
9484        IN TYPEOF(si\styled_item.item))) | NOT (
9485        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9486        'SHAPE_REPRESENTATION' IN TYPEOF (smi\styled_item.
9487        item\mapped_item.mapping_source.mapped_representation))) )) = 0;
9488	WR3 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items |
9489        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM'
9490        IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles |
9491        NOT (SIZEOF(QUERY(pss <* psa.styles | NOT (SIZEOF(
9492        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT_STYLE',
9493        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE',
9494        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_STYLE_USAGE']
9495        * TYPEOF(pss)) = 1))) = 0))) = 0))) = 0;
9496	WR4 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items |
9497        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM'
9498        IN TYPEOF(it)) |
9499        NOT (SIZEOF(QUERY(psbc <* QUERY(psa <* si\styled_item.styles |
9500        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9501        'PRESENTATION_STYLE_BY_CONTEXT' IN TYPEOF(psa)) | NOT (SIZEOF(
9502        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9503        'REPRESENTATION_ITEM',
9504        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.REPRESENTATION']
9505        * TYPEOF(psbc\presentation_style_by_context.style_context))
9506        = 1))) = 0))) = 0;
9507	WR5 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items |
9508        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM'
9509        IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles |
9510        NOT (SIZEOF(QUERY(ps <* QUERY(pss <* psa.styles |
9511        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT_STYLE'
9512        IN TYPEOF(pss)) | NOT
9513        (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9514        'POSITIVE_LENGTH_MEASURE' IN TYPEOF (ps\point_style.marker_size))
9515        AND (SIZEOF(
9516        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COLOUR_RGB',
9517        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9518        'DRAUGHTING_PRE_DEFINED_COLOUR']
9519        * TYPEOF(ps\point_style.marker_colour))
9520        = 1)))) = 0))) = 0))) = 0;
9521	WR6 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items |
9522        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM'
9523        IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles |
9524        NOT (SIZEOF(QUERY(cs <* QUERY(pss <* psa.styles |
9525        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE'
9526        IN TYPEOF(pss)) | NOT((SIZEOF(
9527        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COLOUR_RGB',
9528        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9529        'DRAUGHTING_PRE_DEFINED_COLOUR']
9530        * TYPEOF(cs\curve_style.curve_colour)) = 1)
9531        AND
9532        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9533        'POSITIVE_LENGTH_MEASURE' IN TYPEOF (cs\curve_style.curve_width))
9534        AND (SIZEOF(
9535        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE_FONT',
9536        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9537        'DRAUGHTING_PRE_DEFINED_CURVE_FONT']
9538        * TYPEOF(cs\curve_style.curve_font)) = 1)))) = 0))) = 0))) = 0;
9539	WR7 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items |
9540        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM'
9541        IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles |
9542        NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles |
9543        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_STYLE_USAGE'
9544        IN TYPEOF(pss)) |
9545        NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9546        'SURFACE_SIDE_STYLE' IN TYPEOF
9547        (ssu\surface_style_usage.style)))) = 0))) = 0))) = 0;
9548	WR8 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items |
9549        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM'
9550        IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles |
9551        NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles |
9552        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_STYLE_USAGE'
9553        IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sses <*
9554        ssu\surface_style_usage.style\surface_side_style.styles |
9555        NOT (SIZEOF(
9556        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9557        'SURFACE_STYLE_PARAMETER_LINE',
9558        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9559        'SURFACE_STYLE_CONTROL_GRID',
9560        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9561        'SURFACE_STYLE_SILHOUETTE',
9562        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9563        'SURFACE_STYLE_SEGMENTATION_CURVE',
9564        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9565        'SURFACE_STYLE_FILL_AREA',
9566        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9567        'SURFACE_STYLE_BOUNDARY']
9568        * TYPEOF(sses)) = 1))) = 0))) = 0))) = 0))) = 0;
9569	WR9 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items |
9570        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM'
9571        IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles |
9572        NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles |
9573        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_STYLE_USAGE'
9574        IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sspl <* QUERY(sses <*
9575        ssu\surface_style_usage.style\surface_side_style.styles |
9576        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9577        'SURFACE_STYLE_PARAMETER_LINE' IN TYPEOF(sses)) |
9578        NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE'
9579        IN TYPEOF
9580        (sspl\surface_style_parameter_line.style_of_parameter_lines))
9581        AND (SIZEOF(
9582        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COLOUR_RGB',
9583        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9584        'DRAUGHTING_PRE_DEFINED_COLOUR']
9585        * TYPEOF(sspl\surface_style_parameter_line.
9586        style_of_parameter_lines\curve_style.curve_colour)) = 1)
9587        AND (
9588        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9589        'POSITIVE_LENGTH_MEASURE' IN TYPEOF
9590        (sspl\surface_style_parameter_line.
9591        style_of_parameter_lines\curve_style.curve_width))
9592        AND (SIZEOF(
9593        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE_FONT',
9594        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
9595        'DRAUGHTING_PRE_DEFINED_CURVE_FONT']
9596        * TYPEOF(sspl\surface_style_parameter_line.
9597        style_of_parameter_lines\curve_style.curve_font)) = 1))))
9598        = 0))) = 0))) = 0))) = 0;
9599	WR10 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items |
9600        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM'
9601        IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles |
9602        NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles |
9603        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_STYLE_USAGE'
9604        IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sscg <* QUERY(sses <*
9605        ssu\surface_style_usage.style\surface_side_style.styles |
9606        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9607        'SURFACE_STYLE_CONTROL_GRID' IN TYPEOF(sses)) |
9608        NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE'
9609        IN TYPEOF (sscg\surface_style_control_grid.style_of_control_grid))
9610        AND (SIZEOF(
9611        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COLOUR_RGB',
9612        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9613        'DRAUGHTING_PRE_DEFINED_COLOUR']
9614        * TYPEOF(sscg\surface_style_control_grid.
9615        style_of_control_grid\curve_style.curve_colour)) = 1)
9616        AND
9617        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9618        'POSITIVE_LENGTH_MEASURE' IN TYPEOF
9619        (sscg\surface_style_control_grid.
9620        style_of_control_grid\curve_style.curve_width))
9621        AND (SIZEOF(
9622        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE_FONT',
9623        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9624        'DRAUGHTING_PRE_DEFINED_CURVE_FONT']
9625        * TYPEOF(sscg\surface_style_control_grid.
9626        style_of_control_grid\curve_style.curve_font)) = 1))))
9627        = 0))) = 0))) = 0))) = 0;
9628	WR11 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items |
9629        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM'
9630        IN TYPEOF(it)) |
9631        NOT (SIZEOF(QUERY(psa <* si\styled_item.styles |
9632        NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles |
9633        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_STYLE_USAGE'
9634        IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sssh <* QUERY(sses <*
9635        ssu\surface_style_usage.style\surface_side_style.styles |
9636        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9637        'SURFACE_STYLE_SILHOUETTE' IN TYPEOF(sses)) |
9638        NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE'
9639        IN TYPEOF (sssh\surface_style_silhouette.style_of_silhouette))
9640        AND (SIZEOF(
9641        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COLOUR_RGB',
9642        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9643        'DRAUGHTING_PRE_DEFINED_COLOUR']
9644        * TYPEOF(sssh\surface_style_silhouette.
9645        style_of_silhouette\curve_style.curve_colour)) = 1)
9646        AND
9647        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9648        'POSITIVE_LENGTH_MEASURE' IN TYPEOF
9649        (sssh\surface_style_silhouette.style_of_silhouette\curve_style.
9650        curve_width))
9651        AND (SIZEOF(
9652        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE_FONT',
9653        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9654        'DRAUGHTING_PRE_DEFINED_CURVE_FONT']
9655        * TYPEOF(sssh\surface_style_silhouette.
9656        style_of_silhouette\curve_style.curve_font)) = 1))))
9657        = 0))) = 0))) = 0))) = 0;
9658	WR12 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items |
9659        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM'
9660        IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles |
9661        NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles |
9662        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_STYLE_USAGE'
9663        IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sssc <* QUERY(sses <*
9664        ssu\surface_style_usage.style\surface_side_style.styles |
9665        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9666        'SURFACE_STYLE_SEGMENTATION_CURVE' IN TYPEOF(sses)) |
9667        NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE'
9668        IN TYPEOF
9669        (sssc\surface_style_segmentation_curve.style_of_segmentation_curve))
9670        AND (SIZEOF(
9671        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COLOUR_RGB',
9672        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9673        'DRAUGHTING_PRE_DEFINED_COLOUR']
9674        * TYPEOF(sssc\surface_style_segmentation_curve.
9675        style_of_segmentation_curve\curve_style.curve_colour)) = 1)
9676        AND
9677        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9678        'POSITIVE_LENGTH_MEASURE' IN TYPEOF
9679        (sssc\surface_style_segmentation_curve.
9680        style_of_segmentation_curve\curve_style.curve_width))
9681        AND (SIZEOF(
9682        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE_FONT',
9683        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9684        'DRAUGHTING_PRE_DEFINED_CURVE_FONT']
9685        * TYPEOF(sssc\surface_style_segmentation_curve.
9686        style_of_segmentation_curve\curve_style.curve_font)) = 1))))
9687        = 0))) = 0))) = 0))) = 0;
9688	WR13 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items |
9689        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM'
9690        IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles |
9691        NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles |
9692        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_STYLE_USAGE'
9693        IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(ssbd <* QUERY(sses <*
9694        ssu\surface_style_usage.style\surface_side_style.styles |
9695        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9696        'SURFACE_STYLE_BOUNDARY' IN TYPEOF(sses)) |
9697        NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE'
9698        IN TYPEOF (ssbd\surface_style_boundary.style_of_boundary))
9699        AND (SIZEOF(
9700        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COLOUR_RGB',
9701        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9702        'DRAUGHTING_PRE_DEFINED_COLOUR']
9703        * TYPEOF(ssbd\surface_style_boundary.
9704        style_of_boundary\curve_style.curve_colour)) = 1)
9705        AND
9706        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9707        'POSITIVE_LENGTH_MEASURE' IN TYPEOF (ssbd\surface_style_boundary.
9708        style_of_boundary\curve_style.curve_width))
9709        AND (SIZEOF(
9710        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE_FONT',
9711        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9712        'DRAUGHTING_PRE_DEFINED_CURVE_FONT']
9713        * TYPEOF(ssbd\surface_style_boundary.
9714        style_of_boundary\curve_style.curve_font)) = 1)))) = 0)))
9715        = 0))) = 0))) = 0;
9716END_ENTITY;
9717
9718
9719ENTITY mechanical_design_presentation_representation_with_draughting
9720	SUBTYPE OF (representation);
9721	SELF\representation.items : SET [1:?] OF camera_model_d3;
9722END_ENTITY;
9723
9724
9725ENTITY mechanical_design_shaded_presentation_area
9726	SUBTYPE OF (presentation_area);
9727WHERE
9728	WR1 : SIZEOF (QUERY (it1 <* SELF.items |
9729        NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AXIS2_PLACEMENT'
9730        IN TYPEOF (it1))
9731        OR
9732        (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM'
9733        IN TYPEOF (it1)) AND
9734        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRESENTATION_VIEW'
9735        IN TYPEOF
9736        (it1\mapped_item.mapping_source.mapped_representation)))))) = 0;
9737	WR2 : SIZEOF (QUERY (pv <* QUERY (mi1 <* QUERY (it1 <* SELF.items |
9738        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM'
9739        IN TYPEOF (it1)) |
9740        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRESENTATION_VIEW'
9741        IN TYPEOF
9742        (mi1\mapped_item.mapping_source.mapped_representation)) |
9743        (* search in all presentation_views for axis2_placements and
9744           mapped_items and for the subtype of mapped_item,
9745           camera_image_3d_with_scale; the latter shall reference
9746           a mechanical_design_geometric_presentation_representation;
9747           the supertype mapped_item shall reference presentation_view. *)
9748        NOT (SIZEOF(QUERY(it2 <* pv\mapped_item.mapping_source.
9749        mapped_representation\representation.items |
9750        NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AXIS2_PLACEMENT'
9751        IN TYPEOF(it2))
9752        OR
9753        (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM'
9754        IN TYPEOF(it2)) AND NOT
9755        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9756        'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(it2))) AND NOT (
9757        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRESENTATION_VIEW'
9758        IN TYPEOF
9759        (it2\mapped_item.mapping_source.mapped_representation)))
9760        OR
9761        (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9762        'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(it2))
9763        AND NOT (
9764        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9765        'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION'
9766        IN TYPEOF (it2\mapped_item.mapping_source.mapped_representation) ))
9767        ))) = 0))) = 0;
9768	WR3 : (SIZEOF (QUERY(ps <* USEDIN (SELF,
9769        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9770        'PRESENTATION_SIZE.UNIT') |
9771        NOT ((ps.size\planar_extent.size_in_x > 0)
9772        AND (ps.size\planar_extent.size_in_y > 0)) )) = 0)
9773        AND
9774        (* check secondly for presentation_set, via area_in_set *)
9775        (SIZEOF (QUERY(pset <* QUERY(ais <*
9776        USEDIN (SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9777        'AREA_IN_SET.AREA')
9778        | 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9779        'PRESENTATION_SET' IN TYPEOF (ais.in_set)) |
9780        (* after having collected all presentation_set, check their sizes *)
9781        SIZEOF (QUERY(psize <* USEDIN(pset,
9782        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9783        'PRESENTATION_SIZE.UNIT')
9784        | NOT ((psize.size\planar_extent.size_in_x > 0)
9785        AND (psize.size\planar_extent.size_in_y > 0)) )) = 0)) = 0);
9786	WR4 : (SIZEOF(QUERY( psize <* USEDIN (SELF,
9787        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9788        'PRESENTATION_SIZE.UNIT')
9789        | 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9790        'AXIS2_PLACEMENT_2D'
9791        IN TYPEOF (psize.size.placement))) = 1)
9792        AND
9793        (* check secondly for presentation_set, via area_in_set *)
9794        (SIZEOF (QUERY(pset <* QUERY(ais <*
9795        USEDIN (SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9796        'AREA_IN_SET.AREA')
9797        | 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9798        'PRESENTATION_SET' IN TYPEOF (ais.in_set)) |
9799        (* after having collected all presentation_set, check their
9800           dimension *)
9801        SIZEOF (QUERY(psize <* USEDIN(pset,
9802        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9803        'PRESENTATION_SIZE.UNIT')
9804        | NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9805        'AXIS2_PLACEMENT_2D'
9806        IN TYPEOF (psize.size.placement)) )) = 0)) = 0);
9807	WR5 : SIZEOF (QUERY (pv <* QUERY (mi1 <* QUERY (it1 <* SELF.items |
9808        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM'
9809        IN TYPEOF (it1)) |
9810        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRESENTATION_VIEW'
9811        IN TYPEOF
9812        (mi1\mapped_item.mapping_source.mapped_representation)) |
9813        (* search in all presentation_views for
9814           mapped_items and for the subtype of mapped_item,
9815           camera_image_3d_with_scale; the latter shall reference
9816           a camera_usage that shall have as its mapping_origin either
9817           camera_model_d3, camera_model_d3_with_hlhsr, or
9818           camera_model_with_light_sources. *)
9819        NOT (SIZEOF(QUERY(ci <* pv\mapped_item.mapping_source.
9820        mapped_representation\representation.items |
9821        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
9822         'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(ci))
9823        AND
9824        (SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
9825        'CAMERA_MODEL_D3',
9826        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
9827        'CAMERA_MODEL_D3_WITH_HLHSR',
9828        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
9829        'CAMERA_MODEL_WITH_LIGHT_SOURCES'] * TYPEOF
9830        (ci\mapped_item.mapping_source.mapping_origin))
9831        = 1))) = 0))) = 0;
9832END_ENTITY;
9833
9834
9835ENTITY mechanical_design_shaded_presentation_representation
9836	SUBTYPE OF (representation);
9837WHERE
9838	WR1 : SIZEOF(QUERY(it <* SELF.items |
9839        NOT (SIZEOF(
9840        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM',
9841        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM',
9842        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AXIS2_PLACEMENT',
9843        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CAMERA_MODEL_D3']
9844        * TYPEOF(it)) = 1))) = 0;
9845	WR2 : SIZEOF(QUERY(mi <* QUERY(it <* SELF.items |
9846        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM'
9847        IN TYPEOF(it))) | NOT (SIZEOF(
9848        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9849        'SHAPE_REPRESENTATION',
9850        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9851        'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION']
9852        * TYPEOF(mi\mapped_item.mapping_source.mapped_representation))
9853        = 1))) = 0;
9854	WR3 : SIZEOF(QUERY(smi <* QUERY(si <* QUERY(it <* SELF.items |
9855        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM'
9856        IN TYPEOF(it))) |
9857        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM'
9858        IN TYPEOF(si\styled_item.item))) | NOT (
9859        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
9860        'SHAPE_REPRESENTATION' IN TYPEOF (smi\styled_item.
9861        item\mapped_item.mapping_source.mapped_representation))) )) = 0;
9862	WR4 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items |
9863        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM'
9864        IN TYPEOF (it)) |
9865        NOT (SIZEOF (QUERY (psa <* si\styled_item.styles |
9866        NOT (SIZEOF (QUERY (pss <* psa.styles |
9867        NOT (SIZEOF (
9868        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT_STYLE',
9869        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE',
9870        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_STYLE_USAGE']
9871        *  TYPEOF (pss)) = 1))) = 0))) = 0))) = 0;
9872	WR5 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items |
9873        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM'
9874        IN TYPEOF (it)) |
9875        NOT (SIZEOF (QUERY (psbc <* QUERY (psa <* si\styled_item.styles |
9876        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
9877        'PRESENTATION_STYLE_BY_CONTEXT' IN TYPEOF (psa))  |
9878        NOT (SIZEOF (
9879        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.REPRESENTATION_ITEM',
9880        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.REPRESENTATION']
9881        * TYPEOF (psbc\presentation_style_by_context.style_context)) = 1)))
9882        = 0))) = 0;
9883	WR6 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items |
9884        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM'
9885        IN TYPEOF (it)) |
9886        NOT (SIZEOF (QUERY (psa <* si\styled_item.styles |
9887        NOT (SIZEOF (QUERY (ps <* QUERY (pss <* psa.styles |
9888        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT_STYLE'
9889        IN TYPEOF (pss)) |
9890        NOT (
9891        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MARKER_TYPE'
9892        IN TYPEOF (ps\point_style.marker))
9893        AND
9894        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF
9895        (ps\point_style.marker_size))
9896        AND
9897        (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COLOUR_RGB',
9898        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
9899        'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF
9900        (ps\point_style.marker_colour)) = 1)))) = 0))) = 0))) = 0;
9901	WR7 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items |
9902        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM'
9903        IN TYPEOF (it)) |
9904        NOT (SIZEOF (QUERY (psa <* si\styled_item.styles |
9905        NOT (SIZEOF (QUERY (cs <* QUERY (pss <* psa.styles |
9906        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE'
9907        IN TYPEOF (pss)) |
9908        NOT (
9909        (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COLOUR_RGB',
9910        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
9911        'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF
9912        (cs\curve_style.curve_colour)) = 1)
9913        AND
9914        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF
9915        (cs\curve_style.curve_width))
9916        AND
9917        (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
9918        'CURVE_STYLE_FONT', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
9919        'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF
9920        (cs\curve_style.curve_font)) = 1)))) = 0))) = 0))) = 0;
9921	WR8 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items |
9922        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM'
9923        IN TYPEOF (it)) |
9924        NOT (SIZEOF (QUERY (psa <* si\styled_item.styles |
9925        NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles |
9926        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_STYLE_USAGE'
9927        IN TYPEOF (pss)) |
9928        NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_SIDE_STYLE'
9929        IN TYPEOF (ssu\surface_style_usage.style)) )) = 0))) = 0 ))) = 0;
9930	WR9 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items |
9931        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM'
9932        IN TYPEOF (it)) |
9933        NOT (SIZEOF (QUERY (psa <* si\styled_item.styles |
9934        NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles |
9935        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_STYLE_USAGE'
9936        IN TYPEOF (pss)) |
9937        NOT (SIZEOF (QUERY (sses <*
9938        ssu\surface_style_usage.style\surface_side_style.styles |
9939        NOT (SIZEOF (
9940        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
9941        'SURFACE_STYLE_PARAMETER_LINE',
9942        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
9943        'SURFACE_STYLE_CONTROL_GRID',
9944        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
9945        'SURFACE_STYLE_SILHOUETTE',
9946        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
9947        'SURFACE_STYLE_SEGMENTATION_CURVE',
9948        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
9949        'SURFACE_STYLE_BOUNDARY',
9950        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
9951        'SURFACE_STYLE_FILL_AREA',
9952        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
9953        'SURFACE_STYLE_RENDERING'] * TYPEOF (sses)) = 1))) = 0))) = 0)))
9954        = 0))) = 0;
9955	WR10 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items |
9956        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM'
9957        IN TYPEOF (it)) |
9958        NOT (SIZEOF (QUERY (psa <* si\styled_item.styles |
9959        NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles |
9960        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_STYLE_USAGE'
9961        IN TYPEOF (pss)) |
9962        NOT (SIZEOF (QUERY (ssfa <* QUERY (sses <*
9963        ssu\surface_style_usage.style\surface_side_style.styles |
9964        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_STYLE_FILL_AREA'
9965        IN TYPEOF (sses)) |
9966        NOT (SIZEOF (QUERY (fss <*
9967        ssfa\surface_style_fill_area.fill_area.fill_styles |
9968        NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
9969        'FILL_AREA_STYLE_COLOUR' IN TYPEOF (fss))
9970        AND
9971        (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COLOUR_RGB',
9972        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
9973        'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF
9974        (fss\fill_area_style_colour.fill_colour)) = 1)))) = 0))) = 0)))
9975        = 0))) = 0))) = 0;
9976	WR11 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items |
9977        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM'
9978        IN TYPEOF (it)) |
9979        NOT (SIZEOF (QUERY (psa <* si\styled_item.styles |
9980        NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles |
9981        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_STYLE_USAGE'
9982        IN TYPEOF (pss)) |
9983        NOT (SIZEOF (QUERY (sspl <* QUERY (sses <*
9984        ssu\surface_style_usage.style\surface_side_style.styles |
9985        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
9986        'SURFACE_STYLE_PARAMETER_LINE' IN TYPEOF (sses)) |
9987        NOT ((
9988        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE' IN TYPEOF
9989        (sspl\surface_style_parameter_line.style_of_parameter_lines))
9990        AND
9991        (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COLOUR_RGB',
9992        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
9993        'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF
9994        (sspl\surface_style_parameter_line.
9995        style_of_parameter_lines\curve_style.curve_colour)) = 1)
9996        AND
9997        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF
9998        (sspl\surface_style_parameter_line.
9999        style_of_parameter_lines\curve_style.curve_width))
10000        AND
10001        (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
10002        'CURVE_STYLE_FONT', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
10003        'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF
10004        (sspl\surface_style_parameter_line.
10005        style_of_parameter_lines\curve_style.curve_font)) = 1))
10006        OR
10007        (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE_RENDERING'
10008        IN TYPEOF
10009        (sspl\surface_style_parameter_line.style_of_parameter_lines))
10010        AND
10011        (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COLOUR_RGB',
10012        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
10013        'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF
10014        (sspl\surface_style_parameter_line.style_of_parameter_lines\
10015        curve_style_rendering.rendering_properties.rendered_colour))
10016        = 1))) )) = 0))) = 0))) = 0))) = 0;
10017	WR12 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items |
10018        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM'
10019        IN TYPEOF (it)) |
10020        NOT (SIZEOF (QUERY (psa <* si\styled_item.styles |
10021        NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles |
10022        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_STYLE_USAGE'
10023        IN TYPEOF (pss)) |
10024        NOT (SIZEOF (QUERY (sscg <* QUERY (sses <*
10025        ssu\surface_style_usage.style\surface_side_style.styles |
10026        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
10027        'SURFACE_STYLE_CONTROL_GRID' IN TYPEOF (sses)) |
10028        NOT ((
10029        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE'
10030        IN TYPEOF (sscg\surface_style_control_grid.style_of_control_grid))
10031        AND
10032        (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COLOUR_RGB',
10033        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
10034        'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF
10035        (sscg\surface_style_control_grid.
10036        style_of_control_grid\curve_style.curve_colour)) = 1)
10037        AND
10038        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF
10039        (sscg\surface_style_control_grid.
10040        style_of_control_grid\curve_style.curve_width))
10041        AND
10042        (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
10043        'CURVE_STYLE_FONT', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
10044        'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF
10045        (sscg\surface_style_control_grid.
10046        style_of_control_grid\curve_style.curve_font)) = 1))
10047        OR
10048        (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE_RENDERING'
10049        IN TYPEOF (sscg\surface_style_control_grid.style_of_control_grid))
10050        AND
10051        (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COLOUR_RGB',
10052        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
10053        'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF
10054        (sscg\surface_style_control_grid.style_of_control_grid\
10055        curve_style_rendering.rendering_properties.rendered_colour))
10056        = 1))) )) = 0))) = 0))) = 0))) = 0;
10057	WR13 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items |
10058        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM'
10059        IN TYPEOF (it)) |
10060        NOT (SIZEOF (QUERY (psa <* si\styled_item.styles |
10061        NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles |
10062        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_STYLE_USAGE'
10063        IN TYPEOF (pss)) |
10064        NOT (SIZEOF (QUERY (sssh <* QUERY (sses <*
10065        ssu\surface_style_usage.style\surface_side_style.styles |
10066        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
10067        'SURFACE_STYLE_SILHOUETTE' IN TYPEOF (sses)) |
10068        NOT ((
10069        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE'
10070        IN TYPEOF (sssh\surface_style_silhouette.style_of_silhouette))
10071        AND
10072        (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COLOUR_RGB',
10073        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
10074        'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF
10075        (sssh\surface_style_silhouette.
10076        style_of_silhouette\curve_style.curve_colour)) = 1)
10077        AND
10078        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF
10079        (sssh\surface_style_silhouette.
10080        style_of_silhouette\curve_style.curve_width))
10081        AND
10082        (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
10083        'CURVE_STYLE_FONT', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
10084        'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF
10085        (sssh\surface_style_silhouette.
10086        style_of_silhouette\curve_style.curve_font)) = 1))
10087        OR
10088        (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE_RENDERING'
10089        IN TYPEOF (sssh\surface_style_silhouette.style_of_silhouette))
10090        AND
10091        (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COLOUR_RGB',
10092        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
10093        'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF
10094        (sssh\surface_style_silhouette.style_of_silhouette\
10095        curve_style_rendering.rendering_properties.rendered_colour))
10096        = 1))) )) = 0))) = 0))) = 0))) = 0;
10097	WR14 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items |
10098        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM'
10099        IN TYPEOF (it)) |
10100        NOT (SIZEOF (QUERY (psa <* si\styled_item.styles |
10101        NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles |
10102        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_STYLE_USAGE'
10103        IN TYPEOF (pss)) |
10104        NOT (SIZEOF (QUERY (sssc <* QUERY (sses <*
10105        ssu\surface_style_usage.style\surface_side_style.styles |
10106        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
10107        'SURFACE_STYLE_SEGMENTATION_CURVE' IN TYPEOF (sses)) |
10108        NOT ((
10109        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE'
10110        IN TYPEOF
10111        (sssc\surface_style_segmentation_curve.style_of_segmentation_curve))
10112        AND
10113        (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COLOUR_RGB',
10114        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
10115        'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF
10116        (sssc\surface_style_segmentation_curve.
10117        style_of_segmentation_curve\curve_style.curve_colour)) = 1)
10118        AND
10119        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF
10120        (sssc\surface_style_segmentation_curve.
10121        style_of_segmentation_curve\curve_style.curve_width))
10122        AND
10123        (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
10124        'CURVE_STYLE_FONT', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
10125        'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF
10126        (sssc\surface_style_segmentation_curve.
10127        style_of_segmentation_curve\curve_style.curve_font)) = 1))
10128        OR
10129        (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE_RENDERING'
10130        IN TYPEOF (sssc\surface_style_segmentation_curve.
10131        style_of_segmentation_curve))
10132        AND
10133        (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COLOUR_RGB',
10134        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
10135        'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF
10136        (sssc\surface_style_segmentation_curve.style_of_segmentation_curve\
10137        curve_style_rendering.rendering_properties.rendered_colour))
10138        = 1))) )) = 0))) = 0))) = 0))) = 0;
10139	WR15 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items |
10140        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM'
10141        IN TYPEOF (it)) |
10142        NOT (SIZEOF (QUERY (psa <* si\styled_item.styles |
10143        NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles |
10144        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_STYLE_USAGE'
10145        IN TYPEOF (pss)) |
10146        NOT (SIZEOF (QUERY (ssbd <* QUERY (sses <*
10147        ssu\surface_style_usage.style\surface_side_style.styles |
10148        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
10149        'SURFACE_STYLE_BOUNDARY' IN TYPEOF (sses)) |
10150        NOT ((
10151        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE'
10152        IN TYPEOF (ssbd\surface_style_boundary.style_of_boundary))
10153        AND
10154        (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COLOUR_RGB',
10155        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
10156        'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF
10157        (ssbd\surface_style_boundary.
10158        style_of_boundary\curve_style.curve_colour)) = 1)
10159        AND
10160        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF
10161        (ssbd\surface_style_boundary.
10162        style_of_boundary\curve_style.curve_width))
10163        AND
10164        (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
10165        'CURVE_STYLE_FONT', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
10166        'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF
10167        (ssbd\surface_style_boundary.
10168        style_of_boundary\curve_style.curve_font)) = 1))
10169        OR
10170        (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE_RENDERING'
10171        IN TYPEOF (ssbd\surface_style_boundary.style_of_boundary))
10172        AND
10173        (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COLOUR_RGB',
10174        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
10175        'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF
10176        (ssbd\surface_style_boundary.style_of_boundary\
10177        curve_style_rendering.rendering_properties.rendered_colour))
10178        = 1))) )) = 0))) = 0))) = 0))) = 0;
10179	WR16 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items |
10180        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM'
10181        IN TYPEOF (it)) |
10182        NOT (SIZEOF (QUERY (psa <* si\styled_item.styles |
10183        NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles |
10184        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_STYLE_USAGE'
10185        IN TYPEOF (pss)) |
10186        NOT (SIZEOF (QUERY (ssre <* QUERY (sses <*
10187        ssu\surface_style_usage.style\surface_side_style.styles |
10188        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
10189        'SURFACE_STYLE_RENDERING' IN TYPEOF (sses)) |
10190        NOT
10191        (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COLOUR_RGB',
10192        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
10193        'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF
10194        (ssre\surface_style_rendering.surface_colour)) = 1)))
10195        = 0))) = 0))) = 0))) = 0;
10196END_ENTITY;
10197
10198
10199ENTITY min_and_major_ply_orientation_basis
10200	SUBTYPE OF (representation_item_relationship, geometric_representation_item);
10201	SELF\representation_item_relationship.related_representation_item : axis2_placement_3d;
10202	SELF\representation_item_relationship.relating_representation_item : axis2_placement_3d;
10203DERIVE
10204	major_orientation_basis : axis2_placement_3d := SELF\representation_item_relationship.related_representation_item;
10205	minor_orientation_basis : axis2_placement_3d := SELF\representation_item_relationship.relating_representation_item;
10206END_ENTITY;
10207
10208
10209ENTITY minimally_defined_bare_die_terminal
10210	SUPERTYPE OF (bare_die_terminal)
10211	SUBTYPE OF (shape_aspect);
10212	SELF\shape_aspect.of_shape : bare_die;
10213END_ENTITY;
10214
10215
10216ENTITY minimally_defined_connector
10217	SUBTYPE OF (packaged_part);
10218END_ENTITY;
10219
10220
10221ENTITY model_parameter
10222	SUPERTYPE OF (ONEOF (datum_difference_based_model_parameter, schema_based_model_parameter))
10223	SUBTYPE OF (general_property);
10224END_ENTITY;
10225
10226
10227ENTITY model_parameter_with_unit
10228	SUBTYPE OF (model_parameter);
10229WHERE
10230	WR1 : NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SCHEMA_BASED_MODEL_PARAMETER' IN TYPEOF(SELF));
10231END_ENTITY;
10232
10233
10234ENTITY modified_geometric_tolerance
10235	SUBTYPE OF (geometric_tolerance);
10236	modifier : limit_condition;
10237END_ENTITY;
10238
10239
10240ENTITY modified_solid
10241	ABSTRACT SUPERTYPE OF (ONEOF (edge_blended_solid, sculptured_solid, shelled_solid, modified_solid_with_placed_configuration))
10242	SUBTYPE OF (solid_model);
10243	rationale : text;
10244	base_solid : base_solid_select;
10245END_ENTITY;
10246
10247
10248ENTITY modified_solid_with_placed_configuration
10249	ABSTRACT SUPERTYPE OF (ONEOF (solid_with_depression, solid_with_protrusion, solid_with_shape_element_pattern))
10250	SUBTYPE OF (modified_solid);
10251	placing : axis2_placement_3d;
10252END_ENTITY;
10253
10254
10255ENTITY moments_of_inertia_representation
10256	SUBTYPE OF (representation);
10257WHERE
10258	WR1 : (SIZEOF(SELF.items) = 1) AND
10259 (SIZEOF( QUERY( i <* SELF.items | ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'COMPOUND_REPRESENTATION_ITEM' IN TYPEOF(i)) AND
10260  (i.name = 'moments of inertia matrix') )) = 1);
10261	WR2 : SIZEOF( QUERY( i <* SELF.items | ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'COMPOUND_REPRESENTATION_ITEM' IN TYPEOF(i)) AND
10262  ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'LIST_REPRESENTATION_ITEM' IN TYPEOF(i\compound_representation_item.item_element)) AND
10263  value_range_aggregate_rep_item (i\compound_representation_item.item_element) )) = 1;
10264END_ENTITY;
10265
10266
10267ENTITY mounting_restriction_area
10268	SUBTYPE OF (shape_aspect);
10269END_ENTITY;
10270
10271
10272ENTITY mounting_restriction_volume
10273	SUBTYPE OF (shape_aspect);
10274END_ENTITY;
10275
10276
10277ENTITY multi_language_attribute_assignment
10278	SUBTYPE OF (attribute_value_assignment);
10279	items : SET [1:?] OF multi_language_attribute_item;
10280DERIVE
10281	translation_language : language := language_indication[1]\attribute_classification_assignment.assigned_class;
10282INVERSE
10283	language_indication: SET [1:1] OF attribute_language_assignment FOR items;
10284WHERE
10285	WR1 : (SELF\attribute_value_assignment.role.name = 'alternate language');
10286	WR2 : SIZEOF( QUERY( ala <* language_indication |
10287   (ala\attribute_classification_assignment.attribute_name = 'attribute_value') AND
10288   (ala\attribute_classification_assignment.role.name='translated') )) = 1;
10289	WR3 : SELF\attribute_value_assignment.attribute_name <> '';
10290	WR4 : SIZEOF(QUERY(ci <* items |
10291SIZEOF(QUERY(ata <* USEDIN(ci, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') |
10292(ata\attribute_value_assignment.attribute_name = SELF\attribute_value_assignment.attribute_name) AND
10293(ata.translation_language :=: translation_language) ))>1 )) =0;
10294	WR5 : SIZEOF(QUERY(ci <* items |
10295SIZEOF(QUERY(ata <* USEDIN(ci, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') |
10296 (ata\attribute_classification_assignment.role.name='primary') AND
10297 (ata\attribute_classification_assignment.attribute_name= SELF\attribute_value_assignment.attribute_name) AND
10298 (ata\attribute_classification_assignment.assigned_class :=: translation_language) ))>0 )) =0;
10299END_ENTITY;
10300
10301
10302ENTITY multi_layer_component_definition
10303	SUBTYPE OF (laminate_component);
10304END_ENTITY;
10305
10306
10307ENTITY multi_layer_material_removal_laminate_component
10308	SUBTYPE OF (material_removal_laminate_component);
10309END_ENTITY;
10310
10311
10312ENTITY multi_layer_stratum_feature_template_component
10313	SUBTYPE OF (stratum_feature_template_component);
10314END_ENTITY;
10315
10316
10317ENTITY multi_stratum_printed_component
10318	SUBTYPE OF (printed_component, structured_layout_component);
10319END_ENTITY;
10320
10321
10322ENTITY multi_stratum_printed_part_template
10323	SUBTYPE OF (structured_printed_part_template, multi_stratum_structured_template);
10324END_ENTITY;
10325
10326
10327ENTITY multi_stratum_special_symbol_component
10328	SUBTYPE OF (structured_layout_component);
10329END_ENTITY;
10330
10331
10332ENTITY multi_stratum_special_symbol_template
10333	SUBTYPE OF (multi_stratum_structured_template, special_symbol_template);
10334END_ENTITY;
10335
10336
10337ENTITY multi_stratum_structured_template
10338	ABSTRACT SUPERTYPE OF ((ONEOF (generic_footprint_definition, padstack_definition, multi_stratum_special_symbol_template) ANDOR stratum_stack_dependent_template))
10339	SUBTYPE OF (structured_template);
10340END_ENTITY;
10341
10342
10343ENTITY multiple_arity_boolean_expression
10344	ABSTRACT SUPERTYPE
10345	SUBTYPE OF (boolean_expression, multiple_arity_generic_expression);
10346	SELF\multiple_arity_generic_expression.operands : LIST [2:?] OF boolean_expression;
10347END_ENTITY;
10348
10349
10350ENTITY multiple_arity_generic_expression
10351	ABSTRACT SUPERTYPE
10352	SUBTYPE OF (generic_expression);
10353	operands : LIST [2:?] OF generic_expression;
10354END_ENTITY;
10355
10356
10357ENTITY multiple_arity_numeric_expression
10358	ABSTRACT SUPERTYPE
10359	SUBTYPE OF (numeric_expression, multiple_arity_generic_expression);
10360	SELF\multiple_arity_generic_expression.operands : LIST [2:?] OF numeric_expression;
10361END_ENTITY;
10362
10363
10364ENTITY name_assignment
10365	ABSTRACT SUPERTYPE;
10366	assigned_name : label;
10367DERIVE
10368	role : object_role := get_role(SELF);
10369WHERE
10370	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
10371END_ENTITY;
10372
10373
10374ENTITY name_attribute;
10375	attribute_value : label;
10376	named_item : name_attribute_select;
10377END_ENTITY;
10378
10379
10380ENTITY named_unit
10381	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)));
10382	dimensions : dimensional_exponents;
10383END_ENTITY;
10384
10385
10386ENTITY network_node_definition
10387	SUBTYPE OF (product_definition);
10388END_ENTITY;
10389
10390
10391ENTITY next_assembly_usage_occurrence
10392	SUBTYPE OF (assembly_component_usage);
10393END_ENTITY;
10394
10395
10396ENTITY next_assembly_usage_occurrence_relationship
10397	SUBTYPE OF (next_assembly_usage_occurrence, product_definition_occurrence_relationship);
10398DERIVE
10399	SELF\product_definition_occurrence_relationship.occurrence_usage : next_assembly_usage_occurrence_relationship := SELF;
10400END_ENTITY;
10401
10402
10403ENTITY non_conductive_base_blind_via
10404	SUBTYPE OF (blind_via);
10405END_ENTITY;
10406
10407
10408ENTITY non_conductive_cross_section_template
10409	SUBTYPE OF (part_template_definition);
10410END_ENTITY;
10411
10412
10413ENTITY non_manifold_surface_shape_representation
10414	SUBTYPE OF (shape_representation);
10415WHERE
10416	WR1 : SIZEOF (QUERY (it <* SELF.items |
10417       NOT (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE_BASED_SURFACE_MODEL',
10418       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM',
10419       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AXIS2_PLACEMENT_3D'] * TYPEOF (it)) = 1)))
10420       = 0;
10421	WR2 : SIZEOF (QUERY (it <* SELF.items |
10422       SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE_BASED_SURFACE_MODEL',
10423       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM'] * TYPEOF (it)) = 1)) > 0;
10424	WR3 : SIZEOF (QUERY (mi <* QUERY (it <* SELF.items |
10425       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) |
10426       NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
10427       'NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION'
10428       IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation))
10429       AND
10430       (SIZEOF(QUERY (mr_it <*
10431       mi\mapped_item.mapping_source.mapped_representation.items |
10432       ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE_BASED_SURFACE_MODEL'
10433       IN TYPEOF (mr_it)))) > 0 )))) = 0;
10434	WR4 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items |
10435       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
10436       NOT (SIZEOF (QUERY (cfs <*
10437       fbsm\face_based_surface_model.fbsm_faces |
10438       NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces |
10439       NOT (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE_SURFACE',
10440       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ORIENTED_FACE'] * TYPEOF (fa)) = 1)))
10441       = 0))) = 0))) = 0;
10442	WR5 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items |
10443       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
10444       NOT (SIZEOF (QUERY (cfs <*
10445       fbsm\face_based_surface_model.fbsm_faces |
10446       NOT (SIZEOF (QUERY (f_sf <* QUERY (fa <* cfs.cfs_faces |
10447       ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE_SURFACE' IN TYPEOF (fa))) |
10448       NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ADVANCED_FACE' IN TYPEOF (f_sf))
10449       OR
10450       (nmsf_surface_check(f_sf\face_surface.face_geometry))))) = 0)))
10451       = 0))) = 0;
10452	WR6 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items |
10453       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
10454       NOT (SIZEOF (QUERY (cfs <*
10455       fbsm\face_based_surface_model.fbsm_faces |
10456       NOT (SIZEOF (QUERY (o_fa <* QUERY (fa <* cfs.cfs_faces |
10457       ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ORIENTED_FACE' IN TYPEOF (fa))) |
10458       NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ADVANCED_FACE' IN TYPEOF
10459       (o_fa\oriented_face.face_element))
10460       OR
10461       (nmsf_surface_check
10462       (o_fa\oriented_face.face_element\face_surface.face_geometry)))))
10463       = 0))) = 0))) = 0;
10464	WR7 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items |
10465       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
10466       NOT (SIZEOF (QUERY (cfs <*
10467       fbsm\face_based_surface_model.fbsm_faces |
10468       NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces |
10469       NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
10470       OR
10471       (SIZEOF (QUERY (bnds <* fa.bounds |
10472       NOT (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP',
10473       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_LOOP']
10474       * TYPEOF (bnds.bound)) = 1))) = 0)))) = 0))) = 0))) = 0;
10475	WR8 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items|
10476       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
10477       NOT (SIZEOF (QUERY (cfs <*
10478       fbsm\face_based_surface_model.fbsm_faces |
10479       NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces |
10480       NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
10481       OR
10482       (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds |
10483       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) |
10484       NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list |
10485       NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_CURVE' IN TYPEOF
10486       (oe.edge_element)))) = 0))) = 0)))) = 0))) = 0))) = 0;
10487	WR9 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items |
10488       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
10489       NOT (SIZEOF (QUERY (cfs <*
10490       fbsm\face_based_surface_model.fbsm_faces |
10491       NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces |
10492       NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
10493       OR
10494       (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds |
10495       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) |
10496       NOT (SIZEOF (QUERY (oe_cv <* QUERY (oe <*
10497       elp_fbnds\path.edge_list |
10498       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_CURVE' IN TYPEOF (oe.edge_element)) |
10499       NOT (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.B_SPLINE_CURVE',
10500       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONIC',
10501       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_REPLICA',
10502       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LINE',
10503       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.OFFSET_CURVE_3D',
10504       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PCURVE',
10505       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POLYLINE',
10506       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_CURVE'] *
10507       TYPEOF (oe_cv.edge_element\edge_curve.edge_geometry))
10508       = 1))) = 0))) = 0)))) = 0))) = 0))) = 0;
10509	WR10 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items |
10510       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
10511       NOT (SIZEOF (QUERY (cfs <*
10512       fbsm\face_based_surface_model.fbsm_faces |
10513       NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces |
10514       NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
10515       OR
10516       (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds |
10517       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) |
10518       NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list |
10519       NOT (nmsf_curve_check (oe.edge_element\edge_curve.edge_geometry))))
10520       = 0))) = 0)))) = 0))) = 0))) = 0;
10521	WR11 : SIZEOF (QUERY(fbsm <* QUERY (it <* SELF.items |
10522       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
10523       NOT (SIZEOF (QUERY (cfs <*
10524       fbsm\face_based_surface_model.fbsm_faces |
10525       NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces |
10526       NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
10527       OR
10528       (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds |
10529       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) |
10530       NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list|
10531       NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_POINT' IN TYPEOF
10532       (oe.edge_element.edge_start))
10533       AND
10534       ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_POINT' IN
10535       TYPEOF (oe.edge_element.edge_end)))))
10536       = 0))) = 0)))) = 0))) = 0))) = 0;
10537	WR12 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items |
10538       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
10539       NOT (SIZEOF (QUERY (cfs <*
10540       fbsm\face_based_surface_model.fbsm_faces |
10541       NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces |
10542       NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
10543       OR
10544       (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds |
10545       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) |
10546       NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list |
10547       NOT ((SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CARTESIAN_POINT',
10548       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DEGENERATE_PCURVE',
10549       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT_ON_CURVE',
10550       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT_ON_SURFACE'] * TYPEOF
10551       (oe.edge_element.edge_start\vertex_point.vertex_geometry)) = 1)
10552       AND
10553       (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CARTESIAN_POINT',
10554       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DEGENERATE_PCURVE',
10555       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT_ON_CURVE',
10556       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT_ON_SURFACE'] * TYPEOF
10557       (oe.edge_element.edge_end\vertex_point.vertex_geometry)) = 1
10558       )))) = 0))) = 0)))) = 0))) = 0))) = 0;
10559	WR13 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items |
10560       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
10561       NOT (SIZEOF (QUERY (cfs <*
10562       fbsm\face_based_surface_model.fbsm_faces |
10563       NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces |
10564       NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
10565       OR
10566       (SIZEOF (QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds |
10567       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) |
10568       NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_POINT' IN TYPEOF
10569       (vlp_fbnds\vertex_loop.loop_vertex)))) = 0)))) = 0)))
10570       = 0))) = 0;
10571	WR14 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items |
10572       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
10573       NOT (SIZEOF (QUERY (cfs <*
10574       fbsm\face_based_surface_model.fbsm_faces |
10575       NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces |
10576       NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa))
10577       OR
10578       (SIZEOF (QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds |
10579       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) |
10580       NOT (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CARTESIAN_POINT',
10581       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DEGENERATE_PCURVE',
10582       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT_ON_CURVE',
10583       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT_ON_SURFACE'] * TYPEOF
10584       (vlp_fbnds\vertex_loop.loop_vertex\vertex_point.vertex_geometry))
10585       = 1))) = 0)))) = 0))) = 0))) = 0;
10586END_ENTITY;
10587
10588
10589ENTITY null_representation_item
10590	SUBTYPE OF (representation_item);
10591END_ENTITY;
10592
10593
10594ENTITY numeric_expression
10595	ABSTRACT SUPERTYPE OF (ONEOF (simple_numeric_expression, unary_numeric_expression, binary_numeric_expression, multiple_arity_numeric_expression))
10596	SUBTYPE OF (expression);
10597DERIVE
10598	is_int : LOGICAL := is_int_expr (SELF);
10599	sql_mappable : LOGICAL := is_SQL_mappable (SELF);
10600END_ENTITY;
10601
10602
10603ENTITY object_role;
10604	name : label;
10605	description : OPTIONAL text;
10606END_ENTITY;
10607
10608
10609ENTITY offset_curve_2d
10610	SUBTYPE OF (curve);
10611	basis_curve : curve;
10612	distance : length_measure;
10613	self_intersect : LOGICAL;
10614WHERE
10615	WR1 : basis_curve.dim = 2;
10616END_ENTITY;
10617
10618
10619ENTITY offset_curve_3d
10620	SUBTYPE OF (curve);
10621	basis_curve : curve;
10622	distance : length_measure;
10623	self_intersect : LOGICAL;
10624	ref_direction : direction;
10625WHERE
10626	WR1 : (basis_curve.dim = 3) AND (ref_direction.dim = 3);
10627END_ENTITY;
10628
10629
10630ENTITY offset_surface
10631	SUBTYPE OF (surface);
10632	basis_surface : surface;
10633	distance : length_measure;
10634	self_intersect : LOGICAL;
10635END_ENTITY;
10636
10637
10638ENTITY one_direction_repeat_factor
10639	SUBTYPE OF (geometric_representation_item);
10640	repeat_factor : vector;
10641END_ENTITY;
10642
10643
10644ENTITY open_shell
10645	SUBTYPE OF (connected_face_set);
10646END_ENTITY;
10647
10648
10649ENTITY operational_requirement_relationship
10650	SUBTYPE OF (property_definition, product_definition_relationship);
10651END_ENTITY;
10652
10653
10654ENTITY opposing_boundary_dimensional_size
10655	SUBTYPE OF (dimensional_size);
10656END_ENTITY;
10657
10658
10659ENTITY ordinal_date
10660	SUBTYPE OF (date);
10661	day_component : day_in_year_number;
10662WHERE
10663	WR1 : (NOT leap_year(SELF.year_component) AND { 1 <= day_component <= 365 }) OR (leap_year(SELF.year_component) AND { 1 <= day_component <= 366 });
10664END_ENTITY;
10665
10666
10667ENTITY ordinate_dimension
10668	SUBTYPE OF (projection_directed_callout);
10669END_ENTITY;
10670
10671
10672ENTITY organization;
10673	id : OPTIONAL identifier;
10674	name : label;
10675	description : OPTIONAL text;
10676END_ENTITY;
10677
10678
10679ENTITY organization_assignment
10680	ABSTRACT SUPERTYPE;
10681	assigned_organization : organization;
10682	role : organization_role;
10683END_ENTITY;
10684
10685
10686ENTITY organization_relationship;
10687	name : label;
10688	description : OPTIONAL text;
10689	relating_organization : organization;
10690	related_organization : organization;
10691END_ENTITY;
10692
10693
10694ENTITY organization_role;
10695	name : label;
10696DERIVE
10697	description : text := get_description_value(SELF);
10698WHERE
10699	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
10700END_ENTITY;
10701
10702
10703ENTITY organizational_address
10704	SUBTYPE OF (address);
10705	organizations : SET [1:?] OF organization;
10706	description : OPTIONAL text;
10707END_ENTITY;
10708
10709
10710ENTITY organizational_project;
10711	name : label;
10712	description : OPTIONAL text;
10713	responsible_organizations : SET [1:?] OF organization;
10714DERIVE
10715	id : identifier := get_id_value(SELF);
10716WHERE
10717	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
10718END_ENTITY;
10719
10720
10721ENTITY organizational_project_assignment
10722	ABSTRACT SUPERTYPE;
10723	assigned_organizational_project : organizational_project;
10724	role : organizational_project_role;
10725END_ENTITY;
10726
10727
10728ENTITY organizational_project_relationship;
10729	name : label;
10730	description : OPTIONAL text;
10731	relating_organizational_project : organizational_project;
10732	related_organizational_project : organizational_project;
10733END_ENTITY;
10734
10735
10736ENTITY organizational_project_role;
10737	name : label;
10738	description : OPTIONAL text;
10739END_ENTITY;
10740
10741
10742ENTITY oriented_closed_shell
10743	SUBTYPE OF (closed_shell);
10744	closed_shell_element : closed_shell;
10745	orientation : BOOLEAN;
10746DERIVE
10747	SELF\connected_face_set.cfs_faces : SET [1:?] OF face := conditional_reverse(SELF.orientation,
10748                                   SELF.closed_shell_element.cfs_faces);
10749WHERE
10750	WR1 : NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ORIENTED_CLOSED_SHELL'
10751                IN TYPEOF (SELF.closed_shell_element));
10752END_ENTITY;
10753
10754
10755ENTITY oriented_edge
10756	SUBTYPE OF (edge);
10757	edge_element : edge;
10758	orientation : BOOLEAN;
10759DERIVE
10760	SELF\edge.edge_end : vertex := boolean_choose (SELF.orientation,
10761                                            SELF.edge_element.edge_end,
10762                                            SELF.edge_element.edge_start);
10763	SELF\edge.edge_start : vertex := boolean_choose (SELF.orientation,
10764                                            SELF.edge_element.edge_start,
10765                                            SELF.edge_element.edge_end);
10766WHERE
10767	WR1 : NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ORIENTED_EDGE' IN TYPEOF (SELF.edge_element));
10768END_ENTITY;
10769
10770
10771ENTITY oriented_face
10772	SUBTYPE OF (face);
10773	face_element : face;
10774	orientation : BOOLEAN;
10775DERIVE
10776	SELF\face.bounds : SET [1:?] OF face_bound := conditional_reverse(SELF.orientation,SELF.face_element.bounds);
10777WHERE
10778	WR1 : NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ORIENTED_FACE' IN TYPEOF (SELF.face_element));
10779END_ENTITY;
10780
10781
10782ENTITY oriented_open_shell
10783	SUBTYPE OF (open_shell);
10784	open_shell_element : open_shell;
10785	orientation : BOOLEAN;
10786DERIVE
10787	SELF\connected_face_set.cfs_faces : SET [1:?] OF face := conditional_reverse(SELF.orientation,
10788                                      SELF.open_shell_element.cfs_faces);
10789WHERE
10790	WR1 : NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ORIENTED_OPEN_SHELL'
10791                IN TYPEOF (SELF.open_shell_element));
10792END_ENTITY;
10793
10794
10795ENTITY oriented_path
10796	SUBTYPE OF (path);
10797	path_element : path;
10798	orientation : BOOLEAN;
10799DERIVE
10800	SELF\path.edge_list : LIST [1:?] OF  UNIQUE oriented_edge := conditional_reverse(SELF.orientation,
10801                                         SELF.path_element.edge_list);
10802WHERE
10803	WR1 : NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ORIENTED_PATH' IN TYPEOF (SELF.path_element));
10804END_ENTITY;
10805
10806
10807ENTITY oriented_surface
10808	SUBTYPE OF (surface);
10809	orientation : BOOLEAN;
10810END_ENTITY;
10811
10812
10813ENTITY outer_boundary_curve
10814	SUBTYPE OF (boundary_curve);
10815END_ENTITY;
10816
10817
10818ENTITY over_riding_styled_item
10819	SUBTYPE OF (styled_item);
10820	over_ridden_style : styled_item;
10821END_ENTITY;
10822
10823
10824ENTITY package
10825	SUBTYPE OF (physical_unit);
10826END_ENTITY;
10827
10828
10829ENTITY package_body
10830	SUBTYPE OF (shape_aspect);
10831END_ENTITY;
10832
10833
10834ENTITY package_body_bottom_surface
10835	SUBTYPE OF (package_body_surface);
10836END_ENTITY;
10837
10838
10839ENTITY package_body_edge_segment_surface
10840	SUBTYPE OF (shape_aspect, shape_aspect_relationship);
10841	SELF\shape_aspect_relationship.related_shape_aspect : edge_segment_vertex;
10842	SELF\shape_aspect_relationship.relating_shape_aspect : edge_segment_vertex;
10843WHERE
10844	WR1 : SELF\shape_aspect_relationship.relating_shape_aspect :<>:
10845       SELF\shape_aspect_relationship.related_shape_aspect;
10846END_ENTITY;
10847
10848
10849ENTITY package_body_edge_surface
10850	SUBTYPE OF (package_body_surface);
10851END_ENTITY;
10852
10853
10854ENTITY package_body_surface
10855	ABSTRACT SUPERTYPE OF (ONEOF (package_body_top_surface, package_body_edge_surface, package_body_bottom_surface))
10856	SUBTYPE OF (shape_aspect);
10857END_ENTITY;
10858
10859
10860ENTITY package_body_top_surface
10861	SUBTYPE OF (package_body_surface);
10862END_ENTITY;
10863
10864
10865ENTITY package_footprint_relationship_definition
10866	SUBTYPE OF (part_template_definition);
10867END_ENTITY;
10868
10869
10870ENTITY package_product_concept_feature
10871	SUBTYPE OF (product_concept_feature);
10872WHERE
10873	WR1 : NOT ( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'CONDITIONAL_CONCEPT_FEATURE' IN TYPEOF ( SELF ) );
10874	WR2 : SIZEOF ( QUERY
10875									(
10876										cfr <* USEDIN ( SELF , 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP.' +'RELATING_PRODUCT_CONCEPT_FEATURE' )
10877										|
10878										('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN TYPEOF (cfr ) )
10879										AND
10880										( SIZEOF ( QUERY
10881																(
10882																	ipcf <* USEDIN ( cfr , 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'CONDITIONAL_CONCEPT_FEATURE.' +	'CONDITION' )
10883																	|
10884																	'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'INCLUSION_PRODUCT_CONCEPT_FEATURE' IN TYPEOF ( ipcf )
10885																)
10886															)= 1
10887										)
10888									)
10889							)>0;
10890END_ENTITY;
10891
10892
10893ENTITY package_terminal
10894	SUPERTYPE OF ((guided_wave_terminal ANDOR primary_reference_terminal))
10895	SUBTYPE OF (placed_feature);
10896END_ENTITY;
10897
10898
10899ENTITY package_terminal_template_definition
10900	SUBTYPE OF (part_feature_template_definition);
10901END_ENTITY;
10902
10903
10904ENTITY packaged_component
10905	SUBTYPE OF (physical_component);
10906END_ENTITY;
10907
10908
10909ENTITY packaged_connector
10910	SUBTYPE OF (packaged_part);
10911END_ENTITY;
10912
10913
10914ENTITY packaged_connector_component
10915	SUBTYPE OF (interface_component, packaged_component);
10916END_ENTITY;
10917
10918
10919ENTITY packaged_connector_terminal_relationship
10920	SUBTYPE OF (shape_aspect, shape_aspect_relationship);
10921END_ENTITY;
10922
10923
10924ENTITY packaged_part
10925	SUPERTYPE OF (ONEOF (minimally_defined_connector, packaged_connector))
10926	SUBTYPE OF (physical_unit);
10927END_ENTITY;
10928
10929
10930ENTITY packaged_part_terminal
10931	SUBTYPE OF (shape_aspect);
10932END_ENTITY;
10933
10934
10935ENTITY padstack_definition
10936	SUPERTYPE OF (passage_padstack_definition)
10937	SUBTYPE OF (multi_stratum_structured_template);
10938END_ENTITY;
10939
10940
10941ENTITY padstack_occurrence
10942	SUBTYPE OF (structured_layout_component);
10943END_ENTITY;
10944
10945
10946ENTITY padstack_occurrence_product_definition_relationship
10947	SUBTYPE OF (property_definition, next_assembly_usage_occurrence_relationship);
10948WHERE
10949	WR1 : SELF\product_definition_relationship.related_product_definition :<>:
10950        SELF\product_definition_relationship.relating_product_definition;
10951END_ENTITY;
10952
10953
10954ENTITY parabola
10955	SUBTYPE OF (conic);
10956	focal_dist : length_measure;
10957WHERE
10958	WR1 : focal_dist <> 0.0;
10959END_ENTITY;
10960
10961
10962ENTITY parallel_offset
10963	SUBTYPE OF (derived_shape_aspect);
10964	offset : measure_with_unit;
10965WHERE
10966	WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1;
10967END_ENTITY;
10968
10969
10970ENTITY parallelism_tolerance
10971	SUBTYPE OF (geometric_tolerance_with_datum_reference);
10972WHERE
10973	WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) < 3;
10974END_ENTITY;
10975
10976
10977ENTITY parameter_assignment
10978	SUBTYPE OF (property_definition_representation, representation);
10979END_ENTITY;
10980
10981
10982ENTITY parameter_assignment_override
10983	SUBTYPE OF (representation, representation_relationship);
10984	SELF\representation_relationship.rep_1 : parameter_assignment;
10985	SELF\representation_relationship.rep_2 : parameter_assignment;
10986UNIQUE
10987	UR1 : rep_1, rep_2;
10988WHERE
10989	WR1 : SELF\representation_relationship.rep_1 <> SELF\representation_relationship.rep_2;
10990END_ENTITY;
10991
10992
10993ENTITY parametric_representation_context
10994	SUBTYPE OF (representation_context);
10995END_ENTITY;
10996
10997
10998ENTITY parametric_template
10999	ABSTRACT SUPERTYPE OF (ONEOF (fill_area_template, teardrop_template, trace_template))
11000	SUBTYPE OF (part_template_definition);
11001END_ENTITY;
11002
11003
11004ENTITY part_connected_terminals_definition
11005	SUBTYPE OF (shape_aspect);
11006UNIQUE
11007	UR1 : SELF\shape_aspect.name;
11008END_ENTITY;
11009
11010
11011ENTITY part_connected_terminals_definition_domain
11012	SUBTYPE OF (shape_aspect);
11013END_ENTITY;
11014
11015
11016ENTITY part_connected_terminals_element
11017	SUBTYPE OF (shape_aspect, shape_aspect_relationship);
11018END_ENTITY;
11019
11020
11021ENTITY part_connected_terminals_layout_topology_requirement_assignment
11022	SUBTYPE OF (requirement_assignment);
11023END_ENTITY;
11024
11025
11026ENTITY part_connected_terminals_structure_definition
11027	SUBTYPE OF (part_connected_terminals_definition);
11028END_ENTITY;
11029
11030
11031ENTITY part_feature_template_definition
11032	SUBTYPE OF (shape_feature_definition, group);
11033WHERE
11034	WR1 : SELF\group.name = SELF\characterized_object.name;
11035	WR2 : SELF\group.description = SELF\characterized_object.description;
11036END_ENTITY;
11037
11038
11039ENTITY part_interface_access_feature
11040	SUBTYPE OF (shape_aspect);
11041END_ENTITY;
11042
11043
11044ENTITY part_laminate_table
11045	SUPERTYPE OF (ONEOF (composite_assembly_table, ply_laminate_table))
11046	SUBTYPE OF (laminate_table);
11047END_ENTITY;
11048
11049
11050ENTITY part_mating_feature
11051	SUBTYPE OF (shape_aspect);
11052END_ENTITY;
11053
11054
11055ENTITY part_mounting_feature
11056	SUBTYPE OF (shape_aspect);
11057END_ENTITY;
11058
11059
11060ENTITY part_string_template
11061	SUBTYPE OF (part_template_definition);
11062END_ENTITY;
11063
11064
11065ENTITY part_template_definition
11066	SUPERTYPE OF (((ONEOF (geometric_template, parametric_template) ANDOR ONEOF (part_string_template, part_text_template, single_stratum_template, stratum_stack_model)) ANDOR ONEOF (printed_part_template, special_symbol_template, non_conductive_cross_section_template)))
11067	SUBTYPE OF (product_definition, product_definition_shape);
11068DERIVE
11069	SELF\property_definition.definition : part_template_definition := SELF;
11070WHERE
11071	WR1 : SIZEOF (USEDIN (SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +'NAME_ATTRIBUTE.NAMED_ITEM')) = 0;
11072	WR2 : NOT EXISTS(SELF\property_definition.description);
11073END_ENTITY;
11074
11075
11076ENTITY part_template_keepout_shape_allocation_to_stratum_stack
11077	SUBTYPE OF (characterized_object, property_definition);
11078DERIVE
11079	SELF\property_definition.definition : part_template_keepout_shape_allocation_to_stratum_stack := SELF;
11080END_ENTITY;
11081
11082
11083ENTITY part_terminal_external_reference
11084	SUBTYPE OF (shape_aspect);
11085END_ENTITY;
11086
11087
11088ENTITY part_text_template
11089	SUBTYPE OF (part_template_definition);
11090END_ENTITY;
11091
11092
11093ENTITY part_tooling_feature
11094	SUPERTYPE OF ((ONEOF (fiducial_part_feature, tool_registration_mark) ANDOR test_point_part_feature))
11095	SUBTYPE OF (shape_aspect);
11096WHERE
11097	WR1 : SELF\shape_aspect.product_definitional = true;
11098END_ENTITY;
11099
11100
11101ENTITY partial_document_with_structured_text_representation_assignment
11102	SUBTYPE OF (applied_document_usage_constraint_assignment, characterized_object);
11103END_ENTITY;
11104
11105
11106ENTITY partially_plated_cutout
11107	SUBTYPE OF (cutout);
11108END_ENTITY;
11109
11110
11111ENTITY partially_plated_interconnect_module_edge
11112	SUBTYPE OF (interconnect_module_edge);
11113END_ENTITY;
11114
11115
11116ENTITY passage_deposition_material_identification
11117	SUBTYPE OF (material_designation);
11118	SELF\material_designation.definitions : SET [1:?] OF passage_technology;
11119END_ENTITY;
11120
11121
11122ENTITY passage_filling_material_identification
11123	SUBTYPE OF (material_designation);
11124	SELF\material_designation.definitions : SET [1:?] OF passage_technology;
11125END_ENTITY;
11126
11127
11128ENTITY passage_padstack_definition
11129	SUBTYPE OF (padstack_definition);
11130END_ENTITY;
11131
11132
11133ENTITY passage_technology
11134	SUBTYPE OF (characterized_object, product_definition_shape);
11135DERIVE
11136	SELF\property_definition.definition : characterized_definition := SELF;
11137UNIQUE
11138  UR1: SELF\characterized_object.name;
11139END_ENTITY;
11140
11141
11142ENTITY passage_technology_allocation_to_stack_model
11143	SUBTYPE OF (stratum_sub_stack);
11144END_ENTITY;
11145
11146
11147ENTITY passage_terminal_based_fabrication_joint_link
11148	SUBTYPE OF (shape_aspect, shape_aspect_relationship);
11149END_ENTITY;
11150
11151
11152ENTITY path
11153	SUPERTYPE OF (ONEOF (edge_loop, oriented_path))
11154	SUBTYPE OF (topological_representation_item);
11155	edge_list : LIST [1:?] OF  UNIQUE oriented_edge;
11156WHERE
11157	WR1 : path_head_to_tail(SELF);
11158END_ENTITY;
11159
11160
11161ENTITY path_area_with_parameters
11162	SUBTYPE OF (complex_area, mapped_item);
11163WHERE
11164	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE' IN TYPEOF(SELF\mapped_item.mapping_target);
11165	WR2 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE_PARAMETERS_REPRESENTATION' IN TYPEOF(SELF\mapped_item.mapping_source\representation_map.mapped_representation);
11166	WR3 : SELF\mapped_item.mapping_source\representation_map.mapping_origin\representation_item.name = 'curve width';
11167END_ENTITY;
11168
11169
11170ENTITY pcurve
11171	SUBTYPE OF (curve);
11172	basis_surface : surface;
11173	reference_to_curve : definitional_representation;
11174WHERE
11175	WR1 : SIZEOF(reference_to_curve\representation.items) = 1;
11176	WR2 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE' IN TYPEOF
11177                    (reference_to_curve\representation.items[1]);
11178	WR3 : reference_to_curve\representation.items[1]\
11179                               geometric_representation_item.dim =2;
11180END_ENTITY;
11181
11182
11183ENTITY percentage_laminate_definition
11184	SUBTYPE OF (product_definition);
11185WHERE
11186	WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF,
11187                             'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
11188                             'PRODUCT_DEFINITION_RELATIONSHIP.' +
11189                             'RELATING_PRODUCT_DEFINITION') |
11190                             'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
11191                             'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN
11192                             TYPEOF (pdr))) > 0;
11193END_ENTITY;
11194
11195
11196ENTITY percentage_laminate_table
11197	SUBTYPE OF (zone_structural_makeup);
11198END_ENTITY;
11199
11200
11201ENTITY percentage_ply_definition
11202	SUBTYPE OF (product_definition);
11203WHERE
11204	WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
11205        'PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION') |
11206        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PERCENTAGE_LAMINATE_DEFINITION'
11207        IN TYPEOF (pdr.related_product_definition)) AND
11208        (pdr.name = 'makeup and properties'))) = 0;
11209END_ENTITY;
11210
11211
11212ENTITY perpendicular_to
11213	SUBTYPE OF (derived_shape_aspect);
11214WHERE
11215	WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1;
11216END_ENTITY;
11217
11218
11219ENTITY perpendicularity_tolerance
11220	SUBTYPE OF (geometric_tolerance_with_datum_reference);
11221WHERE
11222	WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 3;
11223END_ENTITY;
11224
11225
11226ENTITY person;
11227	id : identifier;
11228	last_name : OPTIONAL label;
11229	first_name : OPTIONAL label;
11230	middle_names : OPTIONAL LIST [1:?] OF label;
11231	prefix_titles : OPTIONAL LIST [1:?] OF label;
11232	suffix_titles : OPTIONAL LIST [1:?] OF label;
11233WHERE
11234	WR1 : EXISTS(last_name) OR EXISTS(first_name);
11235END_ENTITY;
11236
11237
11238ENTITY person_and_organization;
11239	the_person : person;
11240	the_organization : organization;
11241DERIVE
11242	description : text := get_description_value(SELF);
11243	name : label := get_name_value(SELF);
11244WHERE
11245	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
11246	WR2 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
11247END_ENTITY;
11248
11249
11250ENTITY person_and_organization_address
11251	SUBTYPE OF (organizational_address, personal_address);
11252	SELF\organizational_address.organizations : SET [1:1] OF organization;
11253	SELF\personal_address.people : SET [1:1] OF person;
11254WHERE
11255	WR1 : SIZEOF(QUERY(pao <* USEDIN (SELF\personal_address.people[1], 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PERSON_AND_ORGANIZATION.THE_PERSON') | pao.the_organization :=: SELF\organizational_address.organizations[1])) = 1;
11256END_ENTITY;
11257
11258
11259ENTITY person_and_organization_assignment
11260	ABSTRACT SUPERTYPE;
11261	assigned_person_and_organization : person_and_organization;
11262	role : person_and_organization_role;
11263END_ENTITY;
11264
11265
11266ENTITY person_and_organization_role;
11267	name : label;
11268DERIVE
11269	description : text := get_description_value(SELF);
11270WHERE
11271	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
11272END_ENTITY;
11273
11274
11275ENTITY personal_address
11276	SUBTYPE OF (address);
11277	people : SET [1:?] OF person;
11278	description : OPTIONAL text;
11279END_ENTITY;
11280
11281
11282ENTITY physical_breakdown_context
11283	SUBTYPE OF (breakdown_context);
11284END_ENTITY;
11285
11286
11287ENTITY physical_component
11288	SUPERTYPE OF (ONEOF (assembly_module_component, assembly_module_macro_component, bare_die_component, cable_component, interconnect_module_component, interconnect_module_macro_component, packaged_component, routed_interconnect_component, routed_physical_component, sequential_laminate_stackup_component))
11289	SUBTYPE OF (assembly_component);
11290END_ENTITY;
11291
11292
11293ENTITY physical_component_feature
11294	SUPERTYPE OF (ONEOF (physical_component_terminal, physical_component_interface_terminal))
11295	SUBTYPE OF (component_feature);
11296END_ENTITY;
11297
11298
11299ENTITY physical_component_interface_terminal
11300	SUBTYPE OF (physical_component_feature);
11301END_ENTITY;
11302
11303
11304ENTITY physical_component_terminal
11305	SUPERTYPE OF (ONEOF (assembly_module_macro_component_join_terminal, interconnect_module_macro_component_join_terminal))
11306	SUBTYPE OF (component_terminal, physical_component_feature);
11307END_ENTITY;
11308
11309
11310ENTITY physical_connectivity_definition
11311	SUBTYPE OF (shape_aspect);
11312UNIQUE
11313	UR1 : SELF\shape_aspect.name, SELF\shape_aspect.of_shape;
11314END_ENTITY;
11315
11316
11317ENTITY physical_connectivity_definition_domain
11318	SUBTYPE OF (property_definition);
11319END_ENTITY;
11320
11321
11322ENTITY physical_connectivity_element
11323	SUBTYPE OF (shape_aspect_relationship, shape_aspect);
11324END_ENTITY;
11325
11326
11327ENTITY physical_connectivity_interrupting_cutout
11328	SUBTYPE OF (cutout);
11329END_ENTITY;
11330
11331
11332ENTITY physical_connectivity_layout_topology_link
11333	SUBTYPE OF (group_relationship);
11334END_ENTITY;
11335
11336
11337ENTITY physical_connectivity_layout_topology_node
11338	SUBTYPE OF (group);
11339END_ENTITY;
11340
11341
11342ENTITY physical_connectivity_layout_topology_requirement
11343	SUBTYPE OF (predefined_requirement_view_definition, group);
11344END_ENTITY;
11345
11346
11347ENTITY physical_connectivity_layout_topology_requirement_assignment
11348	SUBTYPE OF (requirement_assignment);
11349END_ENTITY;
11350
11351
11352ENTITY physical_element_usage
11353	SUBTYPE OF (breakdown_element_usage);
11354END_ENTITY;
11355
11356
11357ENTITY physical_network
11358	SUBTYPE OF (shape_aspect);
11359END_ENTITY;
11360
11361
11362ENTITY physical_network_group
11363	ABSTRACT SUPERTYPE OF (ONEOF (pre_defined_physical_network_group, externally_defined_physical_network_group))
11364	SUBTYPE OF (group);
11365END_ENTITY;
11366
11367
11368ENTITY physical_network_group_element_relationship
11369	ABSTRACT SUPERTYPE OF (ONEOF (pre_defined_physical_network_group_element_relationship, externally_defined_physical_network_group_element_relationship))
11370	SUBTYPE OF (group_relationship);
11371END_ENTITY;
11372
11373
11374ENTITY physical_network_supporting_inter_stratum_feature
11375	SUBTYPE OF (plated_inter_stratum_feature);
11376END_ENTITY;
11377
11378
11379ENTITY physical_node_branch_requirement_to_implementing_component_allocation
11380	SUBTYPE OF (shape_aspect_relationship, shape_aspect);
11381	SELF\shape_aspect.of_shape : assembly_component;
11382	SELF\shape_aspect_relationship.related_shape_aspect : physical_connectivity_element;
11383	SELF\shape_aspect_relationship.relating_shape_aspect : part_connected_terminals_element;
11384DERIVE
11385	implementation_component : assembly_component := SELF\shape_aspect.of_shape;
11386	part_element : part_connected_terminals_element := SELF\shape_aspect_relationship.relating_shape_aspect;
11387	physical_node_branch_requirement : physical_connectivity_element := SELF\shape_aspect_relationship.related_shape_aspect;
11388END_ENTITY;
11389
11390
11391ENTITY physical_node_requirement_to_implementing_component_allocation
11392	SUBTYPE OF (shape_aspect_relationship, shape_aspect);
11393	SELF\shape_aspect_relationship.relating_shape_aspect : physical_connectivity_definition;
11394WHERE
11395	WR1 : acyclic_shape_aspect_relationship(SELF,
11396       [SELF\shape_aspect_relationship.related_shape_aspect],
11397       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
11398       'PHYSICAL_NODE_REQUIREMENT_TO_IMPLEMENTING_COMPONENT_ALLOCATION');
11399END_ENTITY;
11400
11401
11402ENTITY physical_shield
11403	SUBTYPE OF (physical_component);
11404END_ENTITY;
11405
11406
11407ENTITY physical_unit
11408	SUPERTYPE OF (ONEOF (bare_die, cable_usage_view, package, packaged_part, assembly_module_design_view, interconnect_module_design_view))
11409	SUBTYPE OF (product_definition, product_definition_shape);
11410DERIVE
11411	SELF\property_definition.definition : physical_unit := SELF;
11412WHERE
11413	WR1 : SIZEOF (USEDIN (SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +'NAME_ATTRIBUTE.NAMED_ITEM')) = 0;
11414	WR2 : NOT EXISTS(SELF\property_definition.description);
11415END_ENTITY;
11416
11417
11418ENTITY physical_unit_datum_feature
11419	SUBTYPE OF (shape_aspect);
11420END_ENTITY;
11421
11422
11423ENTITY physical_unit_geometric_tolerance
11424	SUBTYPE OF (geometric_tolerance, property_definition);
11425END_ENTITY;
11426
11427
11428ENTITY physical_unit_interconnect_definition
11429	SUBTYPE OF (product_definition);
11430END_ENTITY;
11431
11432
11433ENTITY physical_unit_keepout_shape_allocation_to_stratum_stack
11434	SUBTYPE OF (representation, representation_relationship);
11435END_ENTITY;
11436
11437
11438ENTITY physical_unit_keepout_shape_allocation_to_stratum_technology
11439	SUBTYPE OF (representation);
11440END_ENTITY;
11441
11442
11443ENTITY physical_unit_network_definition
11444	SUBTYPE OF (physical_unit);
11445END_ENTITY;
11446
11447
11448ENTITY picture_representation
11449	SUBTYPE OF (presentation_view);
11450	SELF\representation.items : SET [2:?] OF picture_representation_item_select;
11451INVERSE
11452	size: presentation_size FOR unit;
11453WHERE
11454    WR1: SIZEOF(QUERY(item <* items | 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM' IN TYPEOF(item))) = 1;
11455    WR2: SIZEOF (QUERY (se <* QUERY (item <* SELF.items | ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STYLED_ITEM' IN TYPEOF (item)))
11456         | NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PICTURE_REPRESENTATION_ITEM'
11457                IN TYPEOF (se\styled_item.item)) )) = 0;
11458END_ENTITY;
11459
11460
11461ENTITY picture_representation_item
11462	ABSTRACT SUPERTYPE OF (ONEOF (externally_defined_picture_representation_item, predefined_picture_representation_item))
11463	SUBTYPE OF (bytes_representation_item);
11464END_ENTITY;
11465
11466
11467ENTITY placed_datum_target_feature
11468	SUBTYPE OF (datum_target);
11469DERIVE
11470	representation_associations : SET [0:?] OF property_definition_representation := get_shape_aspect_property_definition_representations(SELF);
11471WHERE
11472	WR1 : SELF.description IN ['point','line','rectangle','circle', 'circular line'];
11473	WR2 : SIZEOF (QUERY (pdr <* representation_associations | 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation) )) = 1;
11474	WR3 : valid_datum_target_parameters(SELF);
11475END_ENTITY;
11476
11477
11478ENTITY placed_feature
11479	SUBTYPE OF (shape_aspect);
11480END_ENTITY;
11481
11482
11483ENTITY placement
11484	SUPERTYPE OF (ONEOF (axis1_placement, axis2_placement_2d, axis2_placement_3d))
11485	SUBTYPE OF (geometric_representation_item);
11486	location : cartesian_point;
11487END_ENTITY;
11488
11489
11490ENTITY planar_box
11491	SUBTYPE OF (planar_extent);
11492	placement : axis2_placement;
11493END_ENTITY;
11494
11495
11496ENTITY planar_closed_path_shape_representation_with_parameters
11497	SUBTYPE OF (planar_path_shape_representation_with_parameters);
11498END_ENTITY;
11499
11500
11501ENTITY planar_extent
11502	SUBTYPE OF (geometric_representation_item);
11503	size_in_x : length_measure;
11504	size_in_y : length_measure;
11505END_ENTITY;
11506
11507
11508ENTITY planar_path_shape_representation_with_parameters
11509	SUBTYPE OF (single_area_csg_2d_shape_representation);
11510END_ENTITY;
11511
11512
11513ENTITY plane
11514	SUBTYPE OF (elementary_surface);
11515END_ENTITY;
11516
11517
11518ENTITY plane_angle_measure_with_unit
11519	SUBTYPE OF (measure_with_unit);
11520WHERE
11521	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PLANE_ANGLE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
11522END_ENTITY;
11523
11524
11525ENTITY plane_angle_unit
11526	SUBTYPE OF (named_unit);
11527WHERE
11528	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);
11529END_ENTITY;
11530
11531
11532ENTITY plated_conductive_base_blind_via
11533	SUBTYPE OF (blind_via);
11534END_ENTITY;
11535
11536
11537ENTITY plated_cutout
11538	SUBTYPE OF (cutout, plated_inter_stratum_feature);
11539END_ENTITY;
11540
11541
11542ENTITY plated_cutout_edge_segment
11543	SUBTYPE OF (cutout_edge_segment, plated_inter_stratum_feature);
11544END_ENTITY;
11545
11546
11547ENTITY plated_inter_stratum_feature
11548	SUPERTYPE OF (ONEOF (plated_cutout_edge_segment, plated_interconnect_module_edge_segment, plated_passage))
11549	SUBTYPE OF (inter_stratum_feature);
11550END_ENTITY;
11551
11552
11553ENTITY plated_interconnect_module_edge
11554	SUBTYPE OF (interconnect_module_edge, plated_inter_stratum_feature);
11555END_ENTITY;
11556
11557
11558ENTITY plated_interconnect_module_edge_segment
11559	SUBTYPE OF (interconnect_module_edge_segment, plated_inter_stratum_feature);
11560END_ENTITY;
11561
11562
11563ENTITY plated_passage
11564	SUPERTYPE OF (ONEOF (component_termination_passage, via))
11565	SUBTYPE OF (plated_inter_stratum_feature);
11566END_ENTITY;
11567
11568
11569ENTITY plated_passage_dependent_land
11570	SUBTYPE OF (inter_stratum_feature_dependent_land);
11571END_ENTITY;
11572
11573
11574ENTITY plus_minus_tolerance;
11575	range : tolerance_method_definition;
11576	toleranced_dimension : dimensional_characteristic;
11577UNIQUE
11578	UR1 : toleranced_dimension;
11579END_ENTITY;
11580
11581
11582ENTITY ply_laminate_definition
11583	SUBTYPE OF (product_definition);
11584WHERE
11585	WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF,
11586                             'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
11587                             'PRODUCT_DEFINITION_RELATIONSHIP.' +
11588                             'RELATING_PRODUCT_DEFINITION') |
11589                             'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
11590                             'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN
11591                             TYPEOF (pdr))) = 1;
11592END_ENTITY;
11593
11594
11595ENTITY ply_laminate_sequence_definition
11596	SUBTYPE OF (product_definition);
11597WHERE
11598	WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF,
11599                             'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
11600                             'PRODUCT_DEFINITION_RELATIONSHIP.' +
11601                             'RELATING_PRODUCT_DEFINITION') |
11602                             'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
11603                             'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN
11604                             TYPEOF (pdr))) > 0;
11605END_ENTITY;
11606
11607
11608ENTITY ply_laminate_table
11609	SUBTYPE OF (part_laminate_table);
11610END_ENTITY;
11611
11612
11613ENTITY point
11614	SUPERTYPE OF (ONEOF (cartesian_point, point_on_curve, point_on_surface, point_replica, degenerate_pcurve))
11615	SUBTYPE OF (geometric_representation_item);
11616END_ENTITY;
11617
11618
11619ENTITY point_and_vector
11620	SUBTYPE OF (compound_representation_item, geometric_representation_item);
11621	SELF\compound_representation_item.item_element : point_and_vector_members;
11622END_ENTITY;
11623
11624
11625ENTITY point_on_curve
11626	SUBTYPE OF (point);
11627	basis_curve : curve;
11628	point_parameter : parameter_value;
11629END_ENTITY;
11630
11631
11632ENTITY point_on_surface
11633	SUBTYPE OF (point);
11634	basis_surface : surface;
11635	point_parameter_u : parameter_value;
11636	point_parameter_v : parameter_value;
11637END_ENTITY;
11638
11639
11640ENTITY point_path
11641	SUBTYPE OF (compound_representation_item, geometric_representation_item);
11642	SELF\compound_representation_item.item_element : point_path_members;
11643END_ENTITY;
11644
11645
11646ENTITY point_replica
11647	SUBTYPE OF (point);
11648	parent_pt : point;
11649	transformation : cartesian_transformation_operator;
11650WHERE
11651	WR1 : transformation.dim = parent_pt.dim;
11652	WR2 : acyclic_point_replica (SELF,parent_pt);
11653END_ENTITY;
11654
11655
11656ENTITY point_style
11657	SUBTYPE OF (founded_item);
11658	name : label;
11659	marker : marker_select;
11660	marker_size : size_select;
11661	marker_colour : colour;
11662END_ENTITY;
11663
11664
11665ENTITY polar_complex_number_literal
11666	SUBTYPE OF (generic_literal);
11667	radius : REAL;
11668	angle : REAL;
11669WHERE
11670	WR1 : radius >= 0;
11671	WR2 : { 0 <= angle < 2*PI };
11672END_ENTITY;
11673
11674
11675ENTITY poly_loop
11676	SUBTYPE OF (loop, geometric_representation_item);
11677	polygon : LIST [3:?] OF  UNIQUE cartesian_point;
11678END_ENTITY;
11679
11680
11681ENTITY polygonal_area
11682	SUBTYPE OF (primitive_2d);
11683	bounds : LIST [3:?] OF  UNIQUE cartesian_point;
11684END_ENTITY;
11685
11686
11687ENTITY polyline
11688	SUBTYPE OF (bounded_curve);
11689	points : LIST [2:?] OF cartesian_point;
11690END_ENTITY;
11691
11692
11693ENTITY port_variable
11694	SUPERTYPE OF (ONEOF (across_port_variable, through_port_variable, transform_port_variable))
11695	SUBTYPE OF (representation, representation_item);
11696END_ENTITY;
11697
11698
11699ENTITY position_tolerance
11700	SUBTYPE OF (geometric_tolerance);
11701WHERE
11702	WR1 : NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)) OR ( SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 3);
11703END_ENTITY;
11704
11705
11706ENTITY positional_boundary
11707	SUBTYPE OF (shape_aspect);
11708WHERE
11709	WR2 : SELF\shape_aspect.product_definitional = False;
11710END_ENTITY;
11711
11712
11713ENTITY positional_boundary_member
11714	SUBTYPE OF (shape_aspect);
11715WHERE
11716	WR1 : SELF\shape_aspect.product_definitional = False;
11717END_ENTITY;
11718
11719
11720ENTITY positioned_sketch
11721	SUBTYPE OF (geometric_representation_item);
11722	sketch_basis : sketch_basis_select;
11723	auxiliary_elements : SET [0:?] OF auxiliary_geometric_representation_item;
11724WHERE
11725	WR1 : NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_BOUNDED_SURFACE' IN
11726    TYPEOF(sketch_basis)) AND NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PLANE' IN
11727    TYPEOF(sketch_basis\curve_bounded_surface.basis_surface)));
11728	WR2 : NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE_SURFACE' IN TYPEOF(sketch_basis)) AND
11729    NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PLANE' IN TYPEOF(sketch_basis\face_surface.face_geometry)));
11730	WR3 : SIZEOF(QUERY(q <* auxiliary_elements | (SIZEOF(TYPEOF(q) *
11731    ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT','AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE']) = 0))) = 0;
11732	WR4 : SIZEOF(QUERY(q <* auxiliary_elements |
11733    q\geometric_representation_item.dim <> 3)) = 0;
11734END_ENTITY;
11735
11736
11737ENTITY power_measure_with_unit
11738	SUBTYPE OF (measure_with_unit);
11739WHERE
11740	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POWER_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
11741END_ENTITY;
11742
11743
11744ENTITY power_unit
11745	SUBTYPE OF (derived_unit);
11746WHERE
11747	WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.watt);
11748END_ENTITY;
11749
11750
11751ENTITY pre_defined_colour
11752	SUBTYPE OF (pre_defined_item, colour);
11753END_ENTITY;
11754
11755
11756ENTITY pre_defined_curve_font
11757	SUBTYPE OF (pre_defined_item);
11758END_ENTITY;
11759
11760
11761ENTITY pre_defined_dimension_symbol
11762	SUBTYPE OF (pre_defined_symbol);
11763WHERE
11764	WR1 : SELF.name IN [ 'arc length' , 'conical taper' , 'counterbore' , 'countersink' , 'depth' , 'diameter' , 'plus minus' , 'radius' , 'slope' , 'spherical diameter' , 'spherical radius' , 'square'];
11765END_ENTITY;
11766
11767
11768ENTITY pre_defined_geometrical_tolerance_symbol
11769	SUBTYPE OF (pre_defined_symbol);
11770WHERE
11771	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' ];
11772END_ENTITY;
11773
11774
11775ENTITY pre_defined_item;
11776	name : label;
11777END_ENTITY;
11778
11779
11780ENTITY pre_defined_marker
11781	SUBTYPE OF (pre_defined_item);
11782END_ENTITY;
11783
11784
11785ENTITY pre_defined_parallel_datum_axis_symbol_3d_2d_relationship
11786	SUBTYPE OF (shape_definition_3d_intersection);
11787END_ENTITY;
11788
11789
11790ENTITY pre_defined_perpendicular_datum_axis_symbol_3d_2d_relationship
11791	SUBTYPE OF (shape_definition_3d_intersection);
11792END_ENTITY;
11793
11794
11795ENTITY pre_defined_perpendicular_datum_plane_symbol_3d_2d_relationship
11796	SUBTYPE OF (shape_definition_3d_intersection);
11797END_ENTITY;
11798
11799
11800ENTITY pre_defined_physical_network_group
11801	SUBTYPE OF (physical_network_group);
11802END_ENTITY;
11803
11804
11805ENTITY pre_defined_physical_network_group_element_relationship
11806	SUBTYPE OF (physical_network_group_element_relationship);
11807END_ENTITY;
11808
11809
11810ENTITY pre_defined_point_marker_symbol
11811	SUBTYPE OF (pre_defined_marker, pre_defined_symbol);
11812WHERE
11813	WR1 : SELF.name IN ['asterisk','circle','dot','plus','square','triangle','x'];
11814END_ENTITY;
11815
11816
11817ENTITY pre_defined_surface_condition_symbol
11818	SUBTYPE OF (pre_defined_symbol);
11819WHERE
11820	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'];
11821END_ENTITY;
11822
11823
11824ENTITY pre_defined_surface_side_style
11825	SUBTYPE OF (pre_defined_item);
11826END_ENTITY;
11827
11828
11829ENTITY pre_defined_symbol
11830	SUBTYPE OF (pre_defined_item);
11831END_ENTITY;
11832
11833
11834ENTITY pre_defined_terminator_symbol
11835	SUBTYPE OF (pre_defined_symbol);
11836WHERE
11837	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'];
11838END_ENTITY;
11839
11840
11841ENTITY pre_defined_text_font
11842	SUBTYPE OF (pre_defined_item);
11843END_ENTITY;
11844
11845
11846ENTITY pre_defined_tile
11847	SUBTYPE OF (pre_defined_item);
11848END_ENTITY;
11849
11850
11851ENTITY precision_qualifier;
11852	precision_value : INTEGER;
11853END_ENTITY;
11854
11855
11856ENTITY predefined_picture_representation_item
11857	SUBTYPE OF (picture_representation_item);
11858WHERE
11859	WR1 : SELF\representation_item.name IN pre_defined_picture_representation_types;
11860END_ENTITY;
11861
11862
11863ENTITY predefined_requirement_view_definition
11864	SUPERTYPE OF (ONEOF (assembly_spacing_requirement, assembly_group_spacing_requirement, item_restricted_requirement, layout_spacing_requirement))
11865	SUBTYPE OF (product_definition);
11866END_ENTITY;
11867
11868
11869ENTITY presentation_area
11870	SUBTYPE OF (presentation_representation);
11871WHERE
11872	WR1 : ((SIZEOF (QUERY (ais <* USEDIN (SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
11873                                                 'AREA_IN_SET.AREA') |
11874             SIZEOF (USEDIN (ais, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
11875                                  'PRESENTATION_SIZE.UNIT')) =1)) > 0) OR
11876            (SIZEOF (USEDIN (SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
11877                                   'PRESENTATION_SIZE.UNIT')) =1));
11878END_ENTITY;
11879
11880
11881ENTITY presentation_layer_assignment;
11882	name : label;
11883	description : text;
11884	assigned_items : SET [1:?] OF layered_item;
11885END_ENTITY;
11886
11887
11888ENTITY presentation_representation
11889	SUPERTYPE OF (ONEOF (presentation_area, presentation_view))
11890	SUBTYPE OF (representation);
11891	SELF\representation.context_of_items : geometric_representation_context;
11892WHERE
11893	WR1 : SELF\representation.
11894           context_of_items\geometric_representation_context.
11895           coordinate_space_dimension = 2;
11896	WR2 : ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRESENTATION_AREA' IN TYPEOF (SELF))
11897           OR
11898           (SIZEOF (QUERY (prr <* USEDIN (SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
11899                                                'REPRESENTATION_RELATIONSHIP.REP_2') |
11900           'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRESENTATION_REPRESENTATION' IN
11901           TYPEOF (prr\representation_relationship.rep_1))) > 0)
11902           OR
11903           (SIZEOF(QUERY( rm <* USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
11904                                             'REPRESENTATION_MAP.'+
11905                                             'MAPPED_REPRESENTATION') |
11906           SIZEOF(QUERY( mi <* USEDIN(rm, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
11907                                          'MAPPED_ITEM.'+
11908                                          'MAPPING_SOURCE') |
11909           SIZEOF(QUERY( rep <* using_representations (mi) |
11910                                        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
11911                                        'PRESENTATION_REPRESENTATION' IN
11912                                        TYPEOF (rep))) > 0
11913           )) > 0))
11914           > 0);
11915END_ENTITY;
11916
11917
11918ENTITY presentation_set;
11919INVERSE
11920	areas: SET [1:?] OF area_in_set FOR in_set;
11921END_ENTITY;
11922
11923
11924ENTITY presentation_size;
11925	unit : presentation_size_assignment_select;
11926	size : planar_box;
11927UNIQUE
11928	UR1 : unit;
11929WHERE
11930	WR1 : (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRESENTATION_REPRESENTATION'
11931           IN TYPEOF (SELF.unit)) AND
11932           item_in_context (SELF.size,
11933                            SELF.unit\representation.context_of_items)
11934           )
11935           OR
11936           (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AREA_IN_SET'
11937           IN TYPEOF (SELF.unit)) AND
11938           (SIZEOF (QUERY ( ais <* SELF.unit\area_in_set.in_set.areas |
11939                NOT item_in_context (SELF.size, ais.area\representation.
11940                                                context_of_items) )) = 0));
11941END_ENTITY;
11942
11943
11944ENTITY presentation_style_assignment
11945	SUBTYPE OF (founded_item);
11946	styles : SET [1:?] OF presentation_style_select;
11947WHERE
11948	WR1 : SIZEOF (QUERY (style1 <* SELF.styles |
11949           NOT (SIZEOF (QUERY (style2 <* (SELF.styles - style1) |
11950           NOT ((TYPEOF (style1) <> TYPEOF (style2)) OR
11951             (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
11952                       'SURFACE_STYLE_USAGE',
11953                       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
11954                       'EXTERNALLY_DEFINED_STYLE'] *
11955                     TYPEOF (style1)) = 1)
11956           ))) = 0
11957         ))) = 0;
11958	WR2 : SIZEOF (QUERY (style1 <* SELF.styles |
11959         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_STYLE_USAGE' IN
11960         TYPEOF(style1)
11961         )) <= 2;
11962	WR3 : SIZEOF (QUERY (style1 <* SELF.styles |
11963         ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF (style1)) AND
11964         (SIZEOF (QUERY (style2 <* (SELF.styles - style1) |
11965           ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF (style2)) AND
11966           ((style1\surface_style_usage.side = both) OR
11967           (style2\surface_style_usage.side = both) OR
11968           (style1\surface_style_usage.side = style2\surface_style_usage.side)) )) > 0))) = 0;
11969END_ENTITY;
11970
11971
11972ENTITY presentation_style_by_context
11973	SUBTYPE OF (presentation_style_assignment);
11974	style_context : style_context_select;
11975END_ENTITY;
11976
11977
11978ENTITY presentation_view
11979	SUBTYPE OF (presentation_representation);
11980END_ENTITY;
11981
11982
11983ENTITY presented_item
11984	ABSTRACT SUPERTYPE;
11985END_ENTITY;
11986
11987
11988ENTITY presented_item_representation;
11989	presentation : presentation_representation_select;
11990	item : presented_item;
11991END_ENTITY;
11992
11993
11994ENTITY pressure_measure_with_unit
11995	SUBTYPE OF (measure_with_unit);
11996WHERE
11997	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRESSURE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
11998END_ENTITY;
11999
12000
12001ENTITY pressure_unit
12002	SUBTYPE OF (derived_unit);
12003WHERE
12004	WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.pascal);
12005END_ENTITY;
12006
12007
12008ENTITY previous_design_assignment
12009	SUBTYPE OF (design_object_management_assignment);
12010END_ENTITY;
12011
12012
12013ENTITY previous_design_object_assignment
12014	SUBTYPE OF (design_object_management_assignment);
12015END_ENTITY;
12016
12017
12018ENTITY primary_orientation_feature
12019	SUBTYPE OF (shape_aspect);
12020WHERE
12021	WR1 : SELF\shape_aspect.product_definitional = TRUE;
12022END_ENTITY;
12023
12024
12025ENTITY primary_reference_terminal
12026	SUBTYPE OF (package_terminal);
12027END_ENTITY;
12028
12029
12030ENTITY primary_stratum_indicator_symbol
12031	SUBTYPE OF (single_stratum_special_symbol_component);
12032END_ENTITY;
12033
12034
12035ENTITY primitive_2d
12036	SUPERTYPE OF (ONEOF (circular_area, elliptic_area, rectangular_area, polygonal_area, complex_area))
12037	SUBTYPE OF (geometric_representation_item);
12038WHERE
12039	WR1 : SELF\geometric_representation_item.dim = 2;
12040END_ENTITY;
12041
12042
12043ENTITY primitive_2d_with_inner_boundary
12044	SUBTYPE OF (primitive_2d, compound_representation_item);
12045	SELF\compound_representation_item.item_element : compound_inner_area_boundary;
12046DERIVE
12047	inner_boundary : compound_inner_area_boundary := SELF\compound_representation_item.item_element;
12048WHERE
12049	WR1 : SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CIRCULAR_AREA', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ELLIPTIC_AREA', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.RECTANGULAR_AREA',
12050        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POLYGONAL_AREA', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMPLEX_AREA'] * TYPEOF(SELF)) > 0;
12051	WR2 : SIZEOF(QUERY(inner <* inner_boundary |
12052        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRIMITIVE_2D_WITH_INNER_BOUNDARY' IN TYPEOF(inner))) = 0;
12053	WR3 : open_path_based_inner_boundary(inner_boundary);
12054END_ENTITY;
12055
12056
12057ENTITY printed_component
12058	ABSTRACT SUPERTYPE OF (ONEOF (single_stratum_printed_component, basic_multi_stratum_printed_component, multi_stratum_printed_component))
12059	SUBTYPE OF (assembly_component);
12060END_ENTITY;
12061
12062
12063ENTITY printed_connector_component
12064	SUBTYPE OF (printed_component);
12065END_ENTITY;
12066
12067
12068ENTITY printed_connector_template
12069	SUBTYPE OF (printed_part_template);
12070END_ENTITY;
12071
12072
12073ENTITY printed_connector_template_terminal_relationship
12074	SUBTYPE OF (shape_aspect, shape_aspect_relationship);
12075UNIQUE
12076  UR1: SELF\shape_aspect_relationship.relating_shape_aspect, SELF\shape_aspect_relationship.related_shape_aspect;
12077WHERE
12078	WR1 : SELF\shape_aspect_relationship.relating_shape_aspect :<>:
12079        SELF\shape_aspect_relationship.related_shape_aspect;
12080END_ENTITY;
12081
12082
12083ENTITY printed_part_cross_section_template
12084	SUBTYPE OF (printed_part_template);
12085END_ENTITY;
12086
12087
12088ENTITY printed_part_cross_section_template_terminal
12089	SUBTYPE OF (printed_part_template_terminal);
12090END_ENTITY;
12091
12092
12093ENTITY printed_part_template
12094	ABSTRACT SUPERTYPE OF ((ONEOF (basic_multi_stratum_printed_part_template, structured_printed_part_template) ANDOR printed_connector_template))
12095	SUBTYPE OF (part_template_definition);
12096END_ENTITY;
12097
12098
12099ENTITY printed_part_template_connected_terminals_definition
12100	SUBTYPE OF (shape_aspect);
12101UNIQUE
12102	UR1 : SELF\shape_aspect.name;
12103END_ENTITY;
12104
12105
12106ENTITY printed_part_template_material
12107	SUBTYPE OF (product_definition);
12108END_ENTITY;
12109
12110
12111ENTITY printed_part_template_material_link
12112	SUBTYPE OF (shape_aspect, shape_aspect_relationship);
12113	SELF\shape_aspect_relationship.related_shape_aspect : template_material_cross_section_boundary;
12114	SELF\shape_aspect_relationship.relating_shape_aspect : template_material_cross_section_boundary;
12115UNIQUE
12116	UR1 : related_shape_aspect, relating_shape_aspect;
12117WHERE
12118	WR1 : SELF\shape_aspect_relationship.related_shape_aspect :<>:
12119        SELF\shape_aspect_relationship.relating_shape_aspect;
12120END_ENTITY;
12121
12122
12123ENTITY printed_part_template_terminal
12124	SUPERTYPE OF ((printed_part_cross_section_template_terminal ANDOR structured_printed_part_template_terminal))
12125	SUBTYPE OF (shape_aspect);
12126END_ENTITY;
12127
12128
12129ENTITY printed_part_template_terminal_connection_zone_category
12130	SUBTYPE OF (group);
12131END_ENTITY;
12132
12133
12134ENTITY printed_tiebar_template
12135	SUBTYPE OF (structured_printed_part_template);
12136END_ENTITY;
12137
12138
12139ENTITY probe_access_area
12140	SUBTYPE OF (laminate_component, shape_aspect);
12141DERIVE
12142	SELF\shape_aspect.of_shape : probe_access_area := SELF;
12143END_ENTITY;
12144
12145
12146ENTITY procedural_representation
12147	SUBTYPE OF (representation);
12148	SELF\representation.items : SET [1:?] OF procedural_representation_sequence;
12149END_ENTITY;
12150
12151
12152ENTITY procedural_representation_sequence
12153	SUBTYPE OF (representation_item);
12154	elements : LIST [1:?] OF representation_item;
12155	suppressed_items : SET [0:?] OF representation_item;
12156	rationale : text;
12157WHERE
12158	WR1 : SIZEOF(QUERY(q <* suppressed_items | NOT (q IN elements))) = 0;
12159END_ENTITY;
12160
12161
12162ENTITY procedural_shape_representation
12163	SUBTYPE OF (procedural_representation, shape_representation);
12164	SELF\representation.items : SET [1:?] OF procedural_shape_representation_sequence;
12165END_ENTITY;
12166
12167
12168ENTITY procedural_shape_representation_sequence
12169	SUBTYPE OF (geometric_representation_item, procedural_representation_sequence);
12170WHERE
12171	WR1 : SIZEOF(QUERY(q <* SELF\procedural_representation_sequence.elements
12172    | NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHAPE_REPRESENTATION_ITEM'
12173    IN TYPEOF(q)))) = 0;
12174END_ENTITY;
12175
12176
12177ENTITY product;
12178	id : identifier;
12179	name : label;
12180	description : OPTIONAL text;
12181	frame_of_reference : SET [1:?] OF product_context;
12182END_ENTITY;
12183
12184
12185ENTITY product_category;
12186	name : label;
12187	description : OPTIONAL text;
12188DERIVE
12189	id : identifier := get_id_value(SELF);
12190WHERE
12191	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
12192END_ENTITY;
12193
12194
12195ENTITY product_class
12196	SUBTYPE OF (product_concept, characterized_object);
12197END_ENTITY;
12198
12199
12200ENTITY product_concept;
12201	id : identifier;
12202	name : label;
12203	description : OPTIONAL text;
12204	market_context : product_concept_context;
12205UNIQUE
12206	UR1 : id;
12207END_ENTITY;
12208
12209
12210ENTITY product_concept_context
12211	SUBTYPE OF (application_context_element);
12212	market_segment_type : label;
12213END_ENTITY;
12214
12215
12216ENTITY product_concept_feature;
12217	id : identifier;
12218	name : label;
12219	description : OPTIONAL text;
12220END_ENTITY;
12221
12222
12223ENTITY product_concept_feature_association;
12224	name : label;
12225	description : OPTIONAL text;
12226	concept : product_concept;
12227	feature : product_concept_feature;
12228END_ENTITY;
12229
12230
12231ENTITY product_concept_feature_category
12232	SUBTYPE OF (group);
12233WHERE
12234	WR1 : SIZEOF(QUERY
12235									(
12236										aga <* USEDIN( SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'GROUP_ASSIGNMENT.ASSIGNED_GROUP' )
12237										|
12238     								('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'APPLIED_GROUP_ASSIGNMENT' IN TYPEOF(aga))
12239     								AND
12240    								(
12241    									( aga\group_assignment.role.name <> 'specification category member' )
12242    									OR
12243    									( SIZEOF(QUERY
12244    															(
12245    																i <* aga\applied_group_assignment.items
12246    																|
12247    																('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'PRODUCT_CONCEPT_FEATURE' IN TYPEOF ( i ) )
12248    																AND
12249    																NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'CONDITIONAL_CONCEPT_FEATURE' IN TYPEOF (i))
12250    															)
12251    													) <> SIZEOF (aga\applied_group_assignment.items)
12252    									)
12253    								)
12254       						)
12255       				) =0;
12256END_ENTITY;
12257
12258
12259ENTITY product_concept_feature_category_usage
12260	SUBTYPE OF (group_assignment);
12261	items : SET [1:?] OF category_usage_item;
12262	SELF\group_assignment.assigned_group : product_concept_feature_category;
12263WHERE
12264	WR1 : SELF.role.name IN [ 'mandatory category usage', 'optional category usage' ];
12265END_ENTITY;
12266
12267
12268ENTITY product_concept_relationship;
12269	name : label;
12270	description : OPTIONAL text;
12271	relating_product_concept : product_concept;
12272	related_product_concept : product_concept;
12273END_ENTITY;
12274
12275
12276ENTITY product_context
12277	SUBTYPE OF (application_context_element);
12278	discipline_type : label;
12279END_ENTITY;
12280
12281
12282ENTITY product_definition
12283	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, physical_unit, stratum));
12284	id : identifier;
12285	description : OPTIONAL text;
12286	formation : product_definition_formation;
12287	frame_of_reference : product_definition_context;
12288DERIVE
12289	name : label := get_name_value(SELF);
12290WHERE
12291	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
12292END_ENTITY;
12293
12294
12295ENTITY product_definition_context
12296	SUBTYPE OF (application_context_element);
12297	life_cycle_stage : label;
12298END_ENTITY;
12299
12300
12301ENTITY product_definition_context_association;
12302	definition : product_definition;
12303	frame_of_reference : product_definition_context;
12304	role : product_definition_context_role;
12305END_ENTITY;
12306
12307
12308ENTITY product_definition_context_role;
12309	name : label;
12310	description : OPTIONAL text;
12311END_ENTITY;
12312
12313
12314ENTITY product_definition_effectivity
12315	SUBTYPE OF (effectivity);
12316	usage : product_definition_relationship;
12317WHERE
12318	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'EFFECTIVITY_ASSIGNMENT.ASSIGNED_EFFECTIVITY')) = 0;
12319END_ENTITY;
12320
12321
12322ENTITY product_definition_element_relationship
12323	SUBTYPE OF (group);
12324END_ENTITY;
12325
12326
12327ENTITY product_definition_formation;
12328	id : identifier;
12329	description : OPTIONAL text;
12330	of_product : product;
12331UNIQUE
12332	UR1 : id, of_product;
12333END_ENTITY;
12334
12335
12336ENTITY product_definition_formation_relationship;
12337	id : identifier;
12338	name : label;
12339	description : OPTIONAL text;
12340	relating_product_definition_formation : product_definition_formation;
12341	related_product_definition_formation : product_definition_formation;
12342END_ENTITY;
12343
12344
12345ENTITY product_definition_formation_with_specified_source
12346	SUBTYPE OF (product_definition_formation);
12347	make_or_buy : source;
12348END_ENTITY;
12349
12350
12351ENTITY product_definition_group_assignment
12352	SUBTYPE OF (group_assignment);
12353	items : SET [1:1] OF product_definition_or_product_definition_relationship;
12354	SELF\group_assignment.assigned_group : product_definition_element_relationship;
12355END_ENTITY;
12356
12357
12358ENTITY product_definition_occurrence_relationship;
12359	name : label;
12360	description : OPTIONAL text;
12361	occurrence : product_definition;
12362	occurrence_usage : assembly_component_usage;
12363WHERE
12364	WR1 : occurrence_usage.relating_product_definition :<>:
12365       occurrence;
12366	WR2 : occurrence_usage.related_product_definition :<>:
12367       occurrence;
12368	WR3 : occurrence.formation :=:
12369       occurrence_usage.related_product_definition.formation;
12370END_ENTITY;
12371
12372
12373ENTITY product_definition_relationship;
12374	id : identifier;
12375	name : label;
12376	description : OPTIONAL text;
12377	relating_product_definition : product_definition;
12378	related_product_definition : product_definition;
12379END_ENTITY;
12380
12381
12382ENTITY product_definition_shape
12383	SUBTYPE OF (property_definition);
12384UNIQUE
12385  UR1: SELF\property_definition.definition;
12386WHERE
12387	WR1 : SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CHARACTERIZED_PRODUCT_DEFINITION', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CHARACTERIZED_OBJECT'] * TYPEOF(SELF\property_definition.definition)) > 0;
12388END_ENTITY;
12389
12390
12391ENTITY product_definition_substitute;
12392	description : OPTIONAL text;
12393	context_relationship : product_definition_relationship;
12394	substitute_definition : product_definition;
12395DERIVE
12396	name : label := get_name_value(SELF);
12397WHERE
12398	WR1 : context_relationship.related_product_definition :<>: substitute_definition;
12399	WR2 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
12400END_ENTITY;
12401
12402
12403ENTITY product_definition_usage
12404	SUPERTYPE OF (ONEOF (make_from_usage_option, assembly_component_usage))
12405	SUBTYPE OF (product_definition_relationship);
12406UNIQUE
12407    UR1: SELF\product_definition_relationship.id,
12408         SELF\product_definition_relationship.relating_product_definition,
12409         SELF\product_definition_relationship.related_product_definition;
12410WHERE
12411	WR1 : acyclic_product_definition_relationship
12412         (SELF,
12413         [SELF\product_definition_relationship.related_product_definition],
12414         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_DEFINITION_USAGE');
12415END_ENTITY;
12416
12417
12418ENTITY product_definition_with_associated_documents
12419	SUBTYPE OF (product_definition);
12420	documentation_ids : SET [1:?] OF document;
12421END_ENTITY;
12422
12423
12424ENTITY product_identification
12425	SUBTYPE OF (configuration_item, characterized_object);
12426	SELF\configuration_item.item_concept : product_class;
12427WHERE
12428	WR1 : SIZEOF(QUERY
12429		( cd <* USEDIN ( SELF ,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONFIGURATION_DESIGN.CONFIGURATION' )
12430		|
12431     	( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'PRODUCT_DEFINITION_FORMATION' IN TYPEOF ( cd. design ) )
12432     	AND
12433    	( SIZEOF ( QUERY
12434    	(
12435    	prpc <* USEDIN ( cd. design\product_definition_formation.of_product , 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
12436    	|
12437        prpc. name IN ['part' , 'raw material' , 'tool'] ) ) >0
12438     	)
12439     	)
12440     	) <=1;
12441	WR2 : NOT ( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'CONFIGURABLE_ITEM' IN TYPEOF( SELF ) )
12442			XOR ( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'PRODUCT_SPECIFICATION' IN TYPEOF ( SELF ) );
12443END_ENTITY;
12444
12445
12446ENTITY product_material_composition_relationship
12447	SUBTYPE OF (product_definition_relationship);
12448	class : label;
12449	constituent_amount : SET [1:?] OF characterized_product_composition_value;
12450	composition_basis : label;
12451	determination_method : text;
12452END_ENTITY;
12453
12454
12455ENTITY product_related_product_category
12456	SUBTYPE OF (product_category);
12457	products : SET [1:?] OF product;
12458END_ENTITY;
12459
12460
12461ENTITY product_specific_parameter_value_assignment
12462	SUBTYPE OF (characterized_object, product_related_product_category);
12463END_ENTITY;
12464
12465
12466ENTITY product_specification
12467	SUBTYPE OF (product_identification, configurable_item);
12468END_ENTITY;
12469
12470
12471ENTITY projected_zone_definition
12472	SUBTYPE OF (tolerance_zone_definition);
12473	projection_end : shape_aspect;
12474	projected_length : measure_with_unit;
12475WHERE
12476	WR1 : ('NUMBER' IN TYPEOF
12477       (projected_length\measure_with_unit.value_component)) AND
12478       (projected_length\measure_with_unit.value_component > 0.0);
12479	WR2 : (derive_dimensional_exponents
12480       (projected_length\measure_with_unit.unit_component)=
12481        dimensional_exponents(1,0,0,0,0,0,0));
12482END_ENTITY;
12483
12484
12485ENTITY projection_curve
12486	SUBTYPE OF (annotation_curve_occurrence);
12487END_ENTITY;
12488
12489
12490ENTITY projection_directed_callout
12491	SUBTYPE OF (draughting_callout);
12492WHERE
12493	WR1 : SIZEOF(QUERY(p_1<*SELF\draughting_callout.contents |
12494        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PROJECTION_CURVE' IN (TYPEOF(p_1))))=1;
12495	WR2 : SIZEOF(SELF\draughting_callout.contents) >=2;
12496END_ENTITY;
12497
12498
12499ENTITY promissory_usage_occurrence
12500	SUBTYPE OF (assembly_component_usage);
12501END_ENTITY;
12502
12503
12504ENTITY property_definition
12505	SUPERTYPE OF (ONEOF (stratum_technology_occurrence_relationship, stratum_technology_occurrence));
12506	name : label;
12507	description : OPTIONAL text;
12508	definition : characterized_definition;
12509DERIVE
12510	id : identifier := get_id_value(SELF);
12511WHERE
12512	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
12513END_ENTITY;
12514
12515
12516ENTITY property_definition_relationship
12517	SUPERTYPE OF (ONEOF (stratum_technology_occurrence_relationship, stratum_technology_swap_relationship));
12518	name : label;
12519	description : text;
12520	relating_property_definition : property_definition;
12521	related_property_definition : property_definition;
12522END_ENTITY;
12523
12524
12525ENTITY property_definition_representation;
12526	definition : represented_definition;
12527	used_representation : representation;
12528DERIVE
12529	description : text := get_description_value(SELF);
12530	name : label := get_name_value(SELF);
12531WHERE
12532	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
12533	WR2 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
12534END_ENTITY;
12535
12536
12537ENTITY protocol_physical_layer_definition
12538	SUBTYPE OF (product_definition);
12539END_ENTITY;
12540
12541
12542ENTITY protocol_physical_layer_definition_with_characterization
12543	SUBTYPE OF (protocol_physical_layer_definition);
12544END_ENTITY;
12545
12546
12547ENTITY protocol_requirement_allocation_to_part_terminal
12548	SUBTYPE OF (requirement_assignment);
12549END_ENTITY;
12550
12551
12552ENTITY qualified_representation_item
12553	SUBTYPE OF (representation_item);
12554	qualifiers : SET [1:?] OF value_qualifier;
12555WHERE
12556	WR1 : SIZEOF(QUERY(temp <* qualifiers |
12557             'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRECISION_QUALIFIER'
12558             IN TYPEOF(temp))) < 2;
12559END_ENTITY;
12560
12561
12562ENTITY qualitative_uncertainty
12563	SUBTYPE OF (uncertainty_qualifier);
12564	uncertainty_value : text;
12565END_ENTITY;
12566
12567
12568ENTITY quantified_assembly_component_usage
12569	SUBTYPE OF (assembly_component_usage);
12570	quantity : measure_with_unit;
12571WHERE
12572	WR1 : (NOT ('NUMBER' IN TYPEOF(quantity.value_component)))
12573       OR (quantity.value_component > 0);
12574END_ENTITY;
12575
12576
12577ENTITY quasi_uniform_curve
12578	SUBTYPE OF (b_spline_curve);
12579END_ENTITY;
12580
12581
12582ENTITY quasi_uniform_surface
12583	SUBTYPE OF (b_spline_surface);
12584END_ENTITY;
12585
12586
12587ENTITY radioactivity_measure_with_unit
12588	SUBTYPE OF (measure_with_unit);
12589WHERE
12590	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.RADIOACTIVITY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
12591END_ENTITY;
12592
12593
12594ENTITY radioactivity_unit
12595	SUBTYPE OF (derived_unit);
12596WHERE
12597	WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.becquerel);
12598END_ENTITY;
12599
12600
12601ENTITY radius_dimension
12602	SUBTYPE OF (dimension_curve_directed_callout);
12603WHERE
12604	WR1 : SIZEOF (QUERY (con <* SELF.contents |
12605       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PROJECTION_CURVE' IN TYPEOF (con)))<=1;
12606END_ENTITY;
12607
12608
12609ENTITY range_characteristic
12610	SUBTYPE OF (representation, descriptive_representation_item);
12611WHERE
12612	WR1 : NOT(SELF\representation.name IN ['tolerance', 'minimum tolerance', 'maximum tolerance',
12613        'nominal tolerance', 'plus minus tolerance', 'symmetrical tolerance', 'statistical tolerance']);
12614END_ENTITY;
12615
12616
12617ENTITY ratio_measure_with_unit
12618	SUBTYPE OF (measure_with_unit);
12619WHERE
12620	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.RATIO_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
12621END_ENTITY;
12622
12623
12624ENTITY ratio_unit
12625	SUBTYPE OF (named_unit);
12626WHERE
12627	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);
12628END_ENTITY;
12629
12630
12631ENTITY rational_b_spline_curve
12632	SUBTYPE OF (b_spline_curve);
12633	weights_data : LIST [2:?] OF REAL;
12634DERIVE
12635	weights : ARRAY [0:upper_index_on_control_points] OF REAL := list_to_array(weights_data,0,
12636                                      upper_index_on_control_points);
12637WHERE
12638	WR1 : SIZEOF(weights_data) = SIZEOF(SELF\b_spline_curve.
12639                                           control_points_list);
12640	WR2 : curve_weights_positive(SELF);
12641END_ENTITY;
12642
12643
12644ENTITY rational_b_spline_surface
12645	SUBTYPE OF (b_spline_surface);
12646	weights_data : LIST [2:?] OF LIST [2:?] OF REAL;
12647DERIVE
12648	weights : ARRAY [0:u_upper] OF ARRAY [0:v_upper] OF REAL := make_array_of_array(weights_data,0,u_upper,0,v_upper);
12649WHERE
12650	WR1 : (SIZEOF(weights_data) =
12651                     SIZEOF(SELF\b_spline_surface.control_points_list))
12652           AND (SIZEOF(weights_data[1]) =
12653                  SIZEOF(SELF\b_spline_surface.control_points_list[1]));
12654	WR2 : surface_weights_positive(SELF);
12655END_ENTITY;
12656
12657
12658ENTITY rational_representation_item
12659	SUBTYPE OF (representation_item, slash_expression);
12660WHERE
12661	WR1 : SIZEOF( QUERY( operand <* SELF\binary_generic_expression.operands |
12662        NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.INT_LITERAL' IN TYPEOF(operand)))) = 0;
12663END_ENTITY;
12664
12665
12666ENTITY real_literal
12667	SUBTYPE OF (literal_number);
12668	SELF\literal_number.the_value : REAL;
12669END_ENTITY;
12670
12671
12672ENTITY real_representation_item
12673	SUBTYPE OF (representation_item, real_literal);
12674END_ENTITY;
12675
12676
12677ENTITY rectangular_area
12678	SUBTYPE OF (primitive_2d);
12679	position : axis2_placement_2d;
12680	x : positive_length_measure;
12681	y : positive_length_measure;
12682END_ENTITY;
12683
12684
12685ENTITY rectangular_array_placement_group_component
12686	SUBTYPE OF (array_placement_group);
12687END_ENTITY;
12688
12689
12690ENTITY rectangular_composite_array_shape_aspect
12691	SUBTYPE OF (composite_array_shape_aspect);
12692END_ENTITY;
12693
12694
12695ENTITY rectangular_composite_surface
12696	SUBTYPE OF (bounded_surface);
12697	segments : LIST [1:?] OF LIST [1:?] OF surface_patch;
12698DERIVE
12699	n_u : INTEGER := SIZEOF(segments);
12700	n_v : INTEGER := SIZEOF(segments[1]);
12701WHERE
12702	WR1 : SIZEOF(QUERY (s <* segments | n_v <> SIZEOF (s))) = 0;
12703	WR2 : constraints_rectangular_composite_surface(SELF);
12704END_ENTITY;
12705
12706
12707ENTITY rectangular_trimmed_surface
12708	SUBTYPE OF (bounded_surface);
12709	basis_surface : surface;
12710	u1 : parameter_value;
12711	u2 : parameter_value;
12712	v1 : parameter_value;
12713	v2 : parameter_value;
12714	usense : BOOLEAN;
12715	vsense : BOOLEAN;
12716WHERE
12717	WR1 : u1 <> u2;
12718	WR2 : v1 <> v2;
12719	WR3 : (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ELEMENTARY_SURFACE' IN TYPEOF(basis_surface))
12720       AND  (NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PLANE' IN TYPEOF(basis_surface)))) OR
12721      ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_OF_REVOLUTION' IN TYPEOF(basis_surface))
12722          OR (usense = (u2 > u1));
12723	WR4 : (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SPHERICAL_SURFACE' IN TYPEOF(basis_surface))
12724          OR
12725         ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.TOROIDAL_SURFACE' IN TYPEOF(basis_surface)))
12726          OR (vsense = (v2 > v1));
12727END_ENTITY;
12728
12729
12730ENTITY reference_composition_path
12731	SUBTYPE OF (applied_group_assignment, product_definition);
12732END_ENTITY;
12733
12734
12735ENTITY reference_graphic_registration_mark
12736	SUBTYPE OF (shape_aspect);
12737WHERE
12738	WR1 : SELF\shape_aspect.product_definitional = false;
12739END_ENTITY;
12740
12741
12742ENTITY referenced_modified_datum
12743	SUBTYPE OF (datum_reference);
12744	modifier : limit_condition;
12745END_ENTITY;
12746
12747
12748ENTITY region_based_derived_pattern
12749	SUBTYPE OF (shape_aspect);
12750END_ENTITY;
12751
12752
12753ENTITY relative_event_occurrence
12754	SUBTYPE OF (event_occurrence);
12755	base_event : event_occurrence;
12756	offset : time_measure_with_unit;
12757END_ENTITY;
12758
12759
12760ENTITY rep_item_group
12761	SUBTYPE OF (group, representation_item);
12762WHERE
12763	WR1 : SIZEOF(USEDIN(SELF,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'PRESENTATION_LAYER_ASSIGNMENT.' + 'ASSIGNED_ITEMS')) > 0;
12764	WR2 : SIZEOF(QUERY(r <* USEDIN(SELF,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'REPRESENTATION.' + 'ITEMS') | r.name = 'group representation')) > 0;
12765	WR3 : SIZEOF(QUERY(ga <* USEDIN(SELF,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'GROUP_ASSIGNMENT.' + 'ASSIGNED_GROUP') | ga.role.name <> 'group membership')) = 0;
12766	WR4 : SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'GEOMETRIC_REPRESENTATION_ITEM', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'TOPOLOGICAL_REPRESENTATION_ITEM', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'MAPPED_ITEM','AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'STYLED_ITEM'] * TYPEOF(SELF)) = 1;
12767END_ENTITY;
12768
12769
12770ENTITY reparametrised_composite_curve_segment
12771	SUBTYPE OF (composite_curve_segment);
12772	param_length : parameter_value;
12773WHERE
12774	WR1 : param_length > 0.0;
12775END_ENTITY;
12776
12777
12778ENTITY representation;
12779	name : label;
12780	items : SET [1:?] OF representation_item;
12781	context_of_items : representation_context;
12782DERIVE
12783	description : text := get_description_value (SELF);
12784	id : identifier := get_id_value (SELF);
12785WHERE
12786	WR1 : SIZEOF (USEDIN (SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
12787                                 'ID_ATTRIBUTE.IDENTIFIED_ITEM'))
12788         <= 1;
12789	WR2 : SIZEOF (USEDIN (SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
12790                                 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM'))
12791         <= 1;
12792END_ENTITY;
12793
12794
12795ENTITY representation_context;
12796	context_identifier : identifier;
12797	context_type : text;
12798INVERSE
12799	representations_in_context: SET [1:?] OF representation FOR context_of_items;
12800END_ENTITY;
12801
12802
12803ENTITY representation_item
12804	SUPERTYPE OF (ONEOF (binary_representation_item, boolean_representation_item, compound_representation_item, date_representation_item, date_time_representation_item, integer_representation_item, logical_representation_item, mapped_item, rational_representation_item, real_representation_item, styled_item, value_representation_item));
12805	name : label;
12806WHERE
12807	WR1 : SIZEOF(using_representations(SELF)) > 0;
12808END_ENTITY;
12809
12810
12811ENTITY representation_item_relationship;
12812	name : label;
12813	description : OPTIONAL text;
12814	relating_representation_item : representation_item;
12815	related_representation_item : representation_item;
12816END_ENTITY;
12817
12818
12819ENTITY representation_map;
12820	mapping_origin : representation_item;
12821	mapped_representation : representation;
12822INVERSE
12823	map_usage: SET [1:?] OF mapped_item FOR mapping_source;
12824WHERE
12825	WR1 : item_in_context(SELF.mapping_origin,
12826        SELF.mapped_representation.context_of_items);
12827END_ENTITY;
12828
12829
12830ENTITY representation_relationship;
12831	name : label;
12832	description : OPTIONAL text;
12833	rep_1 : representation;
12834	rep_2 : representation;
12835END_ENTITY;
12836
12837
12838ENTITY representation_relationship_with_transformation
12839	SUBTYPE OF (representation_relationship);
12840	transformation_operator : transformation;
12841WHERE
12842	WR1 : SELF\representation_relationship.rep_1.context_of_items
12843           :<>: SELF\representation_relationship.rep_2.context_of_items;
12844END_ENTITY;
12845
12846
12847ENTITY requirement_assigned_object
12848	SUBTYPE OF (group_assignment);
12849	items : SET [1:1] OF requirement_assigned_item;
12850	SELF\group_assignment.assigned_group : requirement_assignment;
12851END_ENTITY;
12852
12853
12854ENTITY requirement_assignment
12855	SUBTYPE OF (characterized_object, group);
12856END_ENTITY;
12857
12858
12859ENTITY requirement_source
12860	SUBTYPE OF (group);
12861END_ENTITY;
12862
12863
12864ENTITY requirement_view_definition_relationship
12865	SUBTYPE OF (product_definition_relationship);
12866END_ENTITY;
12867
12868
12869ENTITY resistance_measure_with_unit
12870	SUBTYPE OF (measure_with_unit);
12871WHERE
12872	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.RESISTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
12873END_ENTITY;
12874
12875
12876ENTITY resistance_unit
12877	SUBTYPE OF (derived_unit);
12878WHERE
12879	WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.ohm);
12880END_ENTITY;
12881
12882
12883ENTITY revolved_area_solid
12884	SUBTYPE OF (swept_area_solid);
12885	axis : axis1_placement;
12886	angle : plane_angle_measure;
12887DERIVE
12888	axis_line : line := representation_item('')||
12889                    geometric_representation_item()|| curve()||
12890                    line(axis.location, representation_item('')||
12891                    geometric_representation_item()||
12892                    vector(axis.z, 1.0));
12893END_ENTITY;
12894
12895
12896ENTITY revolved_face_solid
12897	SUBTYPE OF (swept_face_solid);
12898	axis : axis1_placement;
12899	angle : plane_angle_measure;
12900DERIVE
12901	axis_line : line := representation_item('')||
12902                    geometric_representation_item()|| curve()||
12903                    line(axis.location, representation_item('')||
12904                    geometric_representation_item()||
12905                    vector(axis.z, 1.0));
12906END_ENTITY;
12907
12908
12909ENTITY revolved_face_solid_with_trim_conditions
12910	SUBTYPE OF (revolved_face_solid);
12911	first_trim_condition : trim_condition_select;
12912	second_trim_condition : trim_condition_select;
12913WHERE
12914	WR1 : NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LENGTH_MEASURE'
12915         IN TYPEOF(first_trim_condition))
12916         OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LENGTH_MEASURE'
12917         IN TYPEOF(second_trim_condition)));
12918	WR2 : NOT((('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PLANE_ANGLE_MEASURE'
12919         IN TYPEOF(first_trim_condition)) AND
12920            ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PLANE_ANGLE_MEASURE'
12921         IN TYPEOF(second_trim_condition))) AND
12922         (first_trim_condition = second_trim_condition));
12923END_ENTITY;
12924
12925
12926ENTITY right_angular_wedge
12927	SUBTYPE OF (geometric_representation_item);
12928	position : axis2_placement_3d;
12929	x : positive_length_measure;
12930	y : positive_length_measure;
12931	z : positive_length_measure;
12932	ltx : length_measure;
12933WHERE
12934	WR1 : ((0.0 <= ltx) AND (ltx < x));
12935END_ENTITY;
12936
12937
12938ENTITY right_circular_cone
12939	SUBTYPE OF (geometric_representation_item);
12940	position : axis1_placement;
12941	height : positive_length_measure;
12942	radius : length_measure;
12943	semi_angle : plane_angle_measure;
12944WHERE
12945	WR1 : radius >= 0.0;
12946END_ENTITY;
12947
12948
12949ENTITY right_circular_cylinder
12950	SUBTYPE OF (geometric_representation_item);
12951	position : axis1_placement;
12952	height : positive_length_measure;
12953	radius : positive_length_measure;
12954END_ENTITY;
12955
12956
12957ENTITY right_to_usage_association
12958	SUBTYPE OF (action_method_relationship);
12959	SELF\action_method_relationship.related_method : information_right;
12960	SELF\action_method_relationship.relating_method : information_usage_right;
12961DERIVE
12962	right_applied : information_right := SELF\action_method_relationship.related_method;
12963	right_usage : information_usage_right := SELF\action_method_relationship.relating_method;
12964END_ENTITY;
12965
12966
12967ENTITY role_association;
12968	role : object_role;
12969	item_with_role : role_select;
12970END_ENTITY;
12971
12972
12973ENTITY roundness_tolerance
12974	SUBTYPE OF (geometric_tolerance);
12975WHERE
12976	WR1 : NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF));
12977END_ENTITY;
12978
12979
12980ENTITY routed_interconnect_component
12981	SUBTYPE OF (item_identified_representation_usage, physical_component);
12982END_ENTITY;
12983
12984
12985ENTITY routed_physical_component
12986	SUBTYPE OF (item_identified_representation_usage, physical_component);
12987END_ENTITY;
12988
12989
12990ENTITY routed_physical_shield
12991	SUBTYPE OF (physical_shield, routed_physical_component);
12992END_ENTITY;
12993
12994
12995ENTITY routed_shield
12996	SUBTYPE OF (integral_shield);
12997END_ENTITY;
12998
12999
13000ENTITY routed_transmission_line
13001	SUBTYPE OF (assembly_component);
13002END_ENTITY;
13003
13004
13005ENTITY row_representation_item
13006	SUBTYPE OF (compound_representation_item);
13007	SELF\compound_representation_item.item_element : list_representation_item;
13008END_ENTITY;
13009
13010
13011ENTITY row_value
13012	SUBTYPE OF (compound_representation_item);
13013END_ENTITY;
13014
13015
13016ENTITY row_variable
13017	SUBTYPE OF (abstract_variable);
13018END_ENTITY;
13019
13020
13021ENTITY rule_action
13022	SUBTYPE OF (action);
13023END_ENTITY;
13024
13025
13026ENTITY rule_condition
13027	SUBTYPE OF (atomic_formula);
13028END_ENTITY;
13029
13030
13031ENTITY rule_definition
13032	SUBTYPE OF (rule_software_definition);
13033END_ENTITY;
13034
13035
13036ENTITY rule_set
13037	SUBTYPE OF (rule_software_definition);
13038END_ENTITY;
13039
13040
13041ENTITY rule_set_group
13042	SUBTYPE OF (rule_software_definition);
13043END_ENTITY;
13044
13045
13046ENTITY rule_software_definition
13047	SUBTYPE OF (product_definition);
13048END_ENTITY;
13049
13050
13051ENTITY rule_superseded_assignment
13052	SUBTYPE OF (action_assignment);
13053	items : SET [1:?] OF rule_superseded_item;
13054END_ENTITY;
13055
13056
13057ENTITY rule_supersedence
13058	SUBTYPE OF (rule_action);
13059END_ENTITY;
13060
13061
13062ENTITY ruled_surface_swept_area_solid
13063	SUBTYPE OF (surface_curve_swept_area_solid);
13064WHERE
13065	WR1 : ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF(SELF.reference_surface)) AND
13066         (SELF.reference_surface\b_spline_surface.u_degree = 1);
13067	WR2 : ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PCURVE' IN TYPEOF(SELF.directrix)) OR
13068        (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.B_SPLINE_CURVE' IN TYPEOF(SELF.directrix\surface_curve.curve_3d))
13069         AND
13070         (SELF.directrix\surface_curve.curve_3d\b_spline_curve.degree =
13071         SELF.reference_surface\b_spline_surface.v_degree));
13072END_ENTITY;
13073
13074
13075ENTITY runout_zone_definition
13076	SUBTYPE OF (tolerance_zone_definition);
13077	orientation : runout_zone_orientation;
13078END_ENTITY;
13079
13080
13081ENTITY runout_zone_orientation;
13082	angle : measure_with_unit;
13083END_ENTITY;
13084
13085
13086ENTITY runout_zone_orientation_reference_direction
13087	SUBTYPE OF (runout_zone_orientation);
13088	orientation_defining_relationship : shape_aspect_relationship;
13089END_ENTITY;
13090
13091
13092ENTITY satisfied_requirement
13093	SUBTYPE OF (group_assignment);
13094	items : SET [1:1] OF product_definition;
13095	SELF\group_assignment.assigned_group : satisfies_requirement;
13096END_ENTITY;
13097
13098
13099ENTITY satisfies_requirement
13100	SUBTYPE OF (group);
13101END_ENTITY;
13102
13103
13104ENTITY satisfying_item
13105	SUBTYPE OF (group_assignment);
13106	items : SET [1:1] OF requirement_satisfaction_item;
13107	SELF\group_assignment.assigned_group : satisfies_requirement;
13108END_ENTITY;
13109
13110
13111ENTITY scalar_terminal_definition_link
13112	SUBTYPE OF (shape_aspect, shape_aspect_relationship);
13113	SELF\shape_aspect_relationship.relating_shape_aspect : functional_unit_terminal_definition;
13114UNIQUE
13115  UR1: SELF\shape_aspect_relationship.related_shape_aspect, relating_shape_aspect;
13116WHERE
13117	WR1 : SELF\shape_aspect_relationship.related_shape_aspect :<>:
13118        SELF\shape_aspect_relationship.relating_shape_aspect;
13119END_ENTITY;
13120
13121
13122ENTITY scalar_variable
13123	SUBTYPE OF (abstract_variable);
13124END_ENTITY;
13125
13126
13127ENTITY scattering_parameter
13128	SUBTYPE OF (polar_complex_number_literal);
13129WHERE
13130	WR1 : SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\polar_complex_number_literal ||
13131       SELF\scattering_parameter))) = 0;
13132END_ENTITY;
13133
13134
13135ENTITY schema_based_model_parameter
13136	SUBTYPE OF (model_parameter);
13137END_ENTITY;
13138
13139
13140ENTITY sculptured_solid
13141	SUBTYPE OF (modified_solid);
13142	sculpturing_element : generalized_surface_select;
13143	positive_side : BOOLEAN;
13144END_ENTITY;
13145
13146
13147ENTITY seam_curve
13148	SUBTYPE OF (surface_curve);
13149WHERE
13150	WR1 : SIZEOF(SELF\surface_curve.associated_geometry) = 2;
13151	WR2 : associated_surface(SELF\surface_curve.associated_geometry[1]) =
13152           associated_surface(SELF\surface_curve.associated_geometry[2]);
13153	WR3 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PCURVE' IN
13154           TYPEOF(SELF\surface_curve.associated_geometry[1]);
13155	WR4 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PCURVE' IN
13156            TYPEOF(SELF\surface_curve.associated_geometry[2]);
13157END_ENTITY;
13158
13159
13160ENTITY seating_plane
13161	SUBTYPE OF (shape_aspect);
13162END_ENTITY;
13163
13164
13165ENTITY secondary_orientation_feature
13166	SUBTYPE OF (shape_aspect);
13167WHERE
13168	WR1 : SELF.product_definitional = TRUE;
13169END_ENTITY;
13170
13171
13172ENTITY security_classification;
13173	name : label;
13174	purpose : text;
13175	security_level : security_classification_level;
13176END_ENTITY;
13177
13178
13179ENTITY security_classification_assignment
13180	ABSTRACT SUPERTYPE;
13181	assigned_security_classification : security_classification;
13182DERIVE
13183	role : object_role := get_role(SELF);
13184WHERE
13185	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
13186END_ENTITY;
13187
13188
13189ENTITY security_classification_level;
13190	name : label;
13191END_ENTITY;
13192
13193
13194ENTITY sequential_laminate_passage_based_fabrication_joint
13195	SUBTYPE OF (shape_aspect);
13196END_ENTITY;
13197
13198
13199ENTITY sequential_laminate_stackup_component
13200	SUBTYPE OF (physical_component);
13201END_ENTITY;
13202
13203
13204ENTITY sequential_laminate_stackup_definition
13205	SUBTYPE OF (product_definition);
13206END_ENTITY;
13207
13208
13209ENTITY serial_numbered_effectivity
13210	SUBTYPE OF (effectivity);
13211	effectivity_start_id : identifier;
13212	effectivity_end_id : OPTIONAL identifier;
13213END_ENTITY;
13214
13215
13216ENTITY shape_aspect
13217	SUPERTYPE OF ((ONEOF (minimally_defined_bare_die_terminal, assembly_module_terminal, cable_terminal, interconnect_module_terminal, packaged_part_terminal, package_body, derived_shape_aspect, positional_boundary, positional_boundary_member, tolerance_zone_boundary, viewing_plane, seating_plane, reference_graphic_registration_mark, group_shape_aspect, mounting_restriction_area, mounting_restriction_volume) ANDOR ONEOF (primary_orientation_feature, secondary_orientation_feature, tertiary_orientation_feature)));
13218	name : label;
13219	description : OPTIONAL text;
13220	of_shape : product_definition_shape;
13221	product_definitional : LOGICAL;
13222DERIVE
13223	id : identifier := get_id_value(SELF);
13224WHERE
13225	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
13226END_ENTITY;
13227
13228
13229ENTITY shape_aspect_associativity
13230	SUBTYPE OF (shape_aspect_relationship);
13231WHERE
13232	WR1 : SELF.relating_shape_aspect.product_definitional;
13233	WR2 : NOT (SELF.related_shape_aspect.product_definitional);
13234END_ENTITY;
13235
13236
13237ENTITY shape_aspect_deriving_relationship
13238	SUBTYPE OF (shape_aspect_relationship);
13239WHERE
13240	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DERIVED_SHAPE_ASPECT' IN
13241TYPEOF
13242            (SELF\SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT);
13243END_ENTITY;
13244
13245
13246ENTITY shape_aspect_relationship;
13247	name : label;
13248	description : OPTIONAL text;
13249	relating_shape_aspect : shape_aspect;
13250	related_shape_aspect : shape_aspect;
13251DERIVE
13252	id : identifier := get_id_value(SELF);
13253WHERE
13254	WR1 : SIZEOF(USEDIN(SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
13255END_ENTITY;
13256
13257
13258ENTITY shape_definition_3d_intersection
13259	SUPERTYPE OF (ONEOF (edge_segment_cross_section, pre_defined_parallel_datum_axis_symbol_3d_2d_relationship, pre_defined_perpendicular_datum_axis_symbol_3d_2d_relationship, pre_defined_perpendicular_datum_plane_symbol_3d_2d_relationship))
13260	SUBTYPE OF (representation, shape_representation_relationship, representation_relationship_with_transformation);
13261	SELF\representation_relationship_with_transformation.transformation_operator : item_defined_transformation;
13262UNIQUE
13263	UR1 : SELF\representation_relationship.rep_1, SELF\representation_relationship.rep_2;
13264WHERE
13265	WR1 : SELF\representation_relationship.rep_1 :<>: SELF\representation_relationship.rep_2;
13266END_ENTITY;
13267
13268
13269ENTITY shape_definition_representation
13270	SUBTYPE OF (property_definition_representation);
13271WHERE
13272	WR1 : ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(SELF\property_definition_representation.definition)) OR
13273	('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHAPE_DEFINITION' IN TYPEOF(SELF\property_definition_representation.definition\property_definition.definition));
13274	WR2 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHAPE_REPRESENTATION' IN TYPEOF(SELF\property_definition_representation.used_representation);
13275END_ENTITY;
13276
13277
13278ENTITY shape_dimension_representation
13279	SUBTYPE OF (shape_representation);
13280WHERE
13281	WR1 : SIZEOF (QUERY (temp <* SELF\representation.items |
13282    NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MEASURE_REPRESENTATION_ITEM'
13283        IN TYPEOF (temp)))) = 0;
13284	WR2 : SIZEOF (SELF\representation.items) <= 3;
13285	WR3 : SIZEOF (QUERY (pos_mri <* QUERY (real_mri <*
13286        SELF\representation.items | 'REAL' IN TYPEOF
13287        (real_mri\measure_with_unit.value_component) ) |
13288     NOT  (pos_mri\measure_with_unit.value_component > 0.0 ))) = 0;
13289END_ENTITY;
13290
13291
13292ENTITY shape_feature_definition
13293	SUBTYPE OF (characterized_object);
13294END_ENTITY;
13295
13296
13297ENTITY shape_formed_terminal
13298	SUBTYPE OF (altered_package_terminal);
13299END_ENTITY;
13300
13301
13302ENTITY shape_representation
13303	SUBTYPE OF (representation);
13304END_ENTITY;
13305
13306
13307ENTITY shape_representation_relationship
13308	SUBTYPE OF (representation_relationship);
13309WHERE
13310	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHAPE_REPRESENTATION' IN (TYPEOF(SELF\representation_relationship.rep_1) + TYPEOF(SELF\representation_relationship.rep_2));
13311END_ENTITY;
13312
13313
13314ENTITY shape_representation_with_parameters
13315	SUBTYPE OF (shape_representation);
13316WHERE
13317	WR1 : SIZEOF( QUERY( i <* SELF.items | SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PLACEMENT', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MEASURE_REPRESENTATION_ITEM', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM'] * TYPEOF(i)) = 1 )) = SIZEOF(SELF.items);
13318END_ENTITY;
13319
13320
13321ENTITY shell_based_surface_model
13322	SUBTYPE OF (geometric_representation_item);
13323	sbsm_boundary : SET [1:?] OF shell;
13324WHERE
13325	WR1 : constraints_geometry_shell_based_surface_model(SELF);
13326END_ENTITY;
13327
13328
13329ENTITY shell_based_wireframe_model
13330	SUBTYPE OF (geometric_representation_item);
13331	sbwm_boundary : SET [1:?] OF shell;
13332WHERE
13333	WR1 : constraints_geometry_shell_based_wireframe_model(SELF);
13334END_ENTITY;
13335
13336
13337ENTITY shell_based_wireframe_shape_representation
13338	SUBTYPE OF (shape_representation);
13339WHERE
13340	WR1 : SIZEOF (
13341QUERY ( it <* SELF.items| NOT ( SIZEOF ([ 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHELL_BASED_WIREFRAME_MODEL', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AXIS2_PLACEMENT_3D' ] * TYPEOF (it)) = 1) )) = 0;
13342	WR2 : SIZEOF (
13343QUERY ( it <* SELF.items| ( SIZEOF ([ 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHELL_BASED_WIREFRAME_MODEL', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM' ] * TYPEOF (it)) = 1) )) >= 1;
13344	WR3 : SIZEOF (
13345QUERY ( sbwm <*
13346QUERY ( it <* SELF.items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF (
13347QUERY ( ws <*
13348QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF (
13349QUERY ( eloop <*
13350QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF (wsb)) )| NOT ( SIZEOF (
13351QUERY ( el <* eloop\path.edge_list| NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_CURVE' IN TYPEOF (el.edge_element)) )) = 0) )) = 0) )) = 0) )) = 0;
13352	WR4 : SIZEOF (
13353QUERY ( sbwm <*
13354QUERY ( it <* SELF.items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF (
13355QUERY ( ws <*
13356QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF (
13357QUERY ( eloop <*
13358QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF (wsb)) )| NOT ( SIZEOF (
13359QUERY ( pline_el <*
13360QUERY ( el <* eloop\path.edge_list| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_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;
13361	WR5 : SIZEOF (
13362QUERY ( sbwm <*
13363QUERY ( it <* SELF.items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF (
13364QUERY ( ws <*
13365QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF (
13366QUERY ( eloop <*
13367QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF (wsb)) )| NOT ( SIZEOF (
13368QUERY ( el <* eloop\path.edge_list| NOT valid_wireframe_edge_curve(el.edge_element\edge_curve.edge_geometry) )) = 0) )) = 0) )) = 0) )) = 0;
13369	WR6 : SIZEOF (
13370QUERY ( sbwm <*
13371QUERY ( it <* SELF.items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF (
13372QUERY ( ws <*
13373QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF (
13374QUERY ( eloop <*
13375QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF (wsb)) )| NOT ( SIZEOF (
13376QUERY ( el <* eloop\path.edge_list| NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_POINT' IN TYPEOF (el.edge_element.edge_start)) AND ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_POINT' IN TYPEOF (el.edge_element.edge_end))) )) = 0) )) = 0) )) = 0) )) = 0;
13377	WR7 : SIZEOF (
13378QUERY ( sbwm <*
13379QUERY ( it <* SELF.items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF (
13380QUERY ( ws <*
13381QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF (
13382QUERY ( eloop <*
13383QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE_LOOP' IN TYPEOF (wsb)) )| NOT ( SIZEOF (
13384QUERY ( 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;
13385	WR8 : SIZEOF (
13386QUERY ( sbwm <*
13387QUERY ( it <* SELF.items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF (
13388QUERY ( ws <*
13389QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF (
13390QUERY ( vloop <*
13391QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_LOOP' IN TYPEOF (wsb)) )| NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_POINT' IN TYPEOF (vloop\vertex_loop.loop_vertex)) )) = 0) )) = 0) )) = 0;
13392	WR9 : SIZEOF (
13393QUERY ( sbwm <*
13394QUERY ( it <* SELF.items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF (
13395QUERY ( ws <*
13396QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF (
13397QUERY ( vloop <*
13398QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_LOOP' IN TYPEOF (wsb)) )| NOT valid_wireframe_vertex_point(vloop\vertex_loop.loop_vertex\vertex_point.vertex_geometry) )) = 0) )) = 0) )) = 0;
13399	WR10 : SIZEOF (
13400QUERY ( sbwm <*
13401QUERY ( it <* SELF.items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF (
13402QUERY ( vs <*
13403QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_SHELL' IN TYPEOF (sb)) )| NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_POINT' IN TYPEOF (vs\vertex_shell.vertex_shell_extent.loop_vertex)) )) = 0) )) = 0;
13404	WR11 : SIZEOF (
13405QUERY ( sbwm <*
13406QUERY ( it <* SELF.items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF (
13407QUERY ( vs <*
13408QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_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;
13409	WR12 : SIZEOF (
13410QUERY ( mi <*
13411QUERY ( it <* SELF.items| ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'SHELL_BASED_WIREFRAME_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0;
13412	WR13 : SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3;
13413END_ENTITY;
13414
13415
13416ENTITY shelled_solid
13417	SUPERTYPE OF (ONEOF (double_offset_shelled_solid, complex_shelled_solid))
13418	SUBTYPE OF (modified_solid);
13419	deleted_face_set : SET [1:?] OF face_surface;
13420	thickness : length_measure;
13421WHERE
13422	WR1 : thickness <> 0;
13423END_ENTITY;
13424
13425
13426ENTITY si_absorbed_dose_unit
13427	SUBTYPE OF (absorbed_dose_unit, si_unit);
13428WHERE
13429	WR1 : SELF\si_unit.name = si_unit_name.gray;
13430	WR2 : NOT EXISTS(SELF\derived_unit.name);
13431END_ENTITY;
13432
13433
13434ENTITY si_capacitance_unit
13435	SUBTYPE OF (capacitance_unit, si_unit);
13436WHERE
13437	WR1 : SELF\si_unit.name = si_unit_name.farad;
13438	WR2 : NOT EXISTS(SELF\derived_unit.name);
13439END_ENTITY;
13440
13441
13442ENTITY si_conductance_unit
13443	SUBTYPE OF (conductance_unit, si_unit);
13444WHERE
13445	WR1 : SELF\si_unit.name = si_unit_name.siemens;
13446	WR2 : NOT EXISTS(SELF\derived_unit.name);
13447END_ENTITY;
13448
13449
13450ENTITY si_dose_equivalent_unit
13451	SUBTYPE OF (dose_equivalent_unit, si_unit);
13452WHERE
13453	WR1 : SELF\si_unit.name = si_unit_name.sievert;
13454	WR2 : NOT EXISTS(SELF\derived_unit.name);
13455END_ENTITY;
13456
13457
13458ENTITY si_electric_charge_unit
13459	SUBTYPE OF (electric_charge_unit, si_unit);
13460WHERE
13461	WR1 : SELF\si_unit.name = si_unit_name.coulomb;
13462	WR2 : NOT EXISTS(SELF\derived_unit.name);
13463END_ENTITY;
13464
13465
13466ENTITY si_electric_potential_unit
13467	SUBTYPE OF (electric_potential_unit, si_unit);
13468WHERE
13469	WR1 : SELF\si_unit.name = si_unit_name.volt;
13470	WR2 : NOT EXISTS(SELF\derived_unit.name);
13471END_ENTITY;
13472
13473
13474ENTITY si_energy_unit
13475	SUBTYPE OF (energy_unit, si_unit);
13476WHERE
13477	WR1 : SELF\si_unit.name = si_unit_name.joule;
13478	WR2 : NOT EXISTS(SELF\derived_unit.name);
13479END_ENTITY;
13480
13481
13482ENTITY si_force_unit
13483	SUBTYPE OF (force_unit, si_unit);
13484WHERE
13485	WR1 : SELF\si_unit.name = si_unit_name.newton;
13486	WR2 : NOT EXISTS(SELF\derived_unit.name);
13487END_ENTITY;
13488
13489
13490ENTITY si_frequency_unit
13491	SUBTYPE OF (frequency_unit, si_unit);
13492WHERE
13493	WR1 : SELF\si_unit.name = si_unit_name.hertz;
13494	WR2 : NOT EXISTS(SELF\derived_unit.name);
13495END_ENTITY;
13496
13497
13498ENTITY si_illuminance_unit
13499	SUBTYPE OF (illuminance_unit, si_unit);
13500WHERE
13501	WR1 : SELF\si_unit.name = si_unit_name.lux;
13502	WR2 : NOT EXISTS(SELF\derived_unit.name);
13503END_ENTITY;
13504
13505
13506ENTITY si_inductance_unit
13507	SUBTYPE OF (inductance_unit, si_unit);
13508WHERE
13509	WR1 : SELF\si_unit.name = si_unit_name.henry;
13510	WR2 : NOT EXISTS(SELF\derived_unit.name);
13511END_ENTITY;
13512
13513
13514ENTITY si_magnetic_flux_density_unit
13515	SUBTYPE OF (magnetic_flux_density_unit, si_unit);
13516WHERE
13517	WR1 : SELF\si_unit.name = si_unit_name.tesla;
13518	WR2 : NOT EXISTS(SELF\derived_unit.name);
13519END_ENTITY;
13520
13521
13522ENTITY si_magnetic_flux_unit
13523	SUBTYPE OF (magnetic_flux_unit, si_unit);
13524WHERE
13525	WR1 : SELF\si_unit.name = si_unit_name.weber;
13526	WR2 : NOT EXISTS(SELF\derived_unit.name);
13527END_ENTITY;
13528
13529
13530ENTITY si_power_unit
13531	SUBTYPE OF (power_unit, si_unit);
13532WHERE
13533	WR1 : SELF\si_unit.name = si_unit_name.watt;
13534	WR2 : NOT EXISTS(SELF\derived_unit.name);
13535END_ENTITY;
13536
13537
13538ENTITY si_pressure_unit
13539	SUBTYPE OF (pressure_unit, si_unit);
13540WHERE
13541	WR1 : SELF\si_unit.name = si_unit_name.pascal;
13542	WR2 : NOT EXISTS(SELF\derived_unit.name);
13543END_ENTITY;
13544
13545
13546ENTITY si_radioactivity_unit
13547	SUBTYPE OF (radioactivity_unit, si_unit);
13548WHERE
13549	WR1 : SELF\si_unit.name = si_unit_name.becquerel;
13550	WR2 : NOT EXISTS(SELF\derived_unit.name);
13551END_ENTITY;
13552
13553
13554ENTITY si_resistance_unit
13555	SUBTYPE OF (resistance_unit, si_unit);
13556WHERE
13557	WR1 : SELF\si_unit.name = si_unit_name.ohm;
13558	WR2 : NOT EXISTS(SELF\derived_unit.name);
13559END_ENTITY;
13560
13561
13562ENTITY si_unit
13563	SUBTYPE OF (named_unit);
13564	prefix : OPTIONAL si_prefix;
13565	name : si_unit_name;
13566DERIVE
13567	SELF\named_unit.dimensions : dimensional_exponents := dimensions_for_si_unit(name);
13568WHERE
13569	WR1 : NOT(('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MASS_UNIT' IN TYPEOF(SELF)) AND
13570             (SIZEOF(USEDIN(SELF,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DERIVED_UNIT_ELEMENT.UNIT')) > 0)) OR
13571            (prefix = si_prefix.kilo);
13572END_ENTITY;
13573
13574
13575ENTITY signal
13576	SUBTYPE OF (characterized_object);
13577END_ENTITY;
13578
13579
13580ENTITY signal_category
13581	SUBTYPE OF (group);
13582END_ENTITY;
13583
13584
13585ENTITY simple_boolean_expression
13586	ABSTRACT SUPERTYPE
13587	SUBTYPE OF (boolean_expression, simple_generic_expression);
13588END_ENTITY;
13589
13590
13591ENTITY simple_clause
13592	SUBTYPE OF (compound_representation_item);
13593END_ENTITY;
13594
13595
13596ENTITY simple_generic_expression
13597	ABSTRACT SUPERTYPE OF (ONEOF (generic_literal, generic_variable))
13598	SUBTYPE OF (generic_expression);
13599END_ENTITY;
13600
13601
13602ENTITY simple_numeric_expression
13603	ABSTRACT SUPERTYPE
13604	SUBTYPE OF (numeric_expression, simple_generic_expression);
13605END_ENTITY;
13606
13607
13608ENTITY single_area_csg_2d_shape_representation
13609	SUBTYPE OF (csg_2d_shape_representation);
13610	SELF\representation.items : SET [1:?] OF csg_2d_area_select;
13611WHERE
13612	WR1 : SIZEOF (QUERY (it <* SELF.items|
13613     ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM'
13614     IN TYPEOF(it)) )) = 0;
13615	WR2 : SIZEOF (QUERY (it <* SELF.items|
13616     ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CSG_SOLID_2D'
13617     IN TYPEOF(it)) )) = 1;
13618END_ENTITY;
13619
13620
13621ENTITY single_boundary_csg_2d_shape_representation
13622	SUBTYPE OF (single_area_csg_2d_shape_representation);
13623WHERE
13624	WR1 : SIZEOF(QUERY ( it <* SELF.items |
13625        (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CSG_PRIMITIVE_SOLID_2D' IN TYPEOF(it))
13626        AND (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRIMITIVE_2D_WITH_INNER_BOUNDARY') IN
13627        TYPEOF(it\csg_primitive_solid_2d.tree_root_expression))) )) = 0;
13628END_ENTITY;
13629
13630
13631ENTITY single_stratum_continuous_template
13632	ABSTRACT SUPERTYPE OF (ONEOF (stratum_feature_template, material_removal_feature_template))
13633	SUBTYPE OF (continuous_template, single_stratum_template);
13634END_ENTITY;
13635
13636
13637ENTITY single_stratum_printed_component
13638	SUBTYPE OF (printed_component, structured_layout_component);
13639END_ENTITY;
13640
13641
13642ENTITY single_stratum_printed_part_template
13643	SUBTYPE OF (structured_printed_part_template, single_stratum_structured_template);
13644END_ENTITY;
13645
13646
13647ENTITY single_stratum_special_symbol_component
13648	SUPERTYPE OF (primary_stratum_indicator_symbol)
13649	SUBTYPE OF (structured_layout_component);
13650END_ENTITY;
13651
13652
13653ENTITY single_stratum_special_symbol_template
13654	SUBTYPE OF (single_stratum_structured_template, special_symbol_template);
13655END_ENTITY;
13656
13657
13658ENTITY single_stratum_structured_template
13659	ABSTRACT SUPERTYPE OF (ONEOF (material_removal_structured_template, single_stratum_special_symbol_template))
13660	SUBTYPE OF (structured_template, single_stratum_template);
13661END_ENTITY;
13662
13663
13664ENTITY single_stratum_template
13665	ABSTRACT SUPERTYPE OF (single_stratum_continuous_template)
13666	SUBTYPE OF (part_template_definition);
13667END_ENTITY;
13668
13669
13670ENTITY slash_expression
13671	SUBTYPE OF (binary_numeric_expression);
13672END_ENTITY;
13673
13674
13675ENTITY smeared_material_definition
13676	SUBTYPE OF (zone_structural_makeup);
13677END_ENTITY;
13678
13679
13680ENTITY snowball_template
13681	SUBTYPE OF (teardrop_template);
13682END_ENTITY;
13683
13684
13685ENTITY solid_angle_measure_with_unit
13686	SUBTYPE OF (measure_with_unit);
13687WHERE
13688	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SOLID_ANGLE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
13689END_ENTITY;
13690
13691
13692ENTITY solid_angle_unit
13693	SUBTYPE OF (named_unit);
13694WHERE
13695	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);
13696END_ENTITY;
13697
13698
13699ENTITY solid_character_glyph_2d_symbol
13700	SUBTYPE OF (generic_character_glyph_symbol, csg_2d_shape_representation);
13701END_ENTITY;
13702
13703
13704ENTITY solid_curve_font
13705	SUBTYPE OF (pre_defined_curve_font);
13706END_ENTITY;
13707
13708
13709ENTITY solid_model
13710	SUPERTYPE OF (ONEOF (csg_solid, manifold_solid_brep, swept_face_solid, swept_area_solid, swept_disk_solid, solid_replica))
13711	SUBTYPE OF (geometric_representation_item);
13712END_ENTITY;
13713
13714
13715ENTITY solid_replica
13716	SUBTYPE OF (solid_model);
13717	parent_solid : solid_model;
13718	transformation : cartesian_transformation_operator_3d;
13719WHERE
13720	WR1 : acyclic_solid_replica(SELF, parent_solid);
13721	WR2 : parent_solid\geometric_representation_item.dim = 3;
13722END_ENTITY;
13723
13724
13725ENTITY solid_with_angle_based_chamfer
13726	SUBTYPE OF (solid_with_chamfered_edges);
13727	offset_distance : positive_length_measure;
13728	left_offset : BOOLEAN;
13729	offset_angle : positive_plane_angle_measure;
13730END_ENTITY;
13731
13732
13733ENTITY solid_with_chamfered_edges
13734	ABSTRACT SUPERTYPE OF (ONEOF (solid_with_single_offset_chamfer, solid_with_double_offset_chamfer, solid_with_angle_based_chamfer))
13735	SUBTYPE OF (edge_blended_solid);
13736END_ENTITY;
13737
13738
13739ENTITY solid_with_circular_pattern
13740	SUPERTYPE OF (solid_with_incomplete_circular_pattern)
13741	SUBTYPE OF (solid_with_shape_element_pattern);
13742	replicate_count : positive_integer;
13743	angular_spacing : plane_angle_measure;
13744	radial_alignment : BOOLEAN;
13745	reference_point : point;
13746END_ENTITY;
13747
13748
13749ENTITY solid_with_circular_pocket
13750	SUBTYPE OF (solid_with_pocket);
13751	pocket_radius : positive_length_measure;
13752WHERE
13753	WR1 : SELF\solid_with_pocket.floor_blend_radius <= pocket_radius;
13754END_ENTITY;
13755
13756
13757ENTITY solid_with_circular_protrusion
13758	SUBTYPE OF (solid_with_protrusion);
13759	protrusion_radius : positive_length_measure;
13760END_ENTITY;
13761
13762
13763ENTITY solid_with_conical_bottom_round_hole
13764	SUBTYPE OF (solid_with_stepped_round_hole);
13765	semi_apex_angle : positive_plane_angle_measure;
13766	tip_radius : non_negative_length_measure;
13767WHERE
13768	WR1 : tip_radius <
13769          SELF\solid_with_stepped_round_hole.segment_radii[segments];
13770END_ENTITY;
13771
13772
13773ENTITY solid_with_constant_radius_edge_blend
13774	SUBTYPE OF (edge_blended_solid);
13775	radius : positive_length_measure;
13776END_ENTITY;
13777
13778
13779ENTITY solid_with_curved_slot
13780	SUBTYPE OF (solid_with_slot);
13781	slot_centreline : bounded_curve;
13782END_ENTITY;
13783
13784
13785ENTITY solid_with_depression
13786	ABSTRACT SUPERTYPE OF ((solid_with_through_depression ANDOR ONEOF (solid_with_hole, solid_with_pocket, solid_with_slot, solid_with_groove)))
13787	SUBTYPE OF (modified_solid_with_placed_configuration);
13788	depth : positive_length_measure;
13789END_ENTITY;
13790
13791
13792ENTITY solid_with_double_offset_chamfer
13793	SUBTYPE OF (solid_with_chamfered_edges);
13794	left_offset_distance : positive_length_measure;
13795	right_offset_distance : positive_length_measure;
13796END_ENTITY;
13797
13798
13799ENTITY solid_with_flat_bottom_round_hole
13800	SUBTYPE OF (solid_with_stepped_round_hole);
13801	fillet_radius : non_negative_length_measure;
13802WHERE
13803	WR1 : fillet_radius <
13804          SELF\solid_with_stepped_round_hole.segment_radii[segments];
13805END_ENTITY;
13806
13807
13808ENTITY solid_with_general_pocket
13809	SUBTYPE OF (solid_with_pocket);
13810	profile : positioned_sketch;
13811	reference_point : point;
13812WHERE
13813	WR1 : SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_BOUNDED_SURFACE',
13814    'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE_SURFACE'] * TYPEOF(profile.sketch_basis)) = 1;
13815	WR2 : profile IN using_items(reference_point,[]);
13816END_ENTITY;
13817
13818
13819ENTITY solid_with_general_protrusion
13820	SUBTYPE OF (solid_with_protrusion);
13821	profile : positioned_sketch;
13822	reference_point : point;
13823WHERE
13824	WR1 : SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_BOUNDED_SURFACE',
13825    'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE_SURFACE'] * TYPEOF(profile.sketch_basis)) = 1;
13826	WR2 : profile IN using_items(reference_point,[]);
13827END_ENTITY;
13828
13829
13830ENTITY solid_with_groove
13831	SUBTYPE OF (solid_with_depression);
13832	groove_radius : positive_length_measure;
13833	groove_width : positive_length_measure;
13834	draft_angle : plane_angle_measure;
13835	floor_fillet_radius : non_negative_length_measure;
13836	external_groove : BOOLEAN;
13837WHERE
13838	WR1 : NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION'
13839         IN TYPEOF(SELF));
13840END_ENTITY;
13841
13842
13843ENTITY solid_with_hole
13844	ABSTRACT SUPERTYPE OF (solid_with_stepped_round_hole)
13845	SUBTYPE OF (solid_with_depression);
13846END_ENTITY;
13847
13848
13849ENTITY solid_with_incomplete_circular_pattern
13850	SUBTYPE OF (solid_with_circular_pattern);
13851	omitted_instances : SET [1:?] OF positive_integer;
13852WHERE
13853	WR1 : SIZEOF(omitted_instances) <
13854         SELF\solid_with_circular_pattern.replicate_count;
13855	WR2 : SIZEOF(QUERY(q <* omitted_instances | q >
13856         SELF\solid_with_circular_pattern.replicate_count)) = 0;
13857END_ENTITY;
13858
13859
13860ENTITY solid_with_incomplete_rectangular_pattern
13861	SUBTYPE OF (solid_with_rectangular_pattern);
13862	omitted_instances : SET [1:?] OF LIST [2:2] OF positive_integer;
13863WHERE
13864	WR1 : NOT([1,1] IN omitted_instances);
13865	WR2 : SIZEOF(omitted_instances) <
13866         ((SELF\solid_with_rectangular_pattern.row_count *
13867           SELF\solid_with_rectangular_pattern.column_count) - 1);
13868	WR3 : SIZEOF(QUERY(q <* omitted_instances |
13869         ((q[1] > SELF\solid_with_rectangular_pattern.row_count) OR
13870          (q[2] > SELF\solid_with_rectangular_pattern.column_count)))) = 0;
13871END_ENTITY;
13872
13873
13874ENTITY solid_with_pocket
13875	ABSTRACT SUPERTYPE OF (ONEOF (solid_with_rectangular_pocket, solid_with_circular_pocket, solid_with_general_pocket))
13876	SUBTYPE OF (solid_with_depression);
13877	floor_blend_radius : non_negative_length_measure;
13878	draft_angle : plane_angle_measure;
13879END_ENTITY;
13880
13881
13882ENTITY solid_with_protrusion
13883	ABSTRACT SUPERTYPE OF (ONEOF (solid_with_circular_protrusion, solid_with_rectangular_protrusion, solid_with_general_protrusion))
13884	SUBTYPE OF (modified_solid_with_placed_configuration);
13885	protrusion_height : positive_length_measure;
13886	protrusion_draft_angle : plane_angle_measure;
13887END_ENTITY;
13888
13889
13890ENTITY solid_with_rectangular_pattern
13891	SUPERTYPE OF (solid_with_incomplete_rectangular_pattern)
13892	SUBTYPE OF (solid_with_shape_element_pattern);
13893	row_count : positive_integer;
13894	column_count : positive_integer;
13895	row_spacing : length_measure;
13896	column_spacing : length_measure;
13897WHERE
13898	WR1 : (row_count * column_count) > 1;
13899END_ENTITY;
13900
13901
13902ENTITY solid_with_rectangular_pocket
13903	SUBTYPE OF (solid_with_pocket);
13904	pocket_length : positive_length_measure;
13905	pocket_width : positive_length_measure;
13906	corner_radius : non_negative_length_measure;
13907WHERE
13908	WR1 : (corner_radius < pocket_width/2)
13909         AND (corner_radius < pocket_length/2);
13910END_ENTITY;
13911
13912
13913ENTITY solid_with_rectangular_protrusion
13914	SUBTYPE OF (solid_with_protrusion);
13915	protrusion_length : positive_length_measure;
13916	protrusion_width : positive_length_measure;
13917	protrusion_corner_radius : non_negative_length_measure;
13918WHERE
13919	WR1 : (protrusion_corner_radius <= protrusion_width/2)
13920         AND (protrusion_corner_radius <= protrusion_length/2);
13921END_ENTITY;
13922
13923
13924ENTITY solid_with_shape_element_pattern
13925	ABSTRACT SUPERTYPE OF (ONEOF (solid_with_circular_pattern, solid_with_rectangular_pattern))
13926	SUBTYPE OF (modified_solid_with_placed_configuration);
13927	replicated_element : modified_solid_with_placed_configuration;
13928END_ENTITY;
13929
13930
13931ENTITY solid_with_single_offset_chamfer
13932	SUBTYPE OF (solid_with_chamfered_edges);
13933	offset_distance : positive_length_measure;
13934END_ENTITY;
13935
13936
13937ENTITY solid_with_slot
13938	ABSTRACT SUPERTYPE OF ((ONEOF (solid_with_trapezoidal_section_slot, solid_with_tee_section_slot) AND ONEOF (solid_with_straight_slot, solid_with_curved_slot)))
13939	SUBTYPE OF (solid_with_depression);
13940	slot_width : positive_length_measure;
13941	closed_ends : LIST [2:2] OF LOGICAL;
13942	end_exit_faces : LIST [2:2] OF SET [0:?] OF face_surface;
13943WHERE
13944	WR1 : NOT(('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION' IN
13945         TYPEOF(SELF)) AND (closed_ends = [FALSE,FALSE]));
13946	WR2 : NOT(((closed_ends[1] = TRUE) AND (SIZEOF(end_exit_faces[1]) <> 0))
13947         OR ((closed_ends[2] = TRUE) AND (SIZEOF(end_exit_faces[2]) <> 0)));
13948END_ENTITY;
13949
13950
13951ENTITY solid_with_spherical_bottom_round_hole
13952	SUBTYPE OF (solid_with_stepped_round_hole);
13953	sphere_radius : positive_length_measure;
13954WHERE
13955	WR1 : sphere_radius >=
13956          SELF\solid_with_stepped_round_hole.segment_radii[segments];
13957END_ENTITY;
13958
13959
13960ENTITY solid_with_stepped_round_hole
13961	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)))
13962	SUBTYPE OF (solid_with_hole);
13963	segments : positive_integer;
13964	segment_radii : LIST [1:segments] OF positive_length_measure;
13965	segment_depths : LIST [1:segments] OF positive_length_measure;
13966DERIVE
13967	SELF\solid_with_depression.depth : positive_length_measure := compute_total_depth(SELF);
13968WHERE
13969	WR1 : NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION'
13970       IN TYPEOF(SELF)) AND (SIZEOF(TYPEOF(SELF) *
13971       ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SOLID_WITH_FLAT_BOTTOM_ROUND_HOLE',
13972       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SOLID_WITH_SPHERICAL_BOTTOM_ROUND_HOLE',
13973       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SOLID_WITH_FLAT_BOTTOM_ROUND_HOLE'])
13974       <> 0));
13975END_ENTITY;
13976
13977
13978ENTITY solid_with_stepped_round_hole_and_conical_transitions
13979	SUBTYPE OF (solid_with_stepped_round_hole);
13980	conical_transitions : SET [1:?] OF conical_stepped_hole_transition;
13981WHERE
13982	WR1 : SIZEOF (conical_transitions) <=
13983         (SELF\solid_with_stepped_round_hole.segments + 1);
13984	WR2 : ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION'
13985         IN TYPEOF(SELF)) XOR (SIZEOF(conical_transitions) <=
13986         SELF\solid_with_stepped_round_hole.segments);
13987	WR3 : validate_countersink_radii(SELF);
13988END_ENTITY;
13989
13990
13991ENTITY solid_with_straight_slot
13992	SUBTYPE OF (solid_with_slot);
13993	slot_length : positive_length_measure;
13994END_ENTITY;
13995
13996
13997ENTITY solid_with_tee_section_slot
13998	SUBTYPE OF (solid_with_slot);
13999	tee_section_width : positive_length_measure;
14000	collar_depth : positive_length_measure;
14001WHERE
14002	WR1 : collar_depth < SELF\solid_with_depression.depth;
14003	WR2 : tee_section_width > SELF\solid_with_slot.slot_width;
14004END_ENTITY;
14005
14006
14007ENTITY solid_with_through_depression
14008	SUBTYPE OF (solid_with_depression);
14009	exit_faces : SET [1:?] OF face_surface;
14010WHERE
14011	WR1 : SIZEOF(TYPEOF(SELF) *
14012         ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SOLID_WITH_HOLE',
14013          'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SOLID_WITH_POCKET',
14014          'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SOLID_WITH_SLOT']) = 1;
14015END_ENTITY;
14016
14017
14018ENTITY solid_with_trapezoidal_section_slot
14019	SUBTYPE OF (solid_with_slot);
14020	draft_angle : plane_angle_measure;
14021	floor_fillet_radius : non_negative_length_measure;
14022END_ENTITY;
14023
14024
14025ENTITY solid_with_variable_radius_edge_blend
14026	SUBTYPE OF (edge_blended_solid, track_blended_solid);
14027	point_list : LIST [2:?] OF point;
14028	radius_list : LIST [2:?] OF positive_length_measure;
14029	edge_function_list : LIST [1:?] OF blend_radius_variation_type;
14030WHERE
14031	WR1 : SIZEOF(point_list) = SIZEOF(radius_list);
14032	WR2 : SIZEOF(edge_function_list) = SIZEOF(radius_list) - 1;
14033	WR3 : NOT((point_list[1] = point_list[HIINDEX(point_list)]) AND NOT
14034         (radius_list[1] = radius_list[HIINDEX(radius_list)]));
14035END_ENTITY;
14036
14037
14038ENTITY source_for_requirement
14039	SUBTYPE OF (group_assignment);
14040	items : SET [1:1] OF requirement_source_item;
14041	SELF\group_assignment.assigned_group : requirement_source;
14042END_ENTITY;
14043
14044
14045ENTITY sourced_requirement
14046	SUBTYPE OF (group_assignment);
14047	items : SET [1:1] OF product_definition;
14048	SELF\group_assignment.assigned_group : requirement_source;
14049END_ENTITY;
14050
14051
14052ENTITY special_symbol_template
14053	ABSTRACT SUPERTYPE OF (ONEOF (single_stratum_special_symbol_template, multi_stratum_special_symbol_template))
14054	SUBTYPE OF (part_template_definition);
14055END_ENTITY;
14056
14057
14058ENTITY specification_definition
14059	SUBTYPE OF (product_definition);
14060END_ENTITY;
14061
14062
14063ENTITY specified_higher_usage_occurrence
14064	SUBTYPE OF (assembly_component_usage);
14065	upper_usage : assembly_component_usage;
14066	next_usage : next_assembly_usage_occurrence;
14067UNIQUE
14068	UR1 : upper_usage, next_usage;
14069WHERE
14070	WR1 : SELF :<>: upper_usage;
14071	WR2 : SELF\product_definition_relationship.relating_product_definition
14072       :=: upper_usage.relating_product_definition;
14073	WR3 : SELF\product_definition_relationship.related_product_definition
14074       :=: next_usage.related_product_definition;
14075	WR4 : (upper_usage.related_product_definition :=:
14076       next_usage.relating_product_definition) OR
14077       (SIZEOF (QUERY (pdr <* USEDIN (upper_usage.related_product_definition,
14078       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP.' +
14079       'RELATED_PRODUCT_DEFINITION') |
14080        pdr.relating_product_definition :=:
14081        next_usage.relating_product_definition)) = 1);
14082	WR5 : SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.NEXT_ASSEMBLY_USAGE_OCCURRENCE',
14083       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SPECIFIED_HIGHER_USAGE_OCCURRENCE']
14084       * TYPEOF(upper_usage)) = 1;
14085END_ENTITY;
14086
14087
14088ENTITY sphere
14089	SUBTYPE OF (geometric_representation_item);
14090	radius : positive_length_measure;
14091	centre : point;
14092END_ENTITY;
14093
14094
14095ENTITY spherical_surface
14096	SUBTYPE OF (elementary_surface);
14097	radius : positive_length_measure;
14098END_ENTITY;
14099
14100
14101ENTITY standard_uncertainty
14102	SUPERTYPE OF (expanded_uncertainty)
14103	SUBTYPE OF (uncertainty_qualifier);
14104	uncertainty_value : REAL;
14105END_ENTITY;
14106
14107
14108ENTITY start_request
14109	SUBTYPE OF (action_request_assignment);
14110	items : SET [1:?] OF start_request_item;
14111END_ENTITY;
14112
14113
14114ENTITY start_work
14115	SUBTYPE OF (action_assignment);
14116	items : SET [1:?] OF work_item;
14117END_ENTITY;
14118
14119
14120ENTITY statistical_dimensional_location
14121	SUBTYPE OF (dimensional_location);
14122END_ENTITY;
14123
14124
14125ENTITY statistical_dimensional_size
14126	SUBTYPE OF (dimensional_size_property);
14127END_ENTITY;
14128
14129
14130ENTITY statistical_geometric_tolerance
14131	SUBTYPE OF (physical_unit_geometric_tolerance);
14132END_ENTITY;
14133
14134
14135ENTITY straightness_tolerance
14136	SUBTYPE OF (geometric_tolerance);
14137WHERE
14138	WR1 : NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF));
14139END_ENTITY;
14140
14141
14142ENTITY stratum
14143	SUPERTYPE OF (ONEOF (documentation_layer_stratum, design_layer_stratum))
14144	SUBTYPE OF (product_definition, product_definition_shape);
14145DERIVE
14146	SELF\property_definition.definition : stratum := SELF;
14147UNIQUE
14148  UR1: SELF\product_definition.id, SELF\product_definition.formation;
14149WHERE
14150	WR1 : SIZEOF (USEDIN (SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +'NAME_ATTRIBUTE.NAMED_ITEM')) = 0;
14151	WR2 : NOT EXISTS(SELF\property_definition.description);
14152END_ENTITY;
14153
14154
14155ENTITY stratum_feature
14156	SUPERTYPE OF (fiducial_stratum_feature)
14157	SUBTYPE OF (shape_aspect);
14158END_ENTITY;
14159
14160
14161ENTITY stratum_feature_based_derived_pattern
14162	SUBTYPE OF (characterized_object, property_definition_relationship);
14163END_ENTITY;
14164
14165
14166ENTITY stratum_feature_conductive_join
14167	SUBTYPE OF (product_definition_relationship);
14168END_ENTITY;
14169
14170
14171ENTITY stratum_feature_template
14172	SUBTYPE OF (single_stratum_continuous_template);
14173END_ENTITY;
14174
14175
14176ENTITY stratum_feature_template_component
14177	SUPERTYPE OF (ONEOF (area_component, conductive_interconnect_element, land))
14178	SUBTYPE OF (laminate_component);
14179END_ENTITY;
14180
14181
14182ENTITY stratum_feature_template_component_with_stratum_feature
14183	SUBTYPE OF (stratum_feature_template_component, stratum_feature, shape_aspect_relationship);
14184DERIVE
14185	SELF\shape_aspect_relationship.related_shape_aspect : stratum_feature_template_component_with_stratum_feature := SELF;
14186	SELF\shape_aspect_relationship.relating_shape_aspect : stratum_feature_template_component_with_stratum_feature := SELF;
14187WHERE
14188	WR1 : SELF\shape_aspect_relationship.name = 'implementation';
14189END_ENTITY;
14190
14191
14192ENTITY stratum_specific_template_location
14193	SUBTYPE OF (assembly_component_usage, property_definition);
14194END_ENTITY;
14195
14196
14197ENTITY stratum_stack_dependent_template
14198	SUBTYPE OF (multi_stratum_structured_template);
14199END_ENTITY;
14200
14201
14202ENTITY stratum_stack_model
14203	ABSTRACT SUPERTYPE
14204	SUBTYPE OF (part_template_definition);
14205END_ENTITY;
14206
14207
14208ENTITY stratum_sub_stack
14209	ABSTRACT SUPERTYPE OF (ONEOF (local_linear_stack, passage_technology_allocation_to_stack_model))
14210	SUBTYPE OF (part_template_definition);
14211END_ENTITY;
14212
14213
14214ENTITY stratum_surface
14215	SUBTYPE OF (shape_aspect);
14216END_ENTITY;
14217
14218
14219ENTITY stratum_surface_technology
14220	SUBTYPE OF (shape_aspect);
14221	SELF\shape_aspect.of_shape : stratum_technology;
14222DERIVE
14223	associated_technology : stratum_technology := SELF\shape_aspect.of_shape;
14224END_ENTITY;
14225
14226
14227ENTITY stratum_technology
14228	SUBTYPE OF (characterized_object, product_definition_shape);
14229DERIVE
14230	SELF\property_definition.definition : characterized_definition := SELF;
14231UNIQUE
14232  UR1: SELF\characterized_object.name;
14233END_ENTITY;
14234
14235
14236ENTITY stratum_technology_mapping_relationship
14237	SUBTYPE OF (property_definition_relationship);
14238END_ENTITY;
14239
14240
14241ENTITY stratum_technology_occurrence
14242	SUBTYPE OF (property_definition);
14243END_ENTITY;
14244
14245
14246ENTITY stratum_technology_occurrence_feature_constraint
14247	SUBTYPE OF (stratum_technology_occurrence_relationship);
14248END_ENTITY;
14249
14250
14251ENTITY stratum_technology_occurrence_link
14252	SUBTYPE OF (stratum_technology_occurrence_relationship);
14253END_ENTITY;
14254
14255
14256ENTITY stratum_technology_occurrence_relationship
14257	ABSTRACT SUPERTYPE OF (ONEOF (derived_stratum_technology_occurrence_relationship, stratum_technology_occurrence_link, stratum_technology_occurrence_feature_constraint, stratum_technology_occurrence_swap_relationship))
14258	SUBTYPE OF (property_definition, property_definition_relationship);
14259END_ENTITY;
14260
14261
14262ENTITY stratum_technology_occurrence_swap_relationship
14263	SUBTYPE OF (stratum_technology_occurrence_relationship);
14264END_ENTITY;
14265
14266
14267ENTITY stratum_technology_swap_relationship
14268	SUBTYPE OF (property_definition_relationship);
14269END_ENTITY;
14270
14271
14272ENTITY structured_dimension_callout
14273	SUBTYPE OF (draughting_callout);
14274WHERE
14275	WR1 : SIZEOF (TYPEOF (SELF) *
14276       ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DATUM_FEATURE_CALLOUT',
14277        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DATUM_TARGET_CALLOUT',
14278        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GEOMETRICAL_TOLERANCE_CALLOUT',
14279        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LEADER_DIRECTED_CALLOUT',
14280        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PROJECTION_DIRECTED_CALLOUT',
14281        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT']) = 0;
14282	WR2 : SIZEOF (QUERY (ato <* QUERY (con <* SELF.contents |
14283         ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_TEXT_OCCURRENCE'
14284             IN TYPEOF (con))) |
14285         NOT (ato.name IN
14286             ['dimension value', 'tolerance value', 'unit text',
14287              'prefix text', 'suffix text']))) = 0;
14288	WR3 : SIZEOF (QUERY (ato <* QUERY (con <* SELF.contents |
14289         ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_TEXT_OCCURRENCE'
14290             IN TYPEOF (con))) |
14291         (ato.name = 'dimension value')
14292       )) >= 1;
14293	WR4 : SIZEOF (QUERY (dcr <* USEDIN (SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
14294         'DRAUGHTING_CALLOUT_RELATIONSHIP.' +
14295         'RELATING_DRAUGHTING_CALLOUT') |
14296         ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
14297          'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN TYPEOF (dcr)) AND
14298         (dcr.name = 'prefix') )) <= 1;
14299	WR5 : SIZEOF (QUERY (dcr <* USEDIN (SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
14300         'DRAUGHTING_CALLOUT_RELATIONSHIP.' +
14301         'RELATING_DRAUGHTING_CALLOUT') |
14302         ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
14303          'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN TYPEOF (dcr)) AND
14304         (dcr.name = 'suffix') )) <= 1;
14305	WR6 : NOT((SIZEOF (QUERY (ato <* QUERY (con <* SELF.contents |
14306         ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_TEXT_OCCURRENCE'
14307             IN TYPEOF(con)) ) |
14308         (ato.name = 'prefix text')
14309       )) > 0)) OR
14310       (SIZEOF (QUERY (dcr <* USEDIN (SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
14311                               'DRAUGHTING_CALLOUT_RELATIONSHIP.' +
14312                               'RELATING_DRAUGHTING_CALLOUT') |
14313         ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
14314          'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN TYPEOF (dcr)) AND
14315         (dcr.name = 'prefix') )) = 1);
14316	WR7 : NOT(SIZEOF (QUERY (ato <* QUERY (con <* SELF.contents |
14317         ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_TEXT_OCCURRENCE'
14318             IN TYPEOF(con))) |
14319         (ato.name = 'suffix text')
14320       )) > 0) OR
14321       (SIZEOF (QUERY (dcr <* USEDIN (SELF, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
14322                               'DRAUGHTING_CALLOUT_RELATIONSHIP.' +
14323                               'RELATING_DRAUGHTING_CALLOUT') |
14324         ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
14325          'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN TYPEOF (dcr)) AND
14326            (dcr.name = 'suffix') )) = 1);
14327END_ENTITY;
14328
14329
14330ENTITY structured_inter_stratum_feature_template
14331	SUBTYPE OF (inter_stratum_feature_template, stratum_stack_dependent_template);
14332END_ENTITY;
14333
14334
14335ENTITY structured_layout_component
14336	ABSTRACT SUPERTYPE OF (ONEOF (footprint_occurrence, material_removal_structured_component, multi_stratum_printed_component, multi_stratum_special_symbol_component, padstack_occurrence, single_stratum_printed_component, single_stratum_special_symbol_component))
14337	SUBTYPE OF (assembly_group_component);
14338END_ENTITY;
14339
14340
14341ENTITY structured_layout_component_sub_assembly_relationship
14342	SUPERTYPE OF (footprint_occurrence_product_definition_relationship)
14343	SUBTYPE OF (next_assembly_usage_occurrence_relationship);
14344WHERE
14345	WR1 : SELF\product_definition_relationship.related_product_definition :<>:
14346        SELF\product_definition_relationship.relating_product_definition;
14347END_ENTITY;
14348
14349
14350ENTITY structured_layout_component_sub_assembly_relationship_with_component
14351	SUBTYPE OF (structured_layout_component_sub_assembly_relationship, assembly_component);
14352DERIVE
14353	SELF\product_definition_relationship.related_product_definition : assembly_component := SELF;
14354END_ENTITY;
14355
14356
14357ENTITY structured_printed_part_template
14358	ABSTRACT SUPERTYPE OF (ONEOF (single_stratum_printed_part_template, multi_stratum_printed_part_template))
14359	SUBTYPE OF (printed_part_template, structured_template);
14360END_ENTITY;
14361
14362
14363ENTITY structured_printed_part_template_terminal
14364	SUBTYPE OF (printed_part_template_terminal);
14365END_ENTITY;
14366
14367
14368ENTITY structured_template
14369	ABSTRACT SUPERTYPE OF (ONEOF (single_stratum_structured_template, multi_stratum_structured_template))
14370	SUBTYPE OF (geometric_template);
14371END_ENTITY;
14372
14373
14374ENTITY structured_text_composition
14375	SUBTYPE OF (compound_representation_item);
14376END_ENTITY;
14377
14378
14379ENTITY structured_text_representation
14380	SUBTYPE OF (representation);
14381	SELF\representation.items : SET [1:?] OF string_representation_item_select;
14382END_ENTITY;
14383
14384
14385ENTITY styled_item
14386	SUBTYPE OF (representation_item);
14387	styles : SET [1:?] OF presentation_style_assignment;
14388	item : representation_item;
14389WHERE
14390	WR1 : (SIZEOF(SELF.styles) = 1)
14391               XOR
14392         (SIZEOF(QUERY(pres_style <* SELF.styles |
14393         NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
14394              'PRESENTATION_STYLE_BY_CONTEXT' IN
14395         TYPEOF(pres_style))
14396         )) = 0);
14397END_ENTITY;
14398
14399
14400ENTITY subedge
14401	SUBTYPE OF (edge);
14402	parent_edge : edge;
14403END_ENTITY;
14404
14405
14406ENTITY subface
14407	SUBTYPE OF (face);
14408	parent_face : face;
14409WHERE
14410	WR1 : NOT (mixed_loop_type_set(list_to_set(list_face_loops(SELF)) +
14411              list_to_set(list_face_loops(parent_face))));
14412END_ENTITY;
14413
14414
14415ENTITY supplied_part_relationship
14416	SUBTYPE OF (product_definition_relationship);
14417END_ENTITY;
14418
14419
14420ENTITY surface
14421	SUPERTYPE OF (ONEOF (elementary_surface, swept_surface, bounded_surface, offset_surface, surface_replica))
14422	SUBTYPE OF (geometric_representation_item);
14423END_ENTITY;
14424
14425
14426ENTITY surface_condition_callout
14427	SUBTYPE OF (draughting_callout);
14428WHERE
14429	WR1 : SIZEOF ( QUERY ( c <* SELF.contents | SIZEOF (
14430         ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'ANNOTATION_CURVE_OCCURRENCE' ,
14431         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'ANNOTATION_SYMBOL_OCCURRENCE' ,
14432         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'ANNOTATION_TEXT_OCCURRENCE']* TYPEOF
14433         ( c ) ) <>1 ) ) =0;
14434END_ENTITY;
14435
14436
14437ENTITY surface_curve
14438	SUPERTYPE OF ((ONEOF (intersection_curve, seam_curve) ANDOR bounded_surface_curve))
14439	SUBTYPE OF (curve);
14440	curve_3d : curve;
14441	associated_geometry : LIST [1:2] OF pcurve_or_surface;
14442	master_representation : preferred_surface_curve_representation;
14443DERIVE
14444	basis_surface : SET [1:2] OF surface := get_basis_surface(SELF);
14445WHERE
14446	WR1 : curve_3d.dim = 3;
14447	WR2 : ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PCURVE' IN TYPEOF(associated_geometry[1])) OR
14448                        (master_representation <> pcurve_s1);
14449	WR3 : ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PCURVE' IN TYPEOF(associated_geometry[2])) OR
14450                        (master_representation <> pcurve_s2);
14451	WR4 : NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PCURVE' IN TYPEOF(curve_3d));
14452END_ENTITY;
14453
14454
14455ENTITY surface_curve_swept_area_solid
14456	SUBTYPE OF (swept_area_solid);
14457	directrix : curve;
14458	start_param : REAL;
14459	end_param : REAL;
14460	reference_surface : surface;
14461WHERE
14462	WR1 : (NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_CURVE' IN TYPEOF(directrix))) OR
14463          (reference_surface IN (directrix\surface_curve.basis_surface));
14464END_ENTITY;
14465
14466
14467ENTITY surface_of_linear_extrusion
14468	SUBTYPE OF (swept_surface);
14469	extrusion_axis : vector;
14470END_ENTITY;
14471
14472
14473ENTITY surface_of_revolution
14474	SUBTYPE OF (swept_surface);
14475	axis_position : axis1_placement;
14476DERIVE
14477	axis_line : line := representation_item('')||
14478                     geometric_representation_item()|| curve()||
14479                     line(axis_position.location, representation_item('')||
14480                     geometric_representation_item()||
14481                     vector(axis_position.z, 1.0));
14482END_ENTITY;
14483
14484
14485ENTITY surface_patch
14486	SUBTYPE OF (founded_item);
14487	parent_surface : bounded_surface;
14488	u_transition : transition_code;
14489	v_transition : transition_code;
14490	u_sense : BOOLEAN;
14491	v_sense : BOOLEAN;
14492INVERSE
14493	using_surfaces: BAG [1:?] OF rectangular_composite_surface FOR segments;
14494WHERE
14495	WR1 : (NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_BOUNDED_SURFACE'
14496                 IN TYPEOF(parent_surface)));
14497END_ENTITY;
14498
14499
14500ENTITY surface_prepped_terminal
14501	SUBTYPE OF (altered_package_terminal);
14502END_ENTITY;
14503
14504
14505ENTITY surface_profile_tolerance
14506	SUBTYPE OF (geometric_tolerance);
14507WHERE
14508	WR1 : NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)) OR ( SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 3);
14509END_ENTITY;
14510
14511
14512ENTITY surface_rendering_properties;
14513	rendered_colour : colour;
14514END_ENTITY;
14515
14516
14517ENTITY surface_replica
14518	SUBTYPE OF (surface);
14519	parent_surface : surface;
14520	transformation : cartesian_transformation_operator_3d;
14521WHERE
14522	WR1 : acyclic_surface_replica(SELF, parent_surface);
14523END_ENTITY;
14524
14525
14526ENTITY surface_side_style
14527	SUBTYPE OF (founded_item);
14528	name : label;
14529	styles : SET [1:7] OF surface_style_element_select;
14530WHERE
14531	WR1 : SIZEOF(QUERY( style1 <* SELF.styles |
14532           SIZEOF(QUERY( style2 <* SELF.styles - style1 |
14533           TYPEOF(style1) = TYPEOF(style2)
14534           )) > 0
14535           )) = 0;
14536END_ENTITY;
14537
14538
14539ENTITY surface_style_boundary
14540	SUBTYPE OF (founded_item);
14541	style_of_boundary : curve_or_render;
14542END_ENTITY;
14543
14544
14545ENTITY surface_style_control_grid
14546	SUBTYPE OF (founded_item);
14547	style_of_control_grid : curve_or_render;
14548END_ENTITY;
14549
14550
14551ENTITY surface_style_fill_area
14552	SUBTYPE OF (founded_item);
14553	fill_area : fill_area_style;
14554END_ENTITY;
14555
14556
14557ENTITY surface_style_parameter_line
14558	SUBTYPE OF (founded_item);
14559	style_of_parameter_lines : curve_or_render;
14560	direction_counts : SET [1:2] OF direction_count_select;
14561WHERE
14562	WR1 : (HIINDEX(SELF.direction_counts) = 1)
14563                        XOR
14564         (TYPEOF(SELF.direction_counts[1]) <>
14565          TYPEOF(SELF.direction_counts[2]));
14566END_ENTITY;
14567
14568
14569ENTITY surface_style_reflectance_ambient;
14570	ambient_reflectance : REAL;
14571END_ENTITY;
14572
14573
14574ENTITY surface_style_reflectance_ambient_diffuse
14575	SUBTYPE OF (surface_style_reflectance_ambient);
14576	diffuse_reflectance : REAL;
14577END_ENTITY;
14578
14579
14580ENTITY surface_style_reflectance_ambient_diffuse_specular
14581	SUBTYPE OF (surface_style_reflectance_ambient_diffuse);
14582	specular_reflectance : REAL;
14583	specular_exponent : REAL;
14584	specular_colour : colour;
14585END_ENTITY;
14586
14587
14588ENTITY surface_style_rendering;
14589	rendering_method : shading_surface_method;
14590	surface_colour : colour;
14591END_ENTITY;
14592
14593
14594ENTITY surface_style_rendering_with_properties
14595	SUBTYPE OF (surface_style_rendering);
14596	properties : SET [1:2] OF rendering_properties_select;
14597WHERE
14598	WR1 : (HIINDEX(SELF.properties) = 1)
14599                   XOR
14600         (TYPEOF(SELF.properties[1]) <> TYPEOF(SELF.properties[2]));
14601END_ENTITY;
14602
14603
14604ENTITY surface_style_segmentation_curve
14605	SUBTYPE OF (founded_item);
14606	style_of_segmentation_curve : curve_or_render;
14607END_ENTITY;
14608
14609
14610ENTITY surface_style_silhouette
14611	SUBTYPE OF (founded_item);
14612	style_of_silhouette : curve_or_render;
14613END_ENTITY;
14614
14615
14616ENTITY surface_style_transparent;
14617	transparency : REAL;
14618WHERE
14619	WR1 : {0.0 <= transparency <= 1.0};
14620END_ENTITY;
14621
14622
14623ENTITY surface_style_usage
14624	SUBTYPE OF (founded_item);
14625	side : surface_side;
14626	style : surface_side_style_select;
14627END_ENTITY;
14628
14629
14630ENTITY surface_texture_representation
14631	SUBTYPE OF (representation);
14632WHERE
14633	WR1 : SIZEOF ( QUERY ( i <* SELF.items | SIZEOF (
14634        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'MEASURE_REPRESENTATION_ITEM' ,
14635        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'VALUE_RANGE' , 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
14636        'DESCRIPTIVE_REPRESENTATION_ITEM']* TYPEOF ( i ) ) <>1 ) )
14637        =0;
14638	WR2 : ( SIZEOF ( QUERY ( i <* SELF.items | 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
14639        'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF ( i ) ) ) =1 )
14640        AND ( SIZEOF ( QUERY ( i <* SELF.items | (
14641        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'DESCRIPTIVE_REPRESENTATION_ITEM' IN
14642        TYPEOF ( i ) ) AND ( i.name = 'measuring method' ) ) ) =1 );
14643	WR3 : SIZEOF ( QUERY ( i <* SELF.items | SIZEOF (
14644        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'MEASURE_REPRESENTATION_ITEM' ,
14645        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'VALUE_RANGE']* TYPEOF ( i ) ) =1 ) )
14646        >0;
14647	WR4 : ( SIZEOF ( USEDIN ( SELF ,
14648        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'REPRESENTATION_RELATIONSHIP.'+
14649        'REP_1' ) ) <=1 ) AND ( SIZEOF ( USEDIN ( SELF ,
14650        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'REPRESENTATION_RELATIONSHIP.'+
14651        'REP_2' ) ) =0 ) AND ( SIZEOF ( QUERY ( rr <* USEDIN ( SELF
14652        , 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'REPRESENTATION_RELATIONSHIP.'+
14653        'REP_1' ) | rr. rep_2.name = 'measuring direction' ) ) =
14654        SIZEOF ( USEDIN ( SELF ,
14655        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'REPRESENTATION_RELATIONSHIP.'+
14656        'REP_1' ) ) );
14657	WR5 : ( SIZEOF ( USEDIN ( SELF ,
14658        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+
14659        'USED_REPRESENTATION' ) ) =1 ) AND ( SIZEOF ( QUERY ( pdr
14660        <* USEDIN ( SELF ,
14661        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+
14662        'USED_REPRESENTATION' ) | SIZEOF ( QUERY ( gpa <* USEDIN (
14663        pdr. definition ,
14664        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'GENERAL_PROPERTY_ASSOCIATION.'+
14665        'DERIVED_DEFINITION' ) | ( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
14666        'GENERAL_PROPERTY' IN TYPEOF ( gpa. base_definition ) ) AND
14667        ( gpa. base_definition.name ='surface_condition' ) ) ) =1 )
14668        ) =1 );
14669END_ENTITY;
14670
14671
14672ENTITY surfaced_open_shell
14673	SUBTYPE OF (open_shell);
14674WHERE
14675	WR1 : SIZEOF(QUERY(q <* SELF\connected_face_set.cfs_faces |
14676         NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE_SURFACE' IN TYPEOF(q)))) = 0;
14677END_ENTITY;
14678
14679
14680ENTITY swept_area_solid
14681	SUPERTYPE OF (ONEOF (revolved_area_solid, extruded_area_solid, surface_curve_swept_area_solid))
14682	SUBTYPE OF (solid_model);
14683	swept_area : curve_bounded_surface;
14684WHERE
14685	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PLANE' IN TYPEOF(swept_area.basis_surface);
14686END_ENTITY;
14687
14688
14689ENTITY swept_disk_solid
14690	SUBTYPE OF (solid_model);
14691	directrix : curve;
14692	radius : positive_length_measure;
14693	inner_radius : OPTIONAL positive_length_measure;
14694	start_param : REAL;
14695	end_param : REAL;
14696WHERE
14697	WR1 : directrix.dim = 3;
14698	WR2 : (NOT EXISTS(inner_radius)) OR (radius > inner_radius);
14699END_ENTITY;
14700
14701
14702ENTITY swept_face_solid
14703	SUPERTYPE OF (ONEOF (extruded_face_solid, revolved_face_solid))
14704	SUBTYPE OF (solid_model);
14705	swept_face : face_surface;
14706WHERE
14707	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PLANE' IN TYPEOF(swept_face.face_geometry);
14708END_ENTITY;
14709
14710
14711ENTITY swept_surface
14712	SUPERTYPE OF (ONEOF (surface_of_linear_extrusion, surface_of_revolution))
14713	SUBTYPE OF (surface);
14714	swept_curve : curve;
14715END_ENTITY;
14716
14717
14718ENTITY symbol
14719	SUBTYPE OF (representation_item);
14720END_ENTITY;
14721
14722
14723ENTITY symbol_colour;
14724	colour_of_symbol : colour;
14725END_ENTITY;
14726
14727
14728ENTITY symbol_representation
14729	SUBTYPE OF (representation);
14730END_ENTITY;
14731
14732
14733ENTITY symbol_representation_map
14734	SUBTYPE OF (representation_map);
14735	SELF\representation_map.mapped_representation : symbol_representation;
14736	SELF\representation_map.mapping_origin : axis2_placement;
14737END_ENTITY;
14738
14739
14740ENTITY symbol_style
14741	SUBTYPE OF (founded_item);
14742	name : label;
14743	style_of_symbol : symbol_style_select;
14744END_ENTITY;
14745
14746
14747ENTITY symbol_target
14748	SUBTYPE OF (geometric_representation_item);
14749	placement : axis2_placement;
14750	x_scale : positive_ratio_measure;
14751	y_scale : positive_ratio_measure;
14752END_ENTITY;
14753
14754
14755ENTITY symmetric_shape_aspect
14756	SUBTYPE OF (shape_aspect);
14757INVERSE
14758	basis_relationships: SET [1:?] OF shape_aspect_relationship FOR relating_shape_aspect;
14759WHERE
14760	WR1 : SIZEOF (QUERY (x<*SELF\symmetric_shape_aspect.basis_relationships |
14761       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CENTRE_OF_SYMMETRY' IN TYPEOF
14762       (x\shape_aspect_relationship.related_shape_aspect)))>=1;
14763END_ENTITY;
14764
14765
14766ENTITY symmetry_tolerance
14767	SUBTYPE OF (geometric_tolerance_with_datum_reference);
14768WHERE
14769	WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 3;
14770END_ENTITY;
14771
14772
14773ENTITY table_representation_item
14774	SUBTYPE OF (compound_representation_item);
14775WHERE
14776	WR1 : SIZEOF(QUERY(itet <* SELF\compound_representation_item.item_element |
14777        NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ROW_REPRESENTATION_ITEM' IN TYPEOF(itet))
14778            )) = 0;
14779END_ENTITY;
14780
14781
14782ENTITY tactile_appearance_representation
14783	SUBTYPE OF (representation);
14784WHERE
14785	WR1 : SIZEOF ( QUERY ( i <* SELF.items | SIZEOF (
14786        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'MEASURE_REPRESENTATION_ITEM' ,
14787        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'VALUE_RANGE']* TYPEOF ( i ) ) <>1 )) =0;
14788	WR2 : SIZEOF ( QUERY ( i <* SELF.items | name ='depth' ) ) <=1;
14789	WR3 : ( SIZEOF ( USEDIN ( SELF ,
14790        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+
14791        'USED_REPRESENTATION' ) ) =1 ) AND ( SIZEOF ( QUERY ( pdr
14792        <* USEDIN ( SELF ,
14793        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+
14794        'USED_REPRESENTATION' ) | SIZEOF ( QUERY ( gpa <* USEDIN (
14795        pdr. definition ,
14796        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'GENERAL_PROPERTY_ASSOCIATION.'+
14797        'DERIVED_DEFINITION' ) | ( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
14798        'GENERAL_PROPERTY' IN TYPEOF ( gpa. base_definition ) ) AND
14799        ( gpa. base_definition.name ='surface_condition' ) ) ) =1 )) =1 );
14800END_ENTITY;
14801
14802
14803ENTITY tagged_text_format
14804	SUBTYPE OF (representation_context);
14805END_ENTITY;
14806
14807
14808ENTITY tagged_text_item
14809	SUBTYPE OF (descriptive_representation_item);
14810END_ENTITY;
14811
14812
14813ENTITY tangent
14814	SUBTYPE OF (derived_shape_aspect);
14815WHERE
14816	WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1;
14817END_ENTITY;
14818
14819
14820ENTITY teardrop_by_angle_template
14821	SUBTYPE OF (teardrop_template);
14822END_ENTITY;
14823
14824
14825ENTITY teardrop_by_length_template
14826	SUBTYPE OF (teardrop_template);
14827END_ENTITY;
14828
14829
14830ENTITY teardrop_template
14831	ABSTRACT SUPERTYPE OF (ONEOF (snowball_template, teardrop_by_angle_template, teardrop_by_length_template))
14832	SUBTYPE OF (parametric_template, single_stratum_template);
14833END_ENTITY;
14834
14835
14836ENTITY template_material_cross_section_boundary
14837	SUBTYPE OF (shape_aspect);
14838END_ENTITY;
14839
14840
14841ENTITY terminator_symbol
14842	SUBTYPE OF (annotation_symbol_occurrence);
14843	annotated_curve : annotation_curve_occurrence;
14844END_ENTITY;
14845
14846
14847ENTITY tertiary_orientation_feature
14848	SUBTYPE OF (shape_aspect);
14849WHERE
14850	WR1 : SELF.product_definitional = TRUE;
14851END_ENTITY;
14852
14853
14854ENTITY test_method_based_parameter_assignment
14855	SUBTYPE OF (parameter_assignment);
14856END_ENTITY;
14857
14858
14859ENTITY test_point_part_feature
14860	SUBTYPE OF (part_tooling_feature);
14861END_ENTITY;
14862
14863
14864ENTITY text_font;
14865	id : identifier;
14866	name : label;
14867	description : text;
14868INVERSE
14869	glyphs: SET [1:?] OF character_glyph_font_usage FOR font;
14870END_ENTITY;
14871
14872
14873ENTITY text_font_family;
14874	id : identifier;
14875	name : label;
14876	description : text;
14877INVERSE
14878	fonts: SET [1:?] OF text_font_in_family FOR family;
14879END_ENTITY;
14880
14881
14882ENTITY text_font_in_family;
14883	font : text_font;
14884	family : text_font_family;
14885END_ENTITY;
14886
14887
14888ENTITY text_literal
14889	SUBTYPE OF (geometric_representation_item);
14890	literal : presentable_text;
14891	placement : axis2_placement;
14892	alignment : text_alignment;
14893	path : text_path;
14894	font : font_select;
14895END_ENTITY;
14896
14897
14898ENTITY text_literal_with_associated_curves
14899	SUBTYPE OF (text_literal);
14900	associated_curves : SET [1:?] OF curve;
14901END_ENTITY;
14902
14903
14904ENTITY text_literal_with_blanking_box
14905	SUBTYPE OF (text_literal);
14906	blanking : planar_box;
14907END_ENTITY;
14908
14909
14910ENTITY text_literal_with_delineation
14911	SUBTYPE OF (text_literal);
14912	delineation : text_delineation;
14913END_ENTITY;
14914
14915
14916ENTITY text_literal_with_extent
14917	SUBTYPE OF (text_literal);
14918	extent : planar_extent;
14919END_ENTITY;
14920
14921
14922ENTITY text_string_representation
14923	SUBTYPE OF (representation);
14924	SELF\representation.items : SET [1:?] OF text_string_representation_item;
14925WHERE
14926	WR1 : SIZEOF (
14927         QUERY (item <* SELF\representation.items |
14928           NOT (SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.TEXT_LITERAL',
14929                         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_TEXT',
14930                         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_TEXT_CHARACTER',
14931                         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DEFINED_CHARACTER_GLYPH',
14932                         'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMPOSITE_TEXT'] *
14933                 TYPEOF (item)) = 0)
14934         )) >= 1;
14935	WR2 : SIZEOF (
14936         QUERY (a2p <*
14937           QUERY (item <* SELF\representation.items |
14938             'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AXIS2_PLACEMENT' IN TYPEOF (item)) |
14939           NOT ((SIZEOF (
14940             QUERY (at <*
14941               QUERY (item <* SELF\representation.items |
14942                  'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
14943                  'ANNOTATION_TEXT' IN TYPEOF (item)) |
14944               (at\mapped_item.mapping_target :=: a2p))) >= 1) OR
14945           (SIZEOF (
14946             QUERY (atc <*
14947               QUERY (item <* SELF\representation.items |
14948                 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
14949                 'ANNOTATION_TEXT_CHARACTER' IN TYPEOF (item)) |
14950               (atc\mapped_item.mapping_target :=: a2p))) >= 1)
14951          ))) = 0;
14952END_ENTITY;
14953
14954
14955ENTITY text_style
14956	SUBTYPE OF (founded_item);
14957	name : label;
14958	character_appearance : character_style_select;
14959END_ENTITY;
14960
14961
14962ENTITY text_style_for_defined_font;
14963	text_colour : colour;
14964END_ENTITY;
14965
14966
14967ENTITY text_style_with_box_characteristics
14968	SUBTYPE OF (text_style);
14969	characteristics : SET [1:4] OF box_characteristic_select;
14970WHERE
14971	WR1 : SIZEOF( QUERY( c1 <* SELF.characteristics |
14972           SIZEOF( QUERY( c2 <* SELF.characteristics - c1 |
14973           TYPEOF (c1) = TYPEOF (c2)
14974           )) > 0
14975           )) = 0;
14976END_ENTITY;
14977
14978
14979ENTITY text_style_with_mirror
14980	SUBTYPE OF (text_style);
14981	mirror_placement : axis2_placement;
14982END_ENTITY;
14983
14984
14985ENTITY text_style_with_spacing
14986	SUBTYPE OF (text_style);
14987	character_spacing : character_spacing_select;
14988END_ENTITY;
14989
14990
14991ENTITY thermal_component
14992	SUBTYPE OF (assembly_component);
14993END_ENTITY;
14994
14995
14996ENTITY thermal_feature
14997	SUBTYPE OF (shape_aspect);
14998END_ENTITY;
14999
15000
15001ENTITY thermal_isolation_removal_component
15002	SUBTYPE OF (material_removal_structured_component);
15003END_ENTITY;
15004
15005
15006ENTITY thermal_isolation_removal_template
15007	SUBTYPE OF (material_removal_structured_template);
15008END_ENTITY;
15009
15010
15011ENTITY thermal_network
15012	SUBTYPE OF (functional_unit);
15013END_ENTITY;
15014
15015
15016ENTITY thermal_network_node_definition
15017	SUBTYPE OF (network_node_definition);
15018END_ENTITY;
15019
15020
15021ENTITY thermal_requirement_allocation
15022	SUBTYPE OF (requirement_assignment);
15023END_ENTITY;
15024
15025
15026ENTITY thermal_resistance_measure_with_unit
15027	SUBTYPE OF (measure_with_unit);
15028WHERE
15029	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.THERMAL_RESISTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
15030END_ENTITY;
15031
15032
15033ENTITY thermal_resistance_unit
15034	SUBTYPE OF (derived_unit);
15035WHERE
15036	WR1 : derive_dimensional_exponents(SELF) =
15037        dimensional_exponents ( -1.0, -1.0, -3.0, 0.0, 1.0, 0.0, 0.0 );
15038END_ENTITY;
15039
15040
15041ENTITY thermodynamic_temperature_measure_with_unit
15042	SUBTYPE OF (measure_with_unit);
15043WHERE
15044	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.THERMODYNAMIC_TEMPERATURE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
15045END_ENTITY;
15046
15047
15048ENTITY thermodynamic_temperature_unit
15049	SUBTYPE OF (named_unit);
15050WHERE
15051	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);
15052END_ENTITY;
15053
15054
15055ENTITY thickened_face_solid
15056	SUBTYPE OF (solid_model);
15057	base_element : generalized_surface_select;
15058	offset1 : length_measure;
15059	offset2 : length_measure;
15060WHERE
15061	WR1 : NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE' IN TYPEOF(base_element)) AND
15062    (NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.BOUNDED_SURFACE' IN TYPEOF(base_element))));
15063	WR2 : offset1 <> offset2;
15064END_ENTITY;
15065
15066
15067ENTITY thickness_laminate_definition
15068	SUBTYPE OF (product_definition);
15069WHERE
15070	WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF,
15071                             'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
15072                             'PRODUCT_DEFINITION_RELATIONSHIP.' +
15073                             'RELATING_PRODUCT_DEFINITION') |
15074                             'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
15075                             'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN
15076                             TYPEOF (pdr))) = 1;
15077END_ENTITY;
15078
15079
15080ENTITY thickness_laminate_table
15081	SUBTYPE OF (zone_structural_makeup);
15082END_ENTITY;
15083
15084
15085ENTITY through_port_variable
15086	SUBTYPE OF (port_variable);
15087END_ENTITY;
15088
15089
15090ENTITY tiebar_printed_component
15091	SUBTYPE OF (printed_component, structured_layout_component);
15092END_ENTITY;
15093
15094
15095ENTITY tile_area_template
15096	SUBTYPE OF (fill_area_template);
15097END_ENTITY;
15098
15099
15100ENTITY time_interval;
15101	id : identifier;
15102	name : label;
15103	description : OPTIONAL text;
15104END_ENTITY;
15105
15106
15107ENTITY time_interval_assignment
15108	ABSTRACT SUPERTYPE;
15109	assigned_time_interval : time_interval;
15110	role : time_interval_role;
15111END_ENTITY;
15112
15113
15114ENTITY time_interval_based_effectivity
15115	SUBTYPE OF (effectivity);
15116	effectivity_period : time_interval;
15117END_ENTITY;
15118
15119
15120ENTITY time_interval_relationship;
15121	name : label;
15122	description : OPTIONAL text;
15123	relating_time_interval : time_interval;
15124	related_time_interval : time_interval;
15125END_ENTITY;
15126
15127
15128ENTITY time_interval_role;
15129	name : label;
15130	description : OPTIONAL text;
15131END_ENTITY;
15132
15133
15134ENTITY time_interval_with_bounds
15135	SUBTYPE OF (time_interval);
15136	primary_bound : OPTIONAL date_time_or_event_occurrence;
15137	secondary_bound : OPTIONAL date_time_or_event_occurrence;
15138	duration : OPTIONAL time_measure_with_unit;
15139WHERE
15140	WR1 : NOT (EXISTS(secondary_bound) AND EXISTS(duration));
15141	WR2 : EXISTS(primary_bound) OR EXISTS(secondary_bound);
15142END_ENTITY;
15143
15144
15145ENTITY time_measure_with_unit
15146	SUBTYPE OF (measure_with_unit);
15147WHERE
15148	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.TIME_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
15149END_ENTITY;
15150
15151
15152ENTITY time_unit
15153	SUBTYPE OF (named_unit);
15154WHERE
15155	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);
15156END_ENTITY;
15157
15158
15159ENTITY tolerance_value;
15160	lower_bound : measure_with_unit;
15161	upper_bound : measure_with_unit;
15162DERIVE
15163	lbvc : REAL := lower_bound\measure_with_unit.value_component;
15164	ubvc : REAL := upper_bound\measure_with_unit.value_component;
15165WHERE
15166	WR1 : ubvc > lbvc;
15167	WR2 : upper_bound\measure_with_unit.unit_component =
15168        lower_bound\measure_with_unit.unit_component;
15169END_ENTITY;
15170
15171
15172ENTITY tolerance_zone
15173	SUBTYPE OF (shape_aspect);
15174	defining_tolerance : SET [1:?] OF geometric_tolerance;
15175	form : tolerance_zone_form;
15176END_ENTITY;
15177
15178
15179ENTITY tolerance_zone_boundary
15180	SUBTYPE OF (shape_aspect);
15181WHERE
15182	WR1 : SELF\shape_aspect.product_definitional = False;
15183END_ENTITY;
15184
15185
15186ENTITY tolerance_zone_definition
15187	SUPERTYPE OF (ONEOF (projected_zone_definition, runout_zone_definition));
15188	zone : tolerance_zone;
15189	boundaries : SET [1:?] OF shape_aspect;
15190END_ENTITY;
15191
15192
15193ENTITY tolerance_zone_explicit_opposing_boundary_set
15194	SUBTYPE OF (tolerance_zone_boundary);
15195END_ENTITY;
15196
15197
15198ENTITY tolerance_zone_form;
15199	name : label;
15200END_ENTITY;
15201
15202
15203ENTITY tolerance_zone_implicit_opposing_boundary_set
15204	SUBTYPE OF (tolerance_zone_boundary);
15205END_ENTITY;
15206
15207
15208ENTITY tool_registration_mark
15209	SUBTYPE OF (part_tooling_feature);
15210END_ENTITY;
15211
15212
15213ENTITY topological_representation_item
15214	SUPERTYPE OF (ONEOF (vertex, edge, face_bound, face, vertex_shell, wire_shell, connected_edge_set, connected_face_set, (loop ANDOR path)))
15215	SUBTYPE OF (representation_item);
15216END_ENTITY;
15217
15218
15219ENTITY toroidal_surface
15220	SUBTYPE OF (elementary_surface);
15221	major_radius : positive_length_measure;
15222	minor_radius : positive_length_measure;
15223END_ENTITY;
15224
15225
15226ENTITY torus
15227	SUBTYPE OF (geometric_representation_item);
15228	position : axis1_placement;
15229	major_radius : positive_length_measure;
15230	minor_radius : positive_length_measure;
15231WHERE
15232	WR1 : major_radius > minor_radius;
15233END_ENTITY;
15234
15235
15236ENTITY total_runout_tolerance
15237	SUBTYPE OF (geometric_tolerance_with_datum_reference);
15238WHERE
15239	WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 2;
15240END_ENTITY;
15241
15242
15243ENTITY trace_template
15244	SUPERTYPE OF (default_trace_template)
15245	SUBTYPE OF (parametric_template);
15246END_ENTITY;
15247
15248
15249ENTITY track_blended_solid
15250	ABSTRACT SUPERTYPE OF (track_blended_solid_with_end_conditions)
15251	SUBTYPE OF (edge_blended_solid);
15252WHERE
15253	WR1 : check_continuous_edges(SELF\edge_blended_solid.blended_edges);
15254END_ENTITY;
15255
15256
15257ENTITY track_blended_solid_with_end_conditions
15258	SUBTYPE OF (track_blended_solid);
15259	end_conditions : LIST [2:2] OF blend_end_condition_select;
15260WHERE
15261	WR1 : SIZEOF(TYPEOF(SELF) *
15262    ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SOLID_WITH_CONSTANT_RADIUS_EDGE_BLEND',
15263     'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SOLID_WITH_VARIABLE_RADIUS_EDGE_BLEND',
15264     'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SOLID_WITH_CHAMFERED_EDGES']) = 1;
15265	WR2 : NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX' IN TYPEOF(end_conditions[1]))
15266       AND ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX' IN TYPEOF(end_conditions[2])));
15267	WR3 : NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX' IN TYPEOF(end_conditions[1]))
15268       AND (NOT ((end_conditions[1]
15269            :=: SELF\edge_blended_solid.blended_edges[1].edge_start)
15270            XOR (end_conditions[1]
15271            :=: SELF\edge_blended_solid.blended_edges[1].edge_end))));
15272	WR4 : NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX' IN TYPEOF(end_conditions[2]))
15273       AND (NOT ((end_conditions[2]
15274            :=: SELF\edge_blended_solid.blended_edges[HIINDEX(
15275                SELF\edge_blended_solid.blended_edges)].edge_start)
15276            XOR (end_conditions[2]
15277            :=: SELF\edge_blended_solid.blended_edges[HIINDEX(
15278                SELF\edge_blended_solid.blended_edges)].edge_end))));
15279END_ENTITY;
15280
15281
15282ENTITY transform_port_variable
15283	SUBTYPE OF (port_variable);
15284END_ENTITY;
15285
15286
15287ENTITY transformation_with_derived_angle
15288	SUPERTYPE OF (ONEOF (draped_defined_transformation, laid_defined_transformation))
15289	SUBTYPE OF (item_defined_transformation);
15290	SELF\item_defined_transformation.transform_item_1 : angle_direction_reference_with_a2p3d_select;
15291	SELF\item_defined_transformation.transform_item_2 : axis2_placement_3d;
15292DERIVE
15293	orientation_angle : plane_angle_measure := derive_angle (
15294        SELF\item_defined_transformation.transform_item_1,
15295        SELF\item_defined_transformation.transform_item_2);
15296WHERE
15297	WR1 : (SELF\item_defined_transformation.transform_item_1\
15298            axis2_placement_3d.p[3].direction_ratios[1] =
15299            SELF\item_defined_transformation.transform_item_2\
15300            axis2_placement_3d.p[3].direction_ratios[1])
15301          AND
15302           (SELF\item_defined_transformation.transform_item_1\
15303            axis2_placement_3d.p[3].direction_ratios[2] =
15304            SELF\item_defined_transformation.transform_item_2\
15305            axis2_placement_3d.p[3].direction_ratios[2])
15306          AND
15307           (SELF\item_defined_transformation.transform_item_1\
15308            axis2_placement_3d.p[3].direction_ratios[3] =
15309            SELF\item_defined_transformation.transform_item_2\
15310            axis2_placement_3d.p[3].direction_ratios[3]);
15311END_ENTITY;
15312
15313
15314ENTITY trimmed_curve
15315	SUBTYPE OF (bounded_curve);
15316	basis_curve : curve;
15317	trim_1 : SET [1:2] OF trimming_select;
15318	trim_2 : SET [1:2] OF trimming_select;
15319	sense_agreement : BOOLEAN;
15320	master_representation : trimming_preference;
15321WHERE
15322	WR1 : (HIINDEX(trim_1) = 1) OR (TYPEOF(trim_1[1]) <> TYPEOF(trim_1[2]));
15323	WR2 : (HIINDEX(trim_2) = 1) OR (TYPEOF(trim_2[1]) <> TYPEOF(trim_2[2]));
15324END_ENTITY;
15325
15326
15327ENTITY two_direction_repeat_factor
15328	SUBTYPE OF (one_direction_repeat_factor);
15329	second_repeat_factor : vector;
15330END_ENTITY;
15331
15332
15333ENTITY type_qualifier;
15334	name : label;
15335END_ENTITY;
15336
15337
15338ENTITY unary_generic_expression
15339	ABSTRACT SUPERTYPE
15340	SUBTYPE OF (generic_expression);
15341	operand : generic_expression;
15342END_ENTITY;
15343
15344
15345ENTITY unary_numeric_expression
15346	ABSTRACT SUPERTYPE
15347	SUBTYPE OF (numeric_expression, unary_generic_expression);
15348	SELF\unary_generic_expression.operand : numeric_expression;
15349END_ENTITY;
15350
15351
15352ENTITY uncertainty_assigned_representation
15353	SUBTYPE OF (representation);
15354	uncertainty : SET [1:?] OF uncertainty_measure_with_unit;
15355END_ENTITY;
15356
15357
15358ENTITY uncertainty_measure_with_unit
15359	SUBTYPE OF (measure_with_unit);
15360	name : label;
15361	description : OPTIONAL text;
15362WHERE
15363	WR1 : valid_measure_value (SELF\measure_with_unit.value_component);
15364END_ENTITY;
15365
15366
15367ENTITY uncertainty_qualifier
15368	SUPERTYPE OF (ONEOF (standard_uncertainty, qualitative_uncertainty));
15369	measure_name : label;
15370	description : text;
15371END_ENTITY;
15372
15373
15374ENTITY uniform_curve
15375	SUBTYPE OF (b_spline_curve);
15376END_ENTITY;
15377
15378
15379ENTITY uniform_resource_identifier
15380	SUBTYPE OF (descriptive_representation_item);
15381END_ENTITY;
15382
15383
15384ENTITY uniform_surface
15385	SUBTYPE OF (b_spline_surface);
15386END_ENTITY;
15387
15388
15389ENTITY unplated_cutout_edge_segment
15390	SUBTYPE OF (cutout_edge_segment);
15391END_ENTITY;
15392
15393
15394ENTITY unplated_interconnect_module_edge_segment
15395	SUBTYPE OF (interconnect_module_edge_segment);
15396END_ENTITY;
15397
15398
15399ENTITY unrouted_conductive_interconnect_element
15400	SUBTYPE OF (conductive_interconnect_element);
15401END_ENTITY;
15402
15403
15404ENTITY unsupported_passage
15405	SUBTYPE OF (inter_stratum_feature);
15406END_ENTITY;
15407
15408
15409ENTITY unsupported_passage_dependent_land
15410	SUBTYPE OF (inter_stratum_feature_dependent_land);
15411END_ENTITY;
15412
15413
15414ENTITY unsupported_passage_template
15415	SUPERTYPE OF (ONEOF (counterbore_passage_template, countersunk_passage_template, blind_passage_template))
15416	SUBTYPE OF (continuous_template, inter_stratum_feature_template);
15417END_ENTITY;
15418
15419
15420ENTITY usage_association
15421	SUBTYPE OF (action_method_relationship);
15422	SELF\action_method_relationship.related_method : information_usage_right;
15423	SELF\action_method_relationship.relating_method : information_usage_right;
15424DERIVE
15425	related : information_usage_right := SELF\action_method_relationship.related_method;
15426	relating : information_usage_right := SELF\action_method_relationship.relating_method;
15427END_ENTITY;
15428
15429
15430ENTITY usage_concept_usage_relationship
15431	SUBTYPE OF (mapped_item, item_identified_representation_usage);
15432	SELF\item_identified_representation_usage.definition : shape_aspect;
15433	SELF\item_identified_representation_usage.used_representation : shape_representation;
15434DERIVE
15435	SELF\item_identified_representation_usage.identified_item : usage_concept_usage_relationship := SELF;
15436WHERE
15437	WR1 : SELF IN SELF\item_identified_representation_usage.used_representation.items;
15438END_ENTITY;
15439
15440
15441ENTITY usage_view_connection_zone_terminal_shape_relationship
15442	SUBTYPE OF (representation, representation_relationship_with_transformation);
15443	SELF\representation_relationship.rep_1 : shape_representation;
15444	SELF\representation_relationship.rep_2 : shape_representation;
15445UNIQUE
15446	UR1 : rep_1, rep_2;
15447WHERE
15448	WR1 : SELF\representation_relationship.rep_1 <>
15449        SELF\representation_relationship.rep_2;
15450END_ENTITY;
15451
15452
15453ENTITY user_defined_curve_font
15454	SUBTYPE OF (curve_style_font, mapped_item);
15455END_ENTITY;
15456
15457
15458ENTITY user_defined_marker
15459	SUBTYPE OF (mapped_item, pre_defined_marker);
15460END_ENTITY;
15461
15462
15463ENTITY user_defined_terminator_symbol
15464	SUBTYPE OF (mapped_item, pre_defined_symbol);
15465END_ENTITY;
15466
15467
15468ENTITY user_selected_elements
15469	SUBTYPE OF (representation_item);
15470	picked_items : SET [1:?] OF representation_item;
15471END_ENTITY;
15472
15473
15474ENTITY user_selected_shape_elements
15475	SUBTYPE OF (user_selected_elements);
15476WHERE
15477	WR1 : SIZEOF(QUERY(q <*
15478    SELF\user_selected_elements.picked_items | NOT
15479    ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHAPE_REPRESENTATION_ITEM'
15480    IN TYPEOF(q)))) = 0;
15481END_ENTITY;
15482
15483
15484ENTITY valid_range_property_definition_representation
15485	SUBTYPE OF (property_definition_representation);
15486END_ENTITY;
15487
15488
15489ENTITY value_range
15490	SUBTYPE OF (compound_representation_item);
15491WHERE
15492	WR1 : ( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'SET_REPRESENTATION_ITEM' IN TYPEOF ( item_element ) ) AND value_range_wr1 ( item_element );
15493	WR2 : value_range_wr2 ( item_element );
15494	WR3 : value_range_wr3 ( item_element );
15495END_ENTITY;
15496
15497
15498ENTITY value_representation_item
15499	SUBTYPE OF (representation_item);
15500	value_component : measure_value;
15501WHERE
15502	WR1 : SIZEOF (QUERY (rep <* using_representations (SELF) |
15503        NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GLOBAL_UNIT_ASSIGNED_CONTEXT'
15504        IN TYPEOF (rep.context_of_items)
15505        ))) = 0;
15506END_ENTITY;
15507
15508
15509ENTITY variable_semantics
15510	ABSTRACT SUPERTYPE;
15511END_ENTITY;
15512
15513
15514ENTITY variational_representation_item
15515	ABSTRACT SUPERTYPE OF (auxiliary_geometric_representation_item)
15516	SUBTYPE OF (representation_item);
15517WHERE
15518	WR1 : SIZEOF(QUERY(q <* using_representations(SELF) |
15519    NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VARIATIONAL_REPRESENTATION'
15520    IN TYPEOF(q)))) = 0;
15521	WR2 : SIZEOF(QUERY(q <* using_representations(SELF) |
15522    NOT (SELF IN q.items))) = 0;
15523END_ENTITY;
15524
15525
15526ENTITY vector
15527	SUBTYPE OF (geometric_representation_item);
15528	orientation : direction;
15529	magnitude : length_measure;
15530WHERE
15531	WR1 : magnitude >= 0.0;
15532END_ENTITY;
15533
15534
15535ENTITY vector_style
15536	SUBTYPE OF (curve_style, pre_defined_terminator_symbol);
15537END_ENTITY;
15538
15539
15540ENTITY velocity_measure_with_unit
15541	SUBTYPE OF (measure_with_unit);
15542WHERE
15543	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VELOCITY_UNIT' IN TYPEOF (SELF\measure_with_unit.unit_component);
15544END_ENTITY;
15545
15546
15547ENTITY velocity_unit
15548	SUBTYPE OF (derived_unit);
15549WHERE
15550	WR1 : derive_dimensional_exponents(SELF) =
15551       dimensional_exponents ( 1.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0 );
15552END_ENTITY;
15553
15554
15555ENTITY versioned_action_request;
15556	id : identifier;
15557	version : label;
15558	purpose : text;
15559	description : OPTIONAL text;
15560END_ENTITY;
15561
15562
15563ENTITY vertex
15564	SUBTYPE OF (topological_representation_item);
15565END_ENTITY;
15566
15567
15568ENTITY vertex_loop
15569	SUBTYPE OF (loop);
15570	loop_vertex : vertex;
15571END_ENTITY;
15572
15573
15574ENTITY vertex_point
15575	SUBTYPE OF (vertex, geometric_representation_item);
15576	vertex_geometry : point;
15577END_ENTITY;
15578
15579
15580ENTITY vertex_shell
15581	SUBTYPE OF (topological_representation_item);
15582	vertex_shell_extent : vertex_loop;
15583END_ENTITY;
15584
15585
15586ENTITY via
15587	ABSTRACT SUPERTYPE OF ((filled_via ANDOR ONEOF (blind_via, buried_via, interfacial_connection)))
15588	SUBTYPE OF (plated_passage);
15589END_ENTITY;
15590
15591
15592ENTITY via_template
15593	SUBTYPE OF (continuous_template, inter_stratum_feature_template);
15594END_ENTITY;
15595
15596
15597ENTITY view_volume
15598	SUBTYPE OF (founded_item);
15599	projection_type : central_or_parallel;
15600	projection_point : cartesian_point;
15601	view_plane_distance : length_measure;
15602	front_plane_distance : length_measure;
15603	front_plane_clipping : BOOLEAN;
15604	back_plane_distance : length_measure;
15605	back_plane_clipping : BOOLEAN;
15606	view_volume_sides_clipping : BOOLEAN;
15607	view_window : planar_box;
15608END_ENTITY;
15609
15610
15611ENTITY viewing_plane
15612	SUBTYPE OF (shape_aspect);
15613END_ENTITY;
15614
15615
15616ENTITY visual_appearance_representation
15617	SUBTYPE OF (representation);
15618WHERE
15619	WR1 : ( {3<= SIZEOF ( SELF.items ) <=9} ) AND ( SIZEOF ( QUERY (
15620        i <* items | ( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
15621        'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF ( i ) ) AND (
15622        i.name IN [ 'colour id' , 'colour name' , 'lustre' , 'pattern' , 'transparency', 'orientation'] ) )
15623        ) + SIZEOF ( QUERY ( i <* items | ( SIZEOF (
15624        ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'MEASURE_REPRESENTATION_ITEM' ,
15625        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'VALUE_RANGE']* TYPEOF ( i ) ) =1 )
15626        AND ( i.name IN ['refraction index' , 'opacity'] ) )
15627        ) + SIZEOF ( QUERY ( i <* items | (
15628        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'DOCUMENT_FILE' IN TYPEOF ( i ) )
15629        AND ( i.name IN [ 'texture map' ] ) )	)
15630        = SIZEOF ( SELF.items ) );
15631	WR2 : SIZEOF ( QUERY ( i <* SELF.items | i.name = 'colour id' )) =1;
15632	WR3 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='lustre' ) )=1;
15633	WR4 : SIZEOF ( QUERY ( i <* SELF.items | i.name = 'colour name') ) <=1;
15634	WR5 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='pattern' ) )<=1;
15635	WR6 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='transparency') ) <=1;
15636	WR7 : SIZEOF ( QUERY ( i <* SELF.items | i.name = 'texture map') ) <=1;
15637	WR8 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='refraction index' ) )<=1;
15638	WR9 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='opacity') ) <=1;
15639	WR10 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='orientation') ) <=1;
15640	WR11 : ( SIZEOF ( USEDIN ( SELF ,
15641        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+
15642        'USED_REPRESENTATION' ) ) =1 ) AND ( SIZEOF ( QUERY ( pdr
15643        <* USEDIN ( SELF ,
15644        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+
15645        'USED_REPRESENTATION' ) | SIZEOF ( QUERY ( gpa <* USEDIN (
15646        pdr. definition ,
15647        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+'GENERAL_PROPERTY_ASSOCIATION.'+
15648        'DERIVED_DEFINITION' ) | ( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+
15649        'GENERAL_PROPERTY' IN TYPEOF ( gpa. base_definition ) ) AND
15650        ( gpa. base_definition.name ='surface_condition' ) ) ) =1 )) =1 );
15651END_ENTITY;
15652
15653
15654ENTITY visual_orientation_feature
15655	SUBTYPE OF (shape_aspect);
15656END_ENTITY;
15657
15658
15659ENTITY volume_measure_with_unit
15660	SUBTYPE OF (measure_with_unit);
15661WHERE
15662	WR1 : 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VOLUME_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
15663END_ENTITY;
15664
15665
15666ENTITY volume_unit
15667	SUBTYPE OF (derived_unit);
15668WHERE
15669	WR1 : derive_dimensional_exponents(SELF) =
15670          dimensional_exponents ( 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 );
15671END_ENTITY;
15672
15673
15674ENTITY week_of_year_and_day_date
15675	SUBTYPE OF (date);
15676	week_component : week_in_year_number;
15677	day_component : OPTIONAL day_in_week_number;
15678END_ENTITY;
15679
15680
15681ENTITY wire_shell
15682	SUBTYPE OF (topological_representation_item);
15683	wire_shell_extent : SET [1:?] OF loop;
15684WHERE
15685	WR1 : NOT mixed_loop_type_set(wire_shell_extent);
15686END_ENTITY;
15687
15688
15689ENTITY wire_terminal
15690	SUBTYPE OF (package_terminal);
15691END_ENTITY;
15692
15693
15694ENTITY wire_terminal_template_definition
15695	SUBTYPE OF (package_terminal_template_definition);
15696END_ENTITY;
15697
15698
15699ENTITY year_month
15700	SUBTYPE OF (date);
15701	month_component : month_in_year_number;
15702END_ENTITY;
15703
15704
15705ENTITY zone_structural_makeup
15706	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))
15707	SUBTYPE OF (laminate_table);
15708END_ENTITY;
15709
15710
15711RULE alternative_solution_requires_solution_definition FOR (product_definition_formation);
15712    LOCAL
15713      solution_versions: SET OF product_definition_formation := [];
15714    END_LOCAL;
15715    solution_versions :=  QUERY( pdf <* product_definition_formation |
15716	  SIZEOF( QUERY( prpc <* USEDIN(pdf.of_product, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF' + '.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') |
15717      prpc.name = 'alternative solution')) = 1);
15718WHERE
15719	WR1 : SIZEOF( QUERY( pdf <* solution_versions |
15720        SIZEOF( QUERY( pd <* USEDIN(pdf, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF' + '.PRODUCT_DEFINITION.FORMATION') |
15721        pd.frame_of_reference.name = 'alternative definition')) <> 1))= 0;
15722END_RULE;
15723
15724RULE application_protocol_definition_required FOR (application_context);
15725
15726WHERE
15727	WR1 : SIZEOF( QUERY( ac <* application_context |
15728              (SIZEOF (QUERY (apd <* USEDIN(ac,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.APPLICATION_PROTOCOL_DEFINITION.APPLICATION') |
15729                (apd.application_interpreted_model_schema_name = 'ap210_electronic_assembly_interconnect_and_packaging_design')
15730                )) > 0)
15731              )) > 0;
15732END_RULE;
15733
15734RULE area_component_shape_constraint FOR (area_component);
15735
15736WHERE
15737	WR1 : SIZEOF( QUERY( ac <* area_component |
15738            NOT(SIZEOF (QUERY (pdr <* USEDIN(ac,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
15739              NOT(NOT(pdr\property_definition_representation.used_representation\representation.id = 'ac2dsm') OR
15740                      ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SINGLE_AREA_CSG_2D_SHAPE_REPRESENTATION' IN TYPEOF(pdr\property_definition_representation.used_representation)))
15741                )) = 0)
15742              )) = 0;
15743	WR2 : SIZEOF( QUERY( ac <* area_component |
15744          NOT(apeaid_is_base(ac)) OR
15745            NOT(SIZEOF (QUERY (pdr <* USEDIN(ac,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
15746              NOT(NOT(pdr\property_definition_representation.used_representation\representation.id = 'ac2dsm') OR
15747                      ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SINGLE_BOUNDARY_CSG_2D_SHAPE_REPRESENTATION' IN TYPEOF(pdr\property_definition_representation.used_representation)))
15748                )) = 0)
15749              )) = 0;
15750END_RULE;
15751
15752RULE breakdown_element_requires_product_definition FOR (product_definition_formation);
15753
15754WHERE
15755	WR1 : SIZEOF ( QUERY ( pdf <* product_definition_formation |
15756        ( SIZEOF ( QUERY ( prpc <* USEDIN ( pdf.of_product ,
15757        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS' ) |
15758	    prpc.name =  'functionality' ) ) =  1 ) AND
15759	    ( SIZEOF ( QUERY ( pd <* USEDIN ( pdf ,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_DEFINITION.FORMATION') |
15760	    pd.frame_of_reference.name =  'functional definition' ) ) <1 ) ) ) =  0;
15761	WR2 : SIZEOF ( QUERY ( pdf <* product_definition_formation |
15762        ( SIZEOF ( QUERY ( prpc <* USEDIN ( pdf.of_product ,
15763	    'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS' ) |
15764        prpc.name =  'conceptual design' ) ) =  1 ) AND
15765        ( SIZEOF (QUERY ( pd <* USEDIN ( pdf , 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_DEFINITION.FORMATION' ) |
15766        pd.frame_of_reference.name =  'conceptual definition' ) ) <1) ) ) =  0;
15767END_RULE;
15768
15769RULE cartesian_coordinate_system_constraint FOR (global_unit_assigned_context, geometric_representation_context);
15770LOCAL
15771   guac_inst : SET OF global_unit_assigned_context :=
15772               QUERY ( guac <* global_unit_assigned_context |
15773             ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
15774              'GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF (guac)));
15775END_LOCAL;
15776WHERE
15777	WR1 : SIZEOF (QUERY (guac <* guac_inst |
15778        NOT (SIZEOF (guac.units) <= 3))) = 0;
15779	WR2 : SIZEOF (QUERY (guac <* guac_inst | (NOT (
15780        (SIZEOF (QUERY (u <* guac.units |
15781        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LENGTH_UNIT'
15782        IN TYPEOF (u)))) = 1)
15783        AND
15784        (SIZEOF (QUERY (u <* guac.units |
15785     ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
15786         'PLANE_ANGLE_UNIT'
15787        IN TYPEOF (u)))) = 1)
15788        AND
15789        (SIZEOF (QUERY (u <* guac.units |
15790    ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
15791         'SOLID_ANGLE_UNIT'
15792        IN TYPEOF (u)) )) <= 1)
15793        )))) = 0;
15794	WR3 : SIZEOF( QUERY( grc <* guac_inst |
15795        NOT( (grc.coordinate_space_dimension = 2) OR
15796        (grc.coordinate_space_dimension = 3)))) = 0;
15797	WR4 : SIZEOF (QUERY (guac <* guac_inst |
15798        NOT (SIZEOF (QUERY (u <* guac.units |NOT(
15799    NOT((
15800     'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
15801     'PLANE_ANGLE_UNIT' IN TYPEOF(u)) AND
15802    ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
15803     'CONVERSION_BASED_UNIT' IN TYPEOF(u)) AND
15804     (u\conversion_based_unit.name = 'degree'))
15805   OR
15806       ((abs(u\conversion_based_unit.
15807           conversion_factor\measure_with_unit.value_component -
15808               0.0174532925) <= 0.001) AND
15809        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
15810         'PLANE_ANGLE_MEASURE_WITH_UNIT'
15811        IN TYPEOF(u\conversion_based_unit.conversion_factor)))
15812   ))) = 0)
15813   )) = 0;
15814END_RULE;
15815
15816RULE compatible_dimension FOR (cartesian_point, direction, representation_context, geometric_representation_context);
15817
15818WHERE
15819	WR1 : SIZEOF(QUERY(x <* cartesian_point| SIZEOF(QUERY
15820       (y <* geometric_representation_context | item_in_context(x,y) AND
15821       (HIINDEX(x.coordinates) <> y.coordinate_space_dimension))) > 0 )) =0;
15822	WR2 : SIZEOF(QUERY(x <* direction | SIZEOF( QUERY
15823       (y <* geometric_representation_context | item_in_context(x,y) AND
15824       (HIINDEX(x.direction_ratios) <> y.coordinate_space_dimension)))
15825       > 0 )) = 0;
15826END_RULE;
15827
15828RULE component_class_for_assembly_select FOR (composite_assembly_sequence_definition, next_assembly_usage_occurrence, product_related_product_category);
15829    LOCAL
15830      i,j,k :  INTEGER :=0;
15831      dkuhr :  LOGICAL :=TRUE;
15832      nnauo :  INTEGER :=0;
15833      nprpc :  INTEGER :=0;
15834      rp    :  product;
15835    END_LOCAL;
15836    REPEAT i:= LOINDEX (composite_assembly_sequence_definition) TO
15837               HIINDEX (composite_assembly_sequence_definition);
15838      nnauo := 0;
15839      REPEAT j:= LOINDEX (next_assembly_usage_occurrence) TO
15840                 HIINDEX (next_assembly_usage_occurrence);
15841        IF (composite_assembly_sequence_definition[i] =
15842          next_assembly_usage_occurrence[j].relating_product_definition) THEN
15843          rp := next_assembly_usage_occurrence[j].related_product_definition.
15844                formation.of_product;
15845          nprpc := 0;
15846          REPEAT k:= LOINDEX (product_related_product_category) TO
15847                     HIINDEX (product_related_product_category);
15848            IF ((rp IN product_related_product_category[k].products) AND
15849                (product_related_product_category[k].name IN ['ply',
15850                 'ply laminate', 'filament laminate', 'processed core',
15851                 'composite assembly'])) THEN
15852                nprpc := nprpc + 1;
15853            END_IF;
15854          END_REPEAT;
15855          IF (nprpc = 1) THEN
15856            nnauo := nnauo + 1;
15857          ELSE
15858            dkuhr := FALSE;
15859            ESCAPE;
15860          END_IF;
15861        END_IF;
15862      END_REPEAT;
15863      IF (dkuhr = FALSE) THEN
15864        ESCAPE;
15865      END_IF;
15866      IF(nnauo = 0) THEN
15867        dkuhr := FALSE;
15868        ESCAPE;
15869      END_IF;
15870    END_REPEAT;
15871WHERE
15872	WR1 : dkuhr;
15873END_RULE;
15874
15875RULE consistent_uncertainty FOR (global_uncertainty_assigned_context, qualified_representation_item, uncertainty_assigned_representation);
15876
15877WHERE
15878	WR1 : SIZEOF ( QUERY ( guac <* global_uncertainty_assigned_context |
15879    SIZEOF ( QUERY ( u1 <* guac.uncertainty |
15880	SIZEOF ( QUERY ( u2 <* guac.uncertainty | u2.name =  u1.name ) ) >1 ) ) >0 ) ) =  0;
15881	WR2 : SIZEOF ( QUERY ( uar <* uncertainty_assigned_representation |
15882	SIZEOF ( QUERY ( u1<* uar.uncertainty |
15883	SIZEOF ( QUERY ( u2 <* uar.uncertainty | u2.name =  u1.name ) ) >1 ) ) >0 ) ) =  0;
15884	WR3 : SIZEOF ( QUERY ( qri <* qualified_representation_item |
15885     SIZEOF ( QUERY ( u1 <* qri.qualifiers |
15886     ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF' + '.UNCERTAINTY_QUALIFIER' IN TYPEOF ( u1 ) ) AND
15887	( SIZEOF ( QUERY ( u2 <* qri.qualifiers |
15888     ( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF' + '.UNCERTAINTY_QUALIFIER' IN TYPEOF ( u2 ) ) AND
15889	( u2\uncertainty_qualifier.measure_name =  u1\uncertainty_qualifier.measure_name ) )
15890     ) >1 ) ) ) >0 ) ) =  0;
15891END_RULE;
15892
15893RULE constraint_definition_requires_constraint_category FOR (product_definition);
15894    LOCAL
15895      constraint_definitions: SET OF product_definition := [];
15896    END_LOCAL;
15897      constraint_definitions :=  QUERY( pd <* product_definition |
15898      (pd.frame_of_reference.name = 'design constraint definition'));
15899WHERE
15900	WR1 : SIZEOF ( QUERY ( pd <* constraint_definitions |
15901	    ( SIZEOF ( QUERY ( prpc <* USEDIN ( pd.formation.of_product ,
15902        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS' ) |
15903	    prpc. name ='requirement' ) ) =0 ) ) ) =0;
15904END_RULE;
15905
15906RULE design_constraint_requires_product_definition FOR (product_definition_formation);
15907
15908WHERE
15909	WR1 : SIZEOF ( QUERY ( pdf <* product_definition_formation | (
15910        SIZEOF ( QUERY ( prpc <* USEDIN ( pdf.of_product ,
15911        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS' ) |
15912	    prpc.name =  'requirement' ) ) >0 ) AND
15913        ( SIZEOF ( QUERY ( pd <* USEDIN ( pdf , 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_DEFINITION.FORMATION') |
15914	    pd.frame_of_reference.name = 'design constraint definition' ) ) <1 ) ) ) =  0;
15915END_RULE;
15916
15917RULE draughting_model_items_constraint FOR (draughting_model);
15918
15919WHERE
15920	WR1 : SIZEOF(QUERY(dm <* draughting_model |
15921        NOT(SIZEOF(QUERY(it1 <* dm\representation.items |
15922        (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_OCCURRENCE' IN TYPEOF(it1))
15923        AND
15924        NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'DRAUGHTING_ANNOTATION_OCCURRENCE' IN TYPEOF(it1)))
15925          )) = 0)
15926        )) = 0;
15927	WR2 : SIZEOF(QUERY(dm <* draughting_model |
15928        NOT(SIZEOF(QUERY(it1 <* dm\representation.items |
15929        (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DRAUGHTING_CALLOUT' IN TYPEOF(it1))
15930        AND
15931        NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DRAUGHTING_ELEMENTS' IN TYPEOF(it1)))
15932          )) = 0)
15933        )) = 0;
15934END_RULE;
15935
15936RULE external_version_assignments_are_valid FOR (applied_external_identification_assignment);
15937
15938WHERE
15939	WR1 : SIZEOF(QUERY(aia <* applied_external_identification_assignment |
15940        NOT external_version_assignment_is_valid(aia)))=0;
15941END_RULE;
15942
15943RULE material_for_coating_layer FOR (shape_aspect);
15944    LOCAL
15945      coating_layers: SET OF shape_aspect := [];
15946    END_LOCAL;
15947    coating_layers:= QUERY( r <* shape_aspect |
15948	  (r.name = 'coating layer') );
15949WHERE
15950	WR1 : SIZEOF( QUERY( r <* coating_layers |
15951	    SIZEOF(USEDIN(r , 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MATERIAL_DESIGNATION.DEFINITIONS'))<>1
15952        )) = 0;
15953END_RULE;
15954
15955RULE not_instantiable_pre_defined_surface_side_style FOR (pre_defined_surface_side_style);
15956
15957WHERE
15958	WR1 : SIZEOF (pre_defined_surface_side_style) = 0;
15959END_RULE;
15960
15961RULE plib_property_reference_requires_name_scope FOR (externally_defined_general_property);
15962    LOCAL
15963      known_sourced_properties : SET OF externally_defined_general_property;
15964    END_LOCAL;
15965      known_sourced_properties := QUERY( edc <* externally_defined_general_property |
15966	    'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'KNOWN_SOURCE' IN TYPEOF(edc.source) );
15967WHERE
15968	WR1 : SIZEOF ( QUERY ( edgp <* known_sourced_properties |
15969        ( SIZEOF ( QUERY ( edir <* USEDIN ( edgp, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'EXTERNALLY_DEFINED_ITEM_RELATIONSHIP.RELATING_ITEM' )|
15970        ( edir.name =  'name scope' ) AND
15971        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'EXTERNALLY_DEFINED_CLASS' IN  TYPEOF ( edir.related_item ) ) AND
15972        ( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'KNOWN_SOURCE' IN TYPEOF ( edir.related_item.source ) ) ) ) <>1 ) ) ) =  0;
15973END_RULE;
15974
15975RULE plib_property_reference_requires_version FOR (externally_defined_general_property);
15976	LOCAL
15977	  plib_properties : SET OF externally_defined_general_property := [];
15978	END_LOCAL;
15979	  plib_properties := QUERY ( edgp <* externally_defined_general_property |
15980		( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'KNOWN_SOURCE' IN TYPEOF ( edgp.source ) ) AND
15981		( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'KNOWN_SOURCE' + '.NAME' = 'ISO 13584 library' ) );
15982WHERE
15983	WR1 : SIZEOF( QUERY( edgp <* plib_properties |
15984		(SIZEOF( QUERY( edir <* USEDIN(edgp, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.ITEMS') |
15985		(edir.role.name = 'version') )) <> 1) )) = 0;
15986END_RULE;
15987
15988RULE ply_reference FOR (ply_laminate_sequence_definition, next_assembly_usage_occurrence, product_related_product_category);
15989    LOCAL
15990      i,j,k :  INTEGER;
15991      dkuhr :  LOGICAL := TRUE;
15992      nnauo :  INTEGER;
15993      nprpc :  INTEGER := 0;
15994      rp    :  product;
15995    END_LOCAL;
15996    REPEAT i:= LOINDEX (ply_laminate_sequence_definition) TO
15997               HIINDEX (ply_laminate_sequence_definition);
15998      nnauo := 0;
15999      REPEAT j:= LOINDEX (next_assembly_usage_occurrence) TO
16000                 HIINDEX (next_assembly_usage_occurrence);
16001        IF (ply_laminate_sequence_definition[i] =
16002          next_assembly_usage_occurrence[j].relating_product_definition) THEN
16003          rp := next_assembly_usage_occurrence[j].related_product_definition.
16004                formation.of_product;
16005          nprpc := 0;
16006          REPEAT k:= LOINDEX (product_related_product_category) TO
16007                     HIINDEX (product_related_product_category);
16008            IF ((product_related_product_category[k].name = 'ply') AND
16009                (rp IN product_related_product_category[k].products)) THEN
16010                nprpc := nprpc + 1;
16011            END_IF;
16012          END_REPEAT;
16013          IF (nprpc = 1) THEN
16014            nnauo := nnauo + 1;
16015          ELSE
16016            dkuhr := FALSE;
16017            ESCAPE;
16018          END_IF;
16019        END_IF;
16020      END_REPEAT;
16021      IF (dkuhr = FALSE) THEN
16022        ESCAPE;
16023      END_IF;
16024      IF(nnauo = 0) THEN
16025        dkuhr := FALSE;
16026        ESCAPE;
16027      END_IF;
16028    END_REPEAT;
16029WHERE
16030	WR1 : dkuhr;
16031END_RULE;
16032
16033RULE ply_stock_material_select FOR (product_related_product_category, make_from_usage_option);
16034  LOCAL
16035    i,j,k,kp :  INTEGER;
16036    dkuhr    :  LOGICAL;
16037    nmfuo    :  INTEGER;
16038    nprpc    :  INTEGER := 0;
16039    rp       :  product;
16040  END_LOCAL;
16041
16042  dkuhr := TRUE;
16043  REPEAT kp:= LOINDEX (product_related_product_category) TO
16044              HIINDEX (product_related_product_category);
16045
16046    IF (product_related_product_category[kp].name = 'ply') THEN
16047    REPEAT i:= LOINDEX (product_related_product_category[kp].products) TO
16048               HIINDEX (product_related_product_category[kp].products);
16049
16050      nmfuo := 0;
16051      REPEAT j:= LOINDEX (make_from_usage_option) TO
16052                 HIINDEX (make_from_usage_option);
16053
16054          rp := make_from_usage_option[j].related_product_definition.
16055                formation.of_product;
16056
16057        IF (product_related_product_category[kp].products[i] = rp) THEN
16058
16059          REPEAT k:= LOINDEX (product_related_product_category) TO
16060                     HIINDEX (product_related_product_category);
16061
16062            IF ((rp IN product_related_product_category[k].products) AND
16063                (product_related_product_category[k].name IN
16064                 ['isotropic material', 'filament assembly',
16065                  'discontinuous fiber assembly'])) THEN
16066                nprpc := nprpc + 1;
16067            END_IF;
16068
16069          END_REPEAT;
16070
16071          IF (nprpc = 1) THEN
16072            nmfuo := nmfuo + 1;
16073          ELSE
16074            dkuhr := FALSE;
16075            ESCAPE;
16076          END_IF;
16077
16078        END_IF;
16079
16080      END_REPEAT;
16081
16082      IF (dkuhr = FALSE) THEN
16083        ESCAPE;
16084      END_IF;
16085      IF(nmfuo <> 1) THEN
16086        dkuhr := FALSE;
16087        ESCAPE;
16088      END_IF;
16089
16090    END_REPEAT;
16091    END_IF;
16092
16093  END_REPEAT;
16094WHERE
16095	WR1 : dkuhr;
16096END_RULE;
16097
16098RULE product_concept_feature_requires_category FOR (product_concept_feature);
16099
16100WHERE
16101	WR1 : SIZEOF ( QUERY ( pcf <* product_concept_feature |
16102(SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'INCLUSION_PRODUCT_CONCEPT_FEATURE',
16103'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'CONDITIONAL_CONCEPT_FEATURE'] * TYPEOF(pcf)) = 0) AND
16104(SIZEOF ( QUERY ( aga <* USEDIN ( pcf , 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'APPLIED_GROUP_ASSIGNMENT.' + 'ITEMS' ) |
16105( aga.role.name = 'specification category member' ) AND
16106('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'PRODUCT_CONCEPT_FEATURE_CATEGORY' IN TYPEOF ( aga.assigned_group )))) <>1 ) ) ) = 0;
16107END_RULE;
16108
16109RULE product_definition_replacement_requires_effectivity_assignment FOR (product_definition_relationship);
16110
16111WHERE
16112	WR1 : SIZEOF( QUERY( pdr <* product_definition_relationship |
16113        (pdr.name = 'definition replacement') AND
16114        (SIZEOF( USEDIN(pdr,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.APPLIED_EFFECTIVITY_ASSIGNMENT.ITEMS') ) = 0) ))
16115        = 0;
16116END_RULE;
16117
16118RULE restrict_alternative_definition FOR (product_definition);
16119    LOCAL
16120      solution_definitions: SET OF product_definition := [];
16121    END_LOCAL;
16122      solution_definitions :=  QUERY( pd <* product_definition |
16123	 (pd.frame_of_reference.name = 'alternative definition'));
16124WHERE
16125	WR1 : SIZEOF ( QUERY ( pd <* solution_definitions |
16126	    ( SIZEOF ( QUERY ( pdr <* USEDIN ( pd ,
16127	    'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF' + '.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION' ) |
16128	    pdr.name = 'solution alternative definition' ) ) <>1 ) ) ) = 0;
16129	WR2 : SIZEOF ( QUERY ( pd <* solution_definitions |
16130	    NOT ( pd.name IN ['technical' , 'supplier' , 'technical supplier' , ''] ) ) ) = 0;
16131	WR3 : SIZEOF ( QUERY ( pd <* solution_definitions |
16132	    ( pd.name IN ['supplier' , 'technical supplier'] ) AND (
16133	    SIZEOF ( QUERY ( aoa <* USEDIN ( pd.formation ,
16134	    'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF' + '.APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS' ) |
16135	    aoa.role.name = 'supplier' )) <>1 ) )) = 0;
16136END_RULE;
16137
16138RULE restrict_assembly_category FOR (product_definition);
16139    LOCAL
16140      assembly_definitions: SET OF product_definition := [];
16141    END_LOCAL;
16142      assembly_definitions :=  QUERY( pd <* product_definition |
16143        SIZEOF( QUERY( pdca <* USEDIN( pd, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION') |
16144        pdca.frame_of_reference.name= 'assembly definition')) > 0 );
16145WHERE
16146	WR1 : SIZEOF( QUERY( pd <* assembly_definitions |
16147          NOT ('assembly' IN categories_of_product(pd.formation.of_product)) ))= 0;
16148END_RULE;
16149
16150RULE restrict_centre_of_mass_representation FOR (representation);
16151
16152WHERE
16153	WR1 : SIZEOF ( QUERY ( r <* representation |
16154	( r.name ='centre of mass' ) AND
16155	( ( SIZEOF ( r.items ) <>1 ) OR
16156	(SIZEOF ( QUERY ( i <* r.items |
16157	( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'POINT' IN TYPEOF ( i ) ) AND
16158	( i.name = 'centre point' ) )) <>1 ) ) ) )
16159	=0;
16160END_RULE;
16161
16162RULE restrict_classification_assignments FOR (applied_classification_assignment);
16163
16164WHERE
16165	WR1 : SIZEOF(QUERY(aia <* applied_classification_assignment |
16166		NOT class_assignment_is_valid(aia)))=0;
16167END_RULE;
16168
16169RULE restrict_collection_category FOR (product_definition);
16170    LOCAL
16171      collection_definitions: SET OF product_definition := [];
16172    END_LOCAL;
16173      collection_definitions :=  QUERY( pd <* product_definition |
16174        SIZEOF( QUERY( pdca <* USEDIN( pd, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF' + '.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION') |
16175        pdca.frame_of_reference.name= 'collection definition')) > 0 );
16176WHERE
16177	WR1 : SIZEOF( QUERY( pd <* collection_definitions |
16178	    NOT ('collection' IN categories_of_product(pd.formation.of_product)) ))= 0;
16179END_RULE;
16180
16181RULE restrict_concept_feature_operator FOR (concept_feature_operator);
16182
16183WHERE
16184	WR1 : SIZEOF ( QUERY ( cfo <* concept_feature_operator | NOT
16185		( cfo.name IN ['and' , 'or' , 'oneof' , 'not' , 'implication'] ) ) ) = 0;
16186	WR2 : SIZEOF ( QUERY ( cfo <* concept_feature_operator | (cfo.name = 'implication' ) AND
16187	 ( SIZEOF ( QUERY (cfrwc <* USEDIN ( cfo , 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION.' +
16188	'CONDITIONAL_OPERATOR' ) |
16189		SIZEOF ( QUERY ( ccf <* USEDIN( cfrwc , 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'CONDITIONAL_CONCEPT_FEATURE.CONDITION' ) |
16190		NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'INCLUSION_PRODUCT_CONCEPT_FEATURE' IN TYPEOF ( ccf )))) >0 )) >0 ))) = 0;
16191	WR3 : SIZEOF( QUERY (cfo <* concept_feature_operator | (cfo.name = 'not')
16192	AND (SIZEOF(QUERY(cfrwc <* USEDIN(cfo, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION.CONDITIONAL_OPERATOR') |
16193		cfrwc.related_product_concept_feature :<>: cfrwc.relating_product_concept_feature)) >0 ))) = 0;
16194END_RULE;
16195
16196RULE restrict_configuration_design_for_class_breakdown_association FOR (configuration_design);
16197
16198WHERE
16199	WR1 : SIZEOF ( QUERY ( cd <* configuration_design |
16200	    ( cd.name ='functionality' ) AND
16201        ( NOT ( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF ( cd. design ) ) OR
16202        ( cd.design\product_definition.frame_of_reference.name<> 'functional definition' ) )
16203        ) ) =0;
16204	WR2 : SIZEOF ( QUERY ( cd <* configuration_design |
16205        ( cd.name='realization' ) AND
16206        ( NOT ( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF ( cd.design ) ) OR
16207        ( cd.design\product_definition.frame_of_reference.name<> 'conceptual definition' ) )
16208        ) ) =0;
16209	WR3 : SIZEOF ( QUERY ( cd <* configuration_design |
16210        ( cd.name IN ['functionality' , 'realization'] ) AND
16211        ( NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_CLASS' IN TYPEOF ( cd.configuration.item_concept ) ) )
16212        ) ) =0;
16213END_RULE;
16214
16215RULE restrict_configuration_design_for_design_constraint FOR (configuration_design);
16216
16217WHERE
16218	WR1 : SIZEOF ( QUERY (cd <* configuration_design |
16219	    (cd.name = 'design constraint usage') AND
16220        (NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF ( cd.design ) ) OR
16221        (cd.design\product_definition.frame_of_reference.name <> 'design constraint definition')))) = 0;
16222END_RULE;
16223
16224RULE restrict_group_relationship_for_classification_hierarchy FOR (group_relationship);
16225
16226WHERE
16227	WR1 : SIZEOF( QUERY( gr <* group_relationship |
16228  (gr\group_relationship.name = 'class hierarchy') AND
16229  (NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CLASS' IN TYPEOF(gr\group_relationship.related_group)) OR
16230  NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CLASS' IN TYPEOF(gr\group_relationship.relating_group))) )) = 0;
16231END_RULE;
16232
16233RULE restrict_group_relationship_for_specification_category FOR (group_relationship);
16234
16235WHERE
16236	WR1 : SIZEOF( QUERY( gr <* group_relationship |
16237  (gr.name = 'specification category hierarchy') AND
16238  (NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY' IN TYPEOF(gr.related_group))
16239  OR NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY' IN TYPEOF(gr.relating_group))) )) = 0;
16240END_RULE;
16241
16242RULE restrict_language_assignment_per_attribute FOR (attribute_language_assignment);
16243
16244WHERE
16245	WR1 : SIZEOF ( QUERY ( ala1 <* attribute_language_assignment |
16246	SIZEOF(QUERY( it <* ala1.items |
16247	   SIZEOF ( QUERY ( ala2 <* USEDIN ( it ,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS' ) |
16248		( ala1\attribute_classification_assignment.attribute_name = ala2\attribute_classification_assignment.attribute_name ) AND
16249		( ala1\attribute_classification_assignment.assigned_class :=: ala2\attribute_classification_assignment.assigned_class )
16250		 )) >1
16251	   )) >0
16252	)) =0;
16253END_RULE;
16254
16255RULE restrict_part_occurrence FOR (product_definition);
16256    LOCAL
16257      part_occurrences: SET OF product_definition := QUERY(pd <* product_definition |
16258	    ( pd.frame_of_reference.name = 'part occurrence' ));
16259    END_LOCAL;
16260WHERE
16261	WR1 : SIZEOF ( QUERY ( pd <* part_occurrences |
16262	    ( NOT( pd.name IN
16263        ['single instance' , 'selected instance' ,'quantified instance' , 'specified instance' ] ) ) ) ) = 0;
16264	WR2 : SIZEOF ( QUERY ( pd <* part_occurrences |
16265 	    (SIZEOF ( QUERY ( pdr <* USEDIN ( pd ,
16266        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION' ) |
16267	    pdr.name = 'definition usage' ) ) <>1 ) AND
16268        ( SIZEOF ( QUERY ( cd <* USEDIN ( pd , 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'CONFIGURATION_DESIGN.DESIGN' ) |
16269        ( cd.name = 'occurrence usage definition' ) AND
16270        ( NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'PRODUCT_IDENTIFICATION' IN TYPEOF( cd.configuration ) ) ) ) ) <>1 ) ) ) = 0;
16271	WR3 : SIZEOF ( QUERY ( pd <* part_occurrences |
16272        (SIZEOF ( QUERY ( cd <* USEDIN ( pd , 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.'+ 'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION' ) |
16273        ( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +'PRODUCT_DEFINITION_USAGE' IN TYPEOF ( cd ) ) ) ) = 0 )AND
16274        ( SIZEOF ( USEDIN ( pd , 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'PRODUCT_DEFINITION_OCCURRENCE_RELATIONSHIP.OCCURRENCE' ) ) = 0 ) ) ) = 0;
16275	WR4 : SIZEOF ( QUERY ( pd <* part_occurrences |
16276        ( pd.name = 'selected instance' ) AND
16277        NOT valid_selected_instance_representation(pd) ))=0;
16278	WR5 : SIZEOF ( QUERY ( pd <* part_occurrences |
16279        ( pd.name = 'quantified instance' ) AND
16280        ( SIZEOF ( QUERY (ppd <* USEDIN ( pd , 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +'PROPERTY_DEFINITION.DEFINITION' ) |
16281        ( ppd.name ='occurrence quantity' ) AND
16282        ( SIZEOF ( QUERY ( pdr <*USEDIN ( ppd , 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION' ) | (
16283        pdr.used_representation.name = 'quantity' ) AND
16284        (SIZEOF ( pdr.used_representation.items ) = 1 ) AND
16285        (SIZEOF ( QUERY ( i <* pdr.used_representation.items |
16286        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'MEASURE_REPRESENTATION_ITEM' IN TYPEOF ( i ) ) AND
16287        ( i.name = 'quantity measure' ) ) ) = 1)))= 1 )))= 0 )))= 0;
16288	WR6 : SIZEOF ( QUERY ( pd <* part_occurrences |
16289        ( pd.name = 'specified instance' ) AND
16290        ( SIZEOF ( QUERY (
16291        pdor <* USEDIN ( pd , 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +'PRODUCT_DEFINITION_OCCURRENCE_RELATIONSHIP.OCCURRENCE' ) |
16292        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +'SPECIFIED_HIGHER_USAGE_OCCURRENCE' IN TYPEOF ( pdor.occurrence_usage ) ) ) = 0 ) ) ) = 0;
16293END_RULE;
16294
16295RULE restrict_part_occurrence_category FOR (product_definition);
16296    LOCAL
16297      part_occurrences: SET OF product_definition := QUERY( pd <* product_definition |(
16298        pd.frame_of_reference.name = 'part occurrence'));
16299    END_LOCAL;
16300WHERE
16301	WR1 : SIZEOF( QUERY( pd <* part_occurrences |
16302        (SIZEOF( QUERY( prpc <* USEDIN(pd.formation.of_product, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') |
16303        prpc.name IN ['part','raw material','tool'] )) = 0 ) )) = 0;
16304END_RULE;
16305
16306RULE restrict_product_definitions_for_base_element FOR (product_definition_relationship);
16307
16308WHERE
16309	WR1 : SIZEOF ( QUERY ( pdr <* product_definition_relationship |
16310       ( pdr. name = 'solution alternative definition' ) AND
16311       ( NOT( pdr. relating_product_definition.frame_of_reference.name
16312        IN [ 'alternative definition' , 'functional definition' , 'conceptual definition' ] ) OR
16313       ( pdr.related_product_definition.frame_of_reference.name<>'alternative definition' ) ) ) ) =0;
16314END_RULE;
16315
16316RULE restrict_product_definitions_for_collection FOR (product_definition_relationship);
16317
16318WHERE
16319	WR1 : SIZEOF ( QUERY ( pdr <* product_definition_relationship |
16320       ( pdr. name = 'collection membership' ) AND
16321       ( ( pdr.relating_product_definition.frame_of_reference.name<>'part definition' ) OR
16322       ( pdr.related_product_definition.frame_of_reference.name<>'part occurrence' ) OR
16323       ( SIZEOF ( QUERY ( pdca <* USEDIN (pdr.relating_product_definition ,
16324       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF' + '.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION') |
16325       ( pdca.role.name = 'part definition type' ) AND
16326       ( pdca.frame_of_reference.name = 'collection definition' ) )) =0 ) ) ) ) =0;
16327END_RULE;
16328
16329RULE restrict_product_definitions_for_definition_usage FOR (product_definition_relationship);
16330
16331WHERE
16332	WR1 : SIZEOF ( QUERY ( pdr <* product_definition_relationship |
16333        ( pdr.name = 'definition usage' ) AND
16334        ( ( pdr.relating_product_definition.frame_of_reference.name<> 'part definition' ) OR
16335        ( pdr.related_product_definition.frame_of_reference.name<>'part occurrence' )))) =0;
16336END_RULE;
16337
16338RULE restrict_product_definitions_for_design_constraint_association FOR (product_definition_relationship);
16339
16340WHERE
16341	WR1 : SIZEOF ( QUERY ( pdr <* product_definition_relationship |
16342        ( pdr. name = 'design constraint association' ) AND
16343	    ( (pdr. relating_product_definition.frame_of_reference.name<>'design constraint definition' ) OR
16344	    NOT ( pdr.related_product_definition.frame_of_reference.name IN
16345	    ['alternative definition' , 'functional definition' ,'conceptual definition' ] ) ) ) ) =0;
16346END_RULE;
16347
16348RULE restrict_product_definitions_for_part_definition_relationship FOR (product_definition_relationship);
16349
16350WHERE
16351	WR1 : SIZEOF ( QUERY ( pdr <* product_definition_relationship |
16352        ( pdr.name IN [ 'geometrical relationship' , 'definition replacement' ] ) AND
16353	    ( ( pdr.relating_product_definition.frame_of_reference.name <>'part definition' ) OR
16354        ( pdr.related_product_definition.frame_of_reference.name <>'part definition' ) ) ) ) =0;
16355END_RULE;
16356
16357RULE restrict_representation_for_surface_condition FOR (property_definition_representation);
16358
16359WHERE
16360	WR1 : SIZEOF(QUERY(pdr <* property_definition_representation |
16361        NOT surface_condition_correlation(pdr.definition, pdr.used_representation) ))=0;
16362END_RULE;
16363
16364RULE restrict_shape_aspect_subtypes FOR (primary_orientation_feature, secondary_orientation_feature, tertiary_orientation_feature);
16365LOCAL
16366 temp: SET OF shape_aspect := primary_orientation_feature + secondary_orientation_feature + tertiary_orientation_feature;
16367 pass : BOOLEAN := TRUE;
16368END_LOCAL;
16369REPEAT i := 1 to SIZEOF(temp) BY 1;
16370IF SIZEOF([
16371        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PACKAGE_BODY',
16372	'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DERIVED_SHAPE_ASPECT',
16373	'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POSITIONAL_BOUNDARY',
16374	'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POSITIONAL_BOUNDARY_MEMBER',
16375	'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.TOLERANCE_ZONE_BOUNDARY',
16376	'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VIEWING_PLANE',
16377	'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SEATING_PLANE',
16378	'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.REFERENCE_GRAPHIC_REGISTRATION_MARK',
16379	'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.GROUP_SHAPE_ASPECT',
16380	'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MOUNTING_RESTRICTION_AREA',
16381	'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MOUNTING_RESTRICTION_VOLUME'] * TYPEOF(temp[i])) <> 0
16382THEN
16383pass := FALSE;
16384END_IF;
16385END_REPEAT;
16386WHERE
16387	WR1 : pass;
16388END_RULE;
16389
16390RULE restrict_treatment_result FOR (representation);
16391    LOCAL
16392      treatment_results: SET OF representation := [];
16393    END_LOCAL;
16394    treatment_results:= QUERY( r <* representation |
16395	  (r.name = 'treatment result') );
16396WHERE
16397	WR1 : (SIZEOF( QUERY( r <* treatment_results | (SIZEOF(r.items) > 2) )) = 0) AND
16398        (SIZEOF( QUERY( r <* treatment_results |
16399        (SIZEOF( QUERY( i <* r.items |
16400         NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) )) > 0) )) = 0);
16401	WR2 : SIZEOF( QUERY( r <* treatment_results |
16402        (SIZEOF( QUERY( i <* r.items | i.name = 'result' )) = 0) )) = 0;
16403	WR3 : SIZEOF( QUERY( r <* treatment_results |
16404        (SIZEOF( QUERY( i <* r.items | i.name = 'purpose' )) > 1) )) = 0;
16405END_RULE;
16406
16407RULE selected_instance_usage_requires_representation FOR (assembly_component_usage);
16408    LOCAL
16409      selected_instance_usages: SET OF assembly_component_usage := QUERY( acr <* assembly_component_usage|
16410        (acr.name = 'selected instance usage'));
16411    END_LOCAL;
16412WHERE
16413	WR1 : SIZEOF ( QUERY ( acr <* selected_instance_usages |
16414        NOT valid_selected_instance_representation(acr) ))=0;
16415END_RULE;
16416
16417RULE shape_representation_requires_origin FOR (shape_representation);
16418
16419WHERE
16420	WR1 : SIZEOF(QUERY ( sr <* shape_representation |  NOT(
16421(SIZEOF(QUERY ( it <* sr\representation.items | (
16422((it\representation_item.name = 'origin') or (it\representation_item.name = 'orientation')) and
16423   (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
16424    'AXIS2_PLACEMENT_2D' in TYPEOF(it))  OR
16425   ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
16426    'AXIS2_PLACEMENT_2D' in TYPEOF(it)))
16427))) = 1
16428)
16429OR
16430(SIZEOF(QUERY ( it <* sr\representation.items | (
16431   ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
16432    'STYLED_ITEM' in TYPEOF(it))
16433))) >= 1
16434)
16435OR
16436(SIZEOF(QUERY ( it <* sr\representation.items | (
16437((it\representation_item.name = 'origin') or (it\representation_item.name = 'orientation')) and
16438   ((sr\representation.name = 'zone shape') or
16439   (sr.context_of_items\representation_context.context_type = 'connection zone colour'))
16440))) = 0
16441)
16442))) = 0;
16443END_RULE;
16444
16445RULE solution_definition_requires_solution_category FOR (product_definition);
16446    LOCAL
16447      solution_definitions: SET OF product_definition := [];
16448    END_LOCAL;
16449      solution_definitions :=  QUERY( pd <* product_definition |
16450        (pd.frame_of_reference.name = 'alternative definition'));
16451WHERE
16452	WR1 : SIZEOF( QUERY( pd <* solution_definitions |
16453        (SIZEOF( QUERY( prpc <* USEDIN(pd.formation.of_product, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF' + '.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') |
16454	     prpc.name = 'alternative solution')) = 0 ) )) = 0;
16455END_RULE;
16456
16457RULE spline_curve_population_constraint FOR (curve);
16458
16459WHERE
16460	WR1 : SIZEOF( QUERY( cu <* curve |
16461('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.B_SPLINE_CURVE' IN TYPEOF(cu))
16462              )) = 0;
16463END_RULE;
16464
16465RULE stock_material_reference FOR (percentage_ply_definition, make_from_usage_option, product_related_product_category);
16466    LOCAL
16467      i,j,k :  INTEGER;
16468      dkuhr :  LOGICAL;
16469      nmfuo :  INTEGER;
16470      nprpc :  INTEGER;
16471      rp     :  product;
16472    END_LOCAL;
16473    dkuhr := TRUE;
16474    REPEAT i:= LOINDEX (percentage_ply_definition) TO
16475               HIINDEX (percentage_ply_definition);
16476      nmfuo := 0;
16477      REPEAT j:= LOINDEX (make_from_usage_option) TO
16478                 HIINDEX (make_from_usage_option);
16479        IF (percentage_ply_definition[i] =
16480          make_from_usage_option[j].relating_product_definition) THEN
16481          rp := make_from_usage_option[j].related_product_definition.
16482                formation.of_product;
16483          nprpc := 0;
16484          REPEAT k:= LOINDEX (product_related_product_category) TO
16485                     HIINDEX (product_related_product_category);
16486            IF ((rp IN product_related_product_category[k].products) AND
16487                (product_related_product_category[k].name IN
16488                ['anisotropic material', 'isotropic material', 'stock core',
16489                 'filament assembly', 'discontinuous fiber assembly'])) THEN
16490                nprpc := nprpc + 1;
16491            END_IF;
16492          END_REPEAT;
16493          IF (nprpc = 1) THEN
16494            nmfuo := nmfuo + 1;
16495          ELSE
16496            dkuhr := FALSE;
16497            ESCAPE;
16498          END_IF;
16499        END_IF;
16500      END_REPEAT;
16501      IF (dkuhr = FALSE) THEN
16502        ESCAPE;
16503      END_IF;
16504      IF(nmfuo = 0) THEN
16505        dkuhr := FALSE;
16506        ESCAPE;
16507      END_IF;
16508    END_REPEAT;
16509WHERE
16510	WR1 : dkuhr;
16511END_RULE;
16512
16513RULE styled_curve FOR (styled_item);
16514
16515WHERE
16516	WR1 : SIZEOF( QUERY( si <* styled_item | ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE' IN TYPEOF (si.item)) AND (SIZEOF (QUERY (psa <* si.styles | (SIZEOF (QUERY (cs <* psa.styles | ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_STYLE' IN TYPEOF (cs)) )) > 0) )) <> 1) )) = 0;
16517END_RULE;
16518
16519RULE subtype_exclusiveness_geometric_tolerance FOR (geometric_tolerance);
16520
16521WHERE
16522	WR1 : SIZEOF(QUERY (gt <* geometric_tolerance | NOT (type_check_function(gt, ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANGULARITY_TOLERANCE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CIRCULAR_RUNOUT_TOLERANCE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COAXIALITY_TOLERANCE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONCENTRICITY_TOLERANCE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CYLINDRICITY_TOLERANCE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FLATNESS_TOLERANCE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LINE_PROFILE_TOLERANCE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PARALLELISM_TOLERANCE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PERPENDICULARITY_TOLERANCE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POSITION_TOLERANCE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ROUNDNESS_TOLERANCE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STRAIGHTNESS_TOLERANCE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_PROFILE_TOLERANCE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SYMMETRY_TOLERANCE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.TOTAL_RUNOUT_TOLERANCE'] , 3)))) = 0;
16523END_RULE;
16524
16525RULE subtype_exclusiveness_representation_item FOR (representation_item);
16526
16527WHERE
16528	WR1 : SIZEOF(QUERY (cri <* representation_item |
16529      NOT (type_check_function(cri,['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MEASURE_REPRESENTATION_ITEM',
16530                                    'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VALUE_REPRESENTATION_ITEM',
16531                                    'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMPOUND_REPRESENTATION_ITEM'] , 3)))) = 0;
16532END_RULE;
16533
16534RULE subtype_mandatory_geometric_tolerance FOR (geometric_tolerance);
16535
16536WHERE
16537	WR1 : SIZEOF(QUERY (gt <* geometric_tolerance | NOT (type_check_function(gt, ['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANGULARITY_TOLERANCE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CIRCULAR_RUNOUT_TOLERANCE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COAXIALITY_TOLERANCE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONCENTRICITY_TOLERANCE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CYLINDRICITY_TOLERANCE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FLATNESS_TOLERANCE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LINE_PROFILE_TOLERANCE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PARALLELISM_TOLERANCE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PERPENDICULARITY_TOLERANCE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POSITION_TOLERANCE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ROUNDNESS_TOLERANCE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STRAIGHTNESS_TOLERANCE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_PROFILE_TOLERANCE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SYMMETRY_TOLERANCE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.TOTAL_RUNOUT_TOLERANCE'] , 0)))) = 0;
16538END_RULE;
16539
16540RULE text_font_usage FOR (externally_defined_text_font, pre_defined_text_font);
16541
16542WHERE
16543	WR1 : SIZEOF (QUERY (pdtf <* pre_defined_text_font | SIZEOF (USEDIN (pdtf, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.TEXT_LITERAL.FONT')) = 0 )) = 0;
16544	WR2 : SIZEOF (QUERY (edtf <* externally_defined_text_font | SIZEOF (USEDIN (edtf, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.TEXT_LITERAL.FONT')) = 0 )) = 0;
16545END_RULE;
16546
16547RULE thickness_laminate_table_component_select FOR (thickness_laminate_definition, next_assembly_usage_occurrence, product_related_product_category);
16548    LOCAL
16549      i,j,k :  INTEGER;
16550      dkuhr :  LOGICAL;
16551      nnauo :  INTEGER;
16552      nprpc :  INTEGER;
16553      rp    :  product;
16554    END_LOCAL;
16555    dkuhr := TRUE;
16556    REPEAT i:= LOINDEX (thickness_laminate_definition) TO
16557               HIINDEX (thickness_laminate_definition);
16558      nnauo := 0;
16559      REPEAT j:= LOINDEX (next_assembly_usage_occurrence) TO
16560                 HIINDEX (next_assembly_usage_occurrence);
16561        IF (thickness_laminate_definition[i] =
16562          next_assembly_usage_occurrence[j].relating_product_definition) THEN
16563          rp := next_assembly_usage_occurrence[j].related_product_definition.
16564                formation.of_product;
16565          nprpc := 0;
16566          REPEAT k:= LOINDEX (product_related_product_category) TO
16567                     HIINDEX (product_related_product_category);
16568            IF ((rp IN product_related_product_category[k].products) AND
16569                (product_related_product_category[k].name IN
16570                 ['ply', 'filament laminate', 'processed core'])) THEN
16571                nprpc := nprpc + 1;
16572            END_IF;
16573          END_REPEAT;
16574          IF (nprpc = 1) THEN
16575            nnauo := nnauo + 1;
16576          ELSE
16577            dkuhr := FALSE;
16578            ESCAPE;
16579          END_IF;
16580        END_IF;
16581      END_REPEAT;
16582      IF (dkuhr = FALSE) THEN
16583        ESCAPE;
16584      END_IF;
16585      IF (nnauo <> 1) THEN
16586        dkuhr := FALSE;
16587        ESCAPE;
16588      END_IF;
16589    END_REPEAT;
16590WHERE
16591	WR1 : dkuhr;
16592END_RULE;
16593
16594RULE 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, 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, 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, two_direction_repeat_factor, unary_generic_expression, unary_numeric_expression, user_selected_elements, variational_representation_item, view_volume);
16595LOCAL
16596  number_of_input_instances : INTEGER;
16597  previous_in_chain : LIST OF GENERIC := [];
16598  set_of_input_types : SET OF STRING := [];
16599  all_instances : SET OF GENERIC := [];
16600END_LOCAL;
16601
16602  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 + 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 + 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 + 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>
16603number_of_input_instances := SIZEOF(all_instances);
16604(* Collect all type strings of all FOR instances into one set. *)
16605REPEAT i:=1 TO number_of_input_instances;
16606  set_of_input_types := set_of_input_types + TYPEOF(all_instances[i]);
16607END_REPEAT;
16608WHERE
16609	WR1 : dependently_instantiated(all_instances, set_of_input_types,
16610                                previous_in_chain);
16611END_RULE;
16612
16613FUNCTION acyclic
16614	(arg1: generic_expression; arg2: SET [0:?] OF generic_expression) : BOOLEAN;
16615LOCAL
16616	result: BOOLEAN := TRUE;
16617END_LOCAL;
16618
16619IF ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SIMPLE_GENERIC_EXPRESSION'
16620	IN TYPEOF (arg1))
16621THEN
16622	RETURN (TRUE);
16623END_IF;
16624
16625IF arg1 IN arg2
16626THEN
16627	RETURN (FALSE);
16628END_IF;
16629
16630IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.UNARY_GENERIC_EXPRESSION'
16631	IN TYPEOF (arg1)
16632THEN
16633	RETURN
16634	(acyclic(arg1\unary_generic_expression.operand,arg2+[arg1]));
16635END_IF;
16636
16637IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.BINARY_GENERIC_EXPRESSION'
16638	IN TYPEOF (arg1)
16639THEN
16640	RETURN
16641	(acyclic(arg1\binary_generic_expression.operands[1],arg2+[arg1])
16642	AND
16643	acyclic(arg1\binary_generic_expression.operands[2],arg2+[arg1]));
16644END_IF;
16645
16646IF
16647'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MULTIPLE_ARITY_GENERIC_EXPRESSION'
16648	IN TYPEOF (arg1)
16649THEN
16650	result := TRUE;
16651	REPEAT i := 1 TO
16652			SIZEOF (arg1\multiple_arity_generic_expression.operands);
16653		result := result AND
16654		acyclic(arg1\multiple_arity_generic_expression.operands[i], arg2+[arg1]);
16655	END_REPEAT;
16656
16657	RETURN (result);
16658END_IF;
16659	RETURN (result);
16660END_FUNCTION;
16661
16662FUNCTION acyclic_composite_text
16663	(start_composite: composite_text; child_text: SET [1:?] OF text_or_character) : LOGICAL;
16664    LOCAL
16665      i : INTEGER;
16666      local_composite_text : SET [0:?] OF composite_text;
16667      local_annotation_text : SET [0:?] OF annotation_text;
16668      local_children : SET [0:?] OF text_or_character;
16669    END_LOCAL;
16670
16671    local_composite_text := QUERY (child <* child_text |
16672                          ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMPOSITE_TEXT'
16673                           IN TYPEOF (child)));
16674
16675    IF (SIZEOF (local_composite_text) > 0)
16676      THEN
16677        REPEAT i := 1 TO HIINDEX (local_composite_text);
16678          IF (start_composite :=: local_composite_text[i])
16679            THEN
16680              RETURN (FALSE);
16681          END_IF;
16682        END_REPEAT;
16683    END_IF;
16684
16685    local_children := child_text;
16686
16687    IF (SIZEOF (local_composite_text)) > 0 THEN
16688      REPEAT i := 1 TO HIINDEX (local_composite_text);
16689        local_children := local_children +
16690                          local_composite_text[i].collected_text;
16691      END_REPEAT;
16692    END_IF;
16693
16694    local_annotation_text := QUERY (child <* child_text |
16695                            ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_TEXT'
16696                             IN TYPEOF (child)));
16697
16698    IF (SIZEOF (local_annotation_text) > 0) THEN
16699      REPEAT i := 1 TO HIINDEX (local_annotation_text);
16700        local_children := local_children +
16701        QUERY (item <* local_annotation_text[i]\mapped_item.
16702                       mapping_source.mapped_representation.items |
16703          SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ANNOTATION_TEXT',
16704                  'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMPOSITE_TEXT'] *
16705                  TYPEOF(item)) > 0);
16706      END_REPEAT;
16707    END_IF;
16708
16709    IF (local_children :<>: child_text) THEN
16710      RETURN (acyclic_composite_text (start_composite, local_children));
16711    ELSE
16712      RETURN (TRUE);
16713    END_IF;
16714END_FUNCTION;
16715
16716FUNCTION acyclic_curve_replica
16717	(rep: curve_replica; parent: curve) : BOOLEAN;
16718IF NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_REPLICA') IN TYPEOF(parent)) THEN
16719      RETURN (TRUE);
16720   END_IF;
16721 (* Return TRUE if the parent is not of type curve_replica *)
16722   IF (parent :=: rep) THEN
16723      RETURN (FALSE);
16724  (* Return FALSE if the parent is the same curve_replica, otherwise,
16725   call function again with the parents own parent_curve.     *)
16726    ELSE
16727    RETURN(acyclic_curve_replica(rep,
16728               parent\curve_replica.parent_curve));
16729    END_IF;
16730END_FUNCTION;
16731
16732FUNCTION acyclic_mapped_item_usage
16733	(rep: representation) : BOOLEAN;
16734  LOCAL
16735    items : SET OF representation_item;
16736  END_LOCAL;
16737
16738  items := QUERY (item <* rep.items |
16739           'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM' IN TYPEOF (item));
16740  IF SIZEOF (items) = 0
16741  THEN
16742    RETURN (FALSE);
16743  ELSE
16744    REPEAT i := 1 TO HIINDEX (items);
16745      IF items[i]\mapped_item.mapping_source.mapped_representation :=: rep
16746      THEN
16747        RETURN (TRUE);
16748      ELSE
16749        RETURN (acyclic_mapped_item_usage(items[i]\
16750                  mapped_item.mapping_source.mapped_representation));
16751      END_IF;
16752    END_REPEAT;
16753  RETURN (FALSE);
16754  END_IF;
16755END_FUNCTION;
16756
16757FUNCTION acyclic_mapped_representation
16758	(mi: mapped_item) : BOOLEAN;
16759    LOCAL
16760      rms : SET OF representation_map;
16761      mis : SET OF mapped_item;
16762      rs1, rs2 : SET OF representation;
16763    END_LOCAL;
16764
16765    rs1 := using_representations(mi);
16766    rs2 := [];
16767    -- loop as long as there are elements in rs1
16768    REPEAT WHILE SIZEOF(rs1) > 0;
16769      REPEAT i := 1 TO HIINDEX(rs1);
16770        -- Determine the set of representation_map that reference the parent_set
16771        rms := bag_to_set(USEDIN(rs1[i], 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.REPRESENTATION_MAP.MAPPED_REPRESENTATION'));
16772        IF SIZEOF(rms) > 0 THEN
16773          REPEAT j := 1 TO HIINDEX(rms);
16774            mis := bag_to_set(USEDIN(rms[i], 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAPPED_ITEM.MAPPING_SOURCE'));
16775            IF SIZEOF(mis) > 0 THEN
16776              REPEAT j := 1 TO HIINDEX(mis);
16777                -- check mis members for instance equal with mi. If so then there is a cycle
16778                IF mis[i] :=: mi THEN
16779                  RETURN (FALSE);
16780                END_IF;
16781                rs2 := rs2 + using_representations(mis[i]);
16782              END_REPEAT;
16783            END_IF;
16784          END_REPEAT;
16785        END_IF;
16786      END_REPEAT;
16787      rs1 := rs2;
16788      rs2 := [];
16789    END_REPEAT;
16790    RETURN (TRUE);
16791END_FUNCTION;
16792
16793FUNCTION acyclic_point_replica
16794	(rep: point_replica; parent: point) : BOOLEAN;
16795IF NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT_REPLICA') IN TYPEOF(parent)) THEN
16796      RETURN (TRUE);
16797   END_IF;
16798 (* Return TRUE if the parent is not of type point_replica *)
16799   IF (parent :=: rep) THEN
16800      RETURN (FALSE);
16801  (* Return FALSE if the parent is the same point_replica, otherwise,
16802   call function again with the parents own parent_pt.     *)
16803    ELSE RETURN(acyclic_point_replica(rep, parent\point_replica.parent_pt));
16804    END_IF;
16805END_FUNCTION;
16806
16807FUNCTION acyclic_product_definition_relationship
16808	(relation: product_definition_relationship; relatives: SET [1:?] OF product_definition; specific_relation: STRING) : BOOLEAN;
16809    LOCAL
16810      x : SET OF product_definition_relationship;
16811    END_LOCAL;
16812
16813    IF relation.relating_product_definition IN relatives THEN
16814      RETURN (FALSE);
16815    END_IF;
16816    x := QUERY(pd <* bag_to_set(USEDIN(relation.relating_product_definition, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'PRODUCT_DEFINITION_RELATIONSHIP.' + 'RELATED_PRODUCT_DEFINITION')) | specific_relation IN TYPEOF(pd));
16817    REPEAT i := 1 TO HIINDEX(x);
16818      IF NOT acyclic_product_definition_relationship(x[i], relatives + relation.relating_product_definition, specific_relation) THEN
16819        RETURN (FALSE);
16820      END_IF;
16821    END_REPEAT;
16822    RETURN (TRUE);
16823END_FUNCTION;
16824
16825FUNCTION acyclic_representation_relationship
16826	(relation: representation_relationship; relatives: SET [1:?] OF representation; specific_relation: STRING) : BOOLEAN;
16827    LOCAL
16828      x : SET OF representation_relationship;
16829    END_LOCAL;
16830
16831    IF relation.rep_1 IN relatives THEN
16832      RETURN (FALSE);
16833    END_IF;
16834    x := QUERY(r <* bag_to_set(USEDIN(relation.rep_1, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.' + 'REP_2')) | specific_relation IN TYPEOF(r));
16835    REPEAT i := 1 TO HIINDEX(x);
16836      IF NOT acyclic_representation_relationship(x[i], relatives + relation.rep_1, specific_relation) THEN
16837        RETURN (FALSE);
16838      END_IF;
16839    END_REPEAT;
16840    RETURN (TRUE);
16841END_FUNCTION;
16842
16843FUNCTION acyclic_shape_aspect_relationship
16844	(relation: shape_aspect_relationship; relatives: SET [1:?] OF shape_aspect; specific_relation: STRING) : BOOLEAN;
16845    LOCAL
16846      x : SET OF shape_aspect_relationship;
16847    END_LOCAL;
16848
16849    IF relation.relating_shape_aspect IN relatives THEN
16850      RETURN (FALSE);
16851    END_IF;
16852    x := QUERY(sa <* bag_to_set(USEDIN(relation.relating_shape_aspect, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'SHAPE_ASPECT_RELATIONSHIP.' + 'RELATED_SHAPE_ASPECT')) | specific_relation IN TYPEOF(sa));
16853    REPEAT i := 1 TO HIINDEX(x);
16854      IF NOT acyclic_shape_aspect_relationship(x[i], relatives + relation.relating_shape_aspect, specific_relation) THEN
16855        RETURN (FALSE);
16856      END_IF;
16857    END_REPEAT;
16858    RETURN (TRUE);
16859END_FUNCTION;
16860
16861FUNCTION acyclic_solid_replica
16862	(rep: solid_replica; parent: solid_model) : BOOLEAN;
16863IF NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SOLID_REPLICA') IN TYPEOF(parent)) THEN
16864      RETURN (TRUE);
16865   END_IF;
16866 (* Return TRUE if the parent is not of type solid_replica. *)
16867   IF (parent :=: rep) THEN
16868      RETURN (FALSE);
16869  (* Return FALSE if the parent is the same solid_replica, otherwise,
16870   call function again with the parents own parent_solid.     *)
16871    ELSE RETURN(acyclic_solid_replica(rep,
16872                      parent\solid_replica.parent_solid));
16873    END_IF;
16874END_FUNCTION;
16875
16876FUNCTION acyclic_surface_replica
16877	(rep: surface_replica; parent: surface) : BOOLEAN;
16878IF NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_REPLICA') IN TYPEOF(parent)) THEN
16879      RETURN (TRUE);
16880   END_IF;
16881 (* Return TRUE if the parent is not of type surface_replica *)
16882   IF (parent :=: rep) THEN
16883      RETURN (FALSE);
16884  (* Return FALSE if the parent is the same surface_replica, otherwise,
16885   call function again with the parents own parent_surface.     *)
16886    ELSE RETURN(acyclic_surface_replica(rep,
16887                   parent\surface_replica.parent_surface));
16888    END_IF;
16889END_FUNCTION;
16890
16891FUNCTION advanced_face_properties
16892	(testface: face) : BOOLEAN;
16893IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ADVANCED_FACE' IN TYPEOF(testface) THEN
16894    RETURN (TRUE);
16895END_IF;
16896(* if testface is a subface recursively test the parent_face,
16897return FALSE for all other types of face *)
16898IF  ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SUBFACE' IN TYPEOF(testface)) THEN
16899     RETURN(advanced_face_properties(testface\subface.parent_face));
16900   ELSE RETURN (FALSE);
16901END_IF;
16902END_FUNCTION;
16903
16904FUNCTION apeaid_is_base
16905	(input: area_component) : LOGICAL;
16906LOCAL
16907 pd : SET OF property_definition := bag_to_set(QUERY(pd <* USEDIN(input,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PROPERTY_DEFINITION.DEFINITION') |
16908              pd\property_definition.name = 'is base'));
16909END_LOCAL;
16910 RETURN(pd[1].description = 'true');
16911END_FUNCTION;
16912
16913FUNCTION aspect_ratio
16914	(p: planar_box) : positive_ratio_measure;
16915IF (p.size_in_x > 0.) AND (p.size_in_y > 0.) THEN
16916      RETURN (p.size_in_x / p.size_in_y);
16917    ELSE
16918      RETURN (?);
16919    END_IF;
16920END_FUNCTION;
16921
16922FUNCTION associated_surface
16923	(arg: pcurve_or_surface) : surface;
16924   LOCAL
16925     surf : surface;
16926   END_LOCAL;
16927
16928   IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PCURVE' IN TYPEOF(arg) THEN
16929     surf := arg\pcurve.basis_surface;
16930   ELSE
16931     surf := arg;
16932   END_IF;
16933   RETURN(surf);
16934END_FUNCTION;
16935
16936FUNCTION bag_to_set
16937	(the_bag: BAG [0:?] OF GENERIC: intype) : SET [0:?] OF GENERIC: intype;
16938    LOCAL
16939      the_set : SET OF GENERIC:intype := [];
16940    END_LOCAL;
16941
16942    IF SIZEOF(the_bag) > 0 THEN
16943      REPEAT i := 1 TO HIINDEX(the_bag);
16944        the_set := the_set + the_bag[i];
16945      END_REPEAT;
16946    END_IF;
16947    RETURN (the_set);
16948END_FUNCTION;
16949
16950FUNCTION base_axis
16951	(dim: INTEGER; axis1: direction; axis2: direction; axis3: direction) : LIST [2:3] OF direction;
16952  LOCAL
16953    u      : LIST [2:3] OF direction;
16954    factor : REAL;
16955    d1, d2 : direction;
16956  END_LOCAL;
16957
16958  IF (dim = 3) THEN
16959    d1 := NVL(normalise(axis3),  dummy_gri || direction([0.0,0.0,1.0]));
16960    d2 := first_proj_axis(d1,axis1);
16961    u := [d2, second_proj_axis(d1,d2,axis2), d1];
16962  ELSE
16963     IF EXISTS(axis1) THEN
16964      d1 := normalise(axis1);
16965      u := [d1, orthogonal_complement(d1)];
16966      IF EXISTS(axis2) THEN
16967        factor := dot_product(axis2,u[2]);
16968        IF (factor < 0.0) THEN
16969          u[2].direction_ratios[1] := -u[2].direction_ratios[1];
16970          u[2].direction_ratios[2] := -u[2].direction_ratios[2];
16971        END_IF;
16972      END_IF;
16973    ELSE
16974      IF EXISTS(axis2) THEN
16975        d1 := normalise(axis2);
16976        u := [orthogonal_complement(d1), d1];
16977        u[1].direction_ratios[1] := -u[1].direction_ratios[1];
16978        u[1].direction_ratios[2] := -u[1].direction_ratios[2];
16979      ELSE
16980        u := [dummy_gri || direction([1.0, 0.0]), dummy_gri ||
16981                                                direction([0.0, 1.0])];
16982      END_IF;
16983    END_IF;
16984  END_IF;
16985  RETURN(u);
16986END_FUNCTION;
16987
16988FUNCTION boolean_choose
16989	(b: BOOLEAN; choice1: GENERIC: item; choice2: GENERIC: item) : GENERIC: item;
16990IF b THEN
16991       RETURN (choice1);
16992     ELSE
16993       RETURN (choice2);
16994     END_IF;
16995END_FUNCTION;
16996
16997FUNCTION build_2axes
16998	(ref_direction: direction) : LIST [2:2] OF direction;
16999   LOCAL
17000     d : direction := NVL(normalise(ref_direction),
17001                          dummy_gri || direction([1.0,0.0]));
17002   END_LOCAL;
17003
17004   RETURN([d, orthogonal_complement(d)]);
17005END_FUNCTION;
17006
17007FUNCTION build_axes
17008	(axis: direction; ref_direction: direction) : LIST [3:3] OF direction;
17009     LOCAL
17010       d1, d2 : direction;
17011     END_LOCAL;
17012    d1 := NVL(normalise(axis), dummy_gri || direction([0.0,0.0,1.0]));
17013    d2 := first_proj_axis(d1, ref_direction);
17014    RETURN([d2, normalise(cross_product(d1,d2))\vector.orientation, d1]);
17015END_FUNCTION;
17016
17017FUNCTION categories_of_product
17018	(obj: product) : SET [0:?] OF STRING;
17019LOCAL
17020  category_assignments: BAG OF product_category;
17021  categories: SET OF STRING:=[];
17022END_LOCAL;
17023category_assignments := USEDIN(obj, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS');
17024REPEAT i := LOINDEX(category_assignments) TO HIINDEX(category_assignments) BY 1;
17025  categories := categories + category_assignments[i].name;
17026END_REPEAT;
17027RETURN(categories);
17028END_FUNCTION;
17029
17030FUNCTION cc_design_person_and_organization_correlation
17031	(e: cc_design_person_and_organization_assignment) : BOOLEAN;
17032    LOCAL
17033      po_role : STRING;
17034    END_LOCAL;
17035      po_role := e\person_and_organization_assignment.role.name;
17036    CASE po_role OF
17037      'request_recipient'      : IF SIZEOF (e.items) <>
17038                                 SIZEOF (QUERY (x <* e.items |
17039                                 SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
17040                                 'CHANGE_REQUEST',
17041                                 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
17042                                 'START_REQUEST'] *
17043                                 TYPEOF (x)) = 1))
17044                                 THEN RETURN(FALSE);
17045                               END_IF;
17046      'initiator'              : IF SIZEOF (e.items) <>
17047                                 SIZEOF (QUERY (x <* e.items |
17048                                 SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
17049                                 'CHANGE_REQUEST',
17050                                 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
17051                                 'START_REQUEST',
17052                                 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
17053                                 'START_WORK',
17054                                 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
17055                                 'CHANGE'] *
17056                                 TYPEOF (x)) = 1))
17057                                 THEN RETURN(FALSE);
17058                               END_IF;
17059      'creator'                : IF SIZEOF (e.items) <>
17060                                 SIZEOF (QUERY (x <* e.items |
17061                                 SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
17062                                 'PRODUCT_DEFINITION_FORMATION',
17063                                 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
17064                                 'PRODUCT_DEFINITION'] *
17065                                 TYPEOF (x)) = 1))
17066                                 THEN RETURN (FALSE);
17067                               END_IF;
17068      'part_supplier'          : IF SIZEOF (e.items) <>
17069                                 SIZEOF (QUERY (x <* e.items |
17070                                 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
17071                                 'PRODUCT_DEFINITION_FORMATION'
17072                                 IN TYPEOF (x)))
17073                                 THEN RETURN(FALSE);
17074                               END_IF;
17075      'design_supplier'        : IF SIZEOF (e.items) <>
17076                                 SIZEOF (QUERY (x <* e.items |
17077                                 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
17078                                 'PRODUCT_DEFINITION_FORMATION'
17079                                 IN TYPEOF (x)))
17080                                 THEN RETURN(FALSE);
17081                               END_IF;
17082      'design_owner'           : IF SIZEOF (e.items) <>
17083                                 SIZEOF (QUERY (x <* e.items |
17084                                 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT'
17085                                 IN TYPEOF (x)))
17086                                 THEN RETURN(FALSE);
17087                               END_IF;
17088      'configuration_manager'  : IF SIZEOF (e.items) <>
17089                                 SIZEOF (QUERY (x <* e.items |
17090                                 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
17091                                 'CONFIGURATION_ITEM'
17092                                 IN TYPEOF (x)))
17093                                 THEN RETURN(FALSE);
17094                               END_IF;
17095      'contractor'             : IF SIZEOF (e.items) <>
17096                                 SIZEOF (QUERY (x <* e.items |
17097                                 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONTRACT'
17098                                 IN TYPEOF (x)))
17099                                 THEN RETURN(FALSE);
17100                               END_IF;
17101      'classification_officer' : IF SIZEOF (e.items) <>
17102                                 SIZEOF (QUERY (x <* e.items |
17103                                 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +
17104                                 'SECURITY_CLASSIFICATION'
17105                                 IN TYPEOF (x))) THEN
17106                                 RETURN(FALSE);
17107                               END_IF;
17108    OTHERWISE : RETURN(TRUE);
17109  END_CASE;
17110  RETURN (TRUE);
17111END_FUNCTION;
17112
17113FUNCTION check_continuous_edges
17114	(edges: LIST [0:?] OF  UNIQUE edge_curve) : BOOLEAN;
17115  LOCAL
17116    i           : INTEGER;
17117    next_vertex : vertex;
17118  END_LOCAL;
17119
17120  -- first check whether there is only one edge in the list: in this
17121  -- case there is no connectivity to be checked.
17122
17123  IF (SIZEOF(edges) = 1)
17124  THEN RETURN(TRUE);
17125  END_IF;
17126
17127  -- otherwise, establish the matching vertices of edges 1 and 2 in
17128  -- the list, and determine the vertex of edge 2 to which edge 3,
17129  -- must be connected, if there are more than two edges in the list.
17130
17131  IF ((edges[2].edge_start :=: edges[1].edge_end)
17132    XOR (edges[2].edge_start :=: edges[1].edge_start))
17133  THEN next_vertex := edges[2].edge_end;
17134  ELSE
17135    IF ((edges[2].edge_end :=: edges[1].edge_end)
17136      XOR (edges[2].edge_end :=: edges[1].edge_start))
17137    THEN next_vertex := edges[2].edge_start;
17138    ELSE RETURN(FALSE); -- no match between any vertices of edges 1 and 2
17139    END_IF;
17140  END_IF;
17141
17142  -- exit if there are only two edges and they are connected
17143
17144  IF (SIZEOF(edges) = 2)
17145  THEN RETURN(TRUE);
17146  END_IF;
17147
17148  -- otherwise, check that any remaining edges are connected in list order.
17149
17150  REPEAT i := 3 TO HIINDEX(edges);
17151    IF (edges[i].edge_start :=: next_vertex)
17152    THEN next_vertex := edges[i].edge_end;
17153    ELSE
17154      IF (edges[i].edge_end :=: next_vertex)
17155      THEN next_vertex := edges[i].edge_start;
17156      ELSE RETURN(FALSE); -- no match is found.
17157      END_IF;
17158    END_IF;
17159  END_REPEAT;
17160  RETURN(TRUE);
17161END_FUNCTION;
17162
17163FUNCTION check_text_alignment
17164	(ct: composite_text) : BOOLEAN;
17165  LOCAL
17166    a : SET OF text_alignment := [];
17167  END_LOCAL;
17168
17169  -- create a set of all the alignments
17170  REPEAT i := 1 TO HIINDEX (ct.collected_text);
17171    a := a + [ct.collected_text[i]\text_literal.alignment];
17172  END_REPEAT;
17173
17174  -- if there is more than one element in the set
17175  -- then not all alignments were the same
17176  RETURN (SIZEOF(a) = 1);
17177END_FUNCTION;
17178
17179FUNCTION check_text_font
17180	(ct: composite_text) : BOOLEAN;
17181  LOCAL
17182    f : SET OF font_select := [];
17183  END_LOCAL;
17184
17185  -- build a set of all the fonts
17186  REPEAT i := 1 TO HIINDEX (ct.collected_text);
17187    f := f + [ct.collected_text[i]\text_literal.font];
17188  END_REPEAT;
17189
17190  -- if there is more than one element in the set
17191  -- then not all fonts were the same
17192  RETURN (SIZEOF(f) <= 1);
17193END_FUNCTION;
17194
17195FUNCTION class_assignment_is_valid
17196	(aia: applied_classification_assignment) : BOOLEAN;
17197LOCAL
17198  item: classification_item;
17199  role: classification_role;
17200END_LOCAL;
17201
17202role:= aia\classification_assignment.role;
17203IF ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +'CLASS_SYSTEM' IN TYPEOF(aia\classification_assignment.assigned_class)) THEN
17204  IF(role\classification_role.name <> 'class system membership') THEN
17205    RETURN(FALSE);
17206  END_IF;
17207  REPEAT i:=LOINDEX(aia\applied_classification_assignment.items) TO HIINDEX(aia\applied_classification_assignment.items);
17208    item:= aia\applied_classification_assignment.items[i];
17209
17210    IF (SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'CLASS_SYSTEM_ITEM'] * TYPEOF(item))=0) THEN
17211-- item invalid if item does not belong to the types that may have a class_system
17212	RETURN(FALSE);
17213    END_IF;
17214  END_REPEAT;
17215END_IF;
17216
17217IF ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' +'CHARACTERIZED_CLASS' IN TYPEOF(aia\classification_assignment.assigned_class)) THEN
17218  IF	NOT(role\classification_role.name IN ['definitional','non-definitional','']) THEN
17219    RETURN(FALSE);
17220  END_IF;
17221
17222
17223  REPEAT i:=LOINDEX(aia\applied_classification_assignment.items) TO HIINDEX(aia\applied_classification_assignment.items);
17224    item:= aia\applied_classification_assignment.items[i];
17225
17226    IF (SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'CLASSIFIED_ITEM'] * TYPEOF(item))=0) THEN
17227-- item invalid if item does not belong to the types that may have a characterized_class
17228	RETURN(FALSE);
17229    END_IF;
17230  END_REPEAT;
17231END_IF;
17232
17233  IF
17234   (role\classification_role.name = 'definitional')
17235   THEN
17236     IF NOT
17237      (SIZEOF(QUERY(it <* aia\applied_classification_assignment.items | NOT
17238             (SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_DEFINITION_FORMATION', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRODUCT_DEFINITION'] * TYPEOF(it)) = 1)
17239      )) = 0 )
17240      THEN
17241      RETURN(FALSE);
17242     END_IF;
17243  END_IF;
17244
17245RETURN(TRUE);
17246END_FUNCTION;
17247
17248FUNCTION closed_shell_reversed
17249	(a_shell: closed_shell) : oriented_closed_shell;
17250  LOCAL
17251    the_reverse : oriented_closed_shell;
17252  END_LOCAL;
17253   IF ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF (a_shell) ) THEN
17254      the_reverse := dummy_tri ||
17255                    connected_face_set (
17256                       a_shell\connected_face_set.cfs_faces) ||
17257                    closed_shell () || oriented_closed_shell(
17258                     a_shell\oriented_closed_shell.closed_shell_element,
17259                       NOT(a_shell\oriented_closed_shell.orientation));
17260   ELSE
17261      the_reverse := dummy_tri ||
17262               connected_face_set (
17263                 a_shell\connected_face_set.cfs_faces) ||
17264               closed_shell () || oriented_closed_shell (a_shell, FALSE);
17265   END_IF;
17266   RETURN (the_reverse);
17267END_FUNCTION;
17268
17269FUNCTION compute_total_depth
17270	(swsrh: solid_with_stepped_round_hole) : positive_length_measure;
17271LOCAL
17272i  : positive_integer;
17273n  : positive_integer := swsrh.segments;
17274td : positive_length_measure := swsrh.segment_depths[1];
17275END_LOCAL;
17276
17277IF n = 1
17278THEN RETURN(td);
17279ELSE
17280  REPEAT i := 2 TO n;
17281    td := td + swsrh.segment_depths[i];
17282  END_REPEAT;
17283END_IF;
17284RETURN(td);
17285END_FUNCTION;
17286
17287FUNCTION conditional_reverse
17288	(p: BOOLEAN; an_item: reversible_topology) : reversible_topology;
17289IF p THEN
17290     RETURN (an_item);
17291   ELSE
17292     RETURN (topology_reversed (an_item));
17293   END_IF;
17294END_FUNCTION;
17295
17296FUNCTION constraints_composite_curve_on_surface
17297	(c: composite_curve_on_surface) : BOOLEAN;
17298   LOCAL
17299     n_segments : INTEGER := SIZEOF(c.segments);
17300   END_LOCAL;
17301
17302   REPEAT k := 1 TO n_segments;
17303     IF (NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PCURVE' IN
17304           TYPEOF(c\composite_curve.segments[k].parent_curve))) AND
17305        (NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_CURVE' IN
17306           TYPEOF(c\composite_curve.segments[k].parent_curve))) AND
17307        (NOT('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMPOSITE_CURVE_ON_SURFACE' IN
17308           TYPEOF(c\composite_curve.segments[k].parent_curve)))  THEN
17309       RETURN (FALSE);
17310     END_IF;
17311   END_REPEAT;
17312   RETURN(TRUE);
17313END_FUNCTION;
17314
17315FUNCTION constraints_geometry_shell_based_surface_model
17316	(m: shell_based_surface_model) : BOOLEAN;
17317   LOCAL
17318     result : BOOLEAN := TRUE;
17319   END_LOCAL;
17320
17321   REPEAT j := 1 TO SIZEOF(m.sbsm_boundary);
17322     IF (NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.OPEN_SHELL' IN
17323                     TYPEOF(m.sbsm_boundary[j])) AND
17324        (NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CLOSED_SHELL' IN
17325           TYPEOF(m.sbsm_boundary[j]))))
17326     THEN
17327       result := FALSE;
17328       RETURN(result);
17329       (* A surface model is composed of OPEN_ and CLOSED_SHELLs. *)
17330     END_IF;
17331   END_REPEAT;
17332   RETURN(result);
17333END_FUNCTION;
17334
17335FUNCTION constraints_geometry_shell_based_wireframe_model
17336	(m: shell_based_wireframe_model) : BOOLEAN;
17337   LOCAL
17338     result : BOOLEAN := TRUE;
17339   END_LOCAL;
17340
17341   REPEAT j := 1 TO SIZEOF(m.sbwm_boundary);
17342     IF (NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.WIRE_SHELL' IN
17343                    TYPEOF(m.sbwm_boundary[j])) AND
17344        (NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VERTEX_SHELL' IN
17345                      TYPEOF(m.sbwm_boundary[j]))))
17346     THEN
17347       result := FALSE;
17348       RETURN(result);
17349       (* A wireframe model is composed of WIRE_ and VERTEX_SHELLs *)
17350     END_IF;
17351   END_REPEAT;
17352   RETURN(result);
17353END_FUNCTION;
17354
17355FUNCTION constraints_param_b_spline
17356	(degree: INTEGER; up_knots: INTEGER; up_cp: INTEGER; knot_mult: LIST [0:?] OF INTEGER; knots: LIST [0:?] OF parameter_value) : BOOLEAN;
17357   LOCAL
17358     result  : BOOLEAN := TRUE;
17359     k, sum  : INTEGER;
17360   END_LOCAL;
17361
17362   (* Find sum of knot multiplicities. *)
17363   sum := knot_mult[1];
17364
17365   REPEAT i := 2 TO up_knots;
17366     sum := sum + knot_mult[i];
17367   END_REPEAT;
17368
17369   (* Check limits holding for all B-spline parametrisations *)
17370   IF (degree < 1) OR (up_knots < 2) OR (up_cp < degree) OR
17371         (sum <> (degree + up_cp + 2)) THEN
17372     result := FALSE;
17373     RETURN(result);
17374   END_IF;
17375
17376   k := knot_mult[1];
17377
17378   IF (k < 1) OR (k > degree + 1) THEN
17379     result := FALSE;
17380     RETURN(result);
17381   END_IF;
17382
17383   REPEAT i := 2 TO up_knots;
17384     IF (knot_mult[i] < 1) OR (knots[i] <= knots[i-1]) THEN
17385       result := FALSE;
17386       RETURN(result);
17387     END_IF;
17388
17389     k := knot_mult[i];
17390
17391     IF (i < up_knots) AND (k > degree) THEN
17392       result := FALSE;
17393       RETURN(result);
17394     END_IF;
17395
17396     IF (i = up_knots) AND (k > degree + 1) THEN
17397       result := FALSE;
17398       RETURN(result);
17399     END_IF;
17400   END_REPEAT;
17401   RETURN(result);
17402END_FUNCTION;
17403
17404FUNCTION constraints_rectangular_composite_surface
17405	(s: rectangular_composite_surface) : BOOLEAN;
17406REPEAT i := 1 TO s.n_u;
17407       REPEAT j := 1 TO s.n_v;
17408         IF NOT (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF
17409                    (s.segments[i][j].parent_surface)) OR
17410                 ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.RECTANGULAR_TRIMMED_SURFACE' IN TYPEOF
17411                    (s.segments[i][j].parent_surface))) THEN
17412           RETURN(FALSE);
17413       END_IF;
17414     END_REPEAT;
17415   END_REPEAT;
17416
17417   (* Check the transition codes, omitting the last row or column *)
17418   REPEAT i := 1 TO s.n_u-1;
17419     REPEAT j := 1 TO s.n_v;
17420       IF s.segments[i][j].u_transition = discontinuous THEN
17421         RETURN(FALSE);
17422       END_IF;
17423     END_REPEAT;
17424   END_REPEAT;
17425
17426   REPEAT i := 1 TO s.n_u;
17427     REPEAT j := 1 TO s.n_v-1;
17428       IF s.segments[i][j].v_transition = discontinuous THEN
17429         RETURN(FALSE);
17430       END_IF;
17431     END_REPEAT;
17432   END_REPEAT;
17433   RETURN(TRUE);
17434END_FUNCTION;
17435
17436FUNCTION control_characters_free
17437	(s: STRING) : BOOLEAN;
17438    LOCAL
17439      ch : STRING;
17440    END_LOCAL;
17441
17442    REPEAT i:=1 TO LENGTH(s);
17443      ch := s[i];
17444      IF (ch = '\x9') OR (ch = '\xA') OR (ch = '\xD') THEN
17445        RETURN(FALSE);
17446      END_IF;
17447    END_REPEAT;
17448    RETURN (TRUE);
17449END_FUNCTION;
17450
17451FUNCTION cross_product
17452	(arg1: direction; arg2: direction) : vector;
17453  LOCAL
17454    mag    : REAL;
17455    res    : direction;
17456    v1,v2  : LIST[3:3] OF REAL;
17457    result : vector;
17458  END_LOCAL;
17459
17460  IF ( NOT EXISTS (arg1) OR (arg1.dim = 2)) OR
17461     ( NOT EXISTS (arg2) OR (arg2.dim = 2)) THEN
17462    RETURN(?);
17463  ELSE
17464    BEGIN
17465      v1  := normalise(arg1).direction_ratios;
17466      v2  := normalise(arg2).direction_ratios;
17467      res := dummy_gri || direction([(v1[2]*v2[3] - v1[3]*v2[2]),
17468            (v1[3]*v2[1] - v1[1]*v2[3]), (v1[1]*v2[2] - v1[2]*v2[1])]);
17469      mag := 0.0;
17470      REPEAT i := 1 TO 3;
17471        mag := mag + res.direction_ratios[i]*res.direction_ratios[i];
17472      END_REPEAT;
17473      IF (mag > 0.0) THEN
17474        result := dummy_gri || vector(res, SQRT(mag));
17475      ELSE
17476        result := dummy_gri || vector(arg1, 0.0);
17477      END_IF;
17478      RETURN(result);
17479    END;
17480  END_IF;
17481END_FUNCTION;
17482
17483FUNCTION curve_weights_positive
17484	(b: rational_b_spline_curve) : BOOLEAN;
17485   LOCAL
17486     result : BOOLEAN := TRUE;
17487   END_LOCAL;
17488
17489   REPEAT i := 0 TO b.upper_index_on_control_points;
17490     IF b.weights[i] <= 0.0  THEN
17491       result := FALSE;
17492       RETURN(result);
17493     END_IF;
17494   END_REPEAT;
17495   RETURN(result);
17496END_FUNCTION;
17497
17498FUNCTION default_tolerance_table_cell_wr2
17499	(agg: compound_item_definition) : BOOLEAN;
17500BEGIN
17501IF SIZEOF(agg) <= 5 THEN
17502  RETURN(TRUE);
17503ELSE
17504  RETURN(FALSE);
17505END_IF;
17506END;
17507END_FUNCTION;
17508
17509FUNCTION default_tolerance_table_cell_wr3
17510	(agg: compound_item_definition) : BOOLEAN;
17511BEGIN
17512IF (SIZEOF(QUERY ( i <* agg | (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i))
17513  AND (i\representation_item.name = 'significant number of digits')) )) = 1) OR
17514((SIZEOF(QUERY ( i <* agg | (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND
17515  (i\representation_item.name = 'lower limit')) )) = 1) AND
17516(SIZEOF( QUERY ( i <* agg | (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND
17517  (i\representation_item.name = 'upper limit')) )) = 1)) THEN
17518  RETURN(TRUE);
17519ELSE
17520  RETURN(FALSE);
17521END_IF;
17522END;
17523END_FUNCTION;
17524
17525FUNCTION default_tolerance_table_cell_wr4
17526	(agg: compound_item_definition) : BOOLEAN;
17527BEGIN
17528IF (SIZEOF(QUERY ( i <* agg | (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND
17529  (i\representation_item.name = 'plus minus tolerance value')) )) = 1) OR
17530((SIZEOF(QUERY ( i <* agg | (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND (
17531  i\representation_item.name = 'lower tolerance value')) )) = 1) AND
17532(SIZEOF( QUERY ( i <* agg | (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND (
17533  i\representation_item.name = 'upper tolerance value')) )) = 1)) THEN
17534  RETURN(TRUE);
17535ELSE
17536  RETURN(FALSE);
17537END_IF;
17538END;
17539END_FUNCTION;
17540
17541FUNCTION default_tolerance_table_cell_wr5
17542	(agg: compound_item_definition) : BOOLEAN;
17543BEGIN
17544IF (SIZEOF(QUERY ( i <* agg | ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) )) <= 1) AND
17545(SIZEOF(QUERY ( i <* agg | ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) )) =
17546  SIZEOF(QUERY ( i <* agg | (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND
17547  (i\representation_item.name = 'cell description'))) ))
17548THEN
17549  RETURN(TRUE);
17550ELSE
17551  RETURN(FALSE);
17552END_IF;
17553END;
17554END_FUNCTION;
17555
17556FUNCTION dependently_instantiated
17557	(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;
17558LOCAL
17559  number_of_input_instances     : INTEGER;
17560  number_of_referring_instances : INTEGER;
17561  bag_of_referring_instances    : BAG OF GENERIC:igen := [];
17562  dependently_instantiated_flag : BOOLEAN;
17563  previous_in_chain_plus        : LIST OF GENERIC:cgen := [];
17564  result                        : BOOLEAN := true;
17565  set_of_types                  : SET OF STRING := [];
17566END_LOCAL;
17567
17568IF EXISTS(set_of_input_instances) THEN
17569  number_of_input_instances := SIZEOF(set_of_input_instances);
17570  (* Add the declared type of bag_of_referring_instances to the set of
17571     types of the REFERENCEd instances for the subset comparison later.
17572   *)
17573  set_of_input_types := set_of_input_types + 'GENERIC';
17574  REPEAT i:=1 TO number_of_input_instances;
17575    (* Determine all references to the current input instance. *)
17576    bag_of_referring_instances := USEDIN (set_of_input_instances[i] , '');
17577    IF EXISTS(bag_of_referring_instances) THEN
17578      number_of_referring_instances := SIZEOF(bag_of_referring_instances);
17579      dependently_instantiated_flag := false;
17580      REPEAT j:=1 TO number_of_referring_instances;
17581        (* Determine the type strings of the current referencing instance.
17582         *)
17583        set_of_types := TYPEOF(bag_of_referring_instances[j]);
17584        (* If the referencing instance is of one of the types of the
17585           only dependently instantiable select items, the current input
17586           instance may still be invalidly instantiated.
17587           Otherwise it is OK, and the next input instance is tested.
17588         *)
17589        IF set_of_types <= set_of_input_types THEN -- subset operator
17590          (* The referring instance is of one of the restricted types.
17591             However, it may itself be referred to by a valid instance;
17592             then also the current instance would be valid.
17593             Thus, call this function recursively with the referring
17594             instance as input.
17595             To avoid an infinite loop in case a set of instances
17596             reference each other in a closed loop, test first whether
17597             the current referencing instance is in the list of
17598             previously processed chain members.
17599           *)
17600          IF NOT (bag_of_referring_instances[j] IN previous_in_chain) THEN
17601            previous_in_chain_plus := previous_in_chain +
17602            set_of_input_instances[i];
17603            IF dependently_instantiated([bag_of_referring_instances[j]],
17604              set_of_input_types,
17605              previous_in_chain_plus) THEN
17606              dependently_instantiated_flag := true;
17607              ESCAPE; -- dependently instantiated; next input instance
17608            ELSE
17609              (* Not dependently instantiated: go to next referring
17610              instance. *)
17611              SKIP;
17612            END_IF;
17613          END_IF;
17614        ELSE
17615          dependently_instantiated_flag := true;
17616          ESCAPE; -- dependently instantiated; take next input instance
17617        END_IF;
17618      END_REPEAT;
17619      IF NOT dependently_instantiated_flag THEN
17620        RETURN(false);
17621      END_IF;
17622    ELSE
17623      RETURN(false); -- not referenced at all => invalidly instantiated
17624    END_IF;
17625  END_REPEAT;
17626ELSE
17627  RETURN(false); -- no input
17628END_IF;
17629
17630RETURN(true);
17631END_FUNCTION;
17632
17633FUNCTION derive_angle
17634	(placement_1: axis2_placement_3d; placement_2: axis2_placement_3d) : plane_angle_measure;
17635    LOCAL
17636      v1     : direction;
17637      v2     : direction;
17638      mag_v1 : REAL;
17639      mag_v2 : REAL;
17640      theta  : plane_angle_measure;
17641    END_LOCAL;
17642    v1 := placement_1.p[1];
17643    v2 := placement_2.p[1];
17644    mag_v1 := SQRT (v1.direction_ratios[1]*v1.direction_ratios[1] +
17645                    v1.direction_ratios[2]*v1.direction_ratios[2]);
17646    mag_v2 := SQRT (v2.direction_ratios[1]*v2.direction_ratios[1] +
17647                    v2.direction_ratios[2]*v2.direction_ratios[2]);
17648    IF ((mag_v1 = 0.0) OR (mag_v2 = 0.0)) THEN
17649      theta := 0.0;
17650      RETURN (theta);
17651    END_IF;
17652    theta := ACOS ((v1.direction_ratios[1]*v2.direction_ratios[1] +
17653                    v1.direction_ratios[2]*v2.direction_ratios[2]) /
17654                   (mag_v1*mag_v2));
17655    RETURN (theta);
17656END_FUNCTION;
17657
17658FUNCTION derive_dimensional_exponents
17659	(x: unit) : dimensional_exponents;
17660    LOCAL
17661      result : dimensional_exponents := dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
17662    END_LOCAL;
17663
17664    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DERIVED_UNIT' IN TYPEOF(x) THEN
17665      REPEAT i := LOINDEX(x\derived_unit.elements) TO HIINDEX(x\derived_unit.elements);
17666        result.length_exponent := result.length_exponent +
17667        (x\derived_unit.elements[i]\derived_unit_element.exponent *
17668         x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.length_exponent);
17669        result.mass_exponent := result.mass_exponent +
17670        (x\derived_unit.elements[i]\derived_unit_element.exponent *
17671         x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.mass_exponent);
17672        result.time_exponent := result.time_exponent +
17673        (x\derived_unit.elements[i]\derived_unit_element.exponent *
17674         x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.time_exponent);
17675        result.electric_current_exponent := result.electric_current_exponent +
17676        (x\derived_unit.elements[i]\derived_unit_element.exponent *
17677         x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.electric_current_exponent);
17678        result.thermodynamic_temperature_exponent := result.thermodynamic_temperature_exponent +
17679        (x\derived_unit.elements[i]\derived_unit_element.exponent *
17680         x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.thermodynamic_temperature_exponent);
17681        result.amount_of_substance_exponent := result.amount_of_substance_exponent +
17682        (x\derived_unit.elements[i]\derived_unit_element.exponent *
17683         x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.amount_of_substance_exponent);
17684        result.luminous_intensity_exponent := result.luminous_intensity_exponent +
17685        (x\derived_unit.elements[i]\derived_unit_element.exponent *
17686         x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.luminous_intensity_exponent);
17687      END_REPEAT;
17688    ELSE
17689      result := x\named_unit.dimensions;
17690    END_IF;
17691    RETURN (result);
17692END_FUNCTION;
17693
17694FUNCTION dimension_of
17695	(item: geometric_representation_item) : dimension_count;
17696  LOCAL
17697    x   : SET OF representation;
17698    y   : representation_context;
17699    dim : dimension_count;
17700  END_LOCAL;
17701  -- For cartesian_point, direction, or vector dimension is determined by
17702  -- counting components.
17703    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CARTESIAN_POINT' IN TYPEOF(item) THEN
17704       dim := SIZEOF(item\cartesian_point.coordinates);
17705       RETURN(dim);
17706    END_IF;
17707    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DIRECTION' IN TYPEOF(item) THEN
17708       dim := SIZEOF(item\direction.direction_ratios);
17709       RETURN(dim);
17710    END_IF;
17711    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VECTOR' IN TYPEOF(item) THEN
17712       dim := SIZEOF(item\vector.orientation\direction.direction_ratios);
17713       RETURN(dim);
17714    END_IF;
17715  -- For all other types of geometric_representation_item dim is obtained
17716  -- via context.
17717  -- Find the set of representation in which the item is used.
17718
17719  x := using_representations(item);
17720
17721  -- Determines the dimension_count of the
17722  -- geometric_representation_context. Note that the
17723  -- RULE compatible_dimension ensures that the context_of_items
17724  -- is of type geometric_representation_context and has
17725  -- the same dimension_count for all values of x.
17726  -- The SET x is non-empty since this is required by WR1 of
17727  -- representation_item.
17728    y := x[1].context_of_items;
17729    dim := y\geometric_representation_context.coordinate_space_dimension;
17730    RETURN (dim);
17731END_FUNCTION;
17732
17733FUNCTION dimensions_for_si_unit
17734	(n: si_unit_name) : dimensional_exponents;
17735CASE n OF
17736      metre:
17737        RETURN (dimensional_exponents(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
17738      gram:
17739        RETURN (dimensional_exponents(0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0));
17740      second:
17741        RETURN (dimensional_exponents(0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0));
17742      ampere:
17743        RETURN (dimensional_exponents(0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0));
17744      kelvin:
17745        RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0));
17746      mole:
17747        RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0));
17748      candela:
17749        RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0));
17750      radian:
17751        RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
17752      steradian:
17753        RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
17754      hertz:
17755        RETURN (dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0));
17756      newton:
17757        RETURN (dimensional_exponents(1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0));
17758      pascal:
17759        RETURN (dimensional_exponents(-1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0));
17760      joule:
17761        RETURN (dimensional_exponents(2.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0));
17762      watt:
17763        RETURN (dimensional_exponents(2.0, 1.0, -3.0, 0.0, 0.0, 0.0, 0.0));
17764      coulomb:
17765        RETURN (dimensional_exponents(0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0));
17766      volt:
17767        RETURN (dimensional_exponents(2.0, 1.0, -3.0, -1.0, 0.0, 0.0, 0.0));
17768      farad:
17769        RETURN (dimensional_exponents(-2.0, -1.0, 4.0, 1.0, 0.0, 0.0, 0.0));
17770      ohm:
17771        RETURN (dimensional_exponents(2.0, 1.0, -3.0, -2.0, 0.0, 0.0, 0.0));
17772      siemens:
17773        RETURN (dimensional_exponents(-2.0, -1.0, 3.0, 2.0, 0.0, 0.0, 0.0));
17774      weber:
17775        RETURN (dimensional_exponents(2.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0));
17776      tesla:
17777        RETURN (dimensional_exponents(0.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0));
17778      henry:
17779        RETURN (dimensional_exponents(2.0, 1.0, -2.0, -2.0, 0.0, 0.0, 0.0));
17780      degree_Celsius:
17781        RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0));
17782      lumen:
17783        RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0));
17784      lux:
17785        RETURN (dimensional_exponents(-2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0));
17786      becquerel:
17787        RETURN (dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0));
17788      gray:
17789        RETURN (dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0));
17790      sievert:
17791        RETURN (dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0));
17792      OTHERWISE:
17793        RETURN (?);
17794    END_CASE;
17795END_FUNCTION;
17796
17797FUNCTION dot_product
17798	(arg1: direction; arg2: direction) : REAL;
17799   LOCAL
17800     scalar : REAL;
17801     vec1, vec2: direction;
17802     ndim : INTEGER;
17803   END_LOCAL;
17804
17805   IF NOT EXISTS (arg1) OR NOT EXISTS (arg2) THEN
17806     scalar := ?;
17807     (* When function is called with invalid data an indeterminate result
17808     is returned *)
17809   ELSE
17810     IF (arg1.dim <> arg2.dim) THEN
17811       scalar := ?;
17812     (* When function is called with invalid data an indeterminate result
17813     is returned *)
17814     ELSE
17815       BEGIN
17816         vec1   := normalise(arg1);
17817         vec2   := normalise(arg2);
17818         ndim   := arg1.dim;
17819         scalar := 0.0;
17820         REPEAT  i := 1 TO ndim;
17821           scalar := scalar +
17822                       vec1.direction_ratios[i]*vec2.direction_ratios[i];
17823         END_REPEAT;
17824       END;
17825     END_IF;
17826   END_IF;
17827   RETURN (scalar);
17828END_FUNCTION;
17829
17830FUNCTION edge_reversed
17831	(an_edge: edge) : oriented_edge;
17832   LOCAL
17833     the_reverse : oriented_edge;
17834   END_LOCAL;
17835
17836   IF ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ORIENTED_EDGE' IN TYPEOF (an_edge) ) THEN
17837     the_reverse  := dummy_tri ||
17838             edge(an_edge.edge_end, an_edge.edge_start) ||
17839             oriented_edge(an_edge\oriented_edge.edge_element,
17840                        NOT (an_edge\oriented_edge.orientation)) ;
17841   ELSE
17842     the_reverse := dummy_tri ||
17843             edge(an_edge.edge_end, an_edge.edge_start) ||
17844             oriented_edge(an_edge, FALSE);
17845   END_IF;
17846   RETURN (the_reverse);
17847END_FUNCTION;
17848
17849FUNCTION external_version_assignment_is_valid
17850	(aia: applied_external_identification_assignment) : BOOLEAN;
17851    LOCAL
17852      item: identification_item;
17853      role: identification_role;
17854    END_LOCAL;
17855      role:= aia.role;
17856      IF role.name='version' THEN
17857        REPEAT i:=LOINDEX(aia.items) TO HIINDEX(aia.items);
17858          item:= aia.items[i];
17859          IF (SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'EXTERNALLY_VERSIONED_ITEM']*TYPEOF(item))=0) THEN
17860            -- item invalid if item does not belong to versionable types
17861	        RETURN(FALSE);
17862          END_IF;
17863        END_REPEAT;
17864        RETURN(TRUE);
17865      ELSE		-- case where aia does not convey a version id
17866        RETURN(TRUE);
17867      END_IF;
17868END_FUNCTION;
17869
17870FUNCTION face_bound_reversed
17871	(a_face_bound: face_bound) : face_bound;
17872   LOCAL
17873     the_reverse : face_bound ;
17874   END_LOCAL;
17875   IF ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE_OUTER_BOUND' IN TYPEOF (a_face_bound) ) THEN
17876     the_reverse := dummy_tri ||
17877                      face_bound(a_face_bound\face_bound.bound,
17878                           NOT (a_face_bound\face_bound.orientation))
17879                            || face_outer_bound() ;
17880   ELSE
17881     the_reverse := dummy_tri ||
17882         face_bound(a_face_bound.bound, NOT(a_face_bound.orientation));
17883   END_IF;
17884  RETURN (the_reverse);
17885END_FUNCTION;
17886
17887FUNCTION face_reversed
17888	(a_face: face) : oriented_face;
17889   LOCAL
17890     the_reverse : oriented_face ;
17891   END_LOCAL;
17892   IF ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ORIENTED_FACE' IN TYPEOF (a_face) ) THEN
17893     the_reverse := dummy_tri ||
17894       face(set_of_topology_reversed(a_face.bounds)) ||
17895          oriented_face(a_face\oriented_face.face_element,
17896                           NOT (a_face\oriented_face.orientation)) ;
17897   ELSE
17898     the_reverse := dummy_tri ||
17899       face(set_of_topology_reversed(a_face.bounds)) ||
17900                               oriented_face(a_face, FALSE) ;
17901   END_IF;
17902      RETURN (the_reverse);
17903END_FUNCTION;
17904
17905FUNCTION first_proj_axis
17906	(z_axis: direction; arg: direction) : direction;
17907  LOCAL
17908    x_axis : direction;
17909    v      : direction;
17910    z      : direction;
17911    x_vec  : vector;
17912  END_LOCAL;
17913
17914  IF (NOT EXISTS(z_axis)) THEN
17915    RETURN (?) ;
17916  ELSE
17917    z := normalise(z_axis);
17918    IF NOT EXISTS(arg) THEN
17919      IF ((z.direction_ratios <> [1.0,0.0,0.0]) AND
17920          (z.direction_ratios <> [-1.0,0.0,0.0]))  THEN
17921        v :=  dummy_gri || direction([1.0,0.0,0.0]);
17922      ELSE
17923        v := dummy_gri || direction([0.0,1.0,0.0]);
17924      END_IF;
17925    ELSE
17926      IF  (arg.dim <> 3) THEN
17927        RETURN (?) ;
17928      END_IF;
17929      IF ((cross_product(arg,z).magnitude) = 0.0) THEN
17930        RETURN (?);
17931      ELSE
17932        v := normalise(arg);
17933      END_IF;
17934    END_IF;
17935    x_vec := scalar_times_vector(dot_product(v, z), z);
17936    x_axis := vector_difference(v, x_vec).orientation;
17937    x_axis := normalise(x_axis);
17938  END_IF;
17939  RETURN(x_axis);
17940END_FUNCTION;
17941
17942FUNCTION gbsf_check_curve
17943	(cv: representation_item) : BOOLEAN;
17944IF SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.BOUNDED_CURVE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONIC', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_REPLICA', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LINE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.OFFSET_CURVE_3D'] * TYPEOF(cv)) > 1 THEN
17945    RETURN (FALSE);
17946  END_IF;
17947  IF SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CIRCLE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ELLIPSE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.TRIMMED_CURVE'] * TYPEOF(cv)) = 1 THEN
17948    RETURN (TRUE);
17949  ELSE
17950    IF (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_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
17951      RETURN (TRUE);
17952    ELSE
17953      IF (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMPOSITE_CURVE' IN TYPEOF(cv)) AND (cv\composite_curve.self_intersect = FALSE) OR (cv\composite_curve.self_intersect = UNKNOWN)) THEN
17954        RETURN (SIZEOF(QUERY(seg <* cv\composite_curve.segments | NOT (gbsf_check_curve(seg.parent_curve)))) = 0);
17955      ELSE
17956        IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_REPLICA' IN TYPEOF(cv) THEN
17957          RETURN (gbsf_check_curve(cv\curve_replica.parent_curve));
17958        ELSE
17959          IF (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_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 ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POLYLINE' IN TYPEOF(cv\offset_curve_3d.basis_curve)))) THEN
17960            RETURN (gbsf_check_curve(cv\offset_curve_3d.basis_curve));
17961          ELSE
17962            IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PCURVE' IN TYPEOF(cv) THEN
17963              RETURN ((gbsf_check_curve(cv\pcurve.reference_to_curve\representation.items[1])) AND (gbsf_check_surface(cv\pcurve.basis_surface)));
17964            ELSE
17965              IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POLYLINE' IN TYPEOF(cv) THEN
17966                IF (SIZEOF(cv\polyline.points) >= 3) THEN
17967                  RETURN (TRUE);
17968                END_IF;
17969              ELSE
17970                IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_CURVE' IN TYPEOF(cv) THEN
17971                  IF gbsf_check_curve(cv\surface_curve.curve_3d) THEN
17972                    REPEAT i := 1 TO SIZEOF(cv\surface_curve.associated_geometry);
17973                      IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE' IN TYPEOF(cv\surface_curve.associated_geometry[i]) THEN
17974                        IF NOT gbsf_check_surface(cv\surface_curve.associated_geometry[i]) THEN
17975                          RETURN (FALSE);
17976                        END_IF;
17977                      ELSE
17978                        IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PCURVE' IN TYPEOF(cv\surface_curve.associated_geometry[i]) THEN
17979                          IF NOT gbsf_check_curve(cv\surface_curve.associated_geometry[i]) THEN
17980                            RETURN (FALSE);
17981                          END_IF;
17982                        END_IF;
17983                      END_IF;
17984                    END_REPEAT;
17985                    RETURN (TRUE);
17986                  END_IF;
17987                END_IF;
17988              END_IF;
17989            END_IF;
17990          END_IF;
17991        END_IF;
17992      END_IF;
17993    END_IF;
17994  END_IF;
17995  RETURN (FALSE);
17996END_FUNCTION;
17997
17998FUNCTION gbsf_check_point
17999	(pnt: point) : BOOLEAN;
18000IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CARTESIAN_POINT' IN TYPEOF(pnt) THEN
18001    RETURN (TRUE);
18002  ELSE
18003    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT_ON_CURVE' IN TYPEOF(pnt) THEN
18004      RETURN (gbsf_check_curve(pnt\point_on_curve.basis_curve));
18005    ELSE
18006      IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT_ON_SURFACE' IN TYPEOF(pnt) THEN
18007        RETURN (gbsf_check_surface(pnt\point_on_surface.basis_surface));
18008      ELSE
18009        IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DEGENERATE_PCURVE' IN TYPEOF(pnt) THEN
18010          RETURN ((gbsf_check_curve(pnt\degenerate_pcurve.reference_to_curve\representation.items[1])) AND (gbsf_check_surface(pnt\degenerate_pcurve.basis_surface)));
18011        END_IF;
18012      END_IF;
18013    END_IF;
18014  END_IF;
18015  RETURN (FALSE);
18016END_FUNCTION;
18017
18018FUNCTION gbsf_check_surface
18019	(sf: surface) : BOOLEAN;
18020IF (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_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
18021    RETURN (TRUE);
18022  ELSE
18023    IF SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SPHERICAL_SURFACE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.TOROIDAL_SURFACE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_BOUNDED_SURFACE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.RECTANGULAR_TRIMMED_SURFACE'] * TYPEOF(sf)) = 1 THEN
18024      RETURN (TRUE);
18025    ELSE
18026      IF (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.OFFSET_SURFACE' IN TYPEOF(sf)) AND (sf\offset_surface.self_intersect = FALSE) OR (sf\offset_surface.self_intersect = UNKNOWN)) THEN
18027        RETURN (gbsf_check_surface(sf\offset_surface.basis_surface));
18028      ELSE
18029        IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.RECTANGULAR_COMPOSITE_SURFACE' IN TYPEOF(sf) THEN
18030          REPEAT i := 1 TO SIZEOF(sf\rectangular_composite_surface.segments);
18031            REPEAT j := 1 TO SIZEOF(sf\rectangular_composite_surface.segments[i]);
18032              IF NOT (gbsf_check_surface(sf\rectangular_composite_surface.segments[i][j].parent_surface)) THEN
18033                RETURN (FALSE);
18034              END_IF;
18035            END_REPEAT;
18036          END_REPEAT;
18037          RETURN (TRUE);
18038        ELSE
18039          IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_REPLICA' IN TYPEOF(sf) THEN
18040            RETURN (gbsf_check_surface(sf\surface_replica.parent_surface));
18041          ELSE
18042            IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_OF_REVOLUTION' IN TYPEOF(sf) THEN
18043              RETURN (gbsf_check_curve(sf\swept_surface.swept_curve));
18044            END_IF;
18045          END_IF;
18046        END_IF;
18047      END_IF;
18048    END_IF;
18049  END_IF;
18050  RETURN (FALSE);
18051END_FUNCTION;
18052
18053FUNCTION get_basis_surface
18054	(c: curve_on_surface) : SET [0:2] OF surface;
18055  LOCAL
18056    surfs  : SET[0:2] OF surface;
18057    n      : INTEGER;
18058  END_LOCAL;
18059  surfs := [];
18060  IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PCURVE' IN TYPEOF (c) THEN
18061    surfs := [c\pcurve.basis_surface];
18062  ELSE
18063    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_CURVE' IN TYPEOF (c) THEN
18064      n := SIZEOF(c\surface_curve.associated_geometry);
18065      REPEAT i := 1 TO n;
18066      surfs := surfs +
18067                associated_surface(c\surface_curve.associated_geometry[i]);
18068      END_REPEAT;
18069    END_IF;
18070  END_IF;
18071  IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMPOSITE_CURVE_ON_SURFACE' IN TYPEOF (c) THEN
18072   (* For a composite_curve_on_surface the basis_surface is the intersection
18073    of the basis_surfaces of all the segments. *)
18074     n := SIZEOF(c\composite_curve.segments);
18075     surfs := get_basis_surface(
18076                     c\composite_curve.segments[1].parent_curve);
18077     IF n > 1 THEN
18078       REPEAT i := 2 TO n;
18079         surfs := surfs * get_basis_surface(
18080                  c\composite_curve.segments[i].parent_curve);
18081       END_REPEAT;
18082     END_IF;
18083
18084  END_IF;
18085  RETURN(surfs);
18086END_FUNCTION;
18087
18088FUNCTION get_description_value
18089	(obj: description_attribute_select) : text;
18090    LOCAL
18091      description_bag : BAG OF description_attribute := (USEDIN(obj, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.' + 'DESCRIBED_ITEM'));
18092    END_LOCAL;
18093
18094    IF SIZEOF(description_bag) = 1 THEN
18095      RETURN (description_bag[1].attribute_value);
18096    ELSE
18097      RETURN (?);
18098    END_IF;
18099END_FUNCTION;
18100
18101FUNCTION get_id_value
18102	(obj: id_attribute_select) : identifier;
18103    LOCAL
18104      id_bag : BAG OF id_attribute := (USEDIN(obj, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'ID_ATTRIBUTE.' + 'IDENTIFIED_ITEM'));
18105    END_LOCAL;
18106
18107    IF SIZEOF(id_bag) = 1 THEN
18108      RETURN (id_bag[1].attribute_value);
18109    ELSE
18110      RETURN (?);
18111    END_IF;
18112END_FUNCTION;
18113
18114FUNCTION get_name_value
18115	(obj: name_attribute_select) : label;
18116    LOCAL
18117      name_bag : BAG OF name_attribute := (USEDIN(obj, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'NAME_ATTRIBUTE.' + 'NAMED_ITEM'));
18118    END_LOCAL;
18119
18120    IF SIZEOF(name_bag) = 1 THEN
18121      RETURN (name_bag[1].attribute_value);
18122    ELSE
18123      RETURN (?);
18124    END_IF;
18125END_FUNCTION;
18126
18127FUNCTION get_role
18128	(obj: role_select) : object_role;
18129    LOCAL
18130      role_bag : BAG OF role_association := (USEDIN(obj, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'ROLE_ASSOCIATION.' + 'ITEM_WITH_ROLE'));
18131    END_LOCAL;
18132
18133    IF SIZEOF(role_bag) = 1 THEN
18134      RETURN (role_bag[1].role);
18135    ELSE
18136      RETURN (?);
18137    END_IF;
18138END_FUNCTION;
18139
18140FUNCTION get_shape_aspect_property_definition_representations
18141	(s_a_instance: shape_aspect) : SET [0:?] OF property_definition_representation;
18142LOCAL
18143pd_set : SET OF property_definition := [];
18144pdr_set : SET OF property_definition_representation := [] ;
18145END_LOCAL;
18146pd_set := bag_to_set(USEDIN(s_a_instance, 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PROPERTY_DEFINITION.DEFINITION'));
18147IF (SIZEOF(pd_set) < 1) THEN
18148RETURN (pdr_set);
18149END_IF;
18150REPEAT i := 1 TO HIINDEX(pd_set);
18151pdr_set := pdr_set + (QUERY(pdr <* USEDIN(pd_set[i], 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'PROPERTY_DEFINITION_REPRESENTATION.' + 'DEFINITION') |
18152'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF(pdr)));
18153END_REPEAT;
18154RETURN (pdr_set);
18155END_FUNCTION;
18156
18157FUNCTION is_acyclic
18158	(arg: generic_expression) : BOOLEAN;
18159RETURN (acyclic (arg, []));
18160END_FUNCTION;
18161
18162FUNCTION is_int_expr
18163	(arg: numeric_expression) : LOGICAL;
18164LOCAL
18165	i: INTEGER := 0;
18166END_LOCAL;
18167
18168IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.INT_LITERAL' IN TYPEOF(arg)
18169THEN
18170	RETURN (TRUE);
18171END_IF;
18172IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.REAL_LITERAL' IN TYPEOF(arg)
18173THEN
18174	RETURN (FALSE);
18175END_IF;
18176IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.INT_NUMERIC_VARIABLE' IN TYPEOF(arg)
18177THEN
18178	RETURN (TRUE);
18179END_IF;
18180IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.REAL_NUMERIC_VARIABLE' IN TYPEOF(arg)
18181THEN
18182	RETURN (FALSE);
18183END_IF;
18184IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ABS_FUNCTION' IN TYPEOF(arg)
18185THEN
18186	RETURN (is_int_expr(arg\unary_numeric_expression.operand));
18187END_IF;
18188IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MINUS_FUNCTION' IN TYPEOF(arg)
18189THEN
18190	RETURN (is_int_expr(arg\unary_numeric_expression.operand));
18191END_IF;
18192IF ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SIN_FUNCTION' IN TYPEOF(arg))
18193		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COS_FUNCTION' IN TYPEOF(arg))
18194		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.TAN_FUNCTION' IN TYPEOF(arg))
18195		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ASIN_FUNCTION' IN TYPEOF(arg))
18196		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ACOS_FUNCTION' IN TYPEOF(arg))
18197		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ATAN_FUNCTION' IN TYPEOF(arg))
18198		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EXP_FUNCTION' IN TYPEOF(arg))
18199		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LOG_FUNCTION' IN TYPEOF(arg))
18200		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LOG2_FUNCTION' IN TYPEOF(arg))
18201		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LOG10_FUNCTION' IN TYPEOF(arg))
18202		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SQUARE_ROOT_FUNCTION'
18203								IN TYPEOF(arg))
18204THEN
18205	RETURN (FALSE);
18206END_IF;
18207IF 	('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PLUS_EXPRESSION' IN TYPEOF(arg))
18208		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MULT_EXPRESSION'
18209								IN TYPEOF(arg))
18210		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAXIMUM_FUNCTION'
18211								IN TYPEOF(arg))
18212		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MINIMUM_FUNCTION'
18213								IN TYPEOF(arg))
18214THEN
18215	REPEAT i :=1 TO SIZEOF (
18216			arg\multiple_arity_numeric_expression.operands);
18217	IF NOT
18218		is_int_expr(arg\multiple_arity_numeric_expression.operands[i])
18219	THEN
18220		RETURN (FALSE);
18221	END_IF;
18222	END_REPEAT;
18223	RETURN (TRUE);
18224END_IF;
18225IF 	('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MINUS_EXPRESSION' IN TYPEOF(arg))
18226		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POWER_EXPRESSION'
18227								IN TYPEOF(arg))
18228THEN
18229	RETURN (is_int_expr(arg\binary_numeric_expression.operands[1])
18230		AND is_int_expr(arg\binary_numeric_expression.operands[2]));
18231END_IF;
18232IF	('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DIV_EXPRESSION' IN TYPEOF(arg))
18233		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MOD_EXPRESSION' IN TYPEOF(arg))
18234THEN
18235	RETURN(TRUE);
18236END_IF;
18237IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SLASH_EXPRESSION' IN TYPEOF(arg)
18238THEN
18239	RETURN (FALSE);
18240END_IF;
18241IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LENGTH_FUNCTION' IN TYPEOF(arg)
18242THEN
18243	RETURN (TRUE);
18244END_IF;
18245IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VALUE_FUNCTION' IN TYPEOF(arg)
18246THEN
18247	IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.INT_VALUE_FUNCTION'
18248								IN TYPEOF(arg)
18249	THEN
18250		RETURN (TRUE);
18251	ELSE
18252		RETURN (FALSE);
18253	END_IF;
18254END_IF;
18255IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.INTEGER_DEFINED_FUNCTION'
18256								IN TYPEOF(arg)
18257THEN
18258	RETURN(TRUE) ;
18259END_IF;
18260IF'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.REAL_DEFINED_FUNCTION' IN TYPEOF(arg)
18261THEN
18262	RETURN(FALSE) ;
18263END_IF ;
18264IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.BOOLEAN_DEFINED_FUNCTION'
18265								IN TYPEOF(arg)
18266THEN
18267	RETURN(FALSE) ;
18268END_IF ;
18269IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STRING_DEFINED_FUNCTION'
18270								IN TYPEOF(arg)
18271THEN
18272	RETURN (FALSE) ;
18273END_IF ;
18274
18275RETURN (FALSE);
18276END_FUNCTION;
18277
18278FUNCTION is_SQL_mappable
18279	(arg: expression) : LOGICAL;
18280LOCAL
18281	i: INTEGER;
18282END_LOCAL;
18283
18284IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SIMPLE_NUMERIC_EXPRESSION'
18285								IN TYPEOF (arg)
18286THEN
18287	RETURN (TRUE);
18288END_IF;
18289IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SQL_MAPPABLE_DEFINED_FUNCTION'
18290								IN TYPEOF (arg)
18291THEN
18292	RETURN (TRUE);
18293END_IF;
18294IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MINUS_FUNCTION' IN TYPEOF(arg)
18295THEN
18296	RETURN (is_SQL_mappable(arg\unary_numeric_expression.operand));
18297END_IF;
18298IF ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ABS_FUNCTION' IN TYPEOF(arg))
18299		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SIN_FUNCTION' IN TYPEOF(arg))
18300		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COS_FUNCTION' IN TYPEOF(arg))
18301		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.TAN_FUNCTION' IN TYPEOF(arg))
18302		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ASIN_FUNCTION' IN TYPEOF(arg))
18303		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ACOS_FUNCTION' IN TYPEOF(arg))
18304		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ATAN_FUNCTION' IN TYPEOF(arg))
18305		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EXP_FUNCTION' IN TYPEOF(arg))
18306		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LOG_FUNCTION' IN TYPEOF(arg))
18307		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LOG2_FUNCTION' IN TYPEOF(arg))
18308		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LOG10_FUNCTION' IN TYPEOF(arg))
18309		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SQUARE_ROOT_FUNCTION'
18310								IN TYPEOF(arg))
18311		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VALUE_FUNCTION' IN TYPEOF(arg))
18312		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LENGTH_FUNCTION'
18313								IN TYPEOF(arg))
18314THEN
18315	RETURN (FALSE);
18316END_IF;
18317IF ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PLUS_EXPRESSION' IN TYPEOF(arg))
18318		OR('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MULT_EXPRESSION' IN TYPEOF(arg))
18319		OR('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAXIMUM_FUNCTION'
18320								IN TYPEOF(arg))
18321		OR('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MINIMUM_FUNCTION'
18322								IN TYPEOF(arg))
18323THEN
18324	REPEAT i :=1 TO SIZEOF (
18325			arg\multiple_arity_numeric_expression.operands);
18326		IF NOT is_SQL_mappable(
18327			arg\multiple_arity_numeric_expression.operands[i])
18328		THEN
18329			RETURN (FALSE);
18330		END_IF;
18331	END_REPEAT;
18332RETURN (TRUE);
18333END_IF;
18334IF ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MINUS_EXPRESSION' IN TYPEOF(arg))
18335		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SLASH_EXPRESSION' IN
18336								TYPEOF(arg))
18337THEN
18338		RETURN (is_SQL_mappable(
18339			arg\binary_numeric_expression.operands[1])
18340		AND is_SQL_mappable(arg\binary_numeric_expression.operands[2]));
18341END_IF;
18342IF ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DIV_EXPRESSION' IN TYPEOF(arg))
18343		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MOD_EXPRESSION' IN TYPEOF(arg))
18344		OR('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POWER_EXPRESSION'
18345								IN TYPEOF(arg))
18346THEN
18347	RETURN (FALSE);
18348END_IF;
18349IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SIMPLE_BOOLEAN_EXPRESSION'
18350								IN TYPEOF (arg)
18351THEN
18352	RETURN (TRUE);
18353END_IF;
18354IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.NOT_EXPRESSION' IN TYPEOF (arg)
18355THEN
18356	RETURN (is_SQL_mappable (arg\UNARY_GENERIC_EXPRESSION.OPERAND));
18357END_IF;
18358IF ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ODD_FUNCTION'IN TYPEOF (arg))
18359		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.XOR_EXPRESSION'
18360								IN TYPEOF (arg))
18361THEN
18362	RETURN (FALSE);
18363END_IF;
18364IF ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AND_EXPRESSION' IN TYPEOF (arg))
18365		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.OR_EXPRESSION' IN TYPEOF (arg))
18366THEN
18367	REPEAT i:=1 TO SIZEOF (
18368			arg\MULTIPLE_ARITY_BOOLEAN_EXPRESSION.OPERANDS);
18369		IF NOT is_SQL_mappable (
18370			arg\MULTIPLE_ARITY_BOOLEAN_EXPRESSION.OPERANDS[i])
18371		THEN
18372			RETURN (FALSE);
18373		END_IF;
18374	END_REPEAT;
18375	RETURN (TRUE);
18376END_IF;
18377IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EQUALS_EXPRESSION' IN TYPEOF (arg)
18378THEN
18379	RETURN(is_SQL_mappable (
18380			arg\BINARY_GENERIC_EXPRESSION.OPERANDS [1])
18381		AND is_SQL_mappable(
18382			arg\BINARY_GENERIC_EXPRESSION.OPERANDS [2]));
18383END_IF;
18384IF	('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMPARISON_EQUAL' IN TYPEOF (arg))
18385		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMPARISON_GREATER'
18386								IN TYPEOF (arg))
18387		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMPARISON_GREATER_EQUAL'
18388								IN TYPEOF (arg))
18389		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMPARISON_LESS'
18390								IN TYPEOF (arg))
18391		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMPARISON_LESS_EQUAL'
18392								IN TYPEOF (arg))
18393		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMPARISON_NOT_EQUAL'
18394								IN TYPEOF (arg))
18395		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LIKE_EXPRESSION'
18396								IN TYPEOF (arg))
18397THEN
18398	RETURN (is_SQL_mappable (arg\COMPARISON_EXPRESSION.OPERANDS[1])
18399		AND is_SQL_mappable (arg\COMPARISON_EXPRESSION.OPERANDS[2]));
18400END_IF;
18401IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.INTERVAL_EXPRESSION' IN TYPEOF(arg)
18402THEN
18403	RETURN (is_SQL_mappable(arg\interval_expression.interval_low)
18404		AND is_SQL_mappable(arg\interval_expression.interval_high)
18405		AND is_SQL_mappable(arg\interval_expression.interval_item));
18406END_IF;
18407IF ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.NUMERIC_DEFINED_FUNCTION'
18408								IN TYPEOF(arg))
18409		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.BOOLEAN_DEFINED_FUNCTION'
18410								IN TYPEOF(arg))
18411		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.STRING_DEFINED_FUNCTION'
18412								IN TYPEOF(arg))
18413THEN
18414		RETURN (FALSE) ;
18415END_IF;
18416
18417IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SIMPLE_STRING_EXPRESSION'
18418								IN TYPEOF(ARG)
18419THEN
18420	RETURN (TRUE);
18421END_IF;
18422IF 	('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.INDEX_EXPRESSION' IN TYPEOF(arg))
18423		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SUBSTRING_EXPRESSION'
18424								IN TYPEOF(arg))
18425		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONCAT_EXPRESSION'
18426								IN TYPEOF(arg))
18427		OR ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FORMAT_FUNCTION'
18428								IN TYPEOF(arg))
18429THEN
18430	RETURN (FALSE);
18431END_IF;
18432
18433	RETURN (FALSE);
18434END_FUNCTION;
18435
18436FUNCTION item_in_context
18437	(item: representation_item; cntxt: representation_context) : BOOLEAN;
18438    LOCAL
18439      y : BAG OF representation_item;
18440    END_LOCAL;
18441    -- If there is one or more representation using both the item
18442    -- and cntxt return true.
18443    IF SIZEOF(USEDIN(item,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.REPRESENTATION.ITEMS')
18444      * cntxt.representations_in_context) > 0 THEN
18445      RETURN (TRUE);
18446      -- Determine the bag of representation_items that reference
18447      -- item
18448      ELSE y := QUERY(z <* USEDIN (item , '') |
18449             'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(z));
18450        -- Ensure that the bag is not empty
18451        IF SIZEOF(y) > 0 THEN
18452        -- For each element in the bag
18453        REPEAT i := 1 TO HIINDEX(y);
18454          -- Check to see it is an item in the input cntxt.
18455          IF item_in_context(y[i], cntxt) THEN
18456            RETURN (TRUE);
18457          END_IF;
18458        END_REPEAT;
18459      END_IF;
18460    END_IF;
18461    -- Return false when all possible branches have been checked
18462    -- with no success.
18463    RETURN (FALSE);
18464END_FUNCTION;
18465
18466FUNCTION leap_year
18467	(year: year_number) : BOOLEAN;
18468IF ((((year MOD 4) = 0) AND ((year MOD 100) <> 0)) OR ((year MOD 400) = 0)) THEN
18469    RETURN (TRUE);
18470  ELSE
18471    RETURN (FALSE);
18472  END_IF;
18473END_FUNCTION;
18474
18475FUNCTION list_face_loops
18476	(f: face) : LIST [0:?] OF loop;
18477   LOCAL
18478     loops : LIST[0:?] OF loop := [];
18479   END_LOCAL;
18480
18481   REPEAT i := 1 TO SIZEOF(f.bounds);
18482     loops := loops +(f.bounds[i].bound);
18483   END_REPEAT;
18484
18485   RETURN(loops);
18486END_FUNCTION;
18487
18488FUNCTION list_of_topology_reversed
18489	(a_list: list_of_reversible_topology_item) : list_of_reversible_topology_item;
18490   LOCAL
18491     the_reverse : list_of_reversible_topology_item;
18492   END_LOCAL;
18493
18494   the_reverse := [];
18495   REPEAT i := 1 TO SIZEOF (a_list);
18496     the_reverse := topology_reversed (a_list [i]) + the_reverse;
18497   END_REPEAT;
18498
18499   RETURN (the_reverse);
18500END_FUNCTION;
18501
18502FUNCTION list_to_array
18503	(lis: LIST [0:?] OF GENERIC: T; low: INTEGER; u: INTEGER) : ARRAY [low:u] OF GENERIC: T;
18504   LOCAL
18505     n   : INTEGER;
18506     res : ARRAY [low:u] OF GENERIC : T;
18507   END_LOCAL;
18508
18509   n := SIZEOF(lis);
18510   IF (n <> (u-low +1)) THEN
18511     RETURN(?);
18512   ELSE
18513     res := [lis[1] : n];
18514     REPEAT i := 2 TO n;
18515       res[low+i-1] := lis[i];
18516     END_REPEAT;
18517     RETURN(res);
18518   END_IF;
18519END_FUNCTION;
18520
18521FUNCTION list_to_set
18522	(l: LIST [0:?] OF GENERIC: T) : SET [0:?] OF GENERIC: T;
18523   LOCAL
18524     s : SET OF GENERIC:T := [];
18525   END_LOCAL;
18526
18527   REPEAT i := 1 TO SIZEOF(l);
18528     s := s + l[i];
18529   END_REPEAT;
18530
18531   RETURN(s);
18532END_FUNCTION;
18533
18534FUNCTION make_array_of_array
18535	(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;
18536   LOCAL
18537     res   : ARRAY[low1:u1] OF ARRAY [low2:u2] OF GENERIC : T;
18538   END_LOCAL;
18539
18540(* Check input dimensions for consistency *)
18541   IF (u1-low1+1) <> SIZEOF(lis) THEN
18542     RETURN (?);
18543   END_IF;
18544   IF (u2 - low2 + 1 ) <> SIZEOF(lis[1]) THEN
18545     RETURN (?) ;
18546   END_IF;
18547(* Initialise res with values from lis[1] *)
18548   res := [list_to_array(lis[1], low2, u2) : (u1-low1 + 1)];
18549   REPEAT i := 2 TO HIINDEX(lis);
18550     IF (u2-low2+1) <> SIZEOF(lis[i]) THEN
18551       RETURN (?);
18552     END_IF;
18553     res[low1+i-1] := list_to_array(lis[i], low2, u2);
18554   END_REPEAT;
18555
18556   RETURN (res);
18557END_FUNCTION;
18558
18559FUNCTION mixed_loop_type_set
18560	(l: SET [0:?] OF loop) : LOGICAL;
18561    LOCAL
18562      poly_loop_type: LOGICAL;
18563    END_LOCAL;
18564    IF(SIZEOF(l) <= 1) THEN
18565      RETURN(FALSE);
18566    END_IF;
18567    poly_loop_type := ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POLY_LOOP' IN TYPEOF(l[1]));
18568    REPEAT i := 2 TO SIZEOF(l);
18569      IF(('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POLY_LOOP' IN TYPEOF(l[i])) <> poly_loop_type)
18570          THEN
18571          RETURN(TRUE);
18572       END_IF;
18573    END_REPEAT;
18574    RETURN(FALSE);
18575END_FUNCTION;
18576
18577FUNCTION msb_shells
18578	(brep: manifold_solid_brep) : SET [1:?] OF closed_shell;
18579    LOCAL
18580      return_set: SET[1:?] OF closed_shell := [brep.outer];
18581    END_LOCAL;
18582
18583    IF SIZEOF(QUERY(msbtype <* TYPEOF(brep) |
18584                 msbtype LIKE '*BREP_WITH_VOIDS'))  >= 1
18585          THEN
18586       return_set := return_set + brep\brep_with_voids.voids;
18587    END_IF;
18588   RETURN(return_set);
18589END_FUNCTION;
18590
18591FUNCTION msf_curve_check
18592	(cv: representation_item) : BOOLEAN;
18593IF SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.BOUNDED_CURVE',
18594  'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONIC',
18595  'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_REPLICA', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LINE',
18596  'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.OFFSET_CURVE_3D'] * TYPEOF(cv)) > 1 THEN
18597  RETURN(FALSE);
18598END_IF;
18599
18600(* b_spline_curves shall not self-intersect
18601 *)
18602IF (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.B_SPLINE_CURVE' IN TYPEOF (cv)) AND
18603  (cv\b_spline_curve.self_intersect = FALSE)OR
18604  (cv\b_spline_curve.self_intersect = UNKNOWN)) THEN
18605  RETURN(TRUE);
18606ELSE
18607
18608  (* conics and lines are valid curve types
18609   *)
18610  IF SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONIC', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LINE']
18611    * TYPEOF (cv)) = 1 THEN
18612    RETURN(TRUE);
18613  ELSE
18614
18615    (* a curve_replica shall reference a valid curve
18616     *)
18617    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_REPLICA' IN TYPEOF(cv) THEN
18618      RETURN (msf_curve_check(cv\curve_replica.parent_curve));
18619    ELSE
18620
18621      (* an offset_curve_3d shall not self-intersect and
18622         shall reference a valid curve; a polyline is not a
18623         valid basis_curve
18624       *)
18625      IF (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF (cv))
18626        AND
18627        ((cv\offset_curve_3d.self_intersect = FALSE) OR
18628        (cv\offset_curve_3d.self_intersect = UNKNOWN))
18629        AND
18630        (NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POLYLINE' IN TYPEOF
18631        (cv\offset_curve_3d.basis_curve)))) THEN
18632        RETURN (msf_curve_check(cv\offset_curve_3d.basis_curve));
18633      ELSE
18634
18635        (* a pcurve shall reference a valid curve and a valid
18636           basis_surface
18637         *)
18638        IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PCURVE' IN TYPEOF(cv) THEN
18639          RETURN ((msf_curve_check
18640          (cv\pcurve.reference_to_curve\representation.items[1])) AND
18641          (msf_surface_check(cv\pcurve.basis_surface)));
18642        ELSE
18643
18644          (* a surface_curve references a curve_3d and one or
18645             two pcurves or one or two surfaces or one of
18646             each; all of these references shall be valid
18647           *)
18648          IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_CURVE' IN TYPEOF(cv) THEN
18649
18650            (* if the curve reference is correct, check also the rest
18651             *)
18652            IF msf_curve_check(cv\surface_curve.curve_3d) THEN
18653              REPEAT i := 1 TO SIZEOF
18654              (cv\surface_curve.associated_geometry);
18655
18656                (* do for one or two associated_geometrys:
18657                 *)
18658                IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE' IN
18659                  TYPEOF (cv\surface_curve.associated_geometry[i]) THEN
18660                  IF NOT msf_surface_check
18661                    (cv\surface_curve.associated_geometry[i]) THEN
18662                    RETURN(FALSE);
18663                  END_IF;
18664                ELSE
18665                  IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PCURVE' IN TYPEOF
18666                    (cv\surface_curve.associated_geometry[i]) THEN
18667                    IF NOT msf_curve_check
18668                      (cv\surface_curve.associated_geometry[i]) THEN
18669                      RETURN(FALSE);
18670                    END_IF;
18671                  END_IF;
18672                END_IF;
18673              END_REPEAT;
18674              RETURN(TRUE);
18675            END_IF;
18676          ELSE
18677
18678            (* a polyline shall have at least 3 points
18679             *)
18680            IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POLYLINE' IN TYPEOF(cv) THEN
18681              IF (SIZEOF (cv\polyline.points) >= 3) THEN RETURN (TRUE);
18682              END_IF;
18683            END_IF;
18684          END_IF;
18685        END_IF;
18686      END_IF;
18687    END_IF;
18688  END_IF;
18689END_IF;
18690(* FALSE is returned if the input parameter cv is not a valid curve.
18691 *)
18692RETURN (FALSE);
18693END_FUNCTION;
18694
18695FUNCTION msf_surface_check
18696	(surf: surface) : BOOLEAN;
18697IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ELEMENTARY_SURFACE' IN TYPEOF(surf) THEN
18698    RETURN(TRUE);
18699  ELSE
18700
18701    (* a swept_surface shall have a valid sweeping curve
18702     *)
18703    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SWEPT_SURFACE' IN TYPEOF (surf) THEN
18704      RETURN (msf_curve_check(surf\swept_surface.swept_curve));
18705    ELSE
18706
18707      (* an offset_surface shall not self-intersect and shall
18708         reference a valid surface
18709       *)
18710      IF (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.OFFSET_SURFACE' IN TYPEOF (surf)) AND
18711        (surf\offset_surface.self_intersect = FALSE) OR
18712        (surf\offset_surface.self_intersect = UNKNOWN)) THEN
18713        RETURN (msf_surface_check(surf\offset_surface.basis_surface));
18714      ELSE
18715
18716        (* a surface_replica shall have a valid parent surface
18717         *)
18718        IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_REPLICA' IN TYPEOF(surf) THEN
18719          RETURN(msf_surface_check(surf\surface_replica.parent_surface));
18720        ELSE
18721
18722          (* a b_spline_surface shall not self-intersect
18723           *)
18724          IF (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF(surf)) AND
18725            (surf\b_spline_surface.self_intersect = FALSE) OR
18726            (surf\b_spline_surface.self_intersect = UNKNOWN)) THEN
18727            RETURN(TRUE);
18728          END_IF;
18729        END_IF;
18730      END_IF;
18731    END_IF;
18732  END_IF;
18733  RETURN(FALSE);
18734END_FUNCTION;
18735
18736FUNCTION nmsf_curve_check
18737	(cv: representation_item) : BOOLEAN;
18738IF SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.BOUNDED_CURVE',
18739   'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONIC',
18740   'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_REPLICA',
18741   'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LINE',
18742   'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.OFFSET_CURVE_3D'] * TYPEOF(cv)) > 1
18743 THEN RETURN(FALSE);
18744 ELSE
18745
18746  (* b_spline_curves shall not self-intersect
18747   *)
18748  IF (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.B_SPLINE_CURVE' IN TYPEOF (cv)) AND
18749    (cv\b_spline_curve.self_intersect = FALSE) OR
18750    (cv\b_spline_curve.self_intersect = UNKNOWN))
18751  THEN RETURN(TRUE);
18752  ELSE
18753
18754    (* conics and lines are valid curve types
18755     *)
18756    IF SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONIC',
18757    'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LINE'] * TYPEOF (cv)) = 1 THEN
18758      RETURN(TRUE);
18759    ELSE
18760
18761      (* a curve_replica shall reference a valid curve
18762       *)
18763      IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_REPLICA' IN TYPEOF(cv) THEN
18764        RETURN (nmsf_curve_check(cv\curve_replica.parent_curve));
18765      ELSE
18766
18767        (* an offset_curve_3d shall not self-intersect and
18768           shall reference a valid curve; a polyline is not a
18769           valid basis_curve
18770         *)
18771        IF (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF (cv))
18772          AND
18773          ((cv\offset_curve_3d.self_intersect = FALSE) OR
18774          (cv\offset_curve_3d.self_intersect = UNKNOWN))
18775          AND
18776          (NOT ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POLYLINE' IN TYPEOF
18777          (cv\offset_curve_3d.basis_curve)))) THEN
18778          RETURN (nmsf_curve_check(cv\offset_curve_3d.basis_curve));
18779        ELSE
18780
18781          (* a pcurve shall reference a valid curve and a valid
18782             basis_surface
18783           *)
18784          IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PCURVE' IN TYPEOF(cv) THEN
18785            RETURN ((nmsf_curve_check
18786            (cv\pcurve.reference_to_curve\representation.items[1]))
18787            AND
18788            (nmsf_surface_check(cv\pcurve.basis_surface)));
18789          ELSE
18790
18791            (* a surface_curve references a curve_3d and one or
18792               two pcurves or one or two surfaces or one of
18793               each; all of these references shall be valid
18794             *)
18795            IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_CURVE' IN TYPEOF(cv) THEN
18796
18797              (* if the curve reference is correct, check also the rest
18798               *)
18799              IF nmsf_curve_check(cv\surface_curve.curve_3d) THEN
18800                REPEAT i := 1 TO SIZEOF
18801                (cv\surface_curve.associated_geometry);
18802
18803                  (* do for one or two associated_geometrys:
18804                   *)
18805                  IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE' IN
18806                    TYPEOF (cv\surface_curve.associated_geometry[i]) THEN
18807                    IF NOT nmsf_surface_check
18808                      (cv\surface_curve.associated_geometry[i]) THEN
18809                      RETURN(FALSE);
18810                    END_IF;
18811                  ELSE
18812                    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PCURVE' IN TYPEOF
18813                      (cv\surface_curve.associated_geometry[i]) THEN
18814                      IF NOT nmsf_curve_check
18815                        (cv\surface_curve.associated_geometry[i]) THEN
18816                        RETURN(FALSE);
18817                      END_IF;
18818                    END_IF;
18819                  END_IF;
18820                END_REPEAT;
18821                RETURN(TRUE);
18822              END_IF;
18823            ELSE
18824
18825              (* a polyline shall have at least 3 points
18826               *)
18827              IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POLYLINE' IN TYPEOF(cv) THEN
18828                IF (SIZEOF (cv\polyline.points) >= 3) THEN RETURN (TRUE);
18829                END_IF;
18830              END_IF;
18831            END_IF;
18832          END_IF;
18833        END_IF;
18834      END_IF;
18835    END_IF;
18836  END_IF;
18837 END_IF;
18838 (* FALSE is returned if the input parameter cv is not a valid curve.
18839  *)
18840 RETURN (FALSE);
18841END_FUNCTION;
18842
18843FUNCTION nmsf_surface_check
18844	(surf: surface) : BOOLEAN;
18845IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ELEMENTARY_SURFACE' IN TYPEOF(surf) THEN
18846    RETURN(TRUE);
18847  ELSE
18848
18849    (* a swept_surface shall have a valid sweeping curve
18850     *)
18851    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SWEPT_SURFACE' IN TYPEOF (surf) THEN
18852      RETURN (nmsf_curve_check(surf\swept_surface.swept_curve));
18853    ELSE
18854
18855      (* an offset_surface shall not self-intersect and shall
18856         reference a valid surface
18857       *)
18858      IF (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.OFFSET_SURFACE' IN TYPEOF (surf)) AND
18859        (surf\offset_surface.self_intersect = FALSE) OR
18860        (surf\offset_surface.self_intersect = UNKNOWN)) THEN
18861        RETURN (nmsf_surface_check(surf\offset_surface.basis_surface));
18862      ELSE
18863
18864        (* a surface_replica shall have a valid parent surface
18865         *)
18866        IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SURFACE_REPLICA' IN TYPEOF(surf) THEN
18867          RETURN(nmsf_surface_check(surf\surface_replica.parent_surface));
18868        ELSE
18869
18870          (* a b_spline_surface shall not self-intersect
18871           *)
18872          IF (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF(surf))
18873            AND
18874            (surf\b_spline_surface.self_intersect = FALSE) OR
18875            (surf\b_spline_surface.self_intersect = UNKNOWN)) THEN
18876            RETURN(TRUE);
18877          END_IF;
18878        END_IF;
18879      END_IF;
18880    END_IF;
18881  END_IF;
18882  RETURN(FALSE);
18883END_FUNCTION;
18884
18885FUNCTION normalise
18886	(arg: vector_or_direction) : vector_or_direction;
18887    LOCAL
18888      ndim   : INTEGER;
18889      v      : direction;
18890      result : vector_or_direction;
18891      vec    : vector;
18892      mag    : REAL;
18893    END_LOCAL;
18894
18895    IF NOT EXISTS (arg) THEN
18896      result := ?;
18897  (* When function is called with invalid data a NULL result is returned *)
18898    ELSE
18899      ndim := arg.dim;
18900      IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VECTOR' IN TYPEOF(arg) THEN
18901        BEGIN
18902              v := dummy_gri || direction(arg\vector.orientation.direction_ratios);
18903          IF arg\vector.magnitude = 0.0 THEN
18904            RETURN(?);
18905          ELSE
18906           vec := dummy_gri || vector (v, 1.0);
18907          END_IF;
18908        END;
18909      ELSE
18910        v := dummy_gri || direction (arg.direction_ratios);
18911      END_IF;
18912      mag := 0.0;
18913      REPEAT  i := 1 TO ndim;
18914        mag := mag + v.direction_ratios[i]*v.direction_ratios[i];
18915      END_REPEAT;
18916      IF mag > 0.0 THEN
18917        mag := SQRT(mag);
18918        REPEAT  i := 1 TO ndim;
18919          v.direction_ratios[i] := v.direction_ratios[i]/mag;
18920        END_REPEAT;
18921        IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VECTOR' IN TYPEOF(arg) THEN
18922          vec.orientation := v;
18923          result := vec;
18924        ELSE
18925          result := v;
18926        END_IF;
18927      ELSE
18928        RETURN(?);
18929      END_IF;
18930    END_IF;
18931    RETURN (result);
18932END_FUNCTION;
18933
18934FUNCTION open_path_based_inner_boundary
18935	(input: SET [0:?] OF primitive_2d) : BOOLEAN;
18936  LOCAL
18937   pass : BOOLEAN := TRUE;
18938  END_LOCAL;
18939  REPEAT i := 1 TO SIZEOF(input);
18940      IF ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PATH_AREA_WITH_PARAMETERS' IN TYPEOF(input[i]))
18941        AND ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CLOSED_CURVE' IN TYPEOF(input[i]\mapped_item.mapping_source))
18942      THEN
18943       pass := FALSE;
18944      END_IF;
18945  END_REPEAT;
18946  RETURN(pass);
18947END_FUNCTION;
18948
18949FUNCTION open_shell_reversed
18950	(a_shell: open_shell) : oriented_open_shell;
18951   LOCAL
18952     the_reverse : oriented_open_shell;
18953   END_LOCAL;
18954   IF ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ORIENTED_OPEN_SHELL' IN TYPEOF (a_shell) ) THEN
18955     the_reverse := dummy_tri ||
18956                  connected_face_set (
18957                      a_shell\connected_face_set.cfs_faces) ||
18958                  open_shell () || oriented_open_shell(
18959                    a_shell\oriented_open_shell.open_shell_element,
18960                      (NOT (a_shell\oriented_open_shell.orientation)));
18961   ELSE
18962     the_reverse := dummy_tri ||
18963                 connected_face_set (
18964                     a_shell\connected_face_set.cfs_faces) ||
18965                 open_shell () ||  oriented_open_shell (a_shell, FALSE);
18966   END_IF;
18967   RETURN (the_reverse);
18968END_FUNCTION;
18969
18970FUNCTION orthogonal_complement
18971	(vec: direction) : direction;
18972   LOCAL
18973     result :  direction ;
18974   END_LOCAL;
18975
18976   IF (vec.dim <> 2) OR NOT EXISTS (vec) THEN
18977     RETURN(?);
18978   ELSE
18979     result := dummy_gri || direction([-vec.direction_ratios[2],
18980                                          vec.direction_ratios[1]]);
18981     RETURN(result);
18982   END_IF;
18983END_FUNCTION;
18984
18985FUNCTION path_head_to_tail
18986	(a_path: path) : LOGICAL;
18987   LOCAL
18988     n : INTEGER;
18989     p : LOGICAL := TRUE;
18990   END_LOCAL;
18991
18992     n := SIZEOF (a_path.edge_list);
18993     REPEAT i := 2 TO n;
18994       p := p AND (a_path.edge_list[i-1].edge_end :=:
18995                   a_path.edge_list[i].edge_start);
18996     END_REPEAT;
18997
18998     RETURN (p);
18999END_FUNCTION;
19000
19001FUNCTION path_reversed
19002	(a_path: path) : oriented_path;
19003  LOCAL
19004    the_reverse : oriented_path ;
19005  END_LOCAL;
19006  IF ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ORIENTED_PATH' IN TYPEOF (a_path) ) THEN
19007    the_reverse := dummy_tri ||
19008       path(list_of_topology_reversed (a_path.edge_list)) ||
19009          oriented_path(a_path\oriented_path.path_element,
19010                          NOT(a_path\oriented_path.orientation)) ;
19011  ELSE
19012    the_reverse := dummy_tri ||
19013                   path(list_of_topology_reversed (a_path.edge_list)) ||
19014                       oriented_path(a_path, FALSE);
19015  END_IF;
19016
19017  RETURN (the_reverse);
19018END_FUNCTION;
19019
19020FUNCTION scalar_times_vector
19021	(scalar: REAL; vec: vector_or_direction) : vector;
19022    LOCAL
19023      v      : direction;
19024      mag    : REAL;
19025      result : vector;
19026    END_LOCAL;
19027
19028    IF NOT EXISTS (scalar) OR NOT EXISTS (vec) THEN
19029      RETURN (?) ;
19030     ELSE
19031      IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VECTOR' IN TYPEOF (vec) THEN
19032        v   := dummy_gri || direction(vec\vector.orientation.direction_ratios);
19033        mag := scalar * vec\vector.magnitude;
19034      ELSE
19035        v   := dummy_gri || direction(vec.direction_ratios);
19036        mag := scalar;
19037      END_IF;
19038      IF (mag < 0.0 ) THEN
19039        REPEAT i := 1 TO SIZEOF(v.direction_ratios);
19040          v.direction_ratios[i] := -v.direction_ratios[i];
19041        END_REPEAT;
19042        mag := -mag;
19043      END_IF;
19044      result := dummy_gri || vector(normalise(v), mag);
19045    END_IF;
19046    RETURN (result);
19047END_FUNCTION;
19048
19049FUNCTION second_proj_axis
19050	(z_axis: direction; x_axis: direction; arg: direction) : direction;
19051   LOCAL
19052     y_axis : vector;
19053     v      : direction;
19054     temp   : vector;
19055   END_LOCAL;
19056
19057   IF NOT EXISTS(arg) THEN
19058     v := dummy_gri || direction([0.0,1.0,0.0]);
19059   ELSE
19060     v := arg;
19061   END_IF;
19062
19063   temp   := scalar_times_vector(dot_product(v, z_axis), z_axis);
19064   y_axis := vector_difference(v, temp);
19065   temp   := scalar_times_vector(dot_product(v, x_axis), x_axis);
19066   y_axis := vector_difference(y_axis, temp);
19067   y_axis := normalise(y_axis);
19068   RETURN(y_axis.orientation);
19069END_FUNCTION;
19070
19071FUNCTION set_of_topology_reversed
19072	(a_set: set_of_reversible_topology_item) : set_of_reversible_topology_item;
19073   LOCAL
19074     the_reverse : set_of_reversible_topology_item;
19075   END_LOCAL;
19076
19077   the_reverse := [];
19078   REPEAT i := 1 TO SIZEOF (a_set);
19079     the_reverse := the_reverse + topology_reversed (a_set [i]);
19080   END_REPEAT;
19081
19082   RETURN (the_reverse);
19083END_FUNCTION;
19084
19085FUNCTION shell_reversed
19086	(a_shell: shell) : shell;
19087IF ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.OPEN_SHELL' IN TYPEOF (a_shell) ) THEN
19088     RETURN (open_shell_reversed (a_shell));
19089   ELSE
19090     IF ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CLOSED_SHELL' IN TYPEOF (a_shell) ) THEN
19091       RETURN (closed_shell_reversed (a_shell));
19092     ELSE
19093       RETURN (?);
19094     END_IF;
19095   END_IF;
19096END_FUNCTION;
19097
19098FUNCTION surface_condition_correlation
19099	(pd: property_definition; rep: representation) : LOGICAL;
19100CASE pd.name OF
19101      'visual appearance', 'tactile appearance', 'contact ratio', 'hardness', 'treatment result', 'surface texture' :
19102	  RETURN(pd.name = rep.name);
19103      OTHERWISE : RETURN(UNKNOWN);
19104    END_CASE;
19105END_FUNCTION;
19106
19107FUNCTION surface_weights_positive
19108	(b: rational_b_spline_surface) : BOOLEAN;
19109   LOCAL
19110     result        : BOOLEAN := TRUE;
19111   END_LOCAL;
19112
19113   REPEAT i := 0 TO b.u_upper;
19114     REPEAT j := 0 TO b.v_upper;
19115       IF (b.weights[i][j] <= 0.0)  THEN
19116         result := FALSE;
19117         RETURN(result);
19118       END_IF;
19119     END_REPEAT;
19120   END_REPEAT;
19121   RETURN(result);
19122END_FUNCTION;
19123
19124FUNCTION topology_reversed
19125	(an_item: reversible_topology) : reversible_topology;
19126IF ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.EDGE' IN TYPEOF (an_item)) THEN
19127     RETURN (edge_reversed (an_item));
19128   END_IF;
19129
19130   IF ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PATH' IN TYPEOF (an_item)) THEN
19131     RETURN (path_reversed (an_item));
19132   END_IF;
19133
19134   IF ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE_BOUND' IN TYPEOF (an_item)) THEN
19135     RETURN (face_bound_reversed (an_item));
19136   END_IF;
19137
19138   IF ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FACE' IN TYPEOF (an_item)) THEN
19139     RETURN (face_reversed (an_item));
19140   END_IF;
19141
19142   IF ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHELL' IN TYPEOF (an_item)) THEN
19143     RETURN (shell_reversed (an_item));
19144   END_IF;
19145
19146   IF ('SET' IN TYPEOF (an_item)) THEN
19147     RETURN (set_of_topology_reversed (an_item));
19148   END_IF;
19149
19150   IF ('LIST' IN TYPEOF (an_item)) THEN
19151     RETURN (list_of_topology_reversed (an_item));
19152   END_IF;
19153
19154   RETURN (?);
19155END_FUNCTION;
19156
19157FUNCTION type_check_function
19158	(the_type: GENERIC; sub_names: SET [0:?] OF STRING; criterion: INTEGER) : LOGICAL;
19159IF ((NOT EXISTS(the_type)) OR (NOT ({0 <= criterion <= 3})) OR (SIZEOF(sub_names) = 0)) THEN
19160      RETURN (UNKNOWN);
19161    ELSE
19162      CASE criterion OF
19163        0:
19164          RETURN (SIZEOF(sub_names * TYPEOF(the_type)) > 0);
19165        1:
19166          RETURN (SIZEOF(sub_names * TYPEOF(the_type)) = 0);
19167        2:
19168          RETURN (SIZEOF(sub_names * TYPEOF(the_type)) = 1);
19169        3:
19170          RETURN (SIZEOF(sub_names * TYPEOF(the_type)) <= 1);
19171      END_CASE;
19172    END_IF;
19173END_FUNCTION;
19174
19175FUNCTION using_items
19176	(item: founded_item_select; checked_items: SET [0:?] OF founded_item_select) : SET [0:?] OF founded_item_select;
19177    LOCAL
19178      new_check_items    : SET OF founded_item_select;
19179      result_items       : SET OF founded_item_select;
19180      next_items         : SET OF founded_item_select;
19181    END_LOCAL;
19182    result_items := [];
19183    new_check_items := checked_items + item;
19184    -- Find the set of representation_items or founded_items
19185    -- in which item is used directly.
19186    next_items := QUERY(z <* bag_to_set( USEDIN(item , '')) |
19187      ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(z)) OR
19188      ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FOUNDED_ITEM'        IN TYPEOF(z)));
19189    -- If the set of next_items is not empty;
19190    IF SIZEOF(next_items) > 0 THEN
19191      -- For each element in the set, find the using_items recursively
19192      REPEAT i := 1 TO HIINDEX(next_items);
19193        -- Check for loop in data model, i.e. one of the next_items
19194        -- occurred earlier in the set of check_items;
19195        IF NOT(next_items[i] IN new_check_items) THEN
19196          result_items := result_items + next_items[i] +
19197                          using_items(next_items[i],new_check_items);
19198        END_IF;
19199      END_REPEAT;
19200    END_IF;
19201    -- return the set of representation_items or founded_items
19202    -- in which the input item is used directly and indirectly.
19203    RETURN (result_items);
19204END_FUNCTION;
19205
19206FUNCTION using_representations
19207	(item: founded_item_select) : SET [0:?] OF representation;
19208    LOCAL
19209      results            : SET OF representation;
19210      result_bag         : BAG OF representation;
19211      intermediate_items : SET OF founded_item_select;
19212    END_LOCAL;
19213    -- Find the representations in which the item is used and add to the
19214    -- results set.
19215    results := [];
19216    result_bag := USEDIN(item,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.REPRESENTATION.ITEMS');
19217    IF SIZEOF(result_bag) > 0 THEN
19218      REPEAT i := 1 TO HIINDEX(result_bag);
19219        results := results + result_bag[i];
19220      END_REPEAT;
19221    END_IF;
19222    -- Find all representation_items or founded_items
19223    -- by which item is referenced directly or indirectly.
19224    intermediate_items := using_items(item,[]);
19225    -- If the set of intermediate items is not empty;
19226    IF SIZEOF(intermediate_items) > 0 THEN
19227      -- For each element in the set, add the
19228      -- representations of that element.
19229      REPEAT i := 1 TO HIINDEX(intermediate_items);
19230        result_bag := USEDIN(intermediate_items[i],
19231                      'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.REPRESENTATION.ITEMS');
19232        IF SIZEOF(result_bag) > 0 THEN
19233          REPEAT j := 1 TO HIINDEX(result_bag);
19234            results := results + result_bag[j];
19235          END_REPEAT;
19236        END_IF;
19237      END_REPEAT;
19238    END_IF;
19239    -- Return the set of representation in which the input item is
19240    -- used directly and indirectly (through intervening
19241    -- representation_items or founded items).
19242    RETURN (results);
19243END_FUNCTION;
19244
19245FUNCTION valid_2d_wireframe_edge_curve
19246	(crv: curve; schma: STRING) : BOOLEAN;
19247IF SIZEOF ([schma + '.LINE',
19248              schma + '.B_SPLINE_CURVE',
19249              schma + '.CIRCLE',
19250              schma + '.HYPERBOLA',
19251              schma + '.ELLIPSE',
19252              schma + '.PARABOLA',
19253              schma + '.POLYLINE'] * TYPEOF (crv)) = 1
19254      THEN RETURN (TRUE);
19255  ELSE
19256    -- recursively check for valid basic curves for curve_replicas
19257    IF (schma + '.CURVE_REPLICA') IN TYPEOF (crv)
19258      THEN RETURN (valid_2d_wireframe_edge_curve
19259                         (crv\curve_replica.parent_curve, schma));
19260    -- recursively check for valid basis curves for offset_curves
19261    ELSE
19262      IF (schma + '.OFFSET_CURVE_2D') IN TYPEOF (crv)
19263        THEN RETURN (valid_2d_wireframe_edge_curve
19264                         (crv\offset_curve_2d.basis_curve, schma));
19265      END_IF;
19266    END_IF;
19267  END_IF;
19268  RETURN (FALSE);
19269END_FUNCTION;
19270
19271FUNCTION valid_basis_curve_in_2d_wireframe
19272	(crv: curve) : BOOLEAN;
19273IF SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POLYLINE',
19274               'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.B_SPLINE_CURVE',
19275               'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ELLIPSE',
19276               'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CIRCLE'] *
19277               TYPEOF (crv)) = 1
19278    THEN RETURN (TRUE);
19279  ELSE
19280    -- if the curve is a trimmed_curve
19281    IF (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.TRIMMED_CURVE')
19282    IN TYPEOF (crv)) THEN
19283      -- if a line, parabola, or hyperbola is being trimmed, then valid
19284      IF SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LINE',
19285                   'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PARABOLA',
19286                   'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.HYPERBOLA'] *
19287           TYPEOF(crv\trimmed_curve.basis_curve)) = 1
19288        THEN RETURN (TRUE);
19289      -- otherwise, recursively check basis_curve
19290      ELSE RETURN (valid_basis_curve_in_2d_wireframe
19291                         (crv\trimmed_curve.basis_curve));
19292      END_IF;
19293    ELSE
19294      -- recursively check the offset_curve basis curve
19295      IF (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.OFFSET_CURVE_2D')
19296      IN TYPEOF (crv))
19297        THEN RETURN (valid_basis_curve_in_2d_wireframe
19298                           (crv\offset_curve_2d.basis_curve));
19299      ELSE
19300        -- recursively check the curve_replica parent curve
19301        IF (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_REPLICA')
19302        IN TYPEOF (crv))
19303          THEN RETURN (valid_basis_curve_in_2d_wireframe
19304                         (crv\curve_replica.parent_curve));
19305        ELSE
19306          -- recursively check the composite_curve segments
19307          IF (('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMPOSITE_CURVE')
19308          IN TYPEOF (crv)) THEN
19309            RETURN (SIZEOF (QUERY (ccs <* crv\composite_curve.segments |
19310                      NOT (valid_basis_curve_in_2d_wireframe
19311                             (ccs.parent_curve)))) = 0);
19312          END_IF;
19313        END_IF;
19314      END_IF;
19315    END_IF;
19316  END_IF;
19317  RETURN (FALSE);
19318END_FUNCTION;
19319
19320FUNCTION valid_calendar_date
19321	(date: calendar_date) : LOGICAL;
19322CASE date.month_component OF
19323    1  : RETURN({ 1 <= date.day_component <= 31 });
19324    2  : BEGIN
19325           IF (leap_year(date.year_component)) THEN
19326             RETURN({ 1 <= date.day_component <= 29 });
19327           ELSE
19328             RETURN({ 1 <= date.day_component <= 28 });
19329           END_IF;
19330         END;
19331    3  : RETURN({ 1 <= date.day_component <= 31 });
19332    4  : RETURN({ 1 <= date.day_component <= 30 });
19333    5  : RETURN({ 1 <= date.day_component <= 31 });
19334    6  : RETURN({ 1 <= date.day_component <= 30 });
19335    7  : RETURN({ 1 <= date.day_component <= 31 });
19336    8  : RETURN({ 1 <= date.day_component <= 31 });
19337    9  : RETURN({ 1 <= date.day_component <= 30 });
19338    10 : RETURN({ 1 <= date.day_component <= 31 });
19339    11 : RETURN({ 1 <= date.day_component <= 30 });
19340    12 : RETURN({ 1 <= date.day_component <= 31 });
19341  END_CASE;
19342  RETURN (FALSE);
19343END_FUNCTION;
19344
19345FUNCTION valid_csg_2d_primitives
19346	(input: csg_solid_2d) : BOOLEAN;
19347CASE TRUE OF
19348  ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRIMITIVE_2D' IN TYPEOF(input\csg_solid_2d.tree_root_expression)) :
19349  BEGIN
19350    IF (SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CIRCULAR_AREA',
19351       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMPLEX_AREA',
19352       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ELLIPTIC_AREA',
19353       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POLYGONAL_AREA',
19354       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRIMITIVE_2D_WITH_INNER_BOUNDARY',
19355       'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.RECTANGULAR_AREA'] * TYPEOF(input\csg_solid_2d.tree_root_expression)) > 0)
19356    THEN
19357           RETURN(TRUE);
19358    ELSE
19359           RETURN(FALSE);
19360    END_IF;
19361  END;
19362
19363  ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.BOOLEAN_RESULT_2D' IN TYPEOF(input\csg_solid_2d.tree_root_expression)) :
19364    RETURN (valid_csg_2d_primitives(input\csg_solid_2d.tree_root_expression\boolean_result_2d.first_operand)
19365        AND valid_csg_2d_primitives(input\csg_solid_2d.tree_root_expression\boolean_result_2d.second_operand));
19366
19367  ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.HALF_SPACE_2D' IN TYPEOF(input\csg_solid_2d.tree_root_expression)) : RETURN(TRUE);
19368
19369  OTHERWISE : RETURN(FALSE);
19370END_CASE;
19371END_FUNCTION;
19372
19373FUNCTION valid_datum_target_parameters
19374	(pdf: placed_datum_target_feature) : BOOLEAN;
19375LOCAL
19376
19377rep_set : SET OF representation := [] ;
19378
19379parameter_representations: SET OF representation;
19380END_LOCAL;
19381
19382
19383REPEAT i := 1 TO HIINDEX(pdf.representation_associations);
19384rep_set := rep_set + pdf.representation_associations[i].used_representation;
19385END_REPEAT;
19386
19387parameter_representations := QUERY(rep <* rep_set |
19388('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
19389TYPEOF(rep)));
19390
19391
19392IF (SIZEOF( QUERY( srwp <* parameter_representations |
19393          (SIZEOF( QUERY( i <* srwp.items |
19394          (i.name='orientation') AND
19395          ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PLACEMENT' IN TYPEOF(i)))) = 1))) <> 1) THEN
19396   RETURN(FALSE);
19397END_IF;
19398
19399CASE pdf\shape_aspect.description OF
19400'point': RETURN(SIZEOF(QUERY( srwp <* parameter_representations |
19401              (SIZEOF(srwp.items) = 1))) = 1);
19402
19403'circle': RETURN((SIZEOF( QUERY( srwp <* parameter_representations |
19404              (SIZEOF(srwp.items) = 2))) = 1) AND
19405             (SIZEOF( QUERY( srwp <* parameter_representations |
19406              (SIZEOF( QUERY( i <* srwp.items |
19407                (i.name='target diameter') AND
19408                (SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MEASURE_REPRESENTATION_ITEM',
19409		   'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
19410                 ) = 2) )) = 1))) = 1));
19411
19412'line': RETURN(SIZEOF( QUERY( srwp <* parameter_representations |
19413              (SIZEOF( QUERY( i <* srwp.items |
19414                (i.name='target length') AND
19415                (SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MEASURE_REPRESENTATION_ITEM',
19416		'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
19417                 ) = 2) )) = 1))) = 1);
19418
19419'rectangle': RETURN((SIZEOF( QUERY( srwp <* parameter_representations |
19420              (SIZEOF(srwp.items)= 3))) = 1) AND
19421             (SIZEOF( QUERY( srwp <* parameter_representations |
19422              (SIZEOF( QUERY( i <* srwp.items |
19423                (i.name='target length') AND
19424                (SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MEASURE_REPRESENTATION_ITEM',
19425		'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
19426                 ) = 2))) = 1))) = 1) AND
19427              (SIZEOF( QUERY( srwp <* parameter_representations |
19428               (SIZEOF( QUERY( i <* srwp.items |
19429                 (i.name='target width') AND
19430                 (SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MEASURE_REPRESENTATION_ITEM',
19431 		'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
19432                  ) = 2))) = 1) )) = 1));
19433OTHERWISE : RETURN(FALSE);
19434END_CASE;
19435END_FUNCTION;
19436
19437FUNCTION valid_geometrically_bounded_wf_curve
19438	(crv: curve) : BOOLEAN;
19439IF SIZEOF ([ 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POLYLINE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.B_SPLINE_CURVE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ELLIPSE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CIRCLE' ] * TYPEOF (crv)) = 1 THEN
19440 RETURN (TRUE);
19441 ELSE
19442 IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.TRIMMED_CURVE' IN TYPEOF (crv) THEN
19443 IF SIZEOF ([ 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LINE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PARABOLA', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.HYPERBOLA' ] * TYPEOF (crv\trimmed_curve.basis_curve)) = 1 THEN
19444 RETURN (TRUE);
19445 ELSE
19446 RETURN (valid_geometrically_bounded_wf_curve(crv\trimmed_curve.basis_curve));
19447 END_IF ;
19448 ELSE
19449 IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF (crv) THEN
19450 RETURN (valid_geometrically_bounded_wf_curve(crv\offset_curve_3d.basis_curve));
19451 ELSE
19452 IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_REPLICA' IN TYPEOF (crv) THEN
19453 RETURN (valid_geometrically_bounded_wf_curve(crv\curve_replica.parent_curve));
19454 ELSE
19455 IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.COMPOSITE_CURVE' IN TYPEOF (crv) THEN
19456 RETURN ( SIZEOF (
19457QUERY ( ccs <* crv\composite_curve.segments| NOT valid_geometrically_bounded_wf_curve(ccs.parent_curve) )) = 0);
19458 END_IF ;
19459 END_IF ;
19460 END_IF ;
19461 END_IF ;
19462 END_IF ;
19463 RETURN (FALSE);
19464END_FUNCTION;
19465
19466FUNCTION valid_geometrically_bounded_wf_point
19467	(pnt: point) : BOOLEAN;
19468IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CARTESIAN_POINT' IN TYPEOF (pnt) THEN
19469 RETURN (TRUE);
19470 ELSE
19471 IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT_ON_CURVE' IN TYPEOF (pnt) THEN
19472 RETURN (valid_geometrically_bounded_wf_curve(pnt\point_on_curve.basis_curve));
19473 ELSE
19474 IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT_REPLICA' IN TYPEOF (pnt) THEN
19475 RETURN (valid_geometrically_bounded_wf_point(pnt\point_replica.parent_pt));
19476 END_IF ;
19477 END_IF ;
19478 END_IF ;
19479 RETURN (FALSE);
19480END_FUNCTION;
19481
19482FUNCTION valid_measure_value
19483	(m: measure_value) : BOOLEAN;
19484IF ('REAL' IN TYPEOF (m)) THEN
19485    RETURN (m > 0.0);
19486    ELSE
19487     IF ('INTEGER' IN TYPEOF (m)) THEN
19488      RETURN (m > 0);
19489      ELSE
19490        RETURN (TRUE);
19491      END_IF;
19492    END_IF;
19493END_FUNCTION;
19494
19495FUNCTION valid_selected_instance_representation
19496	(pd: product_definition_or_assembly_relationship) : LOGICAL;
19497    LOCAL
19498      properties: SET OF property_definition := bag_to_set(QUERY( prd<* USEDIN ( pd ,'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) |
19499        (prd.name = 'occurrence selection' )));
19500      property_definition_representations: SET OF property_definition_representation := bag_to_set(QUERY ( pdr <* USEDIN ( properties[1] , 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
19501	    ( pdr.used_representation.name = 'selection criteria' )));
19502      selected_representation: representation;
19503    END_LOCAL;
19504    IF (SIZEOF( properties)<>1) THEN
19505	  RETURN(FALSE);
19506    END_IF;
19507    IF (SIZEOF(property_definition_representations)<>1) THEN
19508	  RETURN(FALSE);
19509    END_IF;
19510    selected_representation := property_definition_representations[1]\property_definition_representation.used_representation;
19511    IF (SIZEOF(selected_representation\representation.items) <1) OR (SIZEOF(selected_representation\representation.items) >2) THEN
19512	  RETURN(FALSE);
19513    END_IF;
19514    IF (SIZEOF ( QUERY ( i <* selected_representation\representation.items |
19515	  ( SIZEOF (['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MEASURE_REPRESENTATION_ITEM' ,
19516      'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VALUE_RANGE']* TYPEOF ( i ) ) = 1) AND
19517      ( i.name = 'selection quantity' ))) <> 1 ) THEN
19518      RETURN(FALSE);
19519    END_IF;
19520    IF (SIZEOF ( QUERY ( i <* selected_representation\representation.items |
19521	  ( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF ( i ) ) AND
19522 	  ( i.name = 'selection control' )))> 1) THEN
19523	  RETURN(FALSE);
19524    END_IF; --the selection control is not specified then the quantity shall be a qualified_representation_item or a value_range
19525    IF (SIZEOF ( QUERY ( i <* selected_representation\representation.items |
19526      ( 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF( i ) ) AND
19527      ( i.name = 'selection control' ) ))= 0) AND
19528      (SIZEOF ( QUERY ( i <* selected_representation\representation.items |
19529      ( i.name = 'selection quantity' ) AND
19530      ( SIZEOF(['AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.QUALIFIED_REPRESENTATION_ITEM' ,
19531      'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VALUE_RANGE']* TYPEOF ( i ) ) =0 ))) > 0 ) THEN
19532	  RETURN(FALSE);
19533    END_IF;
19534    RETURN(TRUE);
19535END_FUNCTION;
19536
19537FUNCTION valid_time
19538	(time: local_time) : BOOLEAN;
19539IF EXISTS(time.second_component) THEN
19540    RETURN (EXISTS(time.minute_component));
19541  ELSE
19542    RETURN (TRUE);
19543  END_IF;
19544END_FUNCTION;
19545
19546FUNCTION valid_units
19547	(m: measure_with_unit) : BOOLEAN;
19548IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LENGTH_MEASURE' IN TYPEOF(m.value_component) THEN
19549      IF derive_dimensional_exponents(m.unit_component) <>
19550      dimensional_exponents(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN
19551        RETURN (FALSE);
19552      END_IF;
19553    END_IF;
19554    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MASS_MEASURE' IN TYPEOF(m.value_component) THEN
19555      IF derive_dimensional_exponents(m.unit_component) <>
19556      dimensional_exponents(0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN
19557        RETURN (FALSE);
19558      END_IF;
19559    END_IF;
19560    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.TIME_MEASURE' IN TYPEOF(m.value_component) THEN
19561      IF derive_dimensional_exponents(m.unit_component) <>
19562      dimensional_exponents(0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) THEN
19563        RETURN (FALSE);
19564      END_IF;
19565    END_IF;
19566    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ELECTRIC_CURRENT_MEASURE' IN TYPEOF(m.value_component) THEN
19567      IF derive_dimensional_exponents(m.unit_component) <>
19568      dimensional_exponents(0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) THEN
19569        RETURN (FALSE);
19570      END_IF;
19571    END_IF;
19572    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.THERMODYNAMIC_TEMPERATURE_MEASURE' IN TYPEOF(m.value_component) THEN
19573      IF derive_dimensional_exponents(m.unit_component) <>
19574      dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) THEN
19575        RETURN (FALSE);
19576      END_IF;
19577    END_IF;
19578    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CELSIUS_TEMPERATURE_MEASURE' IN TYPEOF(m.value_component) THEN
19579      IF derive_dimensional_exponents(m.unit_component) <>
19580      dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) THEN
19581        RETURN (FALSE);
19582      END_IF;
19583    END_IF;
19584    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AMOUNT_OF_SUBSTANCE_MEASURE' IN TYPEOF(m.value_component) THEN
19585      IF derive_dimensional_exponents(m.unit_component) <>
19586      dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) THEN
19587        RETURN (FALSE);
19588      END_IF;
19589    END_IF;
19590    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LUMINOUS_INTENSITY_MEASURE' IN TYPEOF(m.value_component) THEN
19591      IF derive_dimensional_exponents(m.unit_component) <>
19592      dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0) THEN
19593        RETURN (FALSE);
19594      END_IF;
19595    END_IF;
19596    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PLANE_ANGLE_MEASURE' IN TYPEOF(m.value_component) THEN
19597      IF derive_dimensional_exponents(m.unit_component) <>
19598      dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN
19599        RETURN (FALSE);
19600      END_IF;
19601    END_IF;
19602    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.SOLID_ANGLE_MEASURE' IN TYPEOF(m.value_component) THEN
19603      IF derive_dimensional_exponents(m.unit_component) <>
19604      dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN
19605        RETURN (FALSE);
19606      END_IF;
19607    END_IF;
19608    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.AREA_MEASURE' IN TYPEOF(m.value_component) THEN
19609      IF derive_dimensional_exponents(m.unit_component) <>
19610      dimensional_exponents(2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN
19611        RETURN (FALSE);
19612      END_IF;
19613    END_IF;
19614    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VOLUME_MEASURE' IN TYPEOF(m.value_component) THEN
19615      IF derive_dimensional_exponents(m.unit_component) <>
19616      dimensional_exponents(3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN
19617        RETURN (FALSE);
19618      END_IF;
19619    END_IF;
19620    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.RATIO_MEASURE' IN TYPEOF(m.value_component) THEN
19621      IF derive_dimensional_exponents(m.unit_component) <>
19622      dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN
19623        RETURN (FALSE);
19624      END_IF;
19625    END_IF;
19626    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF(m.value_component) THEN
19627      IF derive_dimensional_exponents(m.unit_component) <>
19628      dimensional_exponents(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN
19629        RETURN (FALSE);
19630      END_IF;
19631    END_IF;
19632    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POSITIVE_PLANE_ANGLE_MEASURE' IN TYPEOF(m.value_component) THEN
19633      IF derive_dimensional_exponents(m.unit_component) <>
19634      dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN
19635        RETURN (FALSE);
19636      END_IF;
19637    END_IF;
19638    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ACCELERATION_MEASURE' IN TYPEOF(m.value_component) THEN
19639      IF derive_dimensional_exponents(m.unit_component) <>
19640        dimensional_exponents( 1.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0 ) THEN
19641        RETURN (FALSE);
19642      END_IF;
19643    END_IF;
19644     IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CAPACITANCE_MEASURE' IN TYPEOF(m.value_component) THEN
19645      IF derive_dimensional_exponents(m.unit_component) <>
19646        dimensional_exponents( -2.0, -1.0, 4.0, 1.0, 0.0, 0.0, 0.0 ) THEN
19647        RETURN (FALSE);
19648      END_IF;
19649    END_IF;
19650    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ELECTRIC_CHARGE_MEASURE' IN TYPEOF(m.value_component) THEN
19651      IF derive_dimensional_exponents(m.unit_component) <>
19652        dimensional_exponents( 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0 ) THEN
19653        RETURN (FALSE);
19654      END_IF;
19655    END_IF;
19656        IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONDUCTANCE_MEASURE' IN TYPEOF(m.value_component) THEN
19657          IF derive_dimensional_exponents(m.unit_component) <>
19658            dimensional_exponents( -2.0, -1.0, 3.0, 2.0, 0.0, 0.0, 0.0 ) THEN
19659            RETURN (FALSE);
19660          END_IF;
19661    END_IF;
19662        IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ELECTRIC_POTENTIAL_MEASURE' IN TYPEOF(m.value_component) THEN
19663          IF derive_dimensional_exponents(m.unit_component) <>
19664            dimensional_exponents( 2.0, 1.0, -3.0, -1.0, 0.0, 0.0, 0.0 ) THEN
19665            RETURN (FALSE);
19666          END_IF;
19667    END_IF;
19668    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ENERGY_MEASURE' IN TYPEOF(m.value_component) THEN
19669      IF derive_dimensional_exponents(m.unit_component) <>
19670        dimensional_exponents( 2.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0 ) THEN
19671        RETURN (FALSE);
19672      END_IF;
19673    END_IF;
19674    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FORCE_MEASURE' IN TYPEOF(m.value_component) THEN
19675      IF derive_dimensional_exponents(m.unit_component) <>
19676        dimensional_exponents( 1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0 ) THEN
19677        RETURN (FALSE);
19678      END_IF;
19679    END_IF;
19680    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.FREQUENCY_MEASURE' IN TYPEOF(m.value_component) THEN
19681      IF derive_dimensional_exponents(m.unit_component) <>
19682        dimensional_exponents( 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0 ) THEN
19683        RETURN (FALSE);
19684      END_IF;
19685    END_IF;
19686    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ILLUMINANCE_MEASURE' IN TYPEOF(m.value_component) THEN
19687      IF derive_dimensional_exponents(m.unit_component) <>
19688        dimensional_exponents( -2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0 ) THEN
19689        RETURN (FALSE);
19690      END_IF;
19691    END_IF;
19692     IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.INDUCTANCE_MEASURE' IN TYPEOF(m.value_component) THEN
19693      IF derive_dimensional_exponents(m.unit_component) <>
19694        dimensional_exponents( 2.0, 1.0, -2.0, -2.0, 0.0, 0.0, 0.0 ) THEN
19695        RETURN (FALSE);
19696      END_IF;
19697    END_IF;
19698    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LUMINOUS_FLUX_MEASURE' IN TYPEOF(m.value_component) THEN
19699      IF derive_dimensional_exponents(m.unit_component) <>
19700        dimensional_exponents( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0 ) THEN
19701        RETURN (FALSE);
19702      END_IF;
19703    END_IF;
19704    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAGNETIC_FLUX_MEASURE' IN TYPEOF(m.value_component) THEN
19705      IF derive_dimensional_exponents(m.unit_component) <>
19706        dimensional_exponents( 2.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0 ) THEN
19707        RETURN (FALSE);
19708      END_IF;
19709    END_IF;
19710     IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MAGNETIC_FLUX_DENSITY_MEASURE' IN TYPEOF(m.value_component) THEN
19711      IF derive_dimensional_exponents(m.unit_component) <>
19712        dimensional_exponents( 0.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0 ) THEN
19713        RETURN (FALSE);
19714      END_IF;
19715    END_IF;
19716    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POWER_MEASURE' IN TYPEOF(m.value_component) THEN
19717      IF derive_dimensional_exponents(m.unit_component) <>
19718        dimensional_exponents( 2.0, 1.0, -3.0, 0.0, 0.0, 0.0, 0.0 ) THEN
19719        RETURN (FALSE);
19720      END_IF;
19721    END_IF;
19722    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.PRESSURE_MEASURE' IN TYPEOF(m.value_component) THEN
19723      IF derive_dimensional_exponents(m.unit_component) <>
19724        dimensional_exponents( -1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0 ) THEN
19725        RETURN (FALSE);
19726      END_IF;
19727    END_IF;
19728    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.RESISTANCE_MEASURE' IN TYPEOF(m.value_component) THEN
19729      IF derive_dimensional_exponents(m.unit_component) <>
19730        dimensional_exponents( 2.0, 1.0, -3.0, -2.0, 0.0, 0.0, 0.0 ) THEN
19731        RETURN (FALSE);
19732      END_IF;
19733    END_IF;
19734    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VELOCITY_MEASURE' IN TYPEOF(m.value_component) THEN
19735      IF derive_dimensional_exponents(m.unit_component) <>
19736        dimensional_exponents( 1.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0 ) THEN
19737        RETURN (FALSE);
19738      END_IF;
19739    END_IF;
19740    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.RADIOACTIVITY_MEASURE' IN TYPEOF(m.value_component) THEN
19741      IF derive_dimensional_exponents(m.unit_component) <>
19742        dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0) THEN
19743        RETURN (FALSE);
19744      END_IF;
19745    END_IF;
19746    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.ABSORBED_DOSE_MEASURE' IN TYPEOF(m.value_component) THEN
19747      IF derive_dimensional_exponents(m.unit_component) <>
19748        dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0) THEN
19749        RETURN (FALSE);
19750      END_IF;
19751    END_IF;
19752    IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.DOSE_EQUIVALENT_MEASURE' IN TYPEOF(m.value_component) THEN
19753      IF derive_dimensional_exponents(m.unit_component) <>
19754        dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0) THEN
19755        RETURN (FALSE);
19756      END_IF;
19757    END_IF;
19758    RETURN (TRUE);
19759END_FUNCTION;
19760
19761FUNCTION valid_wireframe_edge_curve
19762	(crv: curve) : BOOLEAN;
19763IF SIZEOF ([ 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.LINE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CONIC', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.B_SPLINE_CURVE', 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POLYLINE' ] * TYPEOF (crv)) = 1 THEN
19764 RETURN (TRUE);
19765 ELSE
19766 IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CURVE_REPLICA' IN TYPEOF (crv) THEN
19767 RETURN (valid_wireframe_edge_curve(crv\curve_replica.parent_curve));
19768 ELSE
19769 IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF (crv) THEN
19770 RETURN (valid_wireframe_edge_curve(crv\offset_curve_3d.basis_curve));
19771 END_IF ;
19772 END_IF ;
19773 END_IF ;
19774 RETURN (FALSE);
19775END_FUNCTION;
19776
19777FUNCTION valid_wireframe_vertex_point
19778	(pnt: point) : BOOLEAN;
19779IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.CARTESIAN_POINT' IN TYPEOF (pnt) THEN
19780 RETURN (TRUE);
19781 ELSE
19782 IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.POINT_REPLICA' IN TYPEOF (pnt) THEN
19783 RETURN (valid_wireframe_vertex_point(pnt\point_replica.parent_pt));
19784 END_IF ;
19785 END_IF ;
19786 RETURN (FALSE);
19787END_FUNCTION;
19788
19789FUNCTION validate_countersink_radii
19790	(cskhole: solid_with_stepped_round_hole_and_conical_transitions) : BOOLEAN;
19791  LOCAL
19792    i,j             : INTEGER;
19793    n               : INTEGER := 1 +
19794                        cskhole\solid_with_stepped_round_hole.segments;
19795    smaller, larger : positive_length_measure;
19796  END_LOCAL;
19797
19798  REPEAT i := 1 TO SIZEOF(cskhole.conical_transitions);
19799
19800  -- First check whether transition i applies to the entry of the hole or
19801  -- the exit of a through hole - those cases only need to be checked for
19802  -- the sign of the cone apex angle.
19803
19804  IF (((cskhole.conical_transitions[i].transition_number = 1)
19805       AND (cskhole.conical_transitions[i].cone_apex_angle < 0))
19806    XOR ((cskhole.conical_transitions[i].transition_number = n)
19807         AND (cskhole.conical_transitions[i].cone_apex_angle > 0)))
19808  THEN RETURN(FALSE);
19809  ELSE
19810    IF ((cskhole.conical_transitions[i].transition_number <> 1)
19811      AND (cskhole.conical_transitions[i].transition_number <> n))
19812    THEN
19813
19814  -- For all remaining transitions, check that the cone base radius
19815  -- lies in the range of validity.
19816
19817
19818      BEGIN
19819        j := cskhole.conical_transitions[i].transition_number;
19820        IF cskhole\solid_with_stepped_round_hole.segment_radii[j]
19821          > cskhole\solid_with_stepped_round_hole.segment_radii[j-1]
19822        THEN
19823          BEGIN
19824            IF (cskhole.conical_transitions[i].cone_apex_angle > 0)
19825            THEN RETURN(FALSE);
19826            END_IF;
19827            larger
19828              := cskhole\solid_with_stepped_round_hole.segment_radii[j];
19829            smaller
19830              := cskhole\solid_with_stepped_round_hole.segment_radii[j-1];
19831          END;
19832        ELSE
19833          BEGIN
19834            IF (cskhole.conical_transitions[i].cone_apex_angle < 0)
19835            THEN RETURN(FALSE);
19836            END_IF;
19837            larger
19838              := cskhole\solid_with_stepped_round_hole.segment_radii[j-1];
19839            smaller
19840              := cskhole\solid_with_stepped_round_hole.segment_radii[j];
19841          END;
19842        END_IF;
19843        IF ((cskhole.conical_transitions[i].cone_base_radius > larger)
19844          OR (cskhole.conical_transitions[i].cone_base_radius < smaller))
19845        THEN RETURN(FALSE);
19846        END_IF;
19847      END;
19848    END_IF;
19849  END_IF;
19850  END_REPEAT;
19851  RETURN(TRUE);
19852END_FUNCTION;
19853
19854FUNCTION value_range_aggregate_rep_item
19855	(agg: AGGREGATE OF representation_item) : BOOLEAN;
19856BEGIN
19857  IF (SIZEOF(QUERY(i1 <* agg | ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.' + 'MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i1)) )) = 6) THEN
19858	  RETURN (TRUE);
19859   ELSE
19860	RETURN (FALSE);
19861   END_IF;
19862   END;
19863END_FUNCTION;
19864
19865FUNCTION value_range_wr1
19866	(agg: compound_item_definition) : BOOLEAN;
19867BEGIN
19868      IF (SIZEOF(agg) = 2) AND ((SIZEOF(QUERY (i1 <* agg | (
19869        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF
19870        (i1)))) = 2) OR
19871        (SIZEOF(QUERY (i2 <* agg | (
19872        'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VALUE_REPRESENTATION_ITEM' IN TYPEOF
19873        (i2)))) = 2))
19874      THEN
19875        RETURN(TRUE);
19876      ELSE
19877        RETURN(FALSE);
19878      END_IF;
19879    END;
19880END_FUNCTION;
19881
19882FUNCTION value_range_wr2
19883	(agg: compound_item_definition) : BOOLEAN;
19884BEGIN
19885      IF ((SIZEOF(QUERY (i <* agg | (i\representation_item.name = 'upper limit'))) = 1)
19886        AND (SIZEOF(QUERY (i <* agg | (i\representation_item.name = 'lower limit'))) = 1))
19887      THEN
19888        RETURN(TRUE);
19889      ELSE
19890        RETURN(FALSE);
19891      END_IF;
19892    END;
19893END_FUNCTION;
19894
19895FUNCTION value_range_wr3
19896	(agg: compound_item_definition) : BOOLEAN;
19897BEGIN
19898      IF (SIZEOF(QUERY(i1 <* agg |
19899        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF (i1)) AND
19900        (SIZEOF (QUERY (i2 <* agg |
19901        ('AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF (i2)) AND
19902        (i1 :<>: i2) AND (i1\measure_with_unit.unit_component :=: i2\measure_with_unit.unit_component))) = 1))) = 2)
19903      THEN
19904        RETURN (TRUE);
19905      ELSE
19906        RETURN (FALSE);
19907      END_IF;
19908    END;
19909END_FUNCTION;
19910
19911FUNCTION vector_difference
19912	(arg1: vector_or_direction; arg2: vector_or_direction) : vector;
19913    LOCAL
19914      result          : vector;
19915      res, vec1, vec2 : direction;
19916      mag, mag1, mag2 : REAL;
19917      ndim            : INTEGER;
19918    END_LOCAL;
19919
19920    IF ((NOT EXISTS (arg1)) OR (NOT EXISTS (arg2))) OR (arg1.dim <> arg2.dim)
19921        THEN
19922      RETURN (?) ;
19923     ELSE
19924      BEGIN
19925        IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VECTOR' IN TYPEOF(arg1) THEN
19926          mag1 := arg1\vector.magnitude;
19927          vec1 := arg1\vector.orientation;
19928        ELSE
19929          mag1 := 1.0;
19930          vec1 := arg1;
19931        END_IF;
19932        IF 'AP210_ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN_MIM_LF.VECTOR' IN TYPEOF(arg2) THEN
19933          mag2 := arg2\vector.magnitude;
19934          vec2 := arg2\vector.orientation;
19935        ELSE
19936          mag2 := 1.0;
19937          vec2 := arg2;
19938        END_IF;
19939        vec1 := normalise (vec1);
19940        vec2 := normalise (vec2);
19941        ndim := SIZEOF(vec1.direction_ratios);
19942        mag := 0.0;
19943        res := dummy_gri || direction(vec1.direction_ratios);
19944        REPEAT i := 1 TO ndim;
19945          res.direction_ratios[i] := mag1*vec1.direction_ratios[i] -
19946                                      mag2*vec2.direction_ratios[i];
19947          mag := mag + (res.direction_ratios[i]*res.direction_ratios[i]);
19948        END_REPEAT;
19949        IF (mag > 0.0 ) THEN
19950        result := dummy_gri || vector( res, SQRT(mag));
19951        ELSE
19952          result := dummy_gri || vector( vec1,  0.0);
19953        END_IF;
19954      END;
19955    END_IF;
19956    RETURN (result);
19957END_FUNCTION;
19958
19959END_SCHEMA;
19960
19961