diff --git a/data/examples/qet_terminal_block/README.md b/data/examples/qet_terminal_block/README.md new file mode 100644 index 0000000..7b4fe7e --- /dev/null +++ b/data/examples/qet_terminal_block/README.md @@ -0,0 +1,45 @@ +# QET Terminal Slice Model + +This directory contains a reusable single-slice DIN rail terminal model for QET / FreeCAD exchange tests and future terminal block arrays. + +## Files + +- `qet_terminal_slice.FCStd`: formal FreeCAD template asset. It contains geometry plus template terminal LCS objects. +- `qet_terminal_slice.step`: geometry-only exchange export for external CAD preview or reuse. +- `qet_terminal_slice_report.json`: generated verification metadata. +- `create_qet_terminal_slice.py`: FreeCAD Python generator used to recreate the assets. + +## Geometry + +The slice uses a common modular terminal proportion: + +- Width: `5.2 mm` +- Depth: `42.0 mm` +- Height: `36.0 mm` + +Use `5.2 mm` spacing along the X axis when copying slices into a terminal block. + +## Template Terminals + +The FCStd template contains two terminal LCS objects: + +- `Terminal_Top`, with `QetTemplateSlotName = "Top"` +- `Terminal_Bottom`, with `QetTemplateSlotName = "Bottom"` + +Both objects set: + +- `Role = "Terminal"` +- `CanWire = true` +- `QetTerminalType = "generic"` + +The template intentionally does not store engineering binding fields such as `QetProjectUuid`, `QetElementUuid`, `QetTerminalUuid`, or `QetInstanceId`. + +## Regenerate + +On this Windows workstation, use the registered FreeCAD runtime: + +```powershell +$runtime = Get-Content -LiteralPath 'C:\Users\ng123\AppData\Local\QETDeps\runtime.json' -Raw | ConvertFrom-Json +$env:QET_FREECAD_RUNTIME_JSON = 'C:\Users\ng123\AppData\Local\QETDeps\runtime.json' +& $runtime.freecad_python 'D:\LightWork3D\data\examples\qet_terminal_block\create_qet_terminal_slice.py' +``` diff --git a/data/examples/qet_terminal_block/create_qet_terminal_slice.py b/data/examples/qet_terminal_block/create_qet_terminal_slice.py new file mode 100644 index 0000000..c189c0c --- /dev/null +++ b/data/examples/qet_terminal_block/create_qet_terminal_slice.py @@ -0,0 +1,332 @@ +# Generate a reusable QET DIN rail terminal slice FreeCAD template. + +from __future__ import annotations + +import json +import os +import sys +from pathlib import Path + + +def _bootstrap_windows_freecad_runtime(): + if os.name != "nt": + return + + runtime_json = os.environ.get("QET_FREECAD_RUNTIME_JSON") + if not runtime_json: + local_app_data = os.environ.get("LOCALAPPDATA", "") + runtime_json = os.path.join(local_app_data, "QETDeps", "runtime.json") + if not runtime_json or not os.path.exists(runtime_json): + return + + with open(runtime_json, "r", encoding="utf-8-sig") as handle: + runtime = json.load(handle) + + roots = [str(item) for item in runtime.get("path_prefix", []) if item] + freecad_root = runtime.get("freecad_root", "") + if freecad_root: + roots.extend( + [ + os.path.join(freecad_root, "build", "Mod", "Material"), + os.path.join(freecad_root, "build", "Mod", "Part"), + os.path.join(freecad_root, "build", "Mod", "Import"), + os.path.join(freecad_root, "build", "Mod"), + ] + ) + roots.append(os.path.join(os.environ.get("SystemRoot", r"C:\Windows"), "System32", "downlevel")) + + for root in roots: + if root and os.path.isdir(root): + try: + os.add_dll_directory(root) + except (AttributeError, OSError): + pass + if root not in sys.path: + sys.path.append(root) + + +_bootstrap_windows_freecad_runtime() + +import FreeCAD as App +import Part + + +WIDTH = 5.2 +DEPTH = 42.0 +HEIGHT = 36.0 + +OUT_DIR = Path(__file__).resolve().parent +FCSTD_PATH = OUT_DIR / "qet_terminal_slice.FCStd" +STEP_PATH = OUT_DIR / "qet_terminal_slice.step" +REPORT_PATH = OUT_DIR / "qet_terminal_slice_report.json" + +ENGINEERING_BINDING_PROPERTIES = { + "QetProjectUuid", + "QetElementUuid", + "QetTerminalUuid", + "QetInstanceId", +} + + +def _box(name, dx, dy, dz, x, y, z, color, transparency=0): + obj = DOC.addObject("Part::Feature", name) + obj.Shape = Part.makeBox(dx, dy, dz, App.Vector(x, y, z)) + _style(obj, color, transparency) + return obj + + +def _cylinder_y(name, radius, length, x, y, z, color): + obj = DOC.addObject("Part::Feature", name) + obj.Shape = Part.makeCylinder( + radius, + length, + App.Vector(x, y, z), + App.Vector(0, -1, 0), + ) + _style(obj, color, 0) + return obj + + +def _style(obj, color, transparency=0): + if not hasattr(obj, "ViewObject") or obj.ViewObject is None: + return + obj.ViewObject.ShapeColor = color + obj.ViewObject.Transparency = transparency + + +def _ensure_property(obj, type_name, prop_name, group, description): + if prop_name not in obj.PropertiesList: + obj.addProperty(type_name, prop_name, group, description) + + +def _create_lcs(name, slot_name, label, base): + try: + lcs = DOC.addObject("Part::LocalCoordinateSystem", name) + except Exception: + lcs = DOC.addObject("PartDesign::CoordinateSystem", name) + + rotation = App.Rotation(App.Vector(0, 0, 1), App.Vector(0, -1, 0)) + lcs.Placement = App.Placement(base, rotation) + + _ensure_property(lcs, "App::PropertyString", "Role", "QET Template", "QET object role") + _ensure_property(lcs, "App::PropertyBool", "CanWire", "QET Template", "Whether wires may connect") + _ensure_property( + lcs, + "App::PropertyString", + "QetTemplateSlotName", + "QET Template", + "Reusable template terminal slot name", + ) + _ensure_property( + lcs, + "App::PropertyString", + "QetTerminalLabel", + "QET Template", + "Visible terminal label", + ) + _ensure_property( + lcs, + "App::PropertyString", + "QetTerminalType", + "QET Template", + "Terminal type", + ) + + lcs.Role = "Terminal" + lcs.CanWire = True + lcs.QetTemplateSlotName = slot_name + lcs.QetTerminalLabel = label + lcs.QetTerminalType = "generic" + + if hasattr(lcs, "ViewObject") and lcs.ViewObject is not None: + lcs.ViewObject.Visibility = True + return lcs + + +def _create_body(): + x0 = -WIDTH / 2.0 + y0 = -DEPTH / 2.0 + + base = Part.makeBox(WIDTH, DEPTH, HEIGHT, App.Vector(x0, y0, 0)) + din_slot = Part.makeBox( + WIDTH + 1.0, + 8.0, + 10.0, + App.Vector(x0 - 0.5, DEPTH / 2.0 - 8.0, 12.0), + ) + top_relief = Part.makeBox( + WIDTH + 1.0, + 2.2, + 7.0, + App.Vector(x0 - 0.5, y0 - 0.1, 26.0), + ) + bottom_relief = Part.makeBox( + WIDTH + 1.0, + 2.2, + 7.0, + App.Vector(x0 - 0.5, y0 - 0.1, 3.0), + ) + + body = DOC.addObject("Part::Feature", "TerminalSlice_GreenBody") + body.Shape = base.cut(din_slot).cut(top_relief).cut(bottom_relief) + _style(body, (0.1, 0.72, 0.32), 18) + return body + + +def _create_visual_details(): + x0 = -WIDTH / 2.0 + y_front = -DEPTH / 2.0 - 0.9 + y_back = DEPTH / 2.0 + + objects = [ + _box( + "TerminalSlice_TopWhiteClamp", + WIDTH - 0.5, + 1.2, + 7.0, + x0 + 0.25, + y_front, + 26.0, + (0.92, 0.94, 0.92), + 0, + ), + _box( + "TerminalSlice_BottomBlackClamp", + WIDTH - 0.5, + 1.2, + 7.0, + x0 + 0.25, + y_front, + 3.0, + (0.02, 0.02, 0.02), + 0, + ), + _box( + "TerminalSlice_GreenWindow", + WIDTH - 0.8, + 1.0, + 8.0, + x0 + 0.4, + y_front - 0.02, + 14.0, + (0.55, 0.95, 0.48), + 42, + ), + _box( + "TerminalSlice_DINRailTopLip", + WIDTH, + 2.0, + 2.0, + x0, + y_back - 1.8, + 23.0, + (0.25, 0.31, 0.22), + 0, + ), + _box( + "TerminalSlice_DINRailBottomLip", + WIDTH, + 2.0, + 2.0, + x0, + y_back - 1.8, + 10.0, + (0.25, 0.31, 0.22), + 0, + ), + _cylinder_y( + "TerminalSlice_TopScrew", + 0.92, + 0.7, + 0.0, + y_front - 0.05, + 29.5, + (0.35, 0.35, 0.35), + ), + _cylinder_y( + "TerminalSlice_BottomScrew", + 0.92, + 0.7, + 0.0, + y_front - 0.05, + 6.5, + (0.0, 0.0, 0.0), + ), + ] + return objects + + +def _export_step(objects): + try: + import Import + + Import.export(objects, str(STEP_PATH)) + except Exception: + import ImportGui + + ImportGui.export(objects, str(STEP_PATH)) + + +def _write_report(terminals, geometry_objects): + report = { + "dimensions_mm": { + "width": WIDTH, + "depth": DEPTH, + "height": HEIGHT, + "array_spacing_x": WIDTH, + }, + "outputs": { + "fcstd": str(FCSTD_PATH), + "step": str(STEP_PATH), + }, + "geometry_objects": [obj.Name for obj in geometry_objects], + "terminals": [], + } + for terminal in terminals: + report["terminals"].append( + { + "name": terminal.Name, + "role": terminal.Role, + "can_wire": bool(terminal.CanWire), + "slot_name": terminal.QetTemplateSlotName, + "label": terminal.QetTerminalLabel, + "type": terminal.QetTerminalType, + "base": [ + terminal.Placement.Base.x, + terminal.Placement.Base.y, + terminal.Placement.Base.z, + ], + "engineering_binding_properties_present": [ + prop + for prop in sorted(ENGINEERING_BINDING_PROPERTIES) + if prop in terminal.PropertiesList + ], + } + ) + REPORT_PATH.write_text(json.dumps(report, indent=2), encoding="utf-8") + + +DOC = App.newDocument("QETTerminalSlice") + +body = _create_body() +details = _create_visual_details() +geometry = [body] + details + +terminals = [ + _create_lcs("Terminal_Top", "Top", "Top", App.Vector(0.0, -DEPTH / 2.0 - 1.0, 29.5)), + _create_lcs( + "Terminal_Bottom", + "Bottom", + "Bottom", + App.Vector(0.0, -DEPTH / 2.0 - 1.0, 6.5), + ), +] + +DOC.recompute() +DOC.saveAs(str(FCSTD_PATH)) +_export_step(geometry) +_write_report(terminals, geometry) + +print("Generated FCStd: {0}".format(FCSTD_PATH)) +print("Generated STEP: {0}".format(STEP_PATH)) +print("Generated report: {0}".format(REPORT_PATH)) diff --git a/data/examples/qet_terminal_block/qet_terminal_slice.FCStd b/data/examples/qet_terminal_block/qet_terminal_slice.FCStd new file mode 100644 index 0000000..50b8423 Binary files /dev/null and b/data/examples/qet_terminal_block/qet_terminal_slice.FCStd differ diff --git a/data/examples/qet_terminal_block/qet_terminal_slice.step b/data/examples/qet_terminal_block/qet_terminal_slice.step new file mode 100644 index 0000000..3e327bf --- /dev/null +++ b/data/examples/qet_terminal_block/qet_terminal_slice.step @@ -0,0 +1,1698 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('FreeCAD Model'),'2;1'); +FILE_NAME('Open CASCADE Shape Model','2026-05-26T16:36:02',(''),(''), + 'Open CASCADE STEP processor 7.8','FreeCAD','Unknown'); +FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }')); +ENDSEC; +DATA; +#1 = APPLICATION_PROTOCOL_DEFINITION('international standard', + 'automotive_design',2000,#2); +#2 = APPLICATION_CONTEXT( + 'core data for automotive mechanical design processes'); +#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10); +#4 = PRODUCT_DEFINITION_SHAPE('','',#5); +#5 = PRODUCT_DEFINITION('design','',#6,#9); +#6 = PRODUCT_DEFINITION_FORMATION('','',#7); +#7 = PRODUCT('QETTerminalSlice','QETTerminalSlice','',(#8)); +#8 = PRODUCT_CONTEXT('',#2,'mechanical'); +#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#10 = SHAPE_REPRESENTATION('',(#11,#15,#19,#23,#27,#31,#35,#39,#43),#47 + ); +#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14); +#12 = CARTESIAN_POINT('',(0.,0.,0.)); +#13 = DIRECTION('',(0.,0.,1.)); +#14 = DIRECTION('',(1.,0.,-0.)); +#15 = AXIS2_PLACEMENT_3D('',#16,#17,#18); +#16 = CARTESIAN_POINT('',(0.,0.,0.)); +#17 = DIRECTION('',(0.,0.,1.)); +#18 = DIRECTION('',(1.,0.,0.)); +#19 = AXIS2_PLACEMENT_3D('',#20,#21,#22); +#20 = CARTESIAN_POINT('',(0.,0.,0.)); +#21 = DIRECTION('',(0.,0.,1.)); +#22 = DIRECTION('',(1.,0.,0.)); +#23 = AXIS2_PLACEMENT_3D('',#24,#25,#26); +#24 = CARTESIAN_POINT('',(0.,0.,0.)); +#25 = DIRECTION('',(0.,0.,1.)); +#26 = DIRECTION('',(1.,0.,0.)); +#27 = AXIS2_PLACEMENT_3D('',#28,#29,#30); +#28 = CARTESIAN_POINT('',(0.,0.,0.)); +#29 = DIRECTION('',(0.,0.,1.)); +#30 = DIRECTION('',(1.,0.,0.)); +#31 = AXIS2_PLACEMENT_3D('',#32,#33,#34); +#32 = CARTESIAN_POINT('',(0.,0.,0.)); +#33 = DIRECTION('',(0.,0.,1.)); +#34 = DIRECTION('',(1.,0.,0.)); +#35 = AXIS2_PLACEMENT_3D('',#36,#37,#38); +#36 = CARTESIAN_POINT('',(0.,0.,0.)); +#37 = DIRECTION('',(0.,0.,1.)); +#38 = DIRECTION('',(1.,0.,0.)); +#39 = AXIS2_PLACEMENT_3D('',#40,#41,#42); +#40 = CARTESIAN_POINT('',(0.,0.,0.)); +#41 = DIRECTION('',(0.,0.,1.)); +#42 = DIRECTION('',(1.,0.,0.)); +#43 = AXIS2_PLACEMENT_3D('',#44,#45,#46); +#44 = CARTESIAN_POINT('',(0.,0.,0.)); +#45 = DIRECTION('',(0.,0.,1.)); +#46 = DIRECTION('',(1.,0.,0.)); +#47 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#51)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#48,#49,#50)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#48 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#49 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#50 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#51 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#48, + 'distance_accuracy_value','confusion accuracy'); +#52 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7)); +#53 = SHAPE_DEFINITION_REPRESENTATION(#54,#60); +#54 = PRODUCT_DEFINITION_SHAPE('','',#55); +#55 = PRODUCT_DEFINITION('design','',#56,#59); +#56 = PRODUCT_DEFINITION_FORMATION('','',#57); +#57 = PRODUCT('TerminalSlice_GreenBody','TerminalSlice_GreenBody','',( + #58)); +#58 = PRODUCT_CONTEXT('',#2,'mechanical'); +#59 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#60 = ADVANCED_BREP_SHAPE_REPRESENTATION('',(#11,#61),#607); +#61 = MANIFOLD_SOLID_BREP('',#62); +#62 = CLOSED_SHELL('',(#63,#199,#230,#254,#278,#302,#326,#350,#374,#398, + #422,#446,#470,#494,#518,#542,#566,#583)); +#63 = ADVANCED_FACE('',(#64),#194,.F.); +#64 = FACE_BOUND('',#65,.F.); +#65 = EDGE_LOOP('',(#66,#76,#84,#92,#100,#108,#116,#124,#132,#140,#148, + #156,#164,#172,#180,#188)); +#66 = ORIENTED_EDGE('',*,*,#67,.F.); +#67 = EDGE_CURVE('',#68,#70,#72,.T.); +#68 = VERTEX_POINT('',#69); +#69 = CARTESIAN_POINT('',(-2.6,21.,22.)); +#70 = VERTEX_POINT('',#71); +#71 = CARTESIAN_POINT('',(-2.6,13.,22.)); +#72 = LINE('',#73,#74); +#73 = CARTESIAN_POINT('',(-2.6,-4.,22.)); +#74 = VECTOR('',#75,1.); +#75 = DIRECTION('',(0.,-1.,0.)); +#76 = ORIENTED_EDGE('',*,*,#77,.T.); +#77 = EDGE_CURVE('',#68,#78,#80,.T.); +#78 = VERTEX_POINT('',#79); +#79 = CARTESIAN_POINT('',(-2.6,21.,36.)); +#80 = LINE('',#81,#82); +#81 = CARTESIAN_POINT('',(-2.6,21.,0.)); +#82 = VECTOR('',#83,1.); +#83 = DIRECTION('',(0.,0.,1.)); +#84 = ORIENTED_EDGE('',*,*,#85,.F.); +#85 = EDGE_CURVE('',#86,#78,#88,.T.); +#86 = VERTEX_POINT('',#87); +#87 = CARTESIAN_POINT('',(-2.6,-21.,36.)); +#88 = LINE('',#89,#90); +#89 = CARTESIAN_POINT('',(-2.6,-21.,36.)); +#90 = VECTOR('',#91,1.); +#91 = DIRECTION('',(-0.,1.,0.)); +#92 = ORIENTED_EDGE('',*,*,#93,.F.); +#93 = EDGE_CURVE('',#94,#86,#96,.T.); +#94 = VERTEX_POINT('',#95); +#95 = CARTESIAN_POINT('',(-2.6,-21.,33.)); +#96 = LINE('',#97,#98); +#97 = CARTESIAN_POINT('',(-2.6,-21.,0.)); +#98 = VECTOR('',#99,1.); +#99 = DIRECTION('',(0.,0.,1.)); +#100 = ORIENTED_EDGE('',*,*,#101,.F.); +#101 = EDGE_CURVE('',#102,#94,#104,.T.); +#102 = VERTEX_POINT('',#103); +#103 = CARTESIAN_POINT('',(-2.6,-18.9,33.)); +#104 = LINE('',#105,#106); +#105 = CARTESIAN_POINT('',(-2.6,-21.05,33.)); +#106 = VECTOR('',#107,1.); +#107 = DIRECTION('',(0.,-1.,0.)); +#108 = ORIENTED_EDGE('',*,*,#109,.F.); +#109 = EDGE_CURVE('',#110,#102,#112,.T.); +#110 = VERTEX_POINT('',#111); +#111 = CARTESIAN_POINT('',(-2.6,-18.9,26.)); +#112 = LINE('',#113,#114); +#113 = CARTESIAN_POINT('',(-2.6,-18.9,13.)); +#114 = VECTOR('',#115,1.); +#115 = DIRECTION('',(0.,0.,1.)); +#116 = ORIENTED_EDGE('',*,*,#117,.T.); +#117 = EDGE_CURVE('',#110,#118,#120,.T.); +#118 = VERTEX_POINT('',#119); +#119 = CARTESIAN_POINT('',(-2.6,-21.,26.)); +#120 = LINE('',#121,#122); +#121 = CARTESIAN_POINT('',(-2.6,-21.05,26.)); +#122 = VECTOR('',#123,1.); +#123 = DIRECTION('',(0.,-1.,0.)); +#124 = ORIENTED_EDGE('',*,*,#125,.F.); +#125 = EDGE_CURVE('',#126,#118,#128,.T.); +#126 = VERTEX_POINT('',#127); +#127 = CARTESIAN_POINT('',(-2.6,-21.,10.)); +#128 = LINE('',#129,#130); +#129 = CARTESIAN_POINT('',(-2.6,-21.,0.)); +#130 = VECTOR('',#131,1.); +#131 = DIRECTION('',(0.,0.,1.)); +#132 = ORIENTED_EDGE('',*,*,#133,.F.); +#133 = EDGE_CURVE('',#134,#126,#136,.T.); +#134 = VERTEX_POINT('',#135); +#135 = CARTESIAN_POINT('',(-2.6,-18.9,10.)); +#136 = LINE('',#137,#138); +#137 = CARTESIAN_POINT('',(-2.6,-21.05,10.)); +#138 = VECTOR('',#139,1.); +#139 = DIRECTION('',(0.,-1.,0.)); +#140 = ORIENTED_EDGE('',*,*,#141,.F.); +#141 = EDGE_CURVE('',#142,#134,#144,.T.); +#142 = VERTEX_POINT('',#143); +#143 = CARTESIAN_POINT('',(-2.6,-18.9,3.)); +#144 = LINE('',#145,#146); +#145 = CARTESIAN_POINT('',(-2.6,-18.9,1.5)); +#146 = VECTOR('',#147,1.); +#147 = DIRECTION('',(0.,0.,1.)); +#148 = ORIENTED_EDGE('',*,*,#149,.T.); +#149 = EDGE_CURVE('',#142,#150,#152,.T.); +#150 = VERTEX_POINT('',#151); +#151 = CARTESIAN_POINT('',(-2.6,-21.,3.)); +#152 = LINE('',#153,#154); +#153 = CARTESIAN_POINT('',(-2.6,-21.05,3.)); +#154 = VECTOR('',#155,1.); +#155 = DIRECTION('',(0.,-1.,0.)); +#156 = ORIENTED_EDGE('',*,*,#157,.F.); +#157 = EDGE_CURVE('',#158,#150,#160,.T.); +#158 = VERTEX_POINT('',#159); +#159 = CARTESIAN_POINT('',(-2.6,-21.,0.)); +#160 = LINE('',#161,#162); +#161 = CARTESIAN_POINT('',(-2.6,-21.,0.)); +#162 = VECTOR('',#163,1.); +#163 = DIRECTION('',(0.,0.,1.)); +#164 = ORIENTED_EDGE('',*,*,#165,.T.); +#165 = EDGE_CURVE('',#158,#166,#168,.T.); +#166 = VERTEX_POINT('',#167); +#167 = CARTESIAN_POINT('',(-2.6,21.,0.)); +#168 = LINE('',#169,#170); +#169 = CARTESIAN_POINT('',(-2.6,-21.,0.)); +#170 = VECTOR('',#171,1.); +#171 = DIRECTION('',(-0.,1.,0.)); +#172 = ORIENTED_EDGE('',*,*,#173,.T.); +#173 = EDGE_CURVE('',#166,#174,#176,.T.); +#174 = VERTEX_POINT('',#175); +#175 = CARTESIAN_POINT('',(-2.6,21.,12.)); +#176 = LINE('',#177,#178); +#177 = CARTESIAN_POINT('',(-2.6,21.,0.)); +#178 = VECTOR('',#179,1.); +#179 = DIRECTION('',(0.,0.,1.)); +#180 = ORIENTED_EDGE('',*,*,#181,.T.); +#181 = EDGE_CURVE('',#174,#182,#184,.T.); +#182 = VERTEX_POINT('',#183); +#183 = CARTESIAN_POINT('',(-2.6,13.,12.)); +#184 = LINE('',#185,#186); +#185 = CARTESIAN_POINT('',(-2.6,-4.,12.)); +#186 = VECTOR('',#187,1.); +#187 = DIRECTION('',(0.,-1.,0.)); +#188 = ORIENTED_EDGE('',*,*,#189,.T.); +#189 = EDGE_CURVE('',#182,#70,#190,.T.); +#190 = LINE('',#191,#192); +#191 = CARTESIAN_POINT('',(-2.6,13.,6.)); +#192 = VECTOR('',#193,1.); +#193 = DIRECTION('',(0.,0.,1.)); +#194 = PLANE('',#195); +#195 = AXIS2_PLACEMENT_3D('',#196,#197,#198); +#196 = CARTESIAN_POINT('',(-2.6,-21.,0.)); +#197 = DIRECTION('',(1.,0.,-0.)); +#198 = DIRECTION('',(0.,0.,1.)); +#199 = ADVANCED_FACE('',(#200),#225,.F.); +#200 = FACE_BOUND('',#201,.F.); +#201 = EDGE_LOOP('',(#202,#210,#211,#219)); +#202 = ORIENTED_EDGE('',*,*,#203,.F.); +#203 = EDGE_CURVE('',#68,#204,#206,.T.); +#204 = VERTEX_POINT('',#205); +#205 = CARTESIAN_POINT('',(2.6,21.,22.)); +#206 = LINE('',#207,#208); +#207 = CARTESIAN_POINT('',(-3.1,21.,22.)); +#208 = VECTOR('',#209,1.); +#209 = DIRECTION('',(1.,0.,-0.)); +#210 = ORIENTED_EDGE('',*,*,#67,.T.); +#211 = ORIENTED_EDGE('',*,*,#212,.T.); +#212 = EDGE_CURVE('',#70,#213,#215,.T.); +#213 = VERTEX_POINT('',#214); +#214 = CARTESIAN_POINT('',(2.6,13.,22.)); +#215 = LINE('',#216,#217); +#216 = CARTESIAN_POINT('',(-3.1,13.,22.)); +#217 = VECTOR('',#218,1.); +#218 = DIRECTION('',(1.,0.,-0.)); +#219 = ORIENTED_EDGE('',*,*,#220,.F.); +#220 = EDGE_CURVE('',#204,#213,#221,.T.); +#221 = LINE('',#222,#223); +#222 = CARTESIAN_POINT('',(2.6,-4.,22.)); +#223 = VECTOR('',#224,1.); +#224 = DIRECTION('',(0.,-1.,0.)); +#225 = PLANE('',#226); +#226 = AXIS2_PLACEMENT_3D('',#227,#228,#229); +#227 = CARTESIAN_POINT('',(-3.1,13.,22.)); +#228 = DIRECTION('',(0.,0.,1.)); +#229 = DIRECTION('',(1.,0.,-0.)); +#230 = ADVANCED_FACE('',(#231),#249,.T.); +#231 = FACE_BOUND('',#232,.T.); +#232 = EDGE_LOOP('',(#233,#241,#242,#243)); +#233 = ORIENTED_EDGE('',*,*,#234,.F.); +#234 = EDGE_CURVE('',#182,#235,#237,.T.); +#235 = VERTEX_POINT('',#236); +#236 = CARTESIAN_POINT('',(2.6,13.,12.)); +#237 = LINE('',#238,#239); +#238 = CARTESIAN_POINT('',(-3.1,13.,12.)); +#239 = VECTOR('',#240,1.); +#240 = DIRECTION('',(1.,0.,-0.)); +#241 = ORIENTED_EDGE('',*,*,#189,.T.); +#242 = ORIENTED_EDGE('',*,*,#212,.T.); +#243 = ORIENTED_EDGE('',*,*,#244,.F.); +#244 = EDGE_CURVE('',#235,#213,#245,.T.); +#245 = LINE('',#246,#247); +#246 = CARTESIAN_POINT('',(2.6,13.,6.)); +#247 = VECTOR('',#248,1.); +#248 = DIRECTION('',(0.,0.,1.)); +#249 = PLANE('',#250); +#250 = AXIS2_PLACEMENT_3D('',#251,#252,#253); +#251 = CARTESIAN_POINT('',(-3.1,13.,12.)); +#252 = DIRECTION('',(-0.,1.,0.)); +#253 = DIRECTION('',(0.,0.,1.)); +#254 = ADVANCED_FACE('',(#255),#273,.T.); +#255 = FACE_BOUND('',#256,.T.); +#256 = EDGE_LOOP('',(#257,#265,#266,#267)); +#257 = ORIENTED_EDGE('',*,*,#258,.F.); +#258 = EDGE_CURVE('',#174,#259,#261,.T.); +#259 = VERTEX_POINT('',#260); +#260 = CARTESIAN_POINT('',(2.6,21.,12.)); +#261 = LINE('',#262,#263); +#262 = CARTESIAN_POINT('',(-3.1,21.,12.)); +#263 = VECTOR('',#264,1.); +#264 = DIRECTION('',(1.,0.,-0.)); +#265 = ORIENTED_EDGE('',*,*,#181,.T.); +#266 = ORIENTED_EDGE('',*,*,#234,.T.); +#267 = ORIENTED_EDGE('',*,*,#268,.F.); +#268 = EDGE_CURVE('',#259,#235,#269,.T.); +#269 = LINE('',#270,#271); +#270 = CARTESIAN_POINT('',(2.6,-4.,12.)); +#271 = VECTOR('',#272,1.); +#272 = DIRECTION('',(0.,-1.,0.)); +#273 = PLANE('',#274); +#274 = AXIS2_PLACEMENT_3D('',#275,#276,#277); +#275 = CARTESIAN_POINT('',(-3.1,13.,12.)); +#276 = DIRECTION('',(0.,0.,1.)); +#277 = DIRECTION('',(1.,0.,-0.)); +#278 = ADVANCED_FACE('',(#279),#297,.T.); +#279 = FACE_BOUND('',#280,.T.); +#280 = EDGE_LOOP('',(#281,#289,#295,#296)); +#281 = ORIENTED_EDGE('',*,*,#282,.F.); +#282 = EDGE_CURVE('',#283,#259,#285,.T.); +#283 = VERTEX_POINT('',#284); +#284 = CARTESIAN_POINT('',(2.6,21.,0.)); +#285 = LINE('',#286,#287); +#286 = CARTESIAN_POINT('',(2.6,21.,0.)); +#287 = VECTOR('',#288,1.); +#288 = DIRECTION('',(0.,0.,1.)); +#289 = ORIENTED_EDGE('',*,*,#290,.F.); +#290 = EDGE_CURVE('',#166,#283,#291,.T.); +#291 = LINE('',#292,#293); +#292 = CARTESIAN_POINT('',(-2.6,21.,0.)); +#293 = VECTOR('',#294,1.); +#294 = DIRECTION('',(1.,0.,-0.)); +#295 = ORIENTED_EDGE('',*,*,#173,.T.); +#296 = ORIENTED_EDGE('',*,*,#258,.T.); +#297 = PLANE('',#298); +#298 = AXIS2_PLACEMENT_3D('',#299,#300,#301); +#299 = CARTESIAN_POINT('',(-2.6,21.,0.)); +#300 = DIRECTION('',(-0.,1.,0.)); +#301 = DIRECTION('',(0.,0.,1.)); +#302 = ADVANCED_FACE('',(#303),#321,.F.); +#303 = FACE_BOUND('',#304,.F.); +#304 = EDGE_LOOP('',(#305,#306,#314,#320)); +#305 = ORIENTED_EDGE('',*,*,#165,.F.); +#306 = ORIENTED_EDGE('',*,*,#307,.T.); +#307 = EDGE_CURVE('',#158,#308,#310,.T.); +#308 = VERTEX_POINT('',#309); +#309 = CARTESIAN_POINT('',(2.6,-21.,0.)); +#310 = LINE('',#311,#312); +#311 = CARTESIAN_POINT('',(-2.6,-21.,0.)); +#312 = VECTOR('',#313,1.); +#313 = DIRECTION('',(1.,0.,-0.)); +#314 = ORIENTED_EDGE('',*,*,#315,.T.); +#315 = EDGE_CURVE('',#308,#283,#316,.T.); +#316 = LINE('',#317,#318); +#317 = CARTESIAN_POINT('',(2.6,-21.,0.)); +#318 = VECTOR('',#319,1.); +#319 = DIRECTION('',(-0.,1.,0.)); +#320 = ORIENTED_EDGE('',*,*,#290,.F.); +#321 = PLANE('',#322); +#322 = AXIS2_PLACEMENT_3D('',#323,#324,#325); +#323 = CARTESIAN_POINT('',(-2.6,-21.,0.)); +#324 = DIRECTION('',(0.,0.,1.)); +#325 = DIRECTION('',(1.,0.,-0.)); +#326 = ADVANCED_FACE('',(#327),#345,.F.); +#327 = FACE_BOUND('',#328,.F.); +#328 = EDGE_LOOP('',(#329,#337,#338,#339)); +#329 = ORIENTED_EDGE('',*,*,#330,.F.); +#330 = EDGE_CURVE('',#308,#331,#333,.T.); +#331 = VERTEX_POINT('',#332); +#332 = CARTESIAN_POINT('',(2.6,-21.,3.)); +#333 = LINE('',#334,#335); +#334 = CARTESIAN_POINT('',(2.6,-21.,0.)); +#335 = VECTOR('',#336,1.); +#336 = DIRECTION('',(0.,0.,1.)); +#337 = ORIENTED_EDGE('',*,*,#307,.F.); +#338 = ORIENTED_EDGE('',*,*,#157,.T.); +#339 = ORIENTED_EDGE('',*,*,#340,.T.); +#340 = EDGE_CURVE('',#150,#331,#341,.T.); +#341 = LINE('',#342,#343); +#342 = CARTESIAN_POINT('',(-2.85,-21.,3.)); +#343 = VECTOR('',#344,1.); +#344 = DIRECTION('',(1.,0.,-0.)); +#345 = PLANE('',#346); +#346 = AXIS2_PLACEMENT_3D('',#347,#348,#349); +#347 = CARTESIAN_POINT('',(-2.6,-21.,0.)); +#348 = DIRECTION('',(-0.,1.,0.)); +#349 = DIRECTION('',(0.,0.,1.)); +#350 = ADVANCED_FACE('',(#351),#369,.T.); +#351 = FACE_BOUND('',#352,.T.); +#352 = EDGE_LOOP('',(#353,#361,#362,#363)); +#353 = ORIENTED_EDGE('',*,*,#354,.F.); +#354 = EDGE_CURVE('',#142,#355,#357,.T.); +#355 = VERTEX_POINT('',#356); +#356 = CARTESIAN_POINT('',(2.6,-18.9,3.)); +#357 = LINE('',#358,#359); +#358 = CARTESIAN_POINT('',(-3.1,-18.9,3.)); +#359 = VECTOR('',#360,1.); +#360 = DIRECTION('',(1.,0.,-0.)); +#361 = ORIENTED_EDGE('',*,*,#149,.T.); +#362 = ORIENTED_EDGE('',*,*,#340,.T.); +#363 = ORIENTED_EDGE('',*,*,#364,.F.); +#364 = EDGE_CURVE('',#355,#331,#365,.T.); +#365 = LINE('',#366,#367); +#366 = CARTESIAN_POINT('',(2.6,-21.05,3.)); +#367 = VECTOR('',#368,1.); +#368 = DIRECTION('',(0.,-1.,0.)); +#369 = PLANE('',#370); +#370 = AXIS2_PLACEMENT_3D('',#371,#372,#373); +#371 = CARTESIAN_POINT('',(-3.1,-21.1,3.)); +#372 = DIRECTION('',(0.,0.,1.)); +#373 = DIRECTION('',(1.,0.,-0.)); +#374 = ADVANCED_FACE('',(#375),#393,.F.); +#375 = FACE_BOUND('',#376,.F.); +#376 = EDGE_LOOP('',(#377,#378,#379,#387)); +#377 = ORIENTED_EDGE('',*,*,#354,.F.); +#378 = ORIENTED_EDGE('',*,*,#141,.T.); +#379 = ORIENTED_EDGE('',*,*,#380,.T.); +#380 = EDGE_CURVE('',#134,#381,#383,.T.); +#381 = VERTEX_POINT('',#382); +#382 = CARTESIAN_POINT('',(2.6,-18.9,10.)); +#383 = LINE('',#384,#385); +#384 = CARTESIAN_POINT('',(-3.1,-18.9,10.)); +#385 = VECTOR('',#386,1.); +#386 = DIRECTION('',(1.,0.,-0.)); +#387 = ORIENTED_EDGE('',*,*,#388,.F.); +#388 = EDGE_CURVE('',#355,#381,#389,.T.); +#389 = LINE('',#390,#391); +#390 = CARTESIAN_POINT('',(2.6,-18.9,1.5)); +#391 = VECTOR('',#392,1.); +#392 = DIRECTION('',(0.,0.,1.)); +#393 = PLANE('',#394); +#394 = AXIS2_PLACEMENT_3D('',#395,#396,#397); +#395 = CARTESIAN_POINT('',(-3.1,-18.9,3.)); +#396 = DIRECTION('',(-0.,1.,0.)); +#397 = DIRECTION('',(0.,0.,1.)); +#398 = ADVANCED_FACE('',(#399),#417,.F.); +#399 = FACE_BOUND('',#400,.F.); +#400 = EDGE_LOOP('',(#401,#402,#403,#411)); +#401 = ORIENTED_EDGE('',*,*,#380,.F.); +#402 = ORIENTED_EDGE('',*,*,#133,.T.); +#403 = ORIENTED_EDGE('',*,*,#404,.T.); +#404 = EDGE_CURVE('',#126,#405,#407,.T.); +#405 = VERTEX_POINT('',#406); +#406 = CARTESIAN_POINT('',(2.6,-21.,10.)); +#407 = LINE('',#408,#409); +#408 = CARTESIAN_POINT('',(-2.85,-21.,10.)); +#409 = VECTOR('',#410,1.); +#410 = DIRECTION('',(1.,0.,-0.)); +#411 = ORIENTED_EDGE('',*,*,#412,.F.); +#412 = EDGE_CURVE('',#381,#405,#413,.T.); +#413 = LINE('',#414,#415); +#414 = CARTESIAN_POINT('',(2.6,-21.05,10.)); +#415 = VECTOR('',#416,1.); +#416 = DIRECTION('',(0.,-1.,0.)); +#417 = PLANE('',#418); +#418 = AXIS2_PLACEMENT_3D('',#419,#420,#421); +#419 = CARTESIAN_POINT('',(-3.1,-21.1,10.)); +#420 = DIRECTION('',(0.,0.,1.)); +#421 = DIRECTION('',(1.,0.,-0.)); +#422 = ADVANCED_FACE('',(#423),#441,.F.); +#423 = FACE_BOUND('',#424,.F.); +#424 = EDGE_LOOP('',(#425,#433,#434,#435)); +#425 = ORIENTED_EDGE('',*,*,#426,.F.); +#426 = EDGE_CURVE('',#405,#427,#429,.T.); +#427 = VERTEX_POINT('',#428); +#428 = CARTESIAN_POINT('',(2.6,-21.,26.)); +#429 = LINE('',#430,#431); +#430 = CARTESIAN_POINT('',(2.6,-21.,0.)); +#431 = VECTOR('',#432,1.); +#432 = DIRECTION('',(0.,0.,1.)); +#433 = ORIENTED_EDGE('',*,*,#404,.F.); +#434 = ORIENTED_EDGE('',*,*,#125,.T.); +#435 = ORIENTED_EDGE('',*,*,#436,.T.); +#436 = EDGE_CURVE('',#118,#427,#437,.T.); +#437 = LINE('',#438,#439); +#438 = CARTESIAN_POINT('',(-2.85,-21.,26.)); +#439 = VECTOR('',#440,1.); +#440 = DIRECTION('',(1.,0.,-0.)); +#441 = PLANE('',#442); +#442 = AXIS2_PLACEMENT_3D('',#443,#444,#445); +#443 = CARTESIAN_POINT('',(-2.6,-21.,0.)); +#444 = DIRECTION('',(-0.,1.,0.)); +#445 = DIRECTION('',(0.,0.,1.)); +#446 = ADVANCED_FACE('',(#447),#465,.T.); +#447 = FACE_BOUND('',#448,.T.); +#448 = EDGE_LOOP('',(#449,#457,#458,#459)); +#449 = ORIENTED_EDGE('',*,*,#450,.F.); +#450 = EDGE_CURVE('',#110,#451,#453,.T.); +#451 = VERTEX_POINT('',#452); +#452 = CARTESIAN_POINT('',(2.6,-18.9,26.)); +#453 = LINE('',#454,#455); +#454 = CARTESIAN_POINT('',(-3.1,-18.9,26.)); +#455 = VECTOR('',#456,1.); +#456 = DIRECTION('',(1.,0.,-0.)); +#457 = ORIENTED_EDGE('',*,*,#117,.T.); +#458 = ORIENTED_EDGE('',*,*,#436,.T.); +#459 = ORIENTED_EDGE('',*,*,#460,.F.); +#460 = EDGE_CURVE('',#451,#427,#461,.T.); +#461 = LINE('',#462,#463); +#462 = CARTESIAN_POINT('',(2.6,-21.05,26.)); +#463 = VECTOR('',#464,1.); +#464 = DIRECTION('',(0.,-1.,0.)); +#465 = PLANE('',#466); +#466 = AXIS2_PLACEMENT_3D('',#467,#468,#469); +#467 = CARTESIAN_POINT('',(-3.1,-21.1,26.)); +#468 = DIRECTION('',(0.,0.,1.)); +#469 = DIRECTION('',(1.,0.,-0.)); +#470 = ADVANCED_FACE('',(#471),#489,.F.); +#471 = FACE_BOUND('',#472,.F.); +#472 = EDGE_LOOP('',(#473,#474,#475,#483)); +#473 = ORIENTED_EDGE('',*,*,#450,.F.); +#474 = ORIENTED_EDGE('',*,*,#109,.T.); +#475 = ORIENTED_EDGE('',*,*,#476,.T.); +#476 = EDGE_CURVE('',#102,#477,#479,.T.); +#477 = VERTEX_POINT('',#478); +#478 = CARTESIAN_POINT('',(2.6,-18.9,33.)); +#479 = LINE('',#480,#481); +#480 = CARTESIAN_POINT('',(-3.1,-18.9,33.)); +#481 = VECTOR('',#482,1.); +#482 = DIRECTION('',(1.,0.,-0.)); +#483 = ORIENTED_EDGE('',*,*,#484,.F.); +#484 = EDGE_CURVE('',#451,#477,#485,.T.); +#485 = LINE('',#486,#487); +#486 = CARTESIAN_POINT('',(2.6,-18.9,13.)); +#487 = VECTOR('',#488,1.); +#488 = DIRECTION('',(0.,0.,1.)); +#489 = PLANE('',#490); +#490 = AXIS2_PLACEMENT_3D('',#491,#492,#493); +#491 = CARTESIAN_POINT('',(-3.1,-18.9,26.)); +#492 = DIRECTION('',(-0.,1.,0.)); +#493 = DIRECTION('',(0.,0.,1.)); +#494 = ADVANCED_FACE('',(#495),#513,.F.); +#495 = FACE_BOUND('',#496,.F.); +#496 = EDGE_LOOP('',(#497,#498,#499,#507)); +#497 = ORIENTED_EDGE('',*,*,#476,.F.); +#498 = ORIENTED_EDGE('',*,*,#101,.T.); +#499 = ORIENTED_EDGE('',*,*,#500,.T.); +#500 = EDGE_CURVE('',#94,#501,#503,.T.); +#501 = VERTEX_POINT('',#502); +#502 = CARTESIAN_POINT('',(2.6,-21.,33.)); +#503 = LINE('',#504,#505); +#504 = CARTESIAN_POINT('',(-2.85,-21.,33.)); +#505 = VECTOR('',#506,1.); +#506 = DIRECTION('',(1.,0.,-0.)); +#507 = ORIENTED_EDGE('',*,*,#508,.F.); +#508 = EDGE_CURVE('',#477,#501,#509,.T.); +#509 = LINE('',#510,#511); +#510 = CARTESIAN_POINT('',(2.6,-21.05,33.)); +#511 = VECTOR('',#512,1.); +#512 = DIRECTION('',(0.,-1.,0.)); +#513 = PLANE('',#514); +#514 = AXIS2_PLACEMENT_3D('',#515,#516,#517); +#515 = CARTESIAN_POINT('',(-3.1,-21.1,33.)); +#516 = DIRECTION('',(0.,0.,1.)); +#517 = DIRECTION('',(1.,0.,-0.)); +#518 = ADVANCED_FACE('',(#519),#537,.F.); +#519 = FACE_BOUND('',#520,.F.); +#520 = EDGE_LOOP('',(#521,#529,#530,#531)); +#521 = ORIENTED_EDGE('',*,*,#522,.F.); +#522 = EDGE_CURVE('',#501,#523,#525,.T.); +#523 = VERTEX_POINT('',#524); +#524 = CARTESIAN_POINT('',(2.6,-21.,36.)); +#525 = LINE('',#526,#527); +#526 = CARTESIAN_POINT('',(2.6,-21.,0.)); +#527 = VECTOR('',#528,1.); +#528 = DIRECTION('',(0.,0.,1.)); +#529 = ORIENTED_EDGE('',*,*,#500,.F.); +#530 = ORIENTED_EDGE('',*,*,#93,.T.); +#531 = ORIENTED_EDGE('',*,*,#532,.T.); +#532 = EDGE_CURVE('',#86,#523,#533,.T.); +#533 = LINE('',#534,#535); +#534 = CARTESIAN_POINT('',(-2.6,-21.,36.)); +#535 = VECTOR('',#536,1.); +#536 = DIRECTION('',(1.,0.,-0.)); +#537 = PLANE('',#538); +#538 = AXIS2_PLACEMENT_3D('',#539,#540,#541); +#539 = CARTESIAN_POINT('',(-2.6,-21.,0.)); +#540 = DIRECTION('',(-0.,1.,0.)); +#541 = DIRECTION('',(0.,0.,1.)); +#542 = ADVANCED_FACE('',(#543),#561,.T.); +#543 = FACE_BOUND('',#544,.T.); +#544 = EDGE_LOOP('',(#545,#546,#547,#555)); +#545 = ORIENTED_EDGE('',*,*,#85,.F.); +#546 = ORIENTED_EDGE('',*,*,#532,.T.); +#547 = ORIENTED_EDGE('',*,*,#548,.T.); +#548 = EDGE_CURVE('',#523,#549,#551,.T.); +#549 = VERTEX_POINT('',#550); +#550 = CARTESIAN_POINT('',(2.6,21.,36.)); +#551 = LINE('',#552,#553); +#552 = CARTESIAN_POINT('',(2.6,-21.,36.)); +#553 = VECTOR('',#554,1.); +#554 = DIRECTION('',(-0.,1.,0.)); +#555 = ORIENTED_EDGE('',*,*,#556,.F.); +#556 = EDGE_CURVE('',#78,#549,#557,.T.); +#557 = LINE('',#558,#559); +#558 = CARTESIAN_POINT('',(-2.6,21.,36.)); +#559 = VECTOR('',#560,1.); +#560 = DIRECTION('',(1.,0.,-0.)); +#561 = PLANE('',#562); +#562 = AXIS2_PLACEMENT_3D('',#563,#564,#565); +#563 = CARTESIAN_POINT('',(-2.6,-21.,36.)); +#564 = DIRECTION('',(0.,0.,1.)); +#565 = DIRECTION('',(1.,0.,-0.)); +#566 = ADVANCED_FACE('',(#567),#578,.T.); +#567 = FACE_BOUND('',#568,.T.); +#568 = EDGE_LOOP('',(#569,#575,#576,#577)); +#569 = ORIENTED_EDGE('',*,*,#570,.F.); +#570 = EDGE_CURVE('',#204,#549,#571,.T.); +#571 = LINE('',#572,#573); +#572 = CARTESIAN_POINT('',(2.6,21.,0.)); +#573 = VECTOR('',#574,1.); +#574 = DIRECTION('',(0.,0.,1.)); +#575 = ORIENTED_EDGE('',*,*,#203,.F.); +#576 = ORIENTED_EDGE('',*,*,#77,.T.); +#577 = ORIENTED_EDGE('',*,*,#556,.T.); +#578 = PLANE('',#579); +#579 = AXIS2_PLACEMENT_3D('',#580,#581,#582); +#580 = CARTESIAN_POINT('',(-2.6,21.,0.)); +#581 = DIRECTION('',(-0.,1.,0.)); +#582 = DIRECTION('',(0.,0.,1.)); +#583 = ADVANCED_FACE('',(#584),#602,.T.); +#584 = FACE_BOUND('',#585,.T.); +#585 = EDGE_LOOP('',(#586,#587,#588,#589,#590,#591,#592,#593,#594,#595, + #596,#597,#598,#599,#600,#601)); +#586 = ORIENTED_EDGE('',*,*,#220,.F.); +#587 = ORIENTED_EDGE('',*,*,#570,.T.); +#588 = ORIENTED_EDGE('',*,*,#548,.F.); +#589 = ORIENTED_EDGE('',*,*,#522,.F.); +#590 = ORIENTED_EDGE('',*,*,#508,.F.); +#591 = ORIENTED_EDGE('',*,*,#484,.F.); +#592 = ORIENTED_EDGE('',*,*,#460,.T.); +#593 = ORIENTED_EDGE('',*,*,#426,.F.); +#594 = ORIENTED_EDGE('',*,*,#412,.F.); +#595 = ORIENTED_EDGE('',*,*,#388,.F.); +#596 = ORIENTED_EDGE('',*,*,#364,.T.); +#597 = ORIENTED_EDGE('',*,*,#330,.F.); +#598 = ORIENTED_EDGE('',*,*,#315,.T.); +#599 = ORIENTED_EDGE('',*,*,#282,.T.); +#600 = ORIENTED_EDGE('',*,*,#268,.T.); +#601 = ORIENTED_EDGE('',*,*,#244,.T.); +#602 = PLANE('',#603); +#603 = AXIS2_PLACEMENT_3D('',#604,#605,#606); +#604 = CARTESIAN_POINT('',(2.6,-21.,0.)); +#605 = DIRECTION('',(1.,0.,-0.)); +#606 = DIRECTION('',(0.,0.,1.)); +#607 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#611)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#608,#609,#610)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#608 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#609 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#610 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#611 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#608, + 'distance_accuracy_value','confusion accuracy'); +#612 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#613,#615); +#613 = ( REPRESENTATION_RELATIONSHIP('','',#60,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#614) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#614 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15); +#615 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#616 + ); +#616 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('1','TerminalSlice_GreenBody','', + #5,#55,$); +#617 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#57)); +#618 = SHAPE_DEFINITION_REPRESENTATION(#619,#625); +#619 = PRODUCT_DEFINITION_SHAPE('','',#620); +#620 = PRODUCT_DEFINITION('design','',#621,#624); +#621 = PRODUCT_DEFINITION_FORMATION('','',#622); +#622 = PRODUCT('TerminalSlice_TopWhiteClamp', + 'TerminalSlice_TopWhiteClamp','',(#623)); +#623 = PRODUCT_CONTEXT('',#2,'mechanical'); +#624 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#625 = ADVANCED_BREP_SHAPE_REPRESENTATION('',(#11,#626),#776); +#626 = MANIFOLD_SOLID_BREP('',#627); +#627 = CLOSED_SHELL('',(#628,#668,#708,#730,#752,#764)); +#628 = ADVANCED_FACE('',(#629),#663,.F.); +#629 = FACE_BOUND('',#630,.F.); +#630 = EDGE_LOOP('',(#631,#641,#649,#657)); +#631 = ORIENTED_EDGE('',*,*,#632,.F.); +#632 = EDGE_CURVE('',#633,#635,#637,.T.); +#633 = VERTEX_POINT('',#634); +#634 = CARTESIAN_POINT('',(-2.35,-21.9,26.)); +#635 = VERTEX_POINT('',#636); +#636 = CARTESIAN_POINT('',(-2.35,-21.9,33.)); +#637 = LINE('',#638,#639); +#638 = CARTESIAN_POINT('',(-2.35,-21.9,26.)); +#639 = VECTOR('',#640,1.); +#640 = DIRECTION('',(0.,0.,1.)); +#641 = ORIENTED_EDGE('',*,*,#642,.T.); +#642 = EDGE_CURVE('',#633,#643,#645,.T.); +#643 = VERTEX_POINT('',#644); +#644 = CARTESIAN_POINT('',(-2.35,-20.7,26.)); +#645 = LINE('',#646,#647); +#646 = CARTESIAN_POINT('',(-2.35,-21.9,26.)); +#647 = VECTOR('',#648,1.); +#648 = DIRECTION('',(-0.,1.,0.)); +#649 = ORIENTED_EDGE('',*,*,#650,.T.); +#650 = EDGE_CURVE('',#643,#651,#653,.T.); +#651 = VERTEX_POINT('',#652); +#652 = CARTESIAN_POINT('',(-2.35,-20.7,33.)); +#653 = LINE('',#654,#655); +#654 = CARTESIAN_POINT('',(-2.35,-20.7,26.)); +#655 = VECTOR('',#656,1.); +#656 = DIRECTION('',(0.,0.,1.)); +#657 = ORIENTED_EDGE('',*,*,#658,.F.); +#658 = EDGE_CURVE('',#635,#651,#659,.T.); +#659 = LINE('',#660,#661); +#660 = CARTESIAN_POINT('',(-2.35,-21.9,33.)); +#661 = VECTOR('',#662,1.); +#662 = DIRECTION('',(-0.,1.,0.)); +#663 = PLANE('',#664); +#664 = AXIS2_PLACEMENT_3D('',#665,#666,#667); +#665 = CARTESIAN_POINT('',(-2.35,-21.9,26.)); +#666 = DIRECTION('',(1.,0.,-0.)); +#667 = DIRECTION('',(0.,0.,1.)); +#668 = ADVANCED_FACE('',(#669),#703,.T.); +#669 = FACE_BOUND('',#670,.T.); +#670 = EDGE_LOOP('',(#671,#681,#689,#697)); +#671 = ORIENTED_EDGE('',*,*,#672,.F.); +#672 = EDGE_CURVE('',#673,#675,#677,.T.); +#673 = VERTEX_POINT('',#674); +#674 = CARTESIAN_POINT('',(2.35,-21.9,26.)); +#675 = VERTEX_POINT('',#676); +#676 = CARTESIAN_POINT('',(2.35,-21.9,33.)); +#677 = LINE('',#678,#679); +#678 = CARTESIAN_POINT('',(2.35,-21.9,26.)); +#679 = VECTOR('',#680,1.); +#680 = DIRECTION('',(0.,0.,1.)); +#681 = ORIENTED_EDGE('',*,*,#682,.T.); +#682 = EDGE_CURVE('',#673,#683,#685,.T.); +#683 = VERTEX_POINT('',#684); +#684 = CARTESIAN_POINT('',(2.35,-20.7,26.)); +#685 = LINE('',#686,#687); +#686 = CARTESIAN_POINT('',(2.35,-21.9,26.)); +#687 = VECTOR('',#688,1.); +#688 = DIRECTION('',(-0.,1.,0.)); +#689 = ORIENTED_EDGE('',*,*,#690,.T.); +#690 = EDGE_CURVE('',#683,#691,#693,.T.); +#691 = VERTEX_POINT('',#692); +#692 = CARTESIAN_POINT('',(2.35,-20.7,33.)); +#693 = LINE('',#694,#695); +#694 = CARTESIAN_POINT('',(2.35,-20.7,26.)); +#695 = VECTOR('',#696,1.); +#696 = DIRECTION('',(0.,0.,1.)); +#697 = ORIENTED_EDGE('',*,*,#698,.F.); +#698 = EDGE_CURVE('',#675,#691,#699,.T.); +#699 = LINE('',#700,#701); +#700 = CARTESIAN_POINT('',(2.35,-21.9,33.)); +#701 = VECTOR('',#702,1.); +#702 = DIRECTION('',(-0.,1.,0.)); +#703 = PLANE('',#704); +#704 = AXIS2_PLACEMENT_3D('',#705,#706,#707); +#705 = CARTESIAN_POINT('',(2.35,-21.9,26.)); +#706 = DIRECTION('',(1.,0.,-0.)); +#707 = DIRECTION('',(0.,0.,1.)); +#708 = ADVANCED_FACE('',(#709),#725,.F.); +#709 = FACE_BOUND('',#710,.F.); +#710 = EDGE_LOOP('',(#711,#717,#718,#724)); +#711 = ORIENTED_EDGE('',*,*,#712,.F.); +#712 = EDGE_CURVE('',#633,#673,#713,.T.); +#713 = LINE('',#714,#715); +#714 = CARTESIAN_POINT('',(-2.35,-21.9,26.)); +#715 = VECTOR('',#716,1.); +#716 = DIRECTION('',(1.,0.,-0.)); +#717 = ORIENTED_EDGE('',*,*,#632,.T.); +#718 = ORIENTED_EDGE('',*,*,#719,.T.); +#719 = EDGE_CURVE('',#635,#675,#720,.T.); +#720 = LINE('',#721,#722); +#721 = CARTESIAN_POINT('',(-2.35,-21.9,33.)); +#722 = VECTOR('',#723,1.); +#723 = DIRECTION('',(1.,0.,-0.)); +#724 = ORIENTED_EDGE('',*,*,#672,.F.); +#725 = PLANE('',#726); +#726 = AXIS2_PLACEMENT_3D('',#727,#728,#729); +#727 = CARTESIAN_POINT('',(-2.35,-21.9,26.)); +#728 = DIRECTION('',(-0.,1.,0.)); +#729 = DIRECTION('',(0.,0.,1.)); +#730 = ADVANCED_FACE('',(#731),#747,.T.); +#731 = FACE_BOUND('',#732,.T.); +#732 = EDGE_LOOP('',(#733,#739,#740,#746)); +#733 = ORIENTED_EDGE('',*,*,#734,.F.); +#734 = EDGE_CURVE('',#643,#683,#735,.T.); +#735 = LINE('',#736,#737); +#736 = CARTESIAN_POINT('',(-2.35,-20.7,26.)); +#737 = VECTOR('',#738,1.); +#738 = DIRECTION('',(1.,0.,-0.)); +#739 = ORIENTED_EDGE('',*,*,#650,.T.); +#740 = ORIENTED_EDGE('',*,*,#741,.T.); +#741 = EDGE_CURVE('',#651,#691,#742,.T.); +#742 = LINE('',#743,#744); +#743 = CARTESIAN_POINT('',(-2.35,-20.7,33.)); +#744 = VECTOR('',#745,1.); +#745 = DIRECTION('',(1.,0.,-0.)); +#746 = ORIENTED_EDGE('',*,*,#690,.F.); +#747 = PLANE('',#748); +#748 = AXIS2_PLACEMENT_3D('',#749,#750,#751); +#749 = CARTESIAN_POINT('',(-2.35,-20.7,26.)); +#750 = DIRECTION('',(-0.,1.,0.)); +#751 = DIRECTION('',(0.,0.,1.)); +#752 = ADVANCED_FACE('',(#753),#759,.F.); +#753 = FACE_BOUND('',#754,.F.); +#754 = EDGE_LOOP('',(#755,#756,#757,#758)); +#755 = ORIENTED_EDGE('',*,*,#642,.F.); +#756 = ORIENTED_EDGE('',*,*,#712,.T.); +#757 = ORIENTED_EDGE('',*,*,#682,.T.); +#758 = ORIENTED_EDGE('',*,*,#734,.F.); +#759 = PLANE('',#760); +#760 = AXIS2_PLACEMENT_3D('',#761,#762,#763); +#761 = CARTESIAN_POINT('',(-2.35,-21.9,26.)); +#762 = DIRECTION('',(0.,0.,1.)); +#763 = DIRECTION('',(1.,0.,-0.)); +#764 = ADVANCED_FACE('',(#765),#771,.T.); +#765 = FACE_BOUND('',#766,.T.); +#766 = EDGE_LOOP('',(#767,#768,#769,#770)); +#767 = ORIENTED_EDGE('',*,*,#658,.F.); +#768 = ORIENTED_EDGE('',*,*,#719,.T.); +#769 = ORIENTED_EDGE('',*,*,#698,.T.); +#770 = ORIENTED_EDGE('',*,*,#741,.F.); +#771 = PLANE('',#772); +#772 = AXIS2_PLACEMENT_3D('',#773,#774,#775); +#773 = CARTESIAN_POINT('',(-2.35,-21.9,33.)); +#774 = DIRECTION('',(0.,0.,1.)); +#775 = DIRECTION('',(1.,0.,-0.)); +#776 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#780)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#777,#778,#779)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#777 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#778 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#779 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#780 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#777, + 'distance_accuracy_value','confusion accuracy'); +#781 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#782,#784); +#782 = ( REPRESENTATION_RELATIONSHIP('','',#625,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#783) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#783 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); +#784 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#785 + ); +#785 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('2','TerminalSlice_TopWhiteClamp', + '',#5,#620,$); +#786 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#622)); +#787 = SHAPE_DEFINITION_REPRESENTATION(#788,#794); +#788 = PRODUCT_DEFINITION_SHAPE('','',#789); +#789 = PRODUCT_DEFINITION('design','',#790,#793); +#790 = PRODUCT_DEFINITION_FORMATION('','',#791); +#791 = PRODUCT('TerminalSlice_BottomBlackClamp', + 'TerminalSlice_BottomBlackClamp','',(#792)); +#792 = PRODUCT_CONTEXT('',#2,'mechanical'); +#793 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#794 = ADVANCED_BREP_SHAPE_REPRESENTATION('',(#11,#795),#945); +#795 = MANIFOLD_SOLID_BREP('',#796); +#796 = CLOSED_SHELL('',(#797,#837,#877,#899,#921,#933)); +#797 = ADVANCED_FACE('',(#798),#832,.F.); +#798 = FACE_BOUND('',#799,.F.); +#799 = EDGE_LOOP('',(#800,#810,#818,#826)); +#800 = ORIENTED_EDGE('',*,*,#801,.F.); +#801 = EDGE_CURVE('',#802,#804,#806,.T.); +#802 = VERTEX_POINT('',#803); +#803 = CARTESIAN_POINT('',(-2.35,-21.9,3.)); +#804 = VERTEX_POINT('',#805); +#805 = CARTESIAN_POINT('',(-2.35,-21.9,10.)); +#806 = LINE('',#807,#808); +#807 = CARTESIAN_POINT('',(-2.35,-21.9,3.)); +#808 = VECTOR('',#809,1.); +#809 = DIRECTION('',(0.,0.,1.)); +#810 = ORIENTED_EDGE('',*,*,#811,.T.); +#811 = EDGE_CURVE('',#802,#812,#814,.T.); +#812 = VERTEX_POINT('',#813); +#813 = CARTESIAN_POINT('',(-2.35,-20.7,3.)); +#814 = LINE('',#815,#816); +#815 = CARTESIAN_POINT('',(-2.35,-21.9,3.)); +#816 = VECTOR('',#817,1.); +#817 = DIRECTION('',(-0.,1.,0.)); +#818 = ORIENTED_EDGE('',*,*,#819,.T.); +#819 = EDGE_CURVE('',#812,#820,#822,.T.); +#820 = VERTEX_POINT('',#821); +#821 = CARTESIAN_POINT('',(-2.35,-20.7,10.)); +#822 = LINE('',#823,#824); +#823 = CARTESIAN_POINT('',(-2.35,-20.7,3.)); +#824 = VECTOR('',#825,1.); +#825 = DIRECTION('',(0.,0.,1.)); +#826 = ORIENTED_EDGE('',*,*,#827,.F.); +#827 = EDGE_CURVE('',#804,#820,#828,.T.); +#828 = LINE('',#829,#830); +#829 = CARTESIAN_POINT('',(-2.35,-21.9,10.)); +#830 = VECTOR('',#831,1.); +#831 = DIRECTION('',(-0.,1.,0.)); +#832 = PLANE('',#833); +#833 = AXIS2_PLACEMENT_3D('',#834,#835,#836); +#834 = CARTESIAN_POINT('',(-2.35,-21.9,3.)); +#835 = DIRECTION('',(1.,0.,-0.)); +#836 = DIRECTION('',(0.,0.,1.)); +#837 = ADVANCED_FACE('',(#838),#872,.T.); +#838 = FACE_BOUND('',#839,.T.); +#839 = EDGE_LOOP('',(#840,#850,#858,#866)); +#840 = ORIENTED_EDGE('',*,*,#841,.F.); +#841 = EDGE_CURVE('',#842,#844,#846,.T.); +#842 = VERTEX_POINT('',#843); +#843 = CARTESIAN_POINT('',(2.35,-21.9,3.)); +#844 = VERTEX_POINT('',#845); +#845 = CARTESIAN_POINT('',(2.35,-21.9,10.)); +#846 = LINE('',#847,#848); +#847 = CARTESIAN_POINT('',(2.35,-21.9,3.)); +#848 = VECTOR('',#849,1.); +#849 = DIRECTION('',(0.,0.,1.)); +#850 = ORIENTED_EDGE('',*,*,#851,.T.); +#851 = EDGE_CURVE('',#842,#852,#854,.T.); +#852 = VERTEX_POINT('',#853); +#853 = CARTESIAN_POINT('',(2.35,-20.7,3.)); +#854 = LINE('',#855,#856); +#855 = CARTESIAN_POINT('',(2.35,-21.9,3.)); +#856 = VECTOR('',#857,1.); +#857 = DIRECTION('',(-0.,1.,0.)); +#858 = ORIENTED_EDGE('',*,*,#859,.T.); +#859 = EDGE_CURVE('',#852,#860,#862,.T.); +#860 = VERTEX_POINT('',#861); +#861 = CARTESIAN_POINT('',(2.35,-20.7,10.)); +#862 = LINE('',#863,#864); +#863 = CARTESIAN_POINT('',(2.35,-20.7,3.)); +#864 = VECTOR('',#865,1.); +#865 = DIRECTION('',(0.,0.,1.)); +#866 = ORIENTED_EDGE('',*,*,#867,.F.); +#867 = EDGE_CURVE('',#844,#860,#868,.T.); +#868 = LINE('',#869,#870); +#869 = CARTESIAN_POINT('',(2.35,-21.9,10.)); +#870 = VECTOR('',#871,1.); +#871 = DIRECTION('',(-0.,1.,0.)); +#872 = PLANE('',#873); +#873 = AXIS2_PLACEMENT_3D('',#874,#875,#876); +#874 = CARTESIAN_POINT('',(2.35,-21.9,3.)); +#875 = DIRECTION('',(1.,0.,-0.)); +#876 = DIRECTION('',(0.,0.,1.)); +#877 = ADVANCED_FACE('',(#878),#894,.F.); +#878 = FACE_BOUND('',#879,.F.); +#879 = EDGE_LOOP('',(#880,#886,#887,#893)); +#880 = ORIENTED_EDGE('',*,*,#881,.F.); +#881 = EDGE_CURVE('',#802,#842,#882,.T.); +#882 = LINE('',#883,#884); +#883 = CARTESIAN_POINT('',(-2.35,-21.9,3.)); +#884 = VECTOR('',#885,1.); +#885 = DIRECTION('',(1.,0.,-0.)); +#886 = ORIENTED_EDGE('',*,*,#801,.T.); +#887 = ORIENTED_EDGE('',*,*,#888,.T.); +#888 = EDGE_CURVE('',#804,#844,#889,.T.); +#889 = LINE('',#890,#891); +#890 = CARTESIAN_POINT('',(-2.35,-21.9,10.)); +#891 = VECTOR('',#892,1.); +#892 = DIRECTION('',(1.,0.,-0.)); +#893 = ORIENTED_EDGE('',*,*,#841,.F.); +#894 = PLANE('',#895); +#895 = AXIS2_PLACEMENT_3D('',#896,#897,#898); +#896 = CARTESIAN_POINT('',(-2.35,-21.9,3.)); +#897 = DIRECTION('',(-0.,1.,0.)); +#898 = DIRECTION('',(0.,0.,1.)); +#899 = ADVANCED_FACE('',(#900),#916,.T.); +#900 = FACE_BOUND('',#901,.T.); +#901 = EDGE_LOOP('',(#902,#908,#909,#915)); +#902 = ORIENTED_EDGE('',*,*,#903,.F.); +#903 = EDGE_CURVE('',#812,#852,#904,.T.); +#904 = LINE('',#905,#906); +#905 = CARTESIAN_POINT('',(-2.35,-20.7,3.)); +#906 = VECTOR('',#907,1.); +#907 = DIRECTION('',(1.,0.,-0.)); +#908 = ORIENTED_EDGE('',*,*,#819,.T.); +#909 = ORIENTED_EDGE('',*,*,#910,.T.); +#910 = EDGE_CURVE('',#820,#860,#911,.T.); +#911 = LINE('',#912,#913); +#912 = CARTESIAN_POINT('',(-2.35,-20.7,10.)); +#913 = VECTOR('',#914,1.); +#914 = DIRECTION('',(1.,0.,-0.)); +#915 = ORIENTED_EDGE('',*,*,#859,.F.); +#916 = PLANE('',#917); +#917 = AXIS2_PLACEMENT_3D('',#918,#919,#920); +#918 = CARTESIAN_POINT('',(-2.35,-20.7,3.)); +#919 = DIRECTION('',(-0.,1.,0.)); +#920 = DIRECTION('',(0.,0.,1.)); +#921 = ADVANCED_FACE('',(#922),#928,.F.); +#922 = FACE_BOUND('',#923,.F.); +#923 = EDGE_LOOP('',(#924,#925,#926,#927)); +#924 = ORIENTED_EDGE('',*,*,#811,.F.); +#925 = ORIENTED_EDGE('',*,*,#881,.T.); +#926 = ORIENTED_EDGE('',*,*,#851,.T.); +#927 = ORIENTED_EDGE('',*,*,#903,.F.); +#928 = PLANE('',#929); +#929 = AXIS2_PLACEMENT_3D('',#930,#931,#932); +#930 = CARTESIAN_POINT('',(-2.35,-21.9,3.)); +#931 = DIRECTION('',(0.,0.,1.)); +#932 = DIRECTION('',(1.,0.,-0.)); +#933 = ADVANCED_FACE('',(#934),#940,.T.); +#934 = FACE_BOUND('',#935,.T.); +#935 = EDGE_LOOP('',(#936,#937,#938,#939)); +#936 = ORIENTED_EDGE('',*,*,#827,.F.); +#937 = ORIENTED_EDGE('',*,*,#888,.T.); +#938 = ORIENTED_EDGE('',*,*,#867,.T.); +#939 = ORIENTED_EDGE('',*,*,#910,.F.); +#940 = PLANE('',#941); +#941 = AXIS2_PLACEMENT_3D('',#942,#943,#944); +#942 = CARTESIAN_POINT('',(-2.35,-21.9,10.)); +#943 = DIRECTION('',(0.,0.,1.)); +#944 = DIRECTION('',(1.,0.,-0.)); +#945 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#949)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#946,#947,#948)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#946 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#947 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#948 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#949 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#946, + 'distance_accuracy_value','confusion accuracy'); +#950 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#951,#953); +#951 = ( REPRESENTATION_RELATIONSHIP('','',#794,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#952) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#952 = ITEM_DEFINED_TRANSFORMATION('','',#11,#23); +#953 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#954 + ); +#954 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('3', + 'TerminalSlice_BottomBlackClamp','',#5,#789,$); +#955 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#791)); +#956 = SHAPE_DEFINITION_REPRESENTATION(#957,#963); +#957 = PRODUCT_DEFINITION_SHAPE('','',#958); +#958 = PRODUCT_DEFINITION('design','',#959,#962); +#959 = PRODUCT_DEFINITION_FORMATION('','',#960); +#960 = PRODUCT('TerminalSlice_GreenWindow','TerminalSlice_GreenWindow', + '',(#961)); +#961 = PRODUCT_CONTEXT('',#2,'mechanical'); +#962 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#963 = ADVANCED_BREP_SHAPE_REPRESENTATION('',(#11,#964),#1114); +#964 = MANIFOLD_SOLID_BREP('',#965); +#965 = CLOSED_SHELL('',(#966,#1006,#1046,#1068,#1090,#1102)); +#966 = ADVANCED_FACE('',(#967),#1001,.F.); +#967 = FACE_BOUND('',#968,.F.); +#968 = EDGE_LOOP('',(#969,#979,#987,#995)); +#969 = ORIENTED_EDGE('',*,*,#970,.F.); +#970 = EDGE_CURVE('',#971,#973,#975,.T.); +#971 = VERTEX_POINT('',#972); +#972 = CARTESIAN_POINT('',(-2.2,-21.92,14.)); +#973 = VERTEX_POINT('',#974); +#974 = CARTESIAN_POINT('',(-2.2,-21.92,22.)); +#975 = LINE('',#976,#977); +#976 = CARTESIAN_POINT('',(-2.2,-21.92,14.)); +#977 = VECTOR('',#978,1.); +#978 = DIRECTION('',(0.,0.,1.)); +#979 = ORIENTED_EDGE('',*,*,#980,.T.); +#980 = EDGE_CURVE('',#971,#981,#983,.T.); +#981 = VERTEX_POINT('',#982); +#982 = CARTESIAN_POINT('',(-2.2,-20.92,14.)); +#983 = LINE('',#984,#985); +#984 = CARTESIAN_POINT('',(-2.2,-21.92,14.)); +#985 = VECTOR('',#986,1.); +#986 = DIRECTION('',(-0.,1.,0.)); +#987 = ORIENTED_EDGE('',*,*,#988,.T.); +#988 = EDGE_CURVE('',#981,#989,#991,.T.); +#989 = VERTEX_POINT('',#990); +#990 = CARTESIAN_POINT('',(-2.2,-20.92,22.)); +#991 = LINE('',#992,#993); +#992 = CARTESIAN_POINT('',(-2.2,-20.92,14.)); +#993 = VECTOR('',#994,1.); +#994 = DIRECTION('',(0.,0.,1.)); +#995 = ORIENTED_EDGE('',*,*,#996,.F.); +#996 = EDGE_CURVE('',#973,#989,#997,.T.); +#997 = LINE('',#998,#999); +#998 = CARTESIAN_POINT('',(-2.2,-21.92,22.)); +#999 = VECTOR('',#1000,1.); +#1000 = DIRECTION('',(-0.,1.,0.)); +#1001 = PLANE('',#1002); +#1002 = AXIS2_PLACEMENT_3D('',#1003,#1004,#1005); +#1003 = CARTESIAN_POINT('',(-2.2,-21.92,14.)); +#1004 = DIRECTION('',(1.,0.,-0.)); +#1005 = DIRECTION('',(0.,0.,1.)); +#1006 = ADVANCED_FACE('',(#1007),#1041,.T.); +#1007 = FACE_BOUND('',#1008,.T.); +#1008 = EDGE_LOOP('',(#1009,#1019,#1027,#1035)); +#1009 = ORIENTED_EDGE('',*,*,#1010,.F.); +#1010 = EDGE_CURVE('',#1011,#1013,#1015,.T.); +#1011 = VERTEX_POINT('',#1012); +#1012 = CARTESIAN_POINT('',(2.2,-21.92,14.)); +#1013 = VERTEX_POINT('',#1014); +#1014 = CARTESIAN_POINT('',(2.2,-21.92,22.)); +#1015 = LINE('',#1016,#1017); +#1016 = CARTESIAN_POINT('',(2.2,-21.92,14.)); +#1017 = VECTOR('',#1018,1.); +#1018 = DIRECTION('',(0.,0.,1.)); +#1019 = ORIENTED_EDGE('',*,*,#1020,.T.); +#1020 = EDGE_CURVE('',#1011,#1021,#1023,.T.); +#1021 = VERTEX_POINT('',#1022); +#1022 = CARTESIAN_POINT('',(2.2,-20.92,14.)); +#1023 = LINE('',#1024,#1025); +#1024 = CARTESIAN_POINT('',(2.2,-21.92,14.)); +#1025 = VECTOR('',#1026,1.); +#1026 = DIRECTION('',(-0.,1.,0.)); +#1027 = ORIENTED_EDGE('',*,*,#1028,.T.); +#1028 = EDGE_CURVE('',#1021,#1029,#1031,.T.); +#1029 = VERTEX_POINT('',#1030); +#1030 = CARTESIAN_POINT('',(2.2,-20.92,22.)); +#1031 = LINE('',#1032,#1033); +#1032 = CARTESIAN_POINT('',(2.2,-20.92,14.)); +#1033 = VECTOR('',#1034,1.); +#1034 = DIRECTION('',(0.,0.,1.)); +#1035 = ORIENTED_EDGE('',*,*,#1036,.F.); +#1036 = EDGE_CURVE('',#1013,#1029,#1037,.T.); +#1037 = LINE('',#1038,#1039); +#1038 = CARTESIAN_POINT('',(2.2,-21.92,22.)); +#1039 = VECTOR('',#1040,1.); +#1040 = DIRECTION('',(-0.,1.,0.)); +#1041 = PLANE('',#1042); +#1042 = AXIS2_PLACEMENT_3D('',#1043,#1044,#1045); +#1043 = CARTESIAN_POINT('',(2.2,-21.92,14.)); +#1044 = DIRECTION('',(1.,0.,-0.)); +#1045 = DIRECTION('',(0.,0.,1.)); +#1046 = ADVANCED_FACE('',(#1047),#1063,.F.); +#1047 = FACE_BOUND('',#1048,.F.); +#1048 = EDGE_LOOP('',(#1049,#1055,#1056,#1062)); +#1049 = ORIENTED_EDGE('',*,*,#1050,.F.); +#1050 = EDGE_CURVE('',#971,#1011,#1051,.T.); +#1051 = LINE('',#1052,#1053); +#1052 = CARTESIAN_POINT('',(-2.2,-21.92,14.)); +#1053 = VECTOR('',#1054,1.); +#1054 = DIRECTION('',(1.,0.,-0.)); +#1055 = ORIENTED_EDGE('',*,*,#970,.T.); +#1056 = ORIENTED_EDGE('',*,*,#1057,.T.); +#1057 = EDGE_CURVE('',#973,#1013,#1058,.T.); +#1058 = LINE('',#1059,#1060); +#1059 = CARTESIAN_POINT('',(-2.2,-21.92,22.)); +#1060 = VECTOR('',#1061,1.); +#1061 = DIRECTION('',(1.,0.,-0.)); +#1062 = ORIENTED_EDGE('',*,*,#1010,.F.); +#1063 = PLANE('',#1064); +#1064 = AXIS2_PLACEMENT_3D('',#1065,#1066,#1067); +#1065 = CARTESIAN_POINT('',(-2.2,-21.92,14.)); +#1066 = DIRECTION('',(-0.,1.,0.)); +#1067 = DIRECTION('',(0.,0.,1.)); +#1068 = ADVANCED_FACE('',(#1069),#1085,.T.); +#1069 = FACE_BOUND('',#1070,.T.); +#1070 = EDGE_LOOP('',(#1071,#1077,#1078,#1084)); +#1071 = ORIENTED_EDGE('',*,*,#1072,.F.); +#1072 = EDGE_CURVE('',#981,#1021,#1073,.T.); +#1073 = LINE('',#1074,#1075); +#1074 = CARTESIAN_POINT('',(-2.2,-20.92,14.)); +#1075 = VECTOR('',#1076,1.); +#1076 = DIRECTION('',(1.,0.,-0.)); +#1077 = ORIENTED_EDGE('',*,*,#988,.T.); +#1078 = ORIENTED_EDGE('',*,*,#1079,.T.); +#1079 = EDGE_CURVE('',#989,#1029,#1080,.T.); +#1080 = LINE('',#1081,#1082); +#1081 = CARTESIAN_POINT('',(-2.2,-20.92,22.)); +#1082 = VECTOR('',#1083,1.); +#1083 = DIRECTION('',(1.,0.,-0.)); +#1084 = ORIENTED_EDGE('',*,*,#1028,.F.); +#1085 = PLANE('',#1086); +#1086 = AXIS2_PLACEMENT_3D('',#1087,#1088,#1089); +#1087 = CARTESIAN_POINT('',(-2.2,-20.92,14.)); +#1088 = DIRECTION('',(-0.,1.,0.)); +#1089 = DIRECTION('',(0.,0.,1.)); +#1090 = ADVANCED_FACE('',(#1091),#1097,.F.); +#1091 = FACE_BOUND('',#1092,.F.); +#1092 = EDGE_LOOP('',(#1093,#1094,#1095,#1096)); +#1093 = ORIENTED_EDGE('',*,*,#980,.F.); +#1094 = ORIENTED_EDGE('',*,*,#1050,.T.); +#1095 = ORIENTED_EDGE('',*,*,#1020,.T.); +#1096 = ORIENTED_EDGE('',*,*,#1072,.F.); +#1097 = PLANE('',#1098); +#1098 = AXIS2_PLACEMENT_3D('',#1099,#1100,#1101); +#1099 = CARTESIAN_POINT('',(-2.2,-21.92,14.)); +#1100 = DIRECTION('',(0.,0.,1.)); +#1101 = DIRECTION('',(1.,0.,-0.)); +#1102 = ADVANCED_FACE('',(#1103),#1109,.T.); +#1103 = FACE_BOUND('',#1104,.T.); +#1104 = EDGE_LOOP('',(#1105,#1106,#1107,#1108)); +#1105 = ORIENTED_EDGE('',*,*,#996,.F.); +#1106 = ORIENTED_EDGE('',*,*,#1057,.T.); +#1107 = ORIENTED_EDGE('',*,*,#1036,.T.); +#1108 = ORIENTED_EDGE('',*,*,#1079,.F.); +#1109 = PLANE('',#1110); +#1110 = AXIS2_PLACEMENT_3D('',#1111,#1112,#1113); +#1111 = CARTESIAN_POINT('',(-2.2,-21.92,22.)); +#1112 = DIRECTION('',(0.,0.,1.)); +#1113 = DIRECTION('',(1.,0.,-0.)); +#1114 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1118)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#1115,#1116,#1117)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#1115 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#1116 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#1117 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#1118 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#1115, + 'distance_accuracy_value','confusion accuracy'); +#1119 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1120,#1122); +#1120 = ( REPRESENTATION_RELATIONSHIP('','',#963,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1121) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#1121 = ITEM_DEFINED_TRANSFORMATION('','',#11,#27); +#1122 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #1123); +#1123 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('4','TerminalSlice_GreenWindow', + '',#5,#958,$); +#1124 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#960)); +#1125 = SHAPE_DEFINITION_REPRESENTATION(#1126,#1132); +#1126 = PRODUCT_DEFINITION_SHAPE('','',#1127); +#1127 = PRODUCT_DEFINITION('design','',#1128,#1131); +#1128 = PRODUCT_DEFINITION_FORMATION('','',#1129); +#1129 = PRODUCT('TerminalSlice_DINRailTopLip', + 'TerminalSlice_DINRailTopLip','',(#1130)); +#1130 = PRODUCT_CONTEXT('',#2,'mechanical'); +#1131 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#1132 = ADVANCED_BREP_SHAPE_REPRESENTATION('',(#11,#1133),#1283); +#1133 = MANIFOLD_SOLID_BREP('',#1134); +#1134 = CLOSED_SHELL('',(#1135,#1175,#1215,#1237,#1259,#1271)); +#1135 = ADVANCED_FACE('',(#1136),#1170,.F.); +#1136 = FACE_BOUND('',#1137,.F.); +#1137 = EDGE_LOOP('',(#1138,#1148,#1156,#1164)); +#1138 = ORIENTED_EDGE('',*,*,#1139,.F.); +#1139 = EDGE_CURVE('',#1140,#1142,#1144,.T.); +#1140 = VERTEX_POINT('',#1141); +#1141 = CARTESIAN_POINT('',(-2.6,19.2,23.)); +#1142 = VERTEX_POINT('',#1143); +#1143 = CARTESIAN_POINT('',(-2.6,19.2,25.)); +#1144 = LINE('',#1145,#1146); +#1145 = CARTESIAN_POINT('',(-2.6,19.2,23.)); +#1146 = VECTOR('',#1147,1.); +#1147 = DIRECTION('',(0.,0.,1.)); +#1148 = ORIENTED_EDGE('',*,*,#1149,.T.); +#1149 = EDGE_CURVE('',#1140,#1150,#1152,.T.); +#1150 = VERTEX_POINT('',#1151); +#1151 = CARTESIAN_POINT('',(-2.6,21.2,23.)); +#1152 = LINE('',#1153,#1154); +#1153 = CARTESIAN_POINT('',(-2.6,19.2,23.)); +#1154 = VECTOR('',#1155,1.); +#1155 = DIRECTION('',(-0.,1.,0.)); +#1156 = ORIENTED_EDGE('',*,*,#1157,.T.); +#1157 = EDGE_CURVE('',#1150,#1158,#1160,.T.); +#1158 = VERTEX_POINT('',#1159); +#1159 = CARTESIAN_POINT('',(-2.6,21.2,25.)); +#1160 = LINE('',#1161,#1162); +#1161 = CARTESIAN_POINT('',(-2.6,21.2,23.)); +#1162 = VECTOR('',#1163,1.); +#1163 = DIRECTION('',(0.,0.,1.)); +#1164 = ORIENTED_EDGE('',*,*,#1165,.F.); +#1165 = EDGE_CURVE('',#1142,#1158,#1166,.T.); +#1166 = LINE('',#1167,#1168); +#1167 = CARTESIAN_POINT('',(-2.6,19.2,25.)); +#1168 = VECTOR('',#1169,1.); +#1169 = DIRECTION('',(-0.,1.,0.)); +#1170 = PLANE('',#1171); +#1171 = AXIS2_PLACEMENT_3D('',#1172,#1173,#1174); +#1172 = CARTESIAN_POINT('',(-2.6,19.2,23.)); +#1173 = DIRECTION('',(1.,0.,-0.)); +#1174 = DIRECTION('',(0.,0.,1.)); +#1175 = ADVANCED_FACE('',(#1176),#1210,.T.); +#1176 = FACE_BOUND('',#1177,.T.); +#1177 = EDGE_LOOP('',(#1178,#1188,#1196,#1204)); +#1178 = ORIENTED_EDGE('',*,*,#1179,.F.); +#1179 = EDGE_CURVE('',#1180,#1182,#1184,.T.); +#1180 = VERTEX_POINT('',#1181); +#1181 = CARTESIAN_POINT('',(2.6,19.2,23.)); +#1182 = VERTEX_POINT('',#1183); +#1183 = CARTESIAN_POINT('',(2.6,19.2,25.)); +#1184 = LINE('',#1185,#1186); +#1185 = CARTESIAN_POINT('',(2.6,19.2,23.)); +#1186 = VECTOR('',#1187,1.); +#1187 = DIRECTION('',(0.,0.,1.)); +#1188 = ORIENTED_EDGE('',*,*,#1189,.T.); +#1189 = EDGE_CURVE('',#1180,#1190,#1192,.T.); +#1190 = VERTEX_POINT('',#1191); +#1191 = CARTESIAN_POINT('',(2.6,21.2,23.)); +#1192 = LINE('',#1193,#1194); +#1193 = CARTESIAN_POINT('',(2.6,19.2,23.)); +#1194 = VECTOR('',#1195,1.); +#1195 = DIRECTION('',(-0.,1.,0.)); +#1196 = ORIENTED_EDGE('',*,*,#1197,.T.); +#1197 = EDGE_CURVE('',#1190,#1198,#1200,.T.); +#1198 = VERTEX_POINT('',#1199); +#1199 = CARTESIAN_POINT('',(2.6,21.2,25.)); +#1200 = LINE('',#1201,#1202); +#1201 = CARTESIAN_POINT('',(2.6,21.2,23.)); +#1202 = VECTOR('',#1203,1.); +#1203 = DIRECTION('',(0.,0.,1.)); +#1204 = ORIENTED_EDGE('',*,*,#1205,.F.); +#1205 = EDGE_CURVE('',#1182,#1198,#1206,.T.); +#1206 = LINE('',#1207,#1208); +#1207 = CARTESIAN_POINT('',(2.6,19.2,25.)); +#1208 = VECTOR('',#1209,1.); +#1209 = DIRECTION('',(-0.,1.,0.)); +#1210 = PLANE('',#1211); +#1211 = AXIS2_PLACEMENT_3D('',#1212,#1213,#1214); +#1212 = CARTESIAN_POINT('',(2.6,19.2,23.)); +#1213 = DIRECTION('',(1.,0.,-0.)); +#1214 = DIRECTION('',(0.,0.,1.)); +#1215 = ADVANCED_FACE('',(#1216),#1232,.F.); +#1216 = FACE_BOUND('',#1217,.F.); +#1217 = EDGE_LOOP('',(#1218,#1224,#1225,#1231)); +#1218 = ORIENTED_EDGE('',*,*,#1219,.F.); +#1219 = EDGE_CURVE('',#1140,#1180,#1220,.T.); +#1220 = LINE('',#1221,#1222); +#1221 = CARTESIAN_POINT('',(-2.6,19.2,23.)); +#1222 = VECTOR('',#1223,1.); +#1223 = DIRECTION('',(1.,0.,-0.)); +#1224 = ORIENTED_EDGE('',*,*,#1139,.T.); +#1225 = ORIENTED_EDGE('',*,*,#1226,.T.); +#1226 = EDGE_CURVE('',#1142,#1182,#1227,.T.); +#1227 = LINE('',#1228,#1229); +#1228 = CARTESIAN_POINT('',(-2.6,19.2,25.)); +#1229 = VECTOR('',#1230,1.); +#1230 = DIRECTION('',(1.,0.,-0.)); +#1231 = ORIENTED_EDGE('',*,*,#1179,.F.); +#1232 = PLANE('',#1233); +#1233 = AXIS2_PLACEMENT_3D('',#1234,#1235,#1236); +#1234 = CARTESIAN_POINT('',(-2.6,19.2,23.)); +#1235 = DIRECTION('',(-0.,1.,0.)); +#1236 = DIRECTION('',(0.,0.,1.)); +#1237 = ADVANCED_FACE('',(#1238),#1254,.T.); +#1238 = FACE_BOUND('',#1239,.T.); +#1239 = EDGE_LOOP('',(#1240,#1246,#1247,#1253)); +#1240 = ORIENTED_EDGE('',*,*,#1241,.F.); +#1241 = EDGE_CURVE('',#1150,#1190,#1242,.T.); +#1242 = LINE('',#1243,#1244); +#1243 = CARTESIAN_POINT('',(-2.6,21.2,23.)); +#1244 = VECTOR('',#1245,1.); +#1245 = DIRECTION('',(1.,0.,-0.)); +#1246 = ORIENTED_EDGE('',*,*,#1157,.T.); +#1247 = ORIENTED_EDGE('',*,*,#1248,.T.); +#1248 = EDGE_CURVE('',#1158,#1198,#1249,.T.); +#1249 = LINE('',#1250,#1251); +#1250 = CARTESIAN_POINT('',(-2.6,21.2,25.)); +#1251 = VECTOR('',#1252,1.); +#1252 = DIRECTION('',(1.,0.,-0.)); +#1253 = ORIENTED_EDGE('',*,*,#1197,.F.); +#1254 = PLANE('',#1255); +#1255 = AXIS2_PLACEMENT_3D('',#1256,#1257,#1258); +#1256 = CARTESIAN_POINT('',(-2.6,21.2,23.)); +#1257 = DIRECTION('',(-0.,1.,0.)); +#1258 = DIRECTION('',(0.,0.,1.)); +#1259 = ADVANCED_FACE('',(#1260),#1266,.F.); +#1260 = FACE_BOUND('',#1261,.F.); +#1261 = EDGE_LOOP('',(#1262,#1263,#1264,#1265)); +#1262 = ORIENTED_EDGE('',*,*,#1149,.F.); +#1263 = ORIENTED_EDGE('',*,*,#1219,.T.); +#1264 = ORIENTED_EDGE('',*,*,#1189,.T.); +#1265 = ORIENTED_EDGE('',*,*,#1241,.F.); +#1266 = PLANE('',#1267); +#1267 = AXIS2_PLACEMENT_3D('',#1268,#1269,#1270); +#1268 = CARTESIAN_POINT('',(-2.6,19.2,23.)); +#1269 = DIRECTION('',(0.,0.,1.)); +#1270 = DIRECTION('',(1.,0.,-0.)); +#1271 = ADVANCED_FACE('',(#1272),#1278,.T.); +#1272 = FACE_BOUND('',#1273,.T.); +#1273 = EDGE_LOOP('',(#1274,#1275,#1276,#1277)); +#1274 = ORIENTED_EDGE('',*,*,#1165,.F.); +#1275 = ORIENTED_EDGE('',*,*,#1226,.T.); +#1276 = ORIENTED_EDGE('',*,*,#1205,.T.); +#1277 = ORIENTED_EDGE('',*,*,#1248,.F.); +#1278 = PLANE('',#1279); +#1279 = AXIS2_PLACEMENT_3D('',#1280,#1281,#1282); +#1280 = CARTESIAN_POINT('',(-2.6,19.2,25.)); +#1281 = DIRECTION('',(0.,0.,1.)); +#1282 = DIRECTION('',(1.,0.,-0.)); +#1283 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1287)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#1284,#1285,#1286)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#1284 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#1285 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#1286 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#1287 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#1284, + 'distance_accuracy_value','confusion accuracy'); +#1288 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1289,#1291); +#1289 = ( REPRESENTATION_RELATIONSHIP('','',#1132,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1290) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#1290 = ITEM_DEFINED_TRANSFORMATION('','',#11,#31); +#1291 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #1292); +#1292 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('5','TerminalSlice_DINRailTopLip' + ,'',#5,#1127,$); +#1293 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#1129)); +#1294 = SHAPE_DEFINITION_REPRESENTATION(#1295,#1301); +#1295 = PRODUCT_DEFINITION_SHAPE('','',#1296); +#1296 = PRODUCT_DEFINITION('design','',#1297,#1300); +#1297 = PRODUCT_DEFINITION_FORMATION('','',#1298); +#1298 = PRODUCT('TerminalSlice_DINRailBottomLip', + 'TerminalSlice_DINRailBottomLip','',(#1299)); +#1299 = PRODUCT_CONTEXT('',#2,'mechanical'); +#1300 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#1301 = ADVANCED_BREP_SHAPE_REPRESENTATION('',(#11,#1302),#1452); +#1302 = MANIFOLD_SOLID_BREP('',#1303); +#1303 = CLOSED_SHELL('',(#1304,#1344,#1384,#1406,#1428,#1440)); +#1304 = ADVANCED_FACE('',(#1305),#1339,.F.); +#1305 = FACE_BOUND('',#1306,.F.); +#1306 = EDGE_LOOP('',(#1307,#1317,#1325,#1333)); +#1307 = ORIENTED_EDGE('',*,*,#1308,.F.); +#1308 = EDGE_CURVE('',#1309,#1311,#1313,.T.); +#1309 = VERTEX_POINT('',#1310); +#1310 = CARTESIAN_POINT('',(-2.6,19.2,10.)); +#1311 = VERTEX_POINT('',#1312); +#1312 = CARTESIAN_POINT('',(-2.6,19.2,12.)); +#1313 = LINE('',#1314,#1315); +#1314 = CARTESIAN_POINT('',(-2.6,19.2,10.)); +#1315 = VECTOR('',#1316,1.); +#1316 = DIRECTION('',(0.,0.,1.)); +#1317 = ORIENTED_EDGE('',*,*,#1318,.T.); +#1318 = EDGE_CURVE('',#1309,#1319,#1321,.T.); +#1319 = VERTEX_POINT('',#1320); +#1320 = CARTESIAN_POINT('',(-2.6,21.2,10.)); +#1321 = LINE('',#1322,#1323); +#1322 = CARTESIAN_POINT('',(-2.6,19.2,10.)); +#1323 = VECTOR('',#1324,1.); +#1324 = DIRECTION('',(-0.,1.,0.)); +#1325 = ORIENTED_EDGE('',*,*,#1326,.T.); +#1326 = EDGE_CURVE('',#1319,#1327,#1329,.T.); +#1327 = VERTEX_POINT('',#1328); +#1328 = CARTESIAN_POINT('',(-2.6,21.2,12.)); +#1329 = LINE('',#1330,#1331); +#1330 = CARTESIAN_POINT('',(-2.6,21.2,10.)); +#1331 = VECTOR('',#1332,1.); +#1332 = DIRECTION('',(0.,0.,1.)); +#1333 = ORIENTED_EDGE('',*,*,#1334,.F.); +#1334 = EDGE_CURVE('',#1311,#1327,#1335,.T.); +#1335 = LINE('',#1336,#1337); +#1336 = CARTESIAN_POINT('',(-2.6,19.2,12.)); +#1337 = VECTOR('',#1338,1.); +#1338 = DIRECTION('',(-0.,1.,0.)); +#1339 = PLANE('',#1340); +#1340 = AXIS2_PLACEMENT_3D('',#1341,#1342,#1343); +#1341 = CARTESIAN_POINT('',(-2.6,19.2,10.)); +#1342 = DIRECTION('',(1.,0.,-0.)); +#1343 = DIRECTION('',(0.,0.,1.)); +#1344 = ADVANCED_FACE('',(#1345),#1379,.T.); +#1345 = FACE_BOUND('',#1346,.T.); +#1346 = EDGE_LOOP('',(#1347,#1357,#1365,#1373)); +#1347 = ORIENTED_EDGE('',*,*,#1348,.F.); +#1348 = EDGE_CURVE('',#1349,#1351,#1353,.T.); +#1349 = VERTEX_POINT('',#1350); +#1350 = CARTESIAN_POINT('',(2.6,19.2,10.)); +#1351 = VERTEX_POINT('',#1352); +#1352 = CARTESIAN_POINT('',(2.6,19.2,12.)); +#1353 = LINE('',#1354,#1355); +#1354 = CARTESIAN_POINT('',(2.6,19.2,10.)); +#1355 = VECTOR('',#1356,1.); +#1356 = DIRECTION('',(0.,0.,1.)); +#1357 = ORIENTED_EDGE('',*,*,#1358,.T.); +#1358 = EDGE_CURVE('',#1349,#1359,#1361,.T.); +#1359 = VERTEX_POINT('',#1360); +#1360 = CARTESIAN_POINT('',(2.6,21.2,10.)); +#1361 = LINE('',#1362,#1363); +#1362 = CARTESIAN_POINT('',(2.6,19.2,10.)); +#1363 = VECTOR('',#1364,1.); +#1364 = DIRECTION('',(-0.,1.,0.)); +#1365 = ORIENTED_EDGE('',*,*,#1366,.T.); +#1366 = EDGE_CURVE('',#1359,#1367,#1369,.T.); +#1367 = VERTEX_POINT('',#1368); +#1368 = CARTESIAN_POINT('',(2.6,21.2,12.)); +#1369 = LINE('',#1370,#1371); +#1370 = CARTESIAN_POINT('',(2.6,21.2,10.)); +#1371 = VECTOR('',#1372,1.); +#1372 = DIRECTION('',(0.,0.,1.)); +#1373 = ORIENTED_EDGE('',*,*,#1374,.F.); +#1374 = EDGE_CURVE('',#1351,#1367,#1375,.T.); +#1375 = LINE('',#1376,#1377); +#1376 = CARTESIAN_POINT('',(2.6,19.2,12.)); +#1377 = VECTOR('',#1378,1.); +#1378 = DIRECTION('',(-0.,1.,0.)); +#1379 = PLANE('',#1380); +#1380 = AXIS2_PLACEMENT_3D('',#1381,#1382,#1383); +#1381 = CARTESIAN_POINT('',(2.6,19.2,10.)); +#1382 = DIRECTION('',(1.,0.,-0.)); +#1383 = DIRECTION('',(0.,0.,1.)); +#1384 = ADVANCED_FACE('',(#1385),#1401,.F.); +#1385 = FACE_BOUND('',#1386,.F.); +#1386 = EDGE_LOOP('',(#1387,#1393,#1394,#1400)); +#1387 = ORIENTED_EDGE('',*,*,#1388,.F.); +#1388 = EDGE_CURVE('',#1309,#1349,#1389,.T.); +#1389 = LINE('',#1390,#1391); +#1390 = CARTESIAN_POINT('',(-2.6,19.2,10.)); +#1391 = VECTOR('',#1392,1.); +#1392 = DIRECTION('',(1.,0.,-0.)); +#1393 = ORIENTED_EDGE('',*,*,#1308,.T.); +#1394 = ORIENTED_EDGE('',*,*,#1395,.T.); +#1395 = EDGE_CURVE('',#1311,#1351,#1396,.T.); +#1396 = LINE('',#1397,#1398); +#1397 = CARTESIAN_POINT('',(-2.6,19.2,12.)); +#1398 = VECTOR('',#1399,1.); +#1399 = DIRECTION('',(1.,0.,-0.)); +#1400 = ORIENTED_EDGE('',*,*,#1348,.F.); +#1401 = PLANE('',#1402); +#1402 = AXIS2_PLACEMENT_3D('',#1403,#1404,#1405); +#1403 = CARTESIAN_POINT('',(-2.6,19.2,10.)); +#1404 = DIRECTION('',(-0.,1.,0.)); +#1405 = DIRECTION('',(0.,0.,1.)); +#1406 = ADVANCED_FACE('',(#1407),#1423,.T.); +#1407 = FACE_BOUND('',#1408,.T.); +#1408 = EDGE_LOOP('',(#1409,#1415,#1416,#1422)); +#1409 = ORIENTED_EDGE('',*,*,#1410,.F.); +#1410 = EDGE_CURVE('',#1319,#1359,#1411,.T.); +#1411 = LINE('',#1412,#1413); +#1412 = CARTESIAN_POINT('',(-2.6,21.2,10.)); +#1413 = VECTOR('',#1414,1.); +#1414 = DIRECTION('',(1.,0.,-0.)); +#1415 = ORIENTED_EDGE('',*,*,#1326,.T.); +#1416 = ORIENTED_EDGE('',*,*,#1417,.T.); +#1417 = EDGE_CURVE('',#1327,#1367,#1418,.T.); +#1418 = LINE('',#1419,#1420); +#1419 = CARTESIAN_POINT('',(-2.6,21.2,12.)); +#1420 = VECTOR('',#1421,1.); +#1421 = DIRECTION('',(1.,0.,-0.)); +#1422 = ORIENTED_EDGE('',*,*,#1366,.F.); +#1423 = PLANE('',#1424); +#1424 = AXIS2_PLACEMENT_3D('',#1425,#1426,#1427); +#1425 = CARTESIAN_POINT('',(-2.6,21.2,10.)); +#1426 = DIRECTION('',(-0.,1.,0.)); +#1427 = DIRECTION('',(0.,0.,1.)); +#1428 = ADVANCED_FACE('',(#1429),#1435,.F.); +#1429 = FACE_BOUND('',#1430,.F.); +#1430 = EDGE_LOOP('',(#1431,#1432,#1433,#1434)); +#1431 = ORIENTED_EDGE('',*,*,#1318,.F.); +#1432 = ORIENTED_EDGE('',*,*,#1388,.T.); +#1433 = ORIENTED_EDGE('',*,*,#1358,.T.); +#1434 = ORIENTED_EDGE('',*,*,#1410,.F.); +#1435 = PLANE('',#1436); +#1436 = AXIS2_PLACEMENT_3D('',#1437,#1438,#1439); +#1437 = CARTESIAN_POINT('',(-2.6,19.2,10.)); +#1438 = DIRECTION('',(0.,0.,1.)); +#1439 = DIRECTION('',(1.,0.,-0.)); +#1440 = ADVANCED_FACE('',(#1441),#1447,.T.); +#1441 = FACE_BOUND('',#1442,.T.); +#1442 = EDGE_LOOP('',(#1443,#1444,#1445,#1446)); +#1443 = ORIENTED_EDGE('',*,*,#1334,.F.); +#1444 = ORIENTED_EDGE('',*,*,#1395,.T.); +#1445 = ORIENTED_EDGE('',*,*,#1374,.T.); +#1446 = ORIENTED_EDGE('',*,*,#1417,.F.); +#1447 = PLANE('',#1448); +#1448 = AXIS2_PLACEMENT_3D('',#1449,#1450,#1451); +#1449 = CARTESIAN_POINT('',(-2.6,19.2,12.)); +#1450 = DIRECTION('',(0.,0.,1.)); +#1451 = DIRECTION('',(1.,0.,-0.)); +#1452 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1456)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#1453,#1454,#1455)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#1453 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#1454 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#1455 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#1456 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#1453, + 'distance_accuracy_value','confusion accuracy'); +#1457 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1458,#1460); +#1458 = ( REPRESENTATION_RELATIONSHIP('','',#1301,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1459) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#1459 = ITEM_DEFINED_TRANSFORMATION('','',#11,#35); +#1460 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #1461); +#1461 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('6', + 'TerminalSlice_DINRailBottomLip','',#5,#1296,$); +#1462 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#1298)); +#1463 = SHAPE_DEFINITION_REPRESENTATION(#1464,#1470); +#1464 = PRODUCT_DEFINITION_SHAPE('','',#1465); +#1465 = PRODUCT_DEFINITION('design','',#1466,#1469); +#1466 = PRODUCT_DEFINITION_FORMATION('','',#1467); +#1467 = PRODUCT('TerminalSlice_TopScrew','TerminalSlice_TopScrew','',( + #1468)); +#1468 = PRODUCT_CONTEXT('',#2,'mechanical'); +#1469 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#1470 = ADVANCED_BREP_SHAPE_REPRESENTATION('',(#11,#1471),#1524); +#1471 = MANIFOLD_SOLID_BREP('',#1472); +#1472 = CLOSED_SHELL('',(#1473,#1506,#1515)); +#1473 = ADVANCED_FACE('',(#1474),#1501,.T.); +#1474 = FACE_BOUND('',#1475,.T.); +#1475 = EDGE_LOOP('',(#1476,#1485,#1493,#1500)); +#1476 = ORIENTED_EDGE('',*,*,#1477,.F.); +#1477 = EDGE_CURVE('',#1478,#1478,#1480,.T.); +#1478 = VERTEX_POINT('',#1479); +#1479 = CARTESIAN_POINT('',(-2.253350110431E-16,-22.65,28.58)); +#1480 = CIRCLE('',#1481,0.92); +#1481 = AXIS2_PLACEMENT_3D('',#1482,#1483,#1484); +#1482 = CARTESIAN_POINT('',(0.,-22.65,29.5)); +#1483 = DIRECTION('',(0.,-1.,0.)); +#1484 = DIRECTION('',(0.,-0.,-1.)); +#1485 = ORIENTED_EDGE('',*,*,#1486,.F.); +#1486 = EDGE_CURVE('',#1487,#1478,#1489,.T.); +#1487 = VERTEX_POINT('',#1488); +#1488 = CARTESIAN_POINT('',(-2.253350110431E-16,-21.95,28.58)); +#1489 = LINE('',#1490,#1491); +#1490 = CARTESIAN_POINT('',(-2.253350110431E-16,-21.95,28.58)); +#1491 = VECTOR('',#1492,1.); +#1492 = DIRECTION('',(0.,-1.,0.)); +#1493 = ORIENTED_EDGE('',*,*,#1494,.T.); +#1494 = EDGE_CURVE('',#1487,#1487,#1495,.T.); +#1495 = CIRCLE('',#1496,0.92); +#1496 = AXIS2_PLACEMENT_3D('',#1497,#1498,#1499); +#1497 = CARTESIAN_POINT('',(0.,-21.95,29.5)); +#1498 = DIRECTION('',(0.,-1.,0.)); +#1499 = DIRECTION('',(0.,-0.,-1.)); +#1500 = ORIENTED_EDGE('',*,*,#1486,.T.); +#1501 = CYLINDRICAL_SURFACE('',#1502,0.92); +#1502 = AXIS2_PLACEMENT_3D('',#1503,#1504,#1505); +#1503 = CARTESIAN_POINT('',(0.,-21.95,29.5)); +#1504 = DIRECTION('',(0.,-1.,0.)); +#1505 = DIRECTION('',(0.,-0.,-1.)); +#1506 = ADVANCED_FACE('',(#1507),#1510,.T.); +#1507 = FACE_BOUND('',#1508,.T.); +#1508 = EDGE_LOOP('',(#1509)); +#1509 = ORIENTED_EDGE('',*,*,#1477,.T.); +#1510 = PLANE('',#1511); +#1511 = AXIS2_PLACEMENT_3D('',#1512,#1513,#1514); +#1512 = CARTESIAN_POINT('',(0.,-22.65,29.5)); +#1513 = DIRECTION('',(0.,-1.,0.)); +#1514 = DIRECTION('',(0.,-0.,-1.)); +#1515 = ADVANCED_FACE('',(#1516),#1519,.F.); +#1516 = FACE_BOUND('',#1517,.T.); +#1517 = EDGE_LOOP('',(#1518)); +#1518 = ORIENTED_EDGE('',*,*,#1494,.F.); +#1519 = PLANE('',#1520); +#1520 = AXIS2_PLACEMENT_3D('',#1521,#1522,#1523); +#1521 = CARTESIAN_POINT('',(0.,-21.95,29.5)); +#1522 = DIRECTION('',(0.,-1.,0.)); +#1523 = DIRECTION('',(0.,-0.,-1.)); +#1524 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1528)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#1525,#1526,#1527)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#1525 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#1526 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#1527 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#1528 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#1525, + 'distance_accuracy_value','confusion accuracy'); +#1529 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1530,#1532); +#1530 = ( REPRESENTATION_RELATIONSHIP('','',#1470,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1531) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#1531 = ITEM_DEFINED_TRANSFORMATION('','',#11,#39); +#1532 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #1533); +#1533 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('7','TerminalSlice_TopScrew','', + #5,#1465,$); +#1534 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#1467)); +#1535 = SHAPE_DEFINITION_REPRESENTATION(#1536,#1542); +#1536 = PRODUCT_DEFINITION_SHAPE('','',#1537); +#1537 = PRODUCT_DEFINITION('design','',#1538,#1541); +#1538 = PRODUCT_DEFINITION_FORMATION('','',#1539); +#1539 = PRODUCT('TerminalSlice_BottomScrew','TerminalSlice_BottomScrew', + '',(#1540)); +#1540 = PRODUCT_CONTEXT('',#2,'mechanical'); +#1541 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#1542 = ADVANCED_BREP_SHAPE_REPRESENTATION('',(#11,#1543),#1596); +#1543 = MANIFOLD_SOLID_BREP('',#1544); +#1544 = CLOSED_SHELL('',(#1545,#1578,#1587)); +#1545 = ADVANCED_FACE('',(#1546),#1573,.T.); +#1546 = FACE_BOUND('',#1547,.T.); +#1547 = EDGE_LOOP('',(#1548,#1557,#1565,#1572)); +#1548 = ORIENTED_EDGE('',*,*,#1549,.F.); +#1549 = EDGE_CURVE('',#1550,#1550,#1552,.T.); +#1550 = VERTEX_POINT('',#1551); +#1551 = CARTESIAN_POINT('',(-2.253350110431E-16,-22.65,5.58)); +#1552 = CIRCLE('',#1553,0.92); +#1553 = AXIS2_PLACEMENT_3D('',#1554,#1555,#1556); +#1554 = CARTESIAN_POINT('',(0.,-22.65,6.5)); +#1555 = DIRECTION('',(0.,-1.,0.)); +#1556 = DIRECTION('',(0.,-0.,-1.)); +#1557 = ORIENTED_EDGE('',*,*,#1558,.F.); +#1558 = EDGE_CURVE('',#1559,#1550,#1561,.T.); +#1559 = VERTEX_POINT('',#1560); +#1560 = CARTESIAN_POINT('',(-2.253350110431E-16,-21.95,5.58)); +#1561 = LINE('',#1562,#1563); +#1562 = CARTESIAN_POINT('',(-2.253350110431E-16,-21.95,5.58)); +#1563 = VECTOR('',#1564,1.); +#1564 = DIRECTION('',(0.,-1.,0.)); +#1565 = ORIENTED_EDGE('',*,*,#1566,.T.); +#1566 = EDGE_CURVE('',#1559,#1559,#1567,.T.); +#1567 = CIRCLE('',#1568,0.92); +#1568 = AXIS2_PLACEMENT_3D('',#1569,#1570,#1571); +#1569 = CARTESIAN_POINT('',(0.,-21.95,6.5)); +#1570 = DIRECTION('',(0.,-1.,0.)); +#1571 = DIRECTION('',(0.,-0.,-1.)); +#1572 = ORIENTED_EDGE('',*,*,#1558,.T.); +#1573 = CYLINDRICAL_SURFACE('',#1574,0.92); +#1574 = AXIS2_PLACEMENT_3D('',#1575,#1576,#1577); +#1575 = CARTESIAN_POINT('',(0.,-21.95,6.5)); +#1576 = DIRECTION('',(0.,-1.,0.)); +#1577 = DIRECTION('',(0.,-0.,-1.)); +#1578 = ADVANCED_FACE('',(#1579),#1582,.T.); +#1579 = FACE_BOUND('',#1580,.T.); +#1580 = EDGE_LOOP('',(#1581)); +#1581 = ORIENTED_EDGE('',*,*,#1549,.T.); +#1582 = PLANE('',#1583); +#1583 = AXIS2_PLACEMENT_3D('',#1584,#1585,#1586); +#1584 = CARTESIAN_POINT('',(0.,-22.65,6.5)); +#1585 = DIRECTION('',(0.,-1.,0.)); +#1586 = DIRECTION('',(0.,-0.,-1.)); +#1587 = ADVANCED_FACE('',(#1588),#1591,.F.); +#1588 = FACE_BOUND('',#1589,.T.); +#1589 = EDGE_LOOP('',(#1590)); +#1590 = ORIENTED_EDGE('',*,*,#1566,.F.); +#1591 = PLANE('',#1592); +#1592 = AXIS2_PLACEMENT_3D('',#1593,#1594,#1595); +#1593 = CARTESIAN_POINT('',(0.,-21.95,6.5)); +#1594 = DIRECTION('',(0.,-1.,0.)); +#1595 = DIRECTION('',(0.,-0.,-1.)); +#1596 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1600)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#1597,#1598,#1599)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#1597 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#1598 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#1599 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#1600 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#1597, + 'distance_accuracy_value','confusion accuracy'); +#1601 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1602,#1604); +#1602 = ( REPRESENTATION_RELATIONSHIP('','',#1542,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1603) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#1603 = ITEM_DEFINED_TRANSFORMATION('','',#11,#43); +#1604 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #1605); +#1605 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('8','TerminalSlice_BottomScrew', + '',#5,#1537,$); +#1606 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#1539)); +ENDSEC; +END-ISO-10303-21; diff --git a/data/examples/qet_terminal_block/qet_terminal_slice_report.json b/data/examples/qet_terminal_block/qet_terminal_slice_report.json new file mode 100644 index 0000000..f7d010b --- /dev/null +++ b/data/examples/qet_terminal_block/qet_terminal_slice_report.json @@ -0,0 +1,52 @@ +{ + "dimensions_mm": { + "width": 5.2, + "depth": 42.0, + "height": 36.0, + "array_spacing_x": 5.2 + }, + "outputs": { + "fcstd": "D:\\LightWork3D\\data\\examples\\qet_terminal_block\\qet_terminal_slice.FCStd", + "step": "D:\\LightWork3D\\data\\examples\\qet_terminal_block\\qet_terminal_slice.step" + }, + "geometry_objects": [ + "TerminalSlice_GreenBody", + "TerminalSlice_TopWhiteClamp", + "TerminalSlice_BottomBlackClamp", + "TerminalSlice_GreenWindow", + "TerminalSlice_DINRailTopLip", + "TerminalSlice_DINRailBottomLip", + "TerminalSlice_TopScrew", + "TerminalSlice_BottomScrew" + ], + "terminals": [ + { + "name": "Terminal_Top", + "role": "Terminal", + "can_wire": true, + "slot_name": "Top", + "label": "Top", + "type": "generic", + "base": [ + 0.0, + -22.0, + 29.5 + ], + "engineering_binding_properties_present": [] + }, + { + "name": "Terminal_Bottom", + "role": "Terminal", + "can_wire": true, + "slot_name": "Bottom", + "label": "Bottom", + "type": "generic", + "base": [ + 0.0, + -22.0, + 6.5 + ], + "engineering_binding_properties_present": [] + } + ] +} \ No newline at end of file diff --git a/docs/superpowers/plans/2026-05-26-terminal-block-model-implementation.md b/docs/superpowers/plans/2026-05-26-terminal-block-model-implementation.md new file mode 100644 index 0000000..234ea2c --- /dev/null +++ b/docs/superpowers/plans/2026-05-26-terminal-block-model-implementation.md @@ -0,0 +1,134 @@ +# DIN Rail Terminal Slice Model Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Generate a reusable single-slice DIN rail terminal model as both `.FCStd` and `.step`, with FreeCAD template terminal LCS semantics. + +**Architecture:** Add a focused FreeCAD Python generator under the asset directory. The script creates simple parametric solid geometry, adds two template terminal LCS objects with the existing QET terminal semantic properties, saves an FCStd template, exports STEP geometry, and writes a small metadata report for verification. + +**Tech Stack:** FreeCADCmd, FreeCAD Python API, Part workbench primitives, Import/ImportGui STEP export fallback, plain Markdown documentation. + +--- + +### Task 1: Asset Directory and Generator + +**Files:** +- Create: `data/examples/qet_terminal_block/create_qet_terminal_slice.py` +- Create: `data/examples/qet_terminal_block/README.md` + +- [ ] **Step 1: Create the generator script** + +Use `apply_patch` to create `data/examples/qet_terminal_block/create_qet_terminal_slice.py`. The script must: + +- Build dimensions in millimeters: width `5.2`, depth `42.0`, height `36.0`. +- Create visible geometry pieces for the green body, white top terminal area, black bottom terminal area, light green window, DIN rail slot, and two screw/contact details. +- Add two `Part::LocalCoordinateSystem` objects named `Terminal_Top` and `Terminal_Bottom`. +- Set these properties on both terminal LCS objects: `Role`, `CanWire`, `QetTemplateSlotName`, `QetTerminalLabel`, `QetTerminalType`. +- Avoid engineering binding properties: `QetProjectUuid`, `QetElementUuid`, `QetTerminalUuid`, `QetInstanceId`. +- Save `qet_terminal_slice.FCStd`. +- Export `qet_terminal_slice.step`. +- Write `qet_terminal_slice_report.json` with dimensions, output paths, and terminal property values. + +- [ ] **Step 2: Create the README** + +Use `apply_patch` to create `data/examples/qet_terminal_block/README.md` explaining: + +- `qet_terminal_slice.FCStd` is the formal reusable FreeCAD template. +- `qet_terminal_slice.step` is geometry-only exchange output. +- The slice spacing is `5.2 mm` along X for future terminal block arrays. +- `Terminal_Top` and `Terminal_Bottom` are template terminal LCS objects. + +### Task 2: Generate the Model + +**Files:** +- Generate: `data/examples/qet_terminal_block/qet_terminal_slice.FCStd` +- Generate: `data/examples/qet_terminal_block/qet_terminal_slice.step` +- Generate: `data/examples/qet_terminal_block/qet_terminal_slice_report.json` + +- [ ] **Step 1: Run the FreeCAD generator** + +Run with the registered FreeCAD runtime: + +```powershell +$runtime = Get-Content -LiteralPath 'C:\Users\ng123\AppData\Local\QETDeps\runtime.json' -Raw | ConvertFrom-Json +$env:QET_FREECAD_RUNTIME_JSON = 'C:\Users\ng123\AppData\Local\QETDeps\runtime.json' +& $runtime.freecad_python 'D:\LightWork3D\data\examples\qet_terminal_block\create_qet_terminal_slice.py' +``` + +Expected: command exits `0`, and prints the generated FCStd, STEP, and report paths. + +- [ ] **Step 2: Inspect output files** + +Run: + +```powershell +Get-ChildItem -LiteralPath 'D:\LightWork3D\data\examples\qet_terminal_block' | Select-Object Name,Length +``` + +Expected: `.FCStd`, `.step`, and `.json` files exist with non-zero sizes. + +### Task 3: Verify Template Semantics + +**Files:** +- Read: `data/examples/qet_terminal_block/qet_terminal_slice_report.json` +- Read: `data/examples/qet_terminal_block/qet_terminal_slice.FCStd` + +- [ ] **Step 1: Run semantic verification** + +Run a short FreeCAD Python verification command that opens `qet_terminal_slice.FCStd` and checks: + +- `Terminal_Top` exists. +- `Terminal_Bottom` exists. +- Both have `Role == "Terminal"`. +- Both have `CanWire == true`. +- Both have `QetTemplateSlotName` and `QetTerminalLabel`. +- Neither has `QetProjectUuid`, `QetElementUuid`, `QetTerminalUuid`, or `QetInstanceId`. + +Expected: command exits `0` and prints a success summary. + +- [ ] **Step 2: Verify STEP header** + +Run: + +```powershell +Get-Content -LiteralPath 'D:\LightWork3D\data\examples\qet_terminal_block\qet_terminal_slice.step' -TotalCount 20 +``` + +Expected: output contains a valid STEP header such as `ISO-10303-21`. + +### Task 4: Commit the Asset + +**Files:** +- Add: `docs/superpowers/plans/2026-05-26-terminal-block-model-implementation.md` +- Add: `data/examples/qet_terminal_block/create_qet_terminal_slice.py` +- Add: `data/examples/qet_terminal_block/README.md` +- Add: `data/examples/qet_terminal_block/qet_terminal_slice.FCStd` +- Add: `data/examples/qet_terminal_block/qet_terminal_slice.step` +- Add: `data/examples/qet_terminal_block/qet_terminal_slice_report.json` + +- [ ] **Step 1: Check unrelated changes** + +Run: + +```powershell +git status --short +``` + +Expected: existing unrelated modified files may remain; only the plan and asset directory should be staged for this task. + +- [ ] **Step 2: Stage and commit** + +Run: + +```powershell +git add -- docs/superpowers/plans/2026-05-26-terminal-block-model-implementation.md data/examples/qet_terminal_block +git commit -m "feat: add qet terminal block model asset" +``` + +Expected: a commit containing only the plan and terminal model asset files. + +## Self-Review + +- Spec coverage: the plan creates FCStd, STEP, generator, README, two template terminals, no engineering binding fields, and verification. +- Placeholder scan: no TBD/TODO/fill-later language is present. +- Type/property consistency: terminal object names and QET template property names match the approved design.