From afcd50d8c5bc530f34f014460976ff56d1ef8769 Mon Sep 17 00:00:00 2001 From: adrianarce-elemwave Date: Tue, 30 Sep 2025 15:39:39 +0200 Subject: [PATCH 01/23] Change ShapeClassification to check for json data --- src/ShapesClassification.py | 70 +++- src/mesher.py | 3 +- test/test_ShapesClassification.py | 86 +++++ test/test_mesher.py | 5 + ...electricShieldedPair.20250930-134420.FCBak | Bin 0 -> 9334 bytes .../DielectricShieldedPair.FCStd | Bin 0 -> 13624 bytes .../DielectricShieldedPair.json | 36 ++ .../DielectricShieldedPair.step | 352 ++++++++++++++++++ .../DielectricUnshieldedPair.FCStd | Bin 0 -> 13624 bytes .../DielectricUnshieldedPair.json | 30 ++ .../DielectricUnshieldedPair.step | 287 ++++++++++++++ .../partially_filled_coax.json | 23 ++ 12 files changed, 872 insertions(+), 20 deletions(-) create mode 100644 test/test_ShapesClassification.py create mode 100644 testData/DielectricShieldedPair/DielectricShieldedPair.20250930-134420.FCBak create mode 100644 testData/DielectricShieldedPair/DielectricShieldedPair.FCStd create mode 100644 testData/DielectricShieldedPair/DielectricShieldedPair.json create mode 100644 testData/DielectricShieldedPair/DielectricShieldedPair.step create mode 100644 testData/DielectricUnshieldedPair/DielectricUnshieldedPair.FCStd create mode 100644 testData/DielectricUnshieldedPair/DielectricUnshieldedPair.json create mode 100644 testData/DielectricUnshieldedPair/DielectricUnshieldedPair.step create mode 100644 testData/partially_filled_coax/partially_filled_coax.json diff --git a/src/ShapesClassification.py b/src/ShapesClassification.py index 8bef68a..b8edaae 100644 --- a/src/ShapesClassification.py +++ b/src/ShapesClassification.py @@ -1,3 +1,5 @@ +from enum import Enum +import json from typing import Any, Tuple, List, Dict import gmsh @@ -7,21 +9,25 @@ class ShapesClassification: isOpenCase:bool + crossSectionData: Dict + pecs: Dict + dielectrics: Dict - def __init__(self, shapes): + def __init__(self, shapes, jsonFile:str): gmsh.model.occ.synchronize() self.allShapes = shapes - self.pecs = self.get_surfaces_with_label(shapes, "Conductor_") - self.dielectrics = self.get_surfaces_with_label(shapes, "Dielectric_") - self.open = self.get_surfaces_with_label(shapes, "OpenBoundary_") + with open(jsonFile) as f: + jsonData = json.load(f) + self.crossSectionData = jsonData['CrossSection'] + self.pecs = self.get_pecs(shapes) + self.dielectrics = self.get_dielectrics(shapes) + self.shieldReference = dict() self.vacuum = dict() self.isOpenCase = self.isOpenProblem() - if len(self.open) > 1: - raise ValueError("Only one open region is allowed.") @staticmethod def getNumberFromName(entity_name: str, label: str): @@ -29,22 +35,43 @@ def getNumberFromName(entity_name: str, label: str): num = int(entity_name[ini:]) return num - @staticmethod - def get_surfaces_with_label(entity_tags, label: str): - surfaces = dict() + def get_pecs(self, entity_tags): + pecNames = self.__getGeometryNamesByMaterialType('PEC') + pecs = dict() for s in entity_tags: - name = gmsh.model.get_entity_name(*s) - if s[0] != 2 or label not in name: + name = gmsh.model.get_entity_name(*s).split('/')[-1] + if s[0] != 2 or name not in pecNames: continue - num = ShapesClassification.getNumberFromName(name, label) - surfaces[num] = [s] + pecs[name] = [s] - return surfaces + return pecs + + def get_dielectrics(self, entity_tags): + dielectricNames = self.__getGeometryNamesByMaterialType('Dielectric') + dielectrics = dict() + for s in entity_tags: + name = gmsh.model.get_entity_name(*s).split('/')[-1] + if s[0] != 2 or name not in dielectricNames: + continue + dielectrics[name] = [s] + + return dielectrics + + def __getGeometryNamesByMaterialType(self, materialType:str) -> List[str]: + names = [ + geometry['name'] + for geometry in self.crossSectionData + if geometry['material']['type'] == materialType + ] + return names def isOpenProblem(self): elements = list(chain(self.pecs.values())) + isOpenCase = True for idx, element in enumerate(elements): - for otheridx, otherElement in enumerate(elements[idx+1:]): + intersectWithAll = True + intersect = [] + for otheridx, otherElement in enumerate(elements): if element != otherElement: intersect = gmsh.model.occ.intersect( element, @@ -52,10 +79,15 @@ def isOpenProblem(self): removeObject=False, tag=300+otheridx, removeTool=False - )[0] - if intersect: - return False - return True + )[0] + if len(intersect) == 0: + intersectWithAll = False + else: + isOpenCase = False + if intersectWithAll: + print(element, otherElement) + self.shieldReference = {list(self.pecs.keys())[idx] : element} + return isOpenCase def removeConductorsFromDielectrics(self): for num, diel in self.dielectrics.items(): diff --git a/src/mesher.py b/src/mesher.py index 53702be..38823e1 100644 --- a/src/mesher.py +++ b/src/mesher.py @@ -46,7 +46,8 @@ def meshFromStep(self, inputFile: str, caseName: str, meshingOptions=None): gmsh.model.add(caseName) allShapes = ShapesClassification( - gmsh.model.occ.importShapes(inputFile, highestDimOnly=False) + gmsh.model.occ.importShapes(inputFile, highestDimOnly=False), + inputFile.strip('.step') + '.json' ) # --- Geometry manipulation --- diff --git a/test/test_ShapesClassification.py b/test/test_ShapesClassification.py new file mode 100644 index 0000000..274d699 --- /dev/null +++ b/test/test_ShapesClassification.py @@ -0,0 +1,86 @@ +import os +import unittest +import gmsh +import json + +from src.ShapesClassification import ShapesClassification + + +class TestShapesClassification(unittest.TestCase): + + @classmethod + def setUpClass(cls): + cls.dirPath = os.path.dirname(os.path.realpath(__file__)) + '/' + cls.testdataPath = cls.dirPath + '/../testData/' + + @classmethod + def tearDownClass(cls): + del cls.dirPath + del cls.testdataPath + + def setUp(self): + gmsh.initialize() + + def tearDown(self): + gmsh.finalize() + + def inputFileFromCaseName(self, caseName): + return self.testdataPath + caseName + '/' + caseName + ".step" + + def initShapeClassification(self, inputFile:str) -> None: + jsonFile = inputFile.strip('.step') + '.json' + self.shapeClassification = ShapesClassification( + gmsh.model.occ.importShapes(inputFile, highestDimOnly=False), + jsonFile + ) + + def testDielectricShieldedPairClassification(self) -> None: + case = 'DielectricShieldedPair' + filepath = self.inputFileFromCaseName(case) + self.initShapeClassification(filepath) + expectedShapes = [ + (2, 1),(2, 2),(2, 3),(2, 4),(2, 5), + (1, 1),(1, 2),(1, 3),(1, 4),(1, 5), + (0, 1),(0, 1),(0, 2),(0, 2),(0, 3),(0, 3),(0, 4),(0, 4),(0, 5),(0, 5) + ] + expectedPecs = { + 'RightConductor': [(2,1)], + 'ExternalShield': [(2,2)], + 'LeftConductor': [(2,3)], + } + expectedDielectrics = { + 'RightDielectric': [(2,4)], + 'LeftDielectric': [(2,5)], + } + expectedShieldReference = { + 'ExternalShield': [(2,2)], + } + self.assertListEqual(self.shapeClassification.allShapes, expectedShapes) + self.assertDictEqual(self.shapeClassification.pecs, expectedPecs) + self.assertDictEqual(self.shapeClassification.dielectrics, expectedDielectrics) + self.assertDictEqual(self.shapeClassification.shieldReference, expectedShieldReference) + self.assertFalse(self.shapeClassification.isOpenCase) + + def testDielectricUnshieldedPairClassification(self) -> None: + case = 'DielectricUnshieldedPair' + filepath = self.inputFileFromCaseName(case) + self.initShapeClassification(filepath) + expectedShapes = [ + (2, 1),(2, 2),(2, 3),(2, 4), + (1, 1),(1, 2),(1, 3),(1, 4), + (0, 1),(0, 1),(0, 2),(0, 2),(0, 3),(0, 3),(0, 4),(0, 4), + ] + expectedPecs = { + 'RightConductor': [(2,1)], + 'LeftConductor': [(2,2)], + } + expectedDielectrics = { + 'RightDielectric': [(2,3)], + 'LeftDielectric': [(2,4)], + } + expectedShieldReference = {} + self.assertListEqual(self.shapeClassification.allShapes, expectedShapes) + self.assertDictEqual(self.shapeClassification.pecs, expectedPecs) + self.assertDictEqual(self.shapeClassification.dielectrics, expectedDielectrics) + self.assertDictEqual(self.shapeClassification.shieldReference, expectedShieldReference) + self.assertTrue(self.shapeClassification.isOpenCase) \ No newline at end of file diff --git a/test/test_mesher.py b/test/test_mesher.py index 46eddbd..5fe7e29 100644 --- a/test/test_mesher.py +++ b/test/test_mesher.py @@ -19,6 +19,11 @@ def setUpClass(cls): cls.dirPath = os.path.dirname(os.path.realpath(__file__)) + '/' cls.testdataPath = cls.dirPath + '/../testData/' + @classmethod + def tearDownClass(cls): + del cls.dirPath + del cls.testdataPath + def setUp(self): gmsh.initialize() diff --git a/testData/DielectricShieldedPair/DielectricShieldedPair.20250930-134420.FCBak b/testData/DielectricShieldedPair/DielectricShieldedPair.20250930-134420.FCBak new file mode 100644 index 0000000000000000000000000000000000000000..489768915d29707a5941035f9eaef15b81086fe0 GIT binary patch literal 9334 zcmchc1yEeiw(bXa2^O5-?h*(df(3VX3GQye0}1X75Zv7%!QI`1JA~k#0B^{>|Cc~+ z>Yj6|-s`D7y=SU_Yk%`q?=`)8%Su2%VgLXDSipNrK8<|B#vN)z03az3004D>SJnoO zmPS?%3@(-y-?V0x*En&Twy4?a6EcSK$rdXTe0Cw!@+Qh0+vGcuM9X7eEf-rtiSbV+ zCqCb%#B=Rmoe8THpbV(s<-MYh_$r0s~rL;9sP$M!Us(IyqZf}zkUa<@Gm zae6!{)9ksx{X>+m83xGlvU=@BUQ(Z|DD)LLzJH51YCjhhmX5YIJg@poAG6k~?`d!5 z1fE+$mI?CjMvP#=2efJP$!r9W2#Df5BUpq6*vTVn&KfTTUSDE$PGA{D#<$*5Q>5Cb z1+%lc0wD_@xL3d^?^uzGEtR@9}i)uOZrCFtiU-tLCCKzwTTcb zw-8dE3KwA(k`!j*N0bLSOo^olXTmDVez0JscI>;fAy{l#QBkg^2T(V!GzisBuV*Td zk=t0jqPdn)#R7-qN;-l`bmG=EnT1!`YxDzB^wvyCUSmj*i=%Zq$fZ*_T9hI)kyIJ) z?l0%`CMkZzr8`8dCN5?o{fs>&X*ulMwS6;J`Gic2*L4eP$G>#ki4_T5r$mtkJf$$7 z2~wJBgNuu?XS%_m#U4g~$4kwG{%pZ*1<@%oPU_|~kb6lzw9+l}RyOx7UiDX}!gCwP zc{4_o9^$PD)$_y8LxDTSOC};g^X$V!Vq-on^t_})Wxj}%qy-L~-9TuIc_LI8+04+r zH(4b?n>n5}a02PILLw_r{CWua*q`=GwzV;-=V6HU+Y4-lcUj@O}Ul6uR6VAQx9E#wH=l@+6E9 z`gmG+fT=s%7ROn+8UymgT3_5G)o=Eqnp<5W;|hI&{0=W%cz33AF?|=8Cn z`l;Bc8eRG<=S5OO8jYc^^wwfs?YP^wGEVM;I89pQW7ZHvtYXa-E;FUqrh)XIm@=@t zrrF-X?Q1#_MZToK35|eoG$i%|ss+RWwUPu))my-xdNIAX6wa*iRYo9x1vWM&xbi{- zw^%y2bEb08J4I}Gj4U;~w@}3Lre?92I1GKMoPLL(dw_!=SLndinBPQ6%!=Kj-#*gb z+)BO#nqY!h$gv7OZ&rjQ?e+FW?M`{QF^)I=ZqB6`DPDwWwh+~PNLoEjB>@e^+Q)(G zRbLhagrdBKx;HGR$A$}Z(4*BisYdJ zD*DwEg^auv!`U=6Soq^K7xLE2RbAV?J7w(xzLXi7(j^X4&DviP!|d`OQ5e0t4FN*} zqE2DqG5h#v+E$KG#?eJE(nrm{V%sbqElS1_!Vse=_GXBAUTE*CC9cq)Ca)&mTDL(2 z8`BLgq``vMJW1@MKs@j9#XcwP=yk-(@n)FBkFhdl{V|H+XkY(Xeb%q*38;C9UBfS- zGHVUiF}r0lZOgcXsWiLVFj*H z6LaXDx61 z=(k!MVj=;5{5<9*)H>O^y<^KHt(G4Y!*Mi(N~Zt!w_QtjDH3(Vl=Dx~_CG9s+?>Bz zyIhTjJ7h#(*15%@^)gtSz)_DgjqbSV9xD4Py^YvqP~d=Oz~l2m$%R)6w=^yke>yiy zt+oCo0(N3BanOWjky=%k+b((95bvKl zc_p?lbq~Ypg5%FMltOwVALh^>0>3w$+3(}?fzm7^HKdhf_|-e;`Te7Ul0pMqs0N_? zRDFJvplqGbeoe_UoDn)d?I_5_dAwu9qt+xDq{7hoHAS&OfrEZEXlJW6J9bU#&waP$ z>AHO!Y+20$pF}9Bm6?2ma0D_pBH@GJu6weC^ut+XwqC0BG}$41tIE*pz>Hxu65lt?DoBG)e7{2W^n!Km~)0-Y;BH1G31)q*~Zb9rDd zRljjnOs@_-UdX_K%y;LT?53c}b(}(+=Vf2|%;53QaE!FE)(f7gWZBh|z=cd278%dg zu_#BE14AYyr~U7{fj+Y-Ng)E7jw+n|UNI>VGZuMP2xSqo5(%@MWKu0<>n`JcF^}Gv zfo8wKqJ5UcURD-+B}=E20YgdS`8+GyXtn&f4qwfU{tPM=vffNq+K@g&#rvz!M9U?H z^ntE&-wo)W&d;=Sq)p-IX61+U8){OlvEalfg3+$A@Z-n#wn=muQqa~`OB$P=oF6RY zNp=~O6bzP}BrK}XGtt;P=SezI*?TQAQ?Pn!;zakplgzd>@qZFcC);|^P9~F zowHCxGbe`h8cJ@4T+SXw5!?%TZ>J$)w11i|85x;aXjb{%FsGwupw4GOnI+oOdh zU6c$i2Z92&7i|u3XDE*f3wam zkwQ#_Q3$ccyUTJHJ<38|tk! zG^8j(ua#54n^{nG{4reC%-~qQW_(G%)X+_5yBDGt=Q57ivaaJ1$6nkv1e`*#VRLqt zG9TD%r?D`KqjPVfe%{~Hk_{tT+?8v!8OAM52Ej|0aYzkMyq`qAD_RpsK1Dl@s++Ov|8 zDfMvU=Cg^K{R8dlRQ;sB#-J&8#Z!&iK?Sk?Do0lb_uR0O17Nbog|_vJ_cm*B?)7&^ zDJ?{n$hUR16V@^eIis^{!3~-WyNiyZB_plZvL|7Kcu5`joDEO;1``n~mX*oE$$cswwXKUA7$dDcycu)GN255xVHunQpv; zkbO{6M4ja$z<>b&4v+uLTvo1vRzj# zQNG797)HJ$jfY3(@FvgrsfbuB#r(!Mcwj@ zF2*8eX6)Q6x`W9aUbTdavSJ!s`>S;wFb!sq-bF$hH?B{U%T~`6?+WnHw+b0fU09HB zc8`2x{^i@?Z@$$?lt<+_hX2jCs`#J2y}440*sCy%-)EkFqxJRpJ&aq&JN-b$0&As+ z0&T5=k})KnuP@K=9mHDfsc(@n2*pt6uxCarSC@s3BLfXh7;_J2(l3z*qlJ>TUpJwX z$_&Kfx%f4`AM09{nx2+_F85yH$K1MQHqb8bE$%A;jw+%8>`+osBxbJt&%-Ns8~CbW z0v|mKSh*{F+fB`sfF7~6r#!Hk12i27n`Qjq>SJO&P+k;mQt~6c;h?1UW)j@8>W(KCSJjbsuV+!y9duUui62l%8$T)kDaj5@y!u@h> zAzC8bmkA@_;zDJ9BLp!ArLc}|xv0wo+;$4-h1koy6}{EwR4k-K@y{j+3$ozPDQk(| zjbp7!;aW%08}Am-D9s;?py1NjMZ!KbGMn{Z)gO+%oCh_DXt z1&mLXb(0|v{grUJpESZoZP~vC`t$$+HlaLR7|t_FGsJand7Wc8oH-(i_-%<>QW2j7#^> zG723vLI_$mvUb`7VXlUPP^1znR>ljo?z;ykh1{$X2^d&tBEgCOXoRGtlLGMbiLtOuSD#m20@O2 zWQ;NCi>mSDC@KDPDiQCTu46Gf*vdC|-?ee@B+G(ZQDN=J$1x;S#z?Pr7ioFr>wlct zZb!mUU_SLaDK?n3hC9(3-SBF@;+Sa6y#Au|*46%Md~_7=Ses?)lUa0)O*`?)+3+i7 z5omRo-3)btP!VMmGR?Va|Gnss5r$M`r1S5>g$mN4`YRUk2?RaGF|*c?XCf9m0W{J9 zKSUxfGM-D5p_U2y* zzGuo)j1R8K(aJH}jO#7p5FMyVfdWhhs}{7|Q_FnZ=fqnOJ8JnXS(BfWg&D4j zyPd2!#?GJ>jsx%)#;mZa)K>`#jK7Y(=1(iEu5=5~zA70yXv&OuPavkE7rM}CnBu}8JQ9k9cO{Vt|X6GGWd`tuK$TIrl znmK-*_;}Z=SZp@dcVe<6*gfF?mXeUwwh6tB7BC(}PUSwKP()Y4;l9k~e3~I=+Nv=T zWv5g6BJ8~DUHPEW^61f`RUH)s}nVuDejYMX&!^Eh8HBq_e>WvRH z)I1McE)QF3wLhgHMGfbcnxg$NTun64AT@QWk9HAbEjGp>8RZmRML4HdG48akR`mwD zh2oY2eV4BCu#7?&mS9najy=s%c{le=WbLv8I(2fRQ9DmHnHkSD1AG%#fnZAj9?vfO z5+W%(59|W0nnjlGd;TQg4i=dt4Q(~2yqxv}nupl;k-^J$q)CVq)IfavJ&LXqyo23V zju1o3a#r#cuOn;WL(7&Q$gCxiju#{Ntq9Pl2Mrk^zAk?LMvpsSLu=)8)Xr*zW+e#~0|E4*`iFjJ zu5SpbZk^l_F?pB_t$F@%+KQisJ!It$K97aCc1pN91jymaenXa)<}X%XHa`NtD9lUg zRzVG9k}};ddDiU9N5zNOu&Nq!=u%sEno7(GTwSF#_1*-Qu-S{g#CT`r|Gf(Vli}#; zh5gc~k>g^4Wyh-Xr4HRvC`0vyTT77d>Z{X?;UxB3d+FKPI)$buJjlQr)Qu^EZa(wm zWDDeVr?&arGi&huA&7;Y<>p&~=eQ#qtPZK*S}q;~%4138gs^x0H$C=<3RdP%nFz+7z-mNw$n2?Fhe4O4N^IDC#N?bX|Oq`FE6hwtAd$nXJ^Hk zWDe||o=(jO^dXq2h(bkPH|@JSK(pz3!?bblezwSur81cuTP@eqFd?7aFU5~P@W%E$ zwI=^kc;S^)p)kuDAs&y(f|lg9=B#<-zHiIBIO#1l&L#2ft&Z|IM>?!bSqPcQGjVS+ zuqenxn@BQMbi63Y(syJtJwf{(NB(qR6_8ihk>mn#05#u@u^zN_I8uoS#*q8(Hw2qt zC1hWW2m=A8;8}1H6sqtxPuYC@cv`P{1R;WbCjxxe$TeH*Lp8zdpn5P3+k{JWr7U_d z8wg9%0ySH`iqj%!1xf(*z8g>xv{dr&^}Zgi>+luu&s4lM1x1QsS}|jg9U^}Y0bhrY z1D}UdkrgTd9ALy`z|ZjjRm-fB>dQQa(vD(?Rp(9kHLO!Tn`9qO}v}#Y{#aRt>yXlv4Y!8y^{?{3UenJsnOM8j5E`{R;$?&voI63OdPemHhA*+c3#VK ztDiTP?H%Y!jj_ZfQh(*ezLITop<(xllkR2PbiFd^9DN_p4Q^jSm+W{5i%96xO3IXI zbMXQZ)SJI-CuOpqj9+90^)8UcODZTXkkH{R%TE%r$6O#OWU#|q))Cg8VDo@05Uzi~ z_n{`(UcLY1C#ri0J0S1&%P3rRVB zQ<_&0`&_u~i5}*u`=Cq#} zfh!HzMNMXUu>`f{?iMt3!H#XsCS;!e0-M$F3$i*%)hl=JC-kH0dC0A3(iDJa@28tAy%D@lb-r{We3ZSPbr&v{_GXgyp4P)ZN!<3VSxZ7u@uTw{DpIkS}dnVR~&B z%* z!c?mrPCKpgnDJ!Zn$eJptIO0)NW=$?!wl>xp>1X9ah=VX#^Byu>zsaR2mCp&$1Qhu}ZT`E~`w$PcGXL*l z@9V2aVt-P9s%w zlK)+YS^p!sKdC?E{x1&yq#nxsPaJ0Zk0k%3{%y%WslQ1E1IGaT{lPV8hW%_+KKI@4 z)rG9YL-O(d)PHdRK$VXI=n44$uv_&wz~haYUjaTK{R;5gw$0-Jk2frS1?T`JkpEKf ztDt;LKd#+>(HEdw`XBwjRq~GmJT78?1z>#gE5L6h?c)HC%eh|xjM4rm?jFPUgMUx6 zzhDHszbDc%qi2DrsPpk4N0>O`x z+++B6)eqr=KU6b6hJTlRpPl|`RX$|+f5`rWew-|R(dr=jk?ud}zYEU*(GTrr`PYR{ z|0(C6qfs>V=L4{D+d z56r;e4VptcQr?A&I>PW+20I^HbD+0bW%NsNQdouYfwS0zlLTJ0QEZRDIsP;jw6#a- zix$$y&(b*n0^d%mP341wgN;yd?ax5JJ8gc-Xu=2zF+CyM+3POGGm#;J@!(~l3JIx; z*Zu|628viNk*3wunia{Z9%b{|6y8}gN;qFs zN+Bs4m{WLKyzh&?Dy{>tN0Li(Zw$KXb;Nw z>hb8!d$6-DDkVjO9{wA>6g3!(D_b^OuEGhDWP66f)RDvb1HD$Qt$o;;u_8+Z>WGcA zw~f6&gfA~IOB-DxR}d<(-|`lIQrOJUQ0T>`6!%l07y@0P3i(R2&L)P!rZN^j+L6a- z2Q{hBmx0MNUCnhB&!BD$!RLux1kPq^FoXHNXL@Ny1Y8f%xM0kjp~xlz52c)gyXkvN zlU13FQxLB}Kpo7b;{&S8{uJ9K>h%E+K`!1fbIY}JP~G6y%{nkNMA8}&9Ri$8pBc@? zeaU)GMu0+|PWoeN<5nW!%;G9u8k{BSAr)HL3}^lVu$Z9h6~UhOk)*=oUo(0&!kmmJLyvW3@HO%Ew5p1(*ij!*tZp3H zoe@2zE*2d<6`5rZSf(w|lgbhM+&X)YrvX3Ow|OkAFu0FWQKqmdEuLKgLiB>XI-cZA zfAFGK96vOE7ET3@WVV4>BB3wlCMCf~ z^k(vHGPR&SKF-KcGQFU0-Vn+zziah-W#xFLT6nYCe6+A{kG{OF@91hss(+}XqOhTN zja+dV!$@gCGib~#+L~%(vj|HrY`V%t(WzS+W#XcO#&=$;7V6Zn32V9DGhrJ`1B5b$ zV^2YOq=)*qeWPve=Y)SS1wCb*NHM09;#`V?6c+G{Sor|*5Pj#t41Dl(+`2UZQAppu zs9R3m8T%;mM8bEw`o@}j2!-)&5t^Hl66>mH@8re2`D)hk?$ohSt8D12nFR`JtR3?p4axatMRSqEh%(5>kvxPLH4XD|URRv-jeE;- zphcA61*-gj;`T-0s4;$daRyTbG71Y4&+&o+9m;60L*~c zz|MltfpQb1gvO>ch(;vJ&{G)gQ@RBC4(d?A2fGQ5i8LynhzhTGz!N3N{@7hW4hfbq$qT&n@2sv&}^8V-=mA1dWyT$^M^bu&jiU*8? zELVYRITO@-jc9g|P3Ihw1ayRB(LW9OaByl(DLP8#`XtH^HPL-#g@T!-TbyAg21_v< zuORkiy(-`o@c6zh(QQU_#egoyIDTiBFqqEKpn;$~R8-|{O0H5xhCQkMW+^uojY_2> z8!l_&RusJFm8ZcZMWsk`qCGV=W>R}Y`>(-OBeU1; zOx%`s=y?mU;ZfS29x2xjrWCjNXXES~l-IL3ni=Ms<(5kdLD*%vO?3;>Tj?<Dsa$2luyncy2;vrq@f!ZN#Wbs-^mQ(3l9C5T9pa z-OYf97*uI*Uz2E+y>6~8mnog5j6!7(5Giclf48Iy>0B8&Nd85)CT>uB3to78?9+ps zcL}W?vumGOAMmiQDg{);Q#d{mypd*rxk#-{3{;;Pt0bAFBJ8U{DXBj56tnKnp}Hys zeo7_?hTc-xj6p6oIwfp+*e5CPA&shWMe5y^QgWXPi;rx z@KQFzeE#r_V}H`{xvQZhDJ(NqY;rlYKEw0SyIZ@Y4QEvU{CY4+vd@5lG?qS@aoxCE z!inN}S&AV`>iEW~L6UAO4^6-$`-V)TrUfpR9M>him*7b?)U zF(OuZJ#ay z?(pw2C(AXNO*KPVd{psjEd1dc+pX}_A=%S(j(FH+gFJ;a;oZlR%vJ7aN-8ob3tUr~ zORpPQCH;Au>JER*i|GY8n|pXU`sH-3kK#pe^p@K0Y$`J_pw0yM7Z%|iT9v+k9Q)i( z<5;<2bWOd|(*Mr(Fhn=OWeKihv;BILxvXn6WyaZt+1VLrKD^e=U}2c>&b^I_^~*p< zKBRJ4U%l0KIfoQ67*}bYTUE7Yn>dSXwJR>RClOCuJ+sg(#FA2TPTKN1l}FgOPbo88 zt?ml#Ue#WbJFeIH-UZ4KOLs|bxwMJ;s^N?~rO5G~vxhL2M~4%KnOwDHL3heWL30Im zw7Ez4=ntbuXK0h}Ej96%mP&F{?=W`iJjc}|-Yzy>XyLbc6Mc72^VlIkcAwd8DhgSdq z>hpz!fT^9ng&`ds1C6|iu8kp$o}JB-9MHU*4zBe;dAFffqVkYsB!Xm53I~VS!8q1Q z^-T{6LBQkP;5-!0Wv4~`d>=;SC$bwtQD@htFPADw)uxh;yD06E%_4OeE6jkAcGo4oXj?V&S=Q7LC9 ztC|JXI8i9jIr&*}d=^{a=0?`J3PBBr0PH z93%h9Z#9X3_|5o6HR`a+An}-f)>!l4Gz8MECrB@lw%A%Rs#r_2xO@_x^ML;X*Fm(y zp5hS!4PO*#0dsELa(z|cG&<10g!a?-x$J9%kywG$UGX+lBI)6H92ft#kjcJP;Owj% zt89q;{lcbYeu`b8H?|-zOASFWW;l@uJU#ny^Vr(c7OqMJZ-!?vBS)2Ax2c(8ibs6? zIVV)^Fl7(y_GcbYwMkJ<@F#zE+~Na6a-tYpVwRfuK0El>0-xRxd(i5Uwbt7J5u)?F zhF3fBxq;aXthkMz=>j}Jesx@ND$ODIv*YZa9f$Pa0r!{JmSQC${pipFuCA09x5D5G z5K9`ER!jR#Ky7E>-;44WuIa9~XJWu7i#3}hEy;kglGPIgO<}A9v8`jMjrNNv6&HVq zu6!r)?oB_$#v-kXt*@e1geRa(Os7%H%j!?NZ;O(Y>qscb?))?e32(cyIC?n!)-`TB zD0yi&A+h~g1jF2|h6{K&Cb(;Yr5zV zrMqU-IV53{puSoda3lH;iiF_U9h8eGzMn ze|hcyL#&wy=m^xC`XdgCV8>*)rgiBDt#dHZB3R~7-AILT(kol7!rxMg1c^4O`w_}SjOYj2J>s@aVR>S9m}p=0+_(|W7iP&6Pz`pLhbLljp;AH{lCv`9~}s7vR6z6peO{fCo7xN zHY-JbU@Z_xB<@N)5()bz(Xzro2%u9q@ww2C)H0L}*+gW1%PDbG4EJnzuJZqp3K6i>$ygk(1)r4+-Di0^c~Updr7yV!%*M2awL z4GPLu$?8dby91(hms037Zl?`s!Mc>SubKJbGu5wBvzw|=+Hds)002OI-k~CnroY}^vb0}#kMX#yoqaKC(Qbj8n)s?}ZCQ-)$mvt-NSwuOB~ci_ zGJMN?kZ>{mZsjDpG8noKlMXtYEFI+?o>*jF?vAJ%OzZuH?qQ5OhA2(TjQY2lWt469 zoUvBj1It1Pvhe!$$J6aoYcewHfjghdOT{3E52z8zpB}}C^$qgkXlbRS$zp@q0kA=r zKxDW<-d6_iK!qD1t@{=DU<*v!*x7w=V<<&uu`20XLqRa>_#S~<7yi<%#A}JHue@k- zYq$v`ptvrQGDgpKlWN19-sBxJh}0VsZ^y^o*hP;iRQkwY3B2K7VH;tzlpk!OJd{>e zYSkdEUO+cWFr)=xOHa;!-x77YxffAA2z+zwnhB0qOm5mwlmOABb5Y~jm2<1YlY$6t ze;e<{qt*w_smVi*0Svdms^=R>=w}|xtWV|QuEdg+*RIDq4Gm=~fEr#L`bfB~V!&kg zeoPa8{MA-0ZsDS_@45v-yH(UTUUwoF^E3lPW{kwNK2Z*hTbgt)3{RsT&z94N(9oX4 z1+XW?-C?o(9Ll(P0d&R333&@BR7dHhC{uvys6)zhEB?~!6Q%1F;o$>@*Ge!41aJDV zm`s{W3XTa8^qh%F30l=v@RL`Uq1P~Y^G8rb#c2!iWS49Q-50maZsiKM_dbVArp0Tu zfG0tjLYeLY=-$Fx2JB;+nAoa+bcoBz?W3QZfZXo%;Fv&K25pf1sEOV&Kk!DtvUZcm zbFBu>UnU-dne-NgkSQnTPx6rmeft-VO7;QtBXE>9&E0-nEbF`Yrq%fFvfV2=a zMR^}p{rIq4ZT?L4V-YHQs_qt zw=VxS2(I%UQ(Zcu!<=aLhF-WFXo3e}7io|&9f9U$gZ7vK5&`IwAHu3}5GM_<7!tt{ z!B~mt<={+lpTj97v1e0do}Idxr=Mi6(q=!LMeylJN^VGDN?f8PqKJi=O(GXNfI|A;+r?MErjxUE*O)rR!fia|^EO?KxwvZmedihb-V zpxSA}ausjs@STWHUOCtmracBDicr4CN`N0(#!Km6=tAcstz$EO7=3G*sZ*k8anPbQ zzw~1pv%=3uN*U~-$1vKEp`HZnm_}I}bgm!I8DhGBxT`w_jnH8+m7Y1v5-Z#-cfNF{ zG?4GsgAR%$lo4MfLo|~;rFa8ZR9Bydq}@1@!mfvlw~ST0&Xmg#{$nK48xQObe4Aod z!+F2Ry{J8$h}{u*MWP3!KwMA@tc{!StFI;m#Hy;t!(%pCSupp5>XGl-`a#X`3a>F> z`P-b(`MD-r?|AQ36}OKQ)g{u2k7Ow6XMB`SFpOc{tT4;=H}&N%(1AjRHI9=r)?MnV zH!<`r5xR{ZHo8dMY~pTo=L3%L*4RPhdkKZAq-+nygG{NdR(2f7IrlM6c;#~B8eZjs zy!)OrBT(ilbJeU6*4Qhtw_&JzfUG!LsPt50>RZtZd(L9Zk!Y<0_l>Ejq1yKW;_=PR zoO7stbl29y`b>Kel1WIa^(IINRnx>!I+QGK6AS)6xk5t^!J<05NaCl^QYDxT=NkeG zN6e8ecV<07e%rSY6L)rl-h|}e@*%fyIyZpwH_eM?Wop(L%45axr!vRJnRhjh46AMD zQmo9k72YK{;UJk70)|$z332q05k~wZ7><*@}lcd zq!?x4wrK%|I5;_amO>Qt>wG`z%4~)2Zh3xk!sq$YGKJ__N>TpEwV=~5GE@Wg!eu(~ z^k(2C;j&b`Wm&J{#&XaPTc(660llDTurlukAg@vMe8bH;FU>$gz$q#_M(;HE!2avA z521RU33D>F)Ax2Mpu9}Y-NHKUJ zMrrRgt{ETvSHJG}eA)jxc>^v(O)dxX)$i+NA%+1uZ!O@fUzl2?0QH>fr_g_?vecpw zzmrV+VgEFNCJ&1-^x`}@PNxdilY!Ms7O zCXFbtk8>Z0Rq-2~A=9*)*-TkR3P^v5r?HD}@mZ4I*B-J(?hh2U?Td@Wupl8gPLZsi zBTv=G_mndOn`MhciYC5fPLyN>e3^={@loKMi+_CaZ!P~s)#U2=ieMQT0Kk0y+u>m1 zXsKtVYieOntMKPb8XGI)R+S*e#g*B|QmeuJx8f=*yTRnCyQ;0;;L%@IgE0gvN)Go! z$)Wkrk*L*Bdc)coCaOF4NmNR=>RorP$XZU^jYm1JM%fv!k{fpx@6u8Y%yOJT zhG8K9tA4(1b?g8ipY}dpAzyl>hIinYo)=|c0KnwKEbqJ=5;s8S3*Gq4XDI5qv;g-X zd$kiMXzf0}b*DO$w3}~W_xm)|t#4PJu+ud)-gR)zhAqX2CTvsQCcEx{o0l-!ej+c; zA-Gh?B4Sn(VipnlG8vSBD3a^Fg6|o<;N5$A-ph9y`dYqPzIq%z=2g6<(92pTCi7>J$$Y zNL@_r_QQ+FjS0~$iEd=ePowCKY!jNPW|qTZzolX%@;=udaz6`-J!IHCDSFB|GEwzt z71UA(PyTyfzK(i45mQ6m<#TS(B=;!Tn$H+|vkY6k?mbu~=fUA4@hpaWs4`V9&97wj z0V5v^;{CxCjhC{a!UTN{GK(!1 zF@{iczFMfGHa~{RHMl-`AlEP175kiT@$nN9aZc!(XQML?_JUMQ<%v;#ChSlc!o4b% z6_?nd9d@?0#qBEI+pDm6;B6P<>`0MteR1`|jN9a3r<-zO0x53tH_k|I3|Ht+%9i&A z7g*b_OKbku(2>eajFB84o5!@6-V%G=!9Qw35K(P|#i`BSUh9yzGquXIg2E%kCZT|g zZVg`y67xss$MpoeS^9NweJ99UM_*$>3XOmO^tFEr(Toe$$pUZB_--ZEDD=7whbnN2 z7ixY&{8ZGxF^M7i=?(J{Te}awBVGP+pMlXwdJ!PJz&@d5gAQ+(%2FN}3v6+PK* z6>t6fk$dd{L6*1H7z2zVIQ>GYZu0!|yG-gFsyycM{Cm^nj>v#lY{5n{CtzPP!vc1p zvqYdt`7@rtA%>xz@;=fjxPN#APD#~y&F6?0)MCK;>^7mm@QY(W9fC=Ar1!#iK@{rE z`|oXB$3jxklkz{Ezn-cx-xt`Zy7Y3j6aL(L+IqVw_TAZpe)5=_!8C0_c}YtJFuAAH zr~u&jkrSWISWVGBdD#V8UKu2FXw2ijFS!!^l~zd7LO{sWh)N-BiBsVz0!Qiw{kq5JD%uR39YKB{Tet^njg|3n$3Y_Z*p?f(&L+jz8PEJa>djSnD4|3zsrl4hN%F70< zTVfWb=wth2hA?~>HN<&nxLR@%z3L>a=E$B^0&1l!_c1CzMFm2?zBIR1fwJn(ysL-z z_@2HeO|3OhIk}^j1bD>MqNk=Tqila{*;J6Go}tCf4jO;mRr&1A1yQ;0hk*aVq99 zk!~LK%i%|J5id;Y)|N2@v-}5@R-ze>>9l~|ELS0EjzUK(d3D`U^{C*yCeemAd}Ivz zY6A4sQyEqjEN1KdX-v1JjwHhiSaZs4P`u5(q&N%R!IRzQRx_h`2c6$%$ZO-7>!(M6 zOI15&(?lCx`xGD`N%QlnocPkDu@s!rs_ScaV(3|oZ_Ni?X|qkr!YO z7f?EI*K8uMaMkkGDe~g*qstT9v^6Xc1Tkg1egH?7l^d$p!ItL7HPaQlu8@?boW z60w$d&lHK54rkKfuCe2`Q2ox}dijJ{f$BiCddFb;MlRy=u}^{Mwn`@)NA5V;)R#;N zRlO#Lde!Kg+F6#N8l9c@D@iHxx`k@+M{Eigxe z)PlFi+N-J@ytQMQh+d12T441_T&jJay6ZpYal}$gO1oJ(gi5?qq;z?WhGsDwo5z8- z^DVgg;o%{G+#OOI2_=nYW9JNvH1s1Gl5Da2*ej=eEjN+nknDN~WH8p2nf+}xGb7E%wAvNN}a@6Oq z9)%)FxVy0vQXyU4U=ndK@RV&4rfylW-D*BW)NN`Ag|Qs~%bhAF27I>KTvd1$39MXM z7vj3-(nWSc3CIt(%m&>2T3vIaO!1={*wdmphAQwUr;fbzJ)HZ64X!np*=fFO?<H2}L0 zo2j#2*uK2yDMa#qYV8%|3*u_zZWnlK3#a+{anvZHtr+I}saMDwGz3ws_{hsE9LaOT z6lGS$OzdJu1blagYKg|cqr~|5VYg2Q@nY))KUva z@kU1uOak{~Qw@vRqWvC?clUZTB1Rta@j65Ay#sDgj2Cq&f=%tGr-jWpEH`$WAbS2U z~XHwNwZJ>6DL%37a8NzFpgai3(y+ zyRITc4GkXUAnD1TSw&EAB`X876?fm-(MRP2xEt~(rbZ;b zY%^Ms0@*{l6RyHYsU(;a1~=fnK1~-kO~r1(!rPHpwqiGsDVT(Zx9)LqP>cdtzhfl? zjva-dGrIEjWS@%>=4Br??hs_CeLsu#g~)8As>ANxF)G1Hw=PEg5=qjHo_>y)ct;}C z8mc6{(&Q19rougg%tGsDb2S7kjnKo2MQxKp*!w(7YP1ot6vN+Si#&FoVa4eIPvvRJ zpT0Jf2%Iwur~~e}imhH2p{8|fDB^{j!Sz_78?mEbl&TXFS33)sC(>xZvdhB3*-TAk zE|A&{hutJ=Q_BI9&!?@^$zZ18e)V{%zM=~m3(FU0+)iP!{KE2WN4(!A9t7{2r%1(OO+kRVayFDW6aFDlavsYt`LiW#`0ZyJ{*Ov;068 z{Lljz`Xf}Wp1%Cydt|+*5k{$}L;n=k*T#Iy#xLqPKN@c1>FnZigUL_slCYMmi-lIk z2qWvyOSGHUZWiNU-sJc&k0$z7e}Z+xh*O>oMActxtI-1nj#hF5qiu9)%7zckmXNQW z?`rn_0BVCmS)BFN`Q+I*cwCLB=gUbdPyWj%mwwV7kb6h0+#~RPj$+FH(%G`|<>f%3xj=E~)DY;a5vUy$A(S$*`#C~??n461E3}1~` z4Jd4ECh$ZTpF%Ete>ce=6LbgxItaCyj>EwhHPmNvbNvPHn4sA3bd>c2V5yv^dq%Az z@mi4pib@D2V^e<0A*m_zAsE7?Ltt0E6wrURu?DLksypXe0`VP+;CvZ3v@lpZaB73C z<=R*(kWGen!#NVCEAtpp9yCc`&2v=6S7lR)JFUQ0+OH0cn-7oXaCDgx~CErAo;)@yO_o z!LpH0i$W;XqwFiL@UZ+{>tcgEv@F#Y8Azt)KMRUILX-V6&1w72c%?T7 zbFoIES7kqy#s~uXCi4RpaIpf?(wk%MgA<965Pz24LKEG^zEwwAabY<>sn1cvNF_qF z;O=>^xXFN!1F0Tx@XHMnugK^*xfzvEnm2*BDVvrsTw!eyhiPujhj96Y1d=)I&d|Kj zOz+W=k&zBtzJo;z(0Z9W5e}@j9~jsn5}S;ZPD9jIQ*X!;B0k<6@fw1v+`c8&2wW{R z5%ZtN3-T%!B9*lABNhYiyeIzcF*X~VOHSF0Z zS^BvmWG2kdx1I5}0#3fmica%t5z$S#3NvOU=yAN*aV@a-Iwu0<(A8+gOFDFulc1%b zt=h;2m8PAXEygrkvw(_J2VenV{N)K1p#*t^yZwNH z&=TZRzm#e<`!|6bb(V5CB{o_b=o8Qq_TF7xmn8=dCbY_KbG2-AvF|_OY$H<51L7?) zE4o1Lh+?}ThT?B?5H?IT0y!UMaHw#3;SFT8fkF2?9+dYLY-6v$F_2e|kXj-ELv-Wx z6XmmlefN;R)@a6s(S)8$G|%0@006@CQ_|GRP{7*4+K$i8PS;i6001f`CibFa4O5WS z1N~o`pLHD>Yf~$SUqpV4#-q>Ye`ye~-8OK*ex6PK{QRlPAwtUp!`;-ekp!=gZVG<)N_LSr`ydht^7Ta{mi_79?xI@ zyO(M0rS@e8{!7dBtbLK)UW)&|>wad?KaUz;vuE*(9QRWEcj{lomA_HbzZCx+`{#cD z^QiIN{vG=_^~-Ghml}`yH}2om{|v7Ctp4>^gyDYC6qfs>V=L4{D+d z56r;e4VptcQr?A&I>PW+20I^HbD+0bW%NsNQdouYfwS0zlLTJ0QEZRDIsP;jw6#a- zix$$y&(b*n0^d%mP341wgN;yd?ax5JJ8gc-Xu=2zF+CyM+3POGGm#;J@!(~l3JIx; z*Zu|628viNk*3wunia{Z9%b{|6y8}gN;qFs zN+Bs4m{WLKyzh&?Dy{>tN0Li(Zw$KXb;Nw z>hb8!d$6-DDkVjO9{wA>6g3!(D_b^OuEGhDWP66f)RDvb1HD$Qt$o;;u_8+Z>WGcA zw~f6&gfA~IOB-DxR}d<(-|`lIQrOJUQ0T>`6!%l07y@0P3i(R2&L)P!rZN^j+L6a- z2Q{hBmx0MNUCnhB&!BD$!RLux1kPq^FoXHNXL@Ny1Y8f%xM0kjp~xlz52c)gyXkvN zlU13FQxLB}Kpo7b;{&S8{uJ9K>h%E+K`!1fbIY}JP~G6y%{nkNMA8}&9Ri$8pBc@? zeaU)GMu0+|PWoeN<5nW!%;G9u8k{BSAr)HL3}^lVu$Z9h6~UhOk)*=oUo(0&!kmmJLyvW3@HO%Ew5p1(*ij!*tZp3H zoe@2zE*2d<6`5rZSf(w|lgbhM+&X)YrvX3Ow|OkAFu0FWQKqmdEuLKgLiB>XI-cZA zfAFGK96vOE7ET3@WVV4>BB3wlCMCf~ z^k(vHGPR&SKF-KcGQFU0-Vn+zziah-W#xFLT6nYCe6+A{kG{OF@91hss(+}XqOhTN zja+dV!$@gCGib~#+L~%(vj|HrY`V%t(WzS+W#XcO#&=$;7V6Zn32V9DGhrJ`1B5b$ zV^2YOq=)*qeWPve=Y)SS1wCb*NHM09;#`V?6c+G{Sor|*5Pj#t41Dl(+`2UZQAppu zs9R3m8T%;mM8bEw`o@}j2!-)&5t^Hl66>mH@8re2`D)hk?$ohSt8D12nFR`JtR3?p4axatMRSqEh%(5>kvxPLH4XD|URRv-jeE;- zphcA61*-gj;`T-0s4;$daRyTbG71Y4&+&o+9m;60L*~c zz|MltfpQb1gvO>ch(;vJ&{G)gQ@RBC4(d?A2fGQ5i8LynhzhTGz!N3N{@7hW4hfbq$qT&n@2sv&}^8V-=mA1dWyT$^M^bu&jiU*8? zELVYRITO@-jc9g|P3Ihw1ayRB(LW9OaByl(DLP8#`XtH^HPL-#g@T!-TbyAg21_v< zuORkiy(-`o@c6zh(QQU_#egoyIDTiBFqqEKpn;$~R8-|{O0H5xhCQkMW+^uojY_2> z8!l_&RusJFm8ZcZMWsk`qCGV=W>R}Y`>(-OBeU1; zOx%`s=y?mU;ZfS29x2xjrWCjNXXES~l-IL3ni=Ms<(5kdLD*%vO?3;>Tj?<Dsa$2luyncy2;vrq@f!ZN#Wbs-^mQ(3l9C5T9pa z-OYf97*uI*Uz2E+y>6~8mnog5j6!7(5Giclf48Iy>0B8&Nd85)CT>uB3to78?9+ps zcL}W?vumGOAMmiQDg{);Q#d{mypd*rxk#-{3{;;Pt0bAFBJ8U{DXBj56tnKnp}Hys zeo7_?hTc-xj6p6oIwfp+*e5CPA&shWMe5y^QgWXPi;rx z@KQFzeE#r_V}H`{xvQZhDJ(NqY;rlYKEw0SyIZ@Y4QEvU{CY4+vd@5lG?qS@aoxCE z!inN}S&AV`>iEW~L6UAO4^6-$`-V)TrUfpR9M>him*7b?)U zF(OuZJ#ay z?(pw2C(AXNO*KPVd{psjEd1dc+pX}_A=%S(j(FH+gFJ;a;oZlR%vJ7aN-8ob3tUr~ zORpPQCH;Au>JER*i|GY8n|pXU`sH-3kK#pe^p@K0Y$`J_pw0yM7Z%|iT9v+k9Q)i( z<5;<2bWOd|(*Mr(Fhn=OWeKihv;BILxvXn6WyaZt+1VLrKD^e=U}2c>&b^I_^~*p< zKBRJ4U%l0KIfoQ67*}bYTUE7Yn>dSXwJR>RClOCuJ+sg(#FA2TPTKN1l}FgOPbo88 zt?ml#Ue#WbJFeIH-UZ4KOLs|bxwMJ;s^N?~rO5G~vxhL2M~4%KnOwDHL3heWL30Im zw7Ez4=ntbuXK0h}Ej96%mP&F{?=W`iJjc}|-Yzy>XyLbc6Mc72^VlIkcAwd8DhgSdq z>hpz!fT^9ng&`ds1C6|iu8kp$o}JB-9MHU*4zBe;dAFffqVkYsB!Xm53I~VS!8q1Q z^-T{6LBQkP;5-!0Wv4~`d>=;SC$bwtQD@htFPADw)uxh;yD06E%_4OeE6jkAcGo4oXj?V&S=Q7LC9 ztC|JXI8i9jIr&*}d=^{a=0?`J3PBBr0PH z93%h9Z#9X3_|5o6HR`a+An}-f)>!l4Gz8MECrB@lw%A%Rs#r_2xO@_x^ML;X*Fm(y zp5hS!4PO*#0dsELa(z|cG&<10g!a?-x$J9%kywG$UGX+lBI)6H92ft#kjcJP;Owj% zt89q;{lcbYeu`b8H?|-zOASFWW;l@uJU#ny^Vr(c7OqMJZ-!?vBS)2Ax2c(8ibs6? zIVV)^Fl7(y_GcbYwMkJ<@F#zE+~Na6a-tYpVwRfuK0El>0-xRxd(i5Uwbt7J5u)?F zhF3fBxq;aXthkMz=>j}Jesx@ND$ODIv*YZa9f$Pa0r!{JmSQC${pipFuCA09x5D5G z5K9`ER!jR#Ky7E>-;44WuIa9~XJWu7i#3}hEy;kglGPIgO<}A9v8`jMjrNNv6&HVq zu6!r)?oB_$#v-kXt*@e1geRa(Os7%H%j!?NZ;O(Y>qscb?))?e32(cyIC?n!)-`TB zD0yi&A+h~g1jF2|h6{K&Cb(;Yr5zV zrMqU-IV53{puSoda3lH;iiF_U9h8eGzMn ze|hcyL#&wy=m^xC`XdgCV8>*)rgiBDt#dHZB3R~7-AILT(kol7!rxMg1c^4O`w_}SjOYj2J>s@aVR>S9m}p=0+_(|W7iP&6Pz`pLhbLljp;AH{lCv`9~}s7vR6z6peO{fCo7xN zHY-JbU@Z_xB<@N)5()bz(Xzro2%u9q@ww2C)H0L}*+gW1%PDbG4EJnzuJZqp3K6i>$ygk(1)r4+-Di0^c~Updr7yV!%*M2awL z4GPLu$?8dby91(hms037Zl?`s!Mc>SubKJbGu5wBvzw|=+Hds)002OI-k~CnroY}^vb0}#kMX#yoqaKC(Qbj8n)s?}ZCQ-)$mvt-NSwuOB~ci_ zGJMN?kZ>{mZsjDpG8noKlMXtYEFI+?o>*jF?vAJ%OzZuH?qQ5OhA2(TjQY2lWt469 zoUvBj1It1Pvhe!$$J6aoYcewHfjghdOT{3E52z8zpB}}C^$qgkXlbRS$zp@q0kA=r zKxDW<-d6_iK!qD1t@{=DU<*v!*x7w=V<<&uu`20XLqRa>_#S~<7yi<%#A}JHue@k- zYq$v`ptvrQGDgpKlWN19-sBxJh}0VsZ^y^o*hP;iRQkwY3B2K7VH;tzlpk!OJd{>e zYSkdEUO+cWFr)=xOHa;!-x77YxffAA2z+zwnhB0qOm5mwlmOABb5Y~jm2<1YlY$6t ze;e<{qt*w_smVi*0Svdms^=R>=w}|xtWV|QuEdg+*RIDq4Gm=~fEr#L`bfB~V!&kg zeoPa8{MA-0ZsDS_@45v-yH(UTUUwoF^E3lPW{kwNK2Z*hTbgt)3{RsT&z94N(9oX4 z1+XW?-C?o(9Ll(P0d&R333&@BR7dHhC{uvys6)zhEB?~!6Q%1F;o$>@*Ge!41aJDV zm`s{W3XTa8^qh%F30l=v@RL`Uq1P~Y^G8rb#c2!iWS49Q-50maZsiKM_dbVArp0Tu zfG0tjLYeLY=-$Fx2JB;+nAoa+bcoBz?W3QZfZXo%;Fv&K25pf1sEOV&Kk!DtvUZcm zbFBu>UnU-dne-NgkSQnTPx6rmeft-VO7;QtBXE>9&E0-nEbF`Yrq%fFvfV2=a zMR^}p{rIq4ZT?L4V-YHQs_qt zw=VxS2(I%UQ(Zcu!<=aLhF-WFXo3e}7io|&9f9U$gZ7vK5&`IwAHu3}5GM_<7!tt{ z!B~mt<={+lpTj97v1e0do}Idxr=Mi6(q=!LMeylJN^VGDN?f8PqKJi=O(GXNfI|A;+r?MErjxUE*O)rR!fia|^EO?KxwvZmedihb-V zpxSA}ausjs@STWHUOCtmracBDicr4CN`N0(#!Km6=tAcstz$EO7=3G*sZ*k8anPbQ zzw~1pv%=3uN*U~-$1vKEp`HZnm_}I}bgm!I8DhGBxT`w_jnH8+m7Y1v5-Z#-cfNF{ zG?4GsgAR%$lo4MfLo|~;rFa8ZR9Bydq}@1@!mfvlw~ST0&Xmg#{$nK48xQObe4Aod z!+F2Ry{J8$h}{u*MWP3!KwMA@tc{!StFI;m#Hy;t!(%pCSupp5>XGl-`a#X`3a>F> z`P-b(`MD-r?|AQ36}OKQ)g{u2k7Ow6XMB`SFpOc{tT4;=H}&N%(1AjRHI9=r)?MnV zH!<`r5xR{ZHo8dMY~pTo=L3%L*4RPhdkKZAq-+nygG{NdR(2f7IrlM6c;#~B8eZjs zy!)OrBT(ilbJeU6*4Qhtw_&JzfUG!LsPt50>RZtZd(L9Zk!Y<0_l>Ejq1yKW;_=PR zoO7stbl29y`b>Kel1WIa^(IINRnx>!I+QGK6AS)6xk5t^!J<05NaCl^QYDxT=NkeG zN6e8ecV<07e%rSY6L)rl-h|}e@*%fyIyZpwH_eM?Wop(L%45axr!vRJnRhjh46AMD zQmo9k72YK{;UJk70)|$z332q05k~wZ7><*@}lcd zq!?x4wrK%|I5;_amO>Qt>wG`z%4~)2Zh3xk!sq$YGKJ__N>TpEwV=~5GE@Wg!eu(~ z^k(2C;j&b`Wm&J{#&XaPTc(660llDTurlukAg@vMe8bH;FU>$gz$q#_M(;HE!2avA z521RU33D>F)Ax2Mpu9}Y-NHKUJ zMrrRgt{ETvSHJG}eA)jxc>^v(O)dxX)$i+NA%+1uZ!O@fUzl2?0QH>fr_g_?vecpw zzmrV+VgEFNCJ&1-^x`}@PNxdilY!Ms7O zCXFbtk8>Z0Rq-2~A=9*)*-TkR3P^v5r?HD}@mZ4I*B-J(?hh2U?Td@Wupl8gPLZsi zBTv=G_mndOn`MhciYC5fPLyN>e3^={@loKMi+_CaZ!P~s)#U2=ieMQT0Kk0y+u>m1 zXsKtVYieOntMKPb8XGI)R+S*e#g*B|QmeuJx8f=*yTRnCyQ;0;;L%@IgE0gvN)Go! z$)Wkrk*L*Bdc)coCaOF4NmNR=>RorP$XZU^jYm1JM%fv!k{fpx@6u8Y%yOJT zhG8K9tA4(1b?g8ipY}dpAzyl>hIinYo)=|c0KnwKEbqJ=5;s8S3*Gq4XDI5qv;g-X zd$kiMXzf0}b*DO$w3}~W_xm)|t#4PJu+ud)-gR)zhAqX2CTvsQCcEx{o0l-!ej+c; zA-Gh?B4Sn(VipnlG8vSBD3a^Fg6|o<;N5$A-ph9y`dYqPzIq%z=2g6<(92pTCi7>J$$Y zNL@_r_QQ+FjS0~$iEd=ePowCKY!jNPW|qTZzolX%@;=udaz6`-J!IHCDSFB|GEwzt z71UA(PyTyfzK(i45mQ6m<#TS(B=;!Tn$H+|vkY6k?mbu~=fUA4@hpaWs4`V9&97wj z0V5v^;{CxCjhC{a!UTN{GK(!1 zF@{iczFMfGHa~{RHMl-`AlEP175kiT@$nN9aZc!(XQML?_JUMQ<%v;#ChSlc!o4b% z6_?nd9d@?0#qBEI+pDm6;B6P<>`0MteR1`|jN9a3r<-zO0x53tH_k|I3|Ht+%9i&A z7g*b_OKbku(2>eajFB84o5!@6-V%G=!9Qw35K(P|#i`BSUh9yzGquXIg2E%kCZT|g zZVg`y67xss$MpoeS^9NweJ99UM_*$>3XOmO^tFEr(Toe$$pUZB_--ZEDD=7whbnN2 z7ixY&{8ZGxF^M7i=?(J{Te}awBVGP+pMlXwdJ!PJz&@d5gAQ+(%2FN}3v6+PK* z6>t6fk$dd{L6*1H7z2zVIQ>GYZu0!|yG-gFsyycM{Cm^nj>v#lY{5n{CtzPP!vc1p zvqYdt`7@rtA%>xz@;=fjxPN#APD#~y&F6?0)MCK;>^7mm@QY(W9fC=Ar1!#iK@{rE z`|oXB$3jxklkz{Ezn-cx-xt`Zy7Y3j6aL(L+IqVw_TAZpe)5=_!8C0_c}YtJFuAAH zr~u&jkrSWISWVGBdD#V8UKu2FXw2ijFS!!^l~zd7LO{sWh)N-BiBsVz0!Qiw{kq5JD%uR39YKB{Tet^njg|3n$3Y_Z*p?f(&L+jz8PEJa>djSnD4|3zsrl4hN%F70< zTVfWb=wth2hA?~>HN<&nxLR@%z3L>a=E$B^0&1l!_c1CzMFm2?zBIR1fwJn(ysL-z z_@2HeO|3OhIk}^j1bD>MqNk=Tqila{*;J6Go}tCf4jO;mRr&1A1yQ;0hk*aVq99 zk!~LK%i%|J5id;Y)|N2@v-}5@R-ze>>9l~|ELS0EjzUK(d3D`U^{C*yCeemAd}Ivz zY6A4sQyEqjEN1KdX-v1JjwHhiSaZs4P`u5(q&N%R!IRzQRx_h`2c6$%$ZO-7>!(M6 zOI15&(?lCx`xGD`N%QlnocPkDu@s!rs_ScaV(3|oZ_Ni?X|qkr!YO z7f?EI*K8uMaMkkGDe~g*qstT9v^6Xc1Tkg1egH?7l^d$p!ItL7HPaQlu8@?boW z60w$d&lHK54rkKfuCe2`Q2ox}dijJ{f$BiCddFb;MlRy=u}^{Mwn`@)NA5V;)R#;N zRlO#Lde!Kg+F6#N8l9c@D@iHxx`k@+M{Eigxe z)PlFi+N-J@ytQMQh+d12T441_T&jJay6ZpYal}$gO1oJ(gi5?qq;z?WhGsDwo5z8- z^DVgg;o%{G+#OOI2_=nYW9JNvH1s1Gl5Da2*ej=eEjN+nknDN~WH8p2nf+}xGb7E%wAvNN}a@6Oq z9)%)FxVy0vQXyU4U=ndK@RV&4rfylW-D*BW)NN`Ag|Qs~%bhAF27I>KTvd1$39MXM z7vj3-(nWSc3CIt(%m&>2T3vIaO!1={*wdmphAQwUr;fbzJ)HZ64X!np*=fFO?<H2}L0 zo2j#2*uK2yDMa#qYV8%|3*u_zZWnlK3#a+{anvZHtr+I}saMDwGz3ws_{hsE9LaOT z6lGS$OzdJu1blagYKg|cqr~|5VYg2Q@nY))KUva z@kU1uOak{~Qw@vRqWvC?clUZTB1Rta@j65Ay#sDgj2Cq&f=%tGr-jWpEH`$WAbS2U z~XHwNwZJ>6DL%37a8NzFpgai3(y+ zyRITc4GkXUAnD1TSw&EAB`X876?fm-(MRP2xEt~(rbZ;b zY%^Ms0@*{l6RyHYsU(;a1~=fnK1~-kO~r1(!rPHpwqiGsDVT(Zx9)LqP>cdtzhfl? zjva-dGrIEjWS@%>=4Br??hs_CeLsu#g~)8As>ANxF)G1Hw=PEg5=qjHo_>y)ct;}C z8mc6{(&Q19rougg%tGsDb2S7kjnKo2MQxKp*!w(7YP1ot6vN+Si#&FoVa4eIPvvRJ zpT0Jf2%Iwur~~e}imhH2p{8|fDB^{j!Sz_78?mEbl&TXFS33)sC(>xZvdhB3*-TAk zE|A&{hutJ=Q_BI9&!?@^$zZ18e)V{%zM=~m3(FU0+)iP!{KE2WN4(!A9t7{2r%1(OO+kRVayFDW6aFDlavsYt`LiW#`0ZyJ{*Ov;068 z{Lljz`Xf}Wp1%Cydt|+*5k{$}L;n=k*T#Iy#xLqPKN@c1>FnZigUL_slCYMmi-lIk z2qWvyOSGHUZWiNU-sJc&k0$z7e}Z+xh*O>oMActxtI-1nj#hF5qiu9)%7zckmXNQW z?`rn_0BVCmS)BFN`Q+I*cwCLB=gUbdPyWj%mwwV7kb6h0+#~RPj$+FH(%G`|<>f%3xj=E~)DY;a5vUy$A(S$*`#C~??n461E3}1~` z4Jd4ECh$ZTpF%Ete>ce=6LbgxItaCyj>EwhHPmNvbNvPHn4sA3bd>c2V5yv^dq%Az z@mi4pib@D2V^e<0A*m_zAsE7?Ltt0E6wrURu?DLksypXe0`VP+;CvZ3v@lpZaB73C z<=R*(kWGen!#NVCEAtpp9yCc`&2v=6S7lR)JFUQ0+OH0cn-7oXaCDgx~CErAo;)@yO_o z!LpH0i$W;XqwFiL@UZ+{>tcgEv@F#Y8Azt)KMRUILX-V6&1w72c%?T7 zbFoIES7kqy#s~uXCi4RpaIpf?(wk%MgA<965Pz24LKEG^zEwwAabY<>sn1cvNF_qF z;O=>^xXFN!1F0Tx@XHMnugK^*xfzvEnm2*BDVvrsTw!eyhiPujhj96Y1d=)I&d|Kj zOz+W=k&zBtzJo;z(0Z9W5e}@j9~jsn5}S;ZPD9jIQ*X!;B0k<6@fw1v+`c8&2wW{R z5%ZtN3-T%!B9*lABNhYiyeIzcF*X~VOHSF0Z zS^BvmWG2kdx1I5}0#3fmica%t5z$S#3NvOU=yAN*aV@a-Iwu0<(A8+gOFDFulc1%b zt=h;2m8PAXEygrkvw(_J2VenV{N)K1p#*t^yZwNH z&=TZRzm#e<`!|6bb(V5CB{o_b=o8Qq_TF7xmn8=dCbY_KbG2-AvF|_OY$H<51L7?) zE4o1Lh+?}ThT?B?5H?IT0y!UMaHw#3;SFT8fkF2?9+dYLY-6v$F_2e|kXj-ELv-Wx z6XmmlefN;R)@a6s(S)8$G|%0@006@CQ_|GRP{7*4+K$i8PS;i6001f`CibFa4O5WS z1N~o`pLHD>Yf~$SUqpV4#-q>Ye`ye~-8OK*ex6PK{QRlPAwtUp!`;-ekp!=gZVG<)N_LSr`ydht^7Ta{mi_79?xI@ zyO(M0rS@e8{!7dBtbLK)UW)&|>wad?KaUz;vuE*(9QRWEcj{lomA_HbzZCx+`{#cD z^QiIN{vG=_^~-Ghml}`yH}2om{|v7Ctp4>^gyDY Date: Wed, 1 Oct 2025 18:02:37 +0200 Subject: [PATCH 02/23] Added graph for pecs in Shape Classification --- src/Graph.py | 95 ++++ src/ShapesClassification.py | 67 +-- test/test_ShapesClassification.py | 23 +- test/test_graph.py | 88 ++++ testData/ComplexNesting/ComplexNesting.FCStd | Bin 0 -> 22489 bytes testData/ComplexNesting/ComplexNesting.json | 46 ++ testData/ComplexNesting/ComplexNesting.step | 458 ++++++++++++++++++ .../FusedConductor.20250930-153234.FCBak | Bin 0 -> 13624 bytes testData/FusedConductor/FusedConductor.FCStd | Bin 0 -> 14512 bytes testData/FusedConductor/FusedConductor.json | 40 ++ testData/FusedConductor/FusedConductor.step | 401 +++++++++++++++ 11 files changed, 1181 insertions(+), 37 deletions(-) create mode 100644 src/Graph.py create mode 100644 test/test_graph.py create mode 100644 testData/ComplexNesting/ComplexNesting.FCStd create mode 100644 testData/ComplexNesting/ComplexNesting.json create mode 100644 testData/ComplexNesting/ComplexNesting.step create mode 100644 testData/FusedConductor/FusedConductor.20250930-153234.FCBak create mode 100644 testData/FusedConductor/FusedConductor.FCStd create mode 100644 testData/FusedConductor/FusedConductor.json create mode 100644 testData/FusedConductor/FusedConductor.step diff --git a/src/Graph.py b/src/Graph.py new file mode 100644 index 0000000..7354dd8 --- /dev/null +++ b/src/Graph.py @@ -0,0 +1,95 @@ +from typing import List, Tuple + +class Graph: + def __init__(self): + self._nodes:List = [] + self._edges:List[Tuple] = [] + + @property + def roots(self) -> List: + roots:List = [] + for node in self._nodes: + isChild = False + for edge in self._edges: + if edge[-1] == node: + isChild = True + continue + if isChild == False: + roots.append(node) + return roots.copy() + + @property + def nodes(self) -> List: + return self._nodes.copy() + + @property + def edges(self) -> List: + return self._edges.copy() + + @nodes.setter + def nodes(self, nodes): + self._nodes = list(nodes) + + @edges.setter + def edges(self, edges): + self._edges = [tuple(e) for e in edges] + + def add_node(self, node): + if node not in self._nodes: + self._nodes.append(node) + + def add_edge(self, source, destination): + if source not in self._nodes: + self.add_node(source) + if destination not in self._nodes: + self.add_node(destination) + if (source, destination) not in self._edges: + self._edges.append((source, destination)) + + def get_connections(self): + connections = {node: [] for node in self._nodes} + for source, destination in self._edges: + connections[source].append(destination) + return connections + + def getParentNodes(self) -> List: + return [edge[0] for edge in self._edges] + + def getChildNodes(self) -> List: + return [edge[-1] for edge in self._edges] + + #Necesita una revisión pero por ahora hace lo que necesito + def prune_to_longest_paths(self): + connections = self.get_connections() + roots = [n for n in self._nodes if n not in self.getChildNodes()] + + longest_paths = [] + + def dfs(node, path): + path = path + [node] + if node not in connections or not connections[node]: + longest_paths.append(path) + return + for child in connections[node]: + dfs(child, path) + + for root in roots: + dfs(root, []) + + leaf_to_path = {} + for path in longest_paths: + leaf = path[-1] + if leaf not in leaf_to_path or len(path) > len(leaf_to_path[leaf]): + leaf_to_path[leaf] = path + + new_nodes = set() + new_edges = set() + for path in leaf_to_path.values(): + new_nodes.update(path) + new_edges.update([(path[i], path[i+1]) for i in range(len(path)-1)]) + + self._nodes = list(new_nodes) + self._edges = list(new_edges) + + def __str__(self): + return f"Graph(Nodes: {self._nodes},\n Edges: {self._edges})" \ No newline at end of file diff --git a/src/ShapesClassification.py b/src/ShapesClassification.py index b8edaae..41ed84e 100644 --- a/src/ShapesClassification.py +++ b/src/ShapesClassification.py @@ -1,18 +1,24 @@ from enum import Enum import json +import math +from time import sleep from typing import Any, Tuple, List, Dict import gmsh + +from src.Graph import Graph from .BoundingBox import BoundingBox from itertools import chain import numpy as np class ShapesClassification: + _ROUND_VALUE:int = 6 + isOpenCase:bool crossSectionData: Dict pecs: Dict dielectrics: Dict - + nestedGraph: Graph def __init__(self, shapes, jsonFile:str): gmsh.model.occ.synchronize() @@ -25,7 +31,7 @@ def __init__(self, shapes, jsonFile:str): self.dielectrics = self.get_dielectrics(shapes) self.shieldReference = dict() self.vacuum = dict() - + self.nestedGraph = self.__getNestedGraph() self.isOpenCase = self.isOpenProblem() @@ -35,7 +41,7 @@ def getNumberFromName(entity_name: str, label: str): num = int(entity_name[ini:]) return num - def get_pecs(self, entity_tags): + def get_pecs(self, entity_tags) -> Dict[str, Dict[str,any]]: pecNames = self.__getGeometryNamesByMaterialType('PEC') pecs = dict() for s in entity_tags: @@ -46,7 +52,7 @@ def get_pecs(self, entity_tags): return pecs - def get_dielectrics(self, entity_tags): + def get_dielectrics(self, entity_tags) -> Dict[str, Dict[str,any]]: dielectricNames = self.__getGeometryNamesByMaterialType('Dielectric') dielectrics = dict() for s in entity_tags: @@ -64,30 +70,11 @@ def __getGeometryNamesByMaterialType(self, materialType:str) -> List[str]: if geometry['material']['type'] == materialType ] return names - - def isOpenProblem(self): - elements = list(chain(self.pecs.values())) - isOpenCase = True - for idx, element in enumerate(elements): - intersectWithAll = True - intersect = [] - for otheridx, otherElement in enumerate(elements): - if element != otherElement: - intersect = gmsh.model.occ.intersect( - element, - otherElement, - removeObject=False, - tag=300+otheridx, - removeTool=False - )[0] - if len(intersect) == 0: - intersectWithAll = False - else: - isOpenCase = False - if intersectWithAll: - print(element, otherElement) - self.shieldReference = {list(self.pecs.keys())[idx] : element} - return isOpenCase + + def isOpenProblem(self) -> None: + if len(self.nestedGraph.roots) > 1: + return True + return False def removeConductorsFromDielectrics(self): for num, diel in self.dielectrics.items(): @@ -208,4 +195,26 @@ def _buildDefaultVacuumDomain(self): return dict([[0, nearVacuum], [1, farVacuum]]) - + def __getNestedGraph(self): + gmsh.model.occ.synchronize() + graph = Graph() + for key in self.pecs.keys(): + graph.add_node(key) + for i, keyA in enumerate(self.pecs.keys()): + for j, keyB in enumerate(self.pecs.keys()): + if i < j: + inter = gmsh.model.occ.intersect( + self.pecs[keyA], + self.pecs[keyB], + removeObject=False, + removeTool=False + ) + if len(inter[1][0]) == 0: #comprueba las intersecciones en las que interfiere el objeto + continue + else: + if inter[1][0] == self.pecs[keyA]: + graph.add_edge(keyB, keyA) + elif inter[1][0] == self.pecs[keyB]: + graph.add_edge(keyA, keyB) + graph.prune_to_longest_paths() + return graph \ No newline at end of file diff --git a/test/test_ShapesClassification.py b/test/test_ShapesClassification.py index 274d699..cfba528 100644 --- a/test/test_ShapesClassification.py +++ b/test/test_ShapesClassification.py @@ -1,8 +1,11 @@ +from copy import copy import os +from typing import Dict, List, Tuple import unittest import gmsh import json + from src.ShapesClassification import ShapesClassification @@ -52,15 +55,21 @@ def testDielectricShieldedPairClassification(self) -> None: 'RightDielectric': [(2,4)], 'LeftDielectric': [(2,5)], } - expectedShieldReference = { - 'ExternalShield': [(2,2)], - } self.assertListEqual(self.shapeClassification.allShapes, expectedShapes) self.assertDictEqual(self.shapeClassification.pecs, expectedPecs) self.assertDictEqual(self.shapeClassification.dielectrics, expectedDielectrics) - self.assertDictEqual(self.shapeClassification.shieldReference, expectedShieldReference) self.assertFalse(self.shapeClassification.isOpenCase) + def testFusedConductors(self) -> None: + case = 'FusedConductor' + filepath = self.inputFileFromCaseName(case) + self.initShapeClassification(filepath) + + def testComplexNesting(self) -> None: + case = 'ComplexNesting' + filepath = self.inputFileFromCaseName(case) + self.initShapeClassification(filepath) + def testDielectricUnshieldedPairClassification(self) -> None: case = 'DielectricUnshieldedPair' filepath = self.inputFileFromCaseName(case) @@ -71,16 +80,14 @@ def testDielectricUnshieldedPairClassification(self) -> None: (0, 1),(0, 1),(0, 2),(0, 2),(0, 3),(0, 3),(0, 4),(0, 4), ] expectedPecs = { - 'RightConductor': [(2,1)], - 'LeftConductor': [(2,2)], + 'LeftConductor': [(2, 2)], + 'RightConductor': [(2, 1)], } expectedDielectrics = { 'RightDielectric': [(2,3)], 'LeftDielectric': [(2,4)], } - expectedShieldReference = {} self.assertListEqual(self.shapeClassification.allShapes, expectedShapes) self.assertDictEqual(self.shapeClassification.pecs, expectedPecs) self.assertDictEqual(self.shapeClassification.dielectrics, expectedDielectrics) - self.assertDictEqual(self.shapeClassification.shieldReference, expectedShieldReference) self.assertTrue(self.shapeClassification.isOpenCase) \ No newline at end of file diff --git a/test/test_graph.py b/test/test_graph.py new file mode 100644 index 0000000..cd77d2e --- /dev/null +++ b/test/test_graph.py @@ -0,0 +1,88 @@ +import unittest + +from src.Graph import Graph + +class TestGraph(unittest.TestCase): + + def setUp(self) -> None: + self.graph = Graph() + + def tearDown(self): + del self.graph + + def test_addNode(self) -> None: + self.graph.add_node('A') + self.assertIn('A', self.graph.nodes) + + self.graph.add_node('A') + self.assertEqual(self.graph.nodes.count('A'), 1) + + def test_addEdge(self) -> None: + self.graph.add_edge('A', 'B') + self.assertIn(('A', 'B'), self.graph.edges) + + self.assertIn('A', self.graph.nodes) + self.assertIn('B', self.graph.nodes) + + self.graph.add_edge('A', 'B') + self.assertEqual(self.graph.edges.count(('A', 'B')), 1) + + def test_settersAndGetters(self) -> None: + nodes = ['X', 'Y'] + edges = [('X', 'Y')] + self.graph.nodes = nodes + self.graph.edges = edges + self.assertEqual(self.graph.nodes, nodes) + self.assertEqual(self.graph.edges, edges) + + def test_GetConnections(self) -> None: + self.graph.add_edge('A', 'B') + self.graph.add_edge('A', 'C') + self.graph.add_node('D') # no connections + connections = self.graph.get_connections() + expected = { + 'A': ['B', 'C'], + 'B': [], + 'C': [], + 'D': [] + } + self.assertEqual(connections, expected) + + def test_str(self) -> None: + self.graph.add_edge('A', 'B') + s = str(self.graph) + self.assertIn('A', s) + self.assertIn('B', s) + self.assertIn('Edges', s) + + def testPruneToLongestPaths(self) -> None: + self.graph.nodes = ['A' ,'B', 'C', 'D', 'E', 'F', 'G'] + self.graph.edges = [ + ('A', 'B'), ('A', 'C'), ('A', 'D'), ('A', 'E'), + ('B', 'C'), ('B', 'E'), + ('C', 'E'), + ('F', 'G') + ] + + expectedEdges = [ + ('A', 'B'), ('A', 'D'), + ('B', 'C'), + ('C', 'E'), + ('F', 'G') + ] + + self.graph.prune_to_longest_paths() + self.assertListEqual(sorted(self.graph.edges), sorted(expectedEdges)) + + def testGetRoots(self) -> None: + self.graph.nodes = ['A' ,'B', 'C', 'D', 'E', 'F', 'G'] + self.graph.edges = [ + ('A', 'B'), ('A', 'D'), + ('B', 'C'), + ('C', 'E'), + ('F', 'G') + ] + self.assertListEqual(self.graph.roots, ['A', 'F']) + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/testData/ComplexNesting/ComplexNesting.FCStd b/testData/ComplexNesting/ComplexNesting.FCStd new file mode 100644 index 0000000000000000000000000000000000000000..50fc6a80229abc48fa38db94b7cbf5e6f61a2b00 GIT binary patch literal 22489 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%0DYPIO=-;G7NPCHVn0&8E`;;BzB(m};6oNa%e4dH2 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 literal 0 HcmV?d00001 diff --git a/testData/ComplexNesting/ComplexNesting.json b/testData/ComplexNesting/ComplexNesting.json new file mode 100644 index 0000000..27d4154 --- /dev/null +++ b/testData/ComplexNesting/ComplexNesting.json @@ -0,0 +1,46 @@ +{ + "CrossSection":[ + { + "name":"Right", + "material":{ + "type":"PEC" + } + }, + { + "name":"Left", + "material":{ + "type":"PEC" + } + }, + { + "name":"SubLeftA", + "material":{ + "type":"PEC" + } + }, + { + "name":"SubLeftB", + "material":{ + "type":"PEC" + } + }, + { + "name":"SubLeftA1", + "material":{ + "type":"PEC" + } + }, + { + "name":"SubLeftA2", + "material":{ + "type":"PEC" + } + }, + { + "name":"SubRightA", + "material":{ + "type":"PEC" + } + } + ] +} \ No newline at end of file diff --git a/testData/ComplexNesting/ComplexNesting.step b/testData/ComplexNesting/ComplexNesting.step new file mode 100644 index 0000000..edb619f --- /dev/null +++ b/testData/ComplexNesting/ComplexNesting.step @@ -0,0 +1,458 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('FreeCAD Model'),'2;1'); +FILE_NAME('Open CASCADE Shape Model','2025-10-01T13:48:29',(''),(''), + '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('DielectricShieldedPair','DielectricShieldedPair','',(#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); +#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('',(20.,0.,0.)); +#17 = DIRECTION('',(0.,0.,1.)); +#18 = DIRECTION('',(1.,0.,0.)); +#19 = AXIS2_PLACEMENT_3D('',#20,#21,#22); +#20 = CARTESIAN_POINT('',(-20.,0.,0.)); +#21 = DIRECTION('',(0.,0.,1.)); +#22 = DIRECTION('',(1.,0.,0.)); +#23 = AXIS2_PLACEMENT_3D('',#24,#25,#26); +#24 = CARTESIAN_POINT('',(-29.,0.,0.)); +#25 = DIRECTION('',(0.,0.,1.)); +#26 = DIRECTION('',(1.,0.,0.)); +#27 = AXIS2_PLACEMENT_3D('',#28,#29,#30); +#28 = CARTESIAN_POINT('',(-11.,0.,0.)); +#29 = DIRECTION('',(0.,0.,1.)); +#30 = DIRECTION('',(1.,0.,0.)); +#31 = AXIS2_PLACEMENT_3D('',#32,#33,#34); +#32 = CARTESIAN_POINT('',(-33.,0.,0.)); +#33 = DIRECTION('',(0.,0.,1.)); +#34 = DIRECTION('',(1.,0.,0.)); +#35 = AXIS2_PLACEMENT_3D('',#36,#37,#38); +#36 = CARTESIAN_POINT('',(-26.,0.,0.)); +#37 = DIRECTION('',(0.,0.,1.)); +#38 = DIRECTION('',(1.,0.,0.)); +#39 = AXIS2_PLACEMENT_3D('',#40,#41,#42); +#40 = CARTESIAN_POINT('',(20.,0.,0.)); +#41 = DIRECTION('',(0.,0.,1.)); +#42 = DIRECTION('',(1.,0.,0.)); +#43 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#47)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#44,#45,#46)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#44 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#45 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#46 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#47 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#44, + 'distance_accuracy_value','confusion accuracy'); +#48 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7)); +#49 = SHAPE_DEFINITION_REPRESENTATION(#50,#56); +#50 = PRODUCT_DEFINITION_SHAPE('','',#51); +#51 = PRODUCT_DEFINITION('design','',#52,#55); +#52 = PRODUCT_DEFINITION_FORMATION('','',#53); +#53 = PRODUCT('Right','Right','',(#54)); +#54 = PRODUCT_CONTEXT('',#2,'mechanical'); +#55 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#56 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#57),#76); +#57 = SHELL_BASED_SURFACE_MODEL('',(#58)); +#58 = OPEN_SHELL('',(#59)); +#59 = ADVANCED_FACE('',(#60),#71,.T.); +#60 = FACE_BOUND('',#61,.T.); +#61 = EDGE_LOOP('',(#62)); +#62 = ORIENTED_EDGE('',*,*,#63,.T.); +#63 = EDGE_CURVE('',#64,#64,#66,.T.); +#64 = VERTEX_POINT('',#65); +#65 = CARTESIAN_POINT('',(8.,0.,0.)); +#66 = CIRCLE('',#67,8.); +#67 = AXIS2_PLACEMENT_3D('',#68,#69,#70); +#68 = CARTESIAN_POINT('',(0.,0.,0.)); +#69 = DIRECTION('',(0.,0.,1.)); +#70 = DIRECTION('',(1.,0.,0.)); +#71 = PLANE('',#72); +#72 = AXIS2_PLACEMENT_3D('',#73,#74,#75); +#73 = CARTESIAN_POINT('',(-5.127900497023E-16,1.528755336223E-17,0.)); +#74 = DIRECTION('',(0.,0.,1.)); +#75 = DIRECTION('',(1.,0.,0.)); +#76 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#80)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#77,#78,#79)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#77 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#78 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#79 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#80 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#77, + 'distance_accuracy_value','confusion accuracy'); +#81 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#82,#84); +#82 = ( REPRESENTATION_RELATIONSHIP('','',#56,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#83) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#83 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15); +#84 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#85); +#85 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('12','Right','',#5,#51,$); +#86 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#53)); +#87 = SHAPE_DEFINITION_REPRESENTATION(#88,#94); +#88 = PRODUCT_DEFINITION_SHAPE('','',#89); +#89 = PRODUCT_DEFINITION('design','',#90,#93); +#90 = PRODUCT_DEFINITION_FORMATION('','',#91); +#91 = PRODUCT('Left','Left','',(#92)); +#92 = PRODUCT_CONTEXT('',#2,'mechanical'); +#93 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#94 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#95),#114); +#95 = SHELL_BASED_SURFACE_MODEL('',(#96)); +#96 = OPEN_SHELL('',(#97)); +#97 = ADVANCED_FACE('',(#98),#109,.T.); +#98 = FACE_BOUND('',#99,.T.); +#99 = EDGE_LOOP('',(#100)); +#100 = ORIENTED_EDGE('',*,*,#101,.T.); +#101 = EDGE_CURVE('',#102,#102,#104,.T.); +#102 = VERTEX_POINT('',#103); +#103 = CARTESIAN_POINT('',(20.,0.,0.)); +#104 = CIRCLE('',#105,20.); +#105 = AXIS2_PLACEMENT_3D('',#106,#107,#108); +#106 = CARTESIAN_POINT('',(0.,0.,0.)); +#107 = DIRECTION('',(0.,0.,1.)); +#108 = DIRECTION('',(1.,0.,0.)); +#109 = PLANE('',#110); +#110 = AXIS2_PLACEMENT_3D('',#111,#112,#113); +#111 = CARTESIAN_POINT('',(-1.093952106032E-15,2.775209066E-16,0.)); +#112 = DIRECTION('',(0.,0.,1.)); +#113 = DIRECTION('',(1.,0.,0.)); +#114 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#118)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#115,#116,#117)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#115 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#116 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#117 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#118 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#115, + 'distance_accuracy_value','confusion accuracy'); +#119 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#120,#122); +#120 = ( REPRESENTATION_RELATIONSHIP('','',#94,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#121) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#121 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); +#122 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#123 + ); +#123 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('13','Left','',#5,#89,$); +#124 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#91)); +#125 = SHAPE_DEFINITION_REPRESENTATION(#126,#132); +#126 = PRODUCT_DEFINITION_SHAPE('','',#127); +#127 = PRODUCT_DEFINITION('design','',#128,#131); +#128 = PRODUCT_DEFINITION_FORMATION('','',#129); +#129 = PRODUCT('SubLeftA','SubLeftA','',(#130)); +#130 = PRODUCT_CONTEXT('',#2,'mechanical'); +#131 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#132 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#133),#152); +#133 = SHELL_BASED_SURFACE_MODEL('',(#134)); +#134 = OPEN_SHELL('',(#135)); +#135 = ADVANCED_FACE('',(#136),#147,.T.); +#136 = FACE_BOUND('',#137,.T.); +#137 = EDGE_LOOP('',(#138)); +#138 = ORIENTED_EDGE('',*,*,#139,.T.); +#139 = EDGE_CURVE('',#140,#140,#142,.T.); +#140 = VERTEX_POINT('',#141); +#141 = CARTESIAN_POINT('',(8.,0.,0.)); +#142 = CIRCLE('',#143,8.); +#143 = AXIS2_PLACEMENT_3D('',#144,#145,#146); +#144 = CARTESIAN_POINT('',(0.,0.,0.)); +#145 = DIRECTION('',(0.,0.,1.)); +#146 = DIRECTION('',(1.,0.,0.)); +#147 = PLANE('',#148); +#148 = AXIS2_PLACEMENT_3D('',#149,#150,#151); +#149 = CARTESIAN_POINT('',(-5.127900497023E-16,1.528755336223E-17,0.)); +#150 = DIRECTION('',(0.,0.,1.)); +#151 = DIRECTION('',(1.,0.,0.)); +#152 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#156)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#153,#154,#155)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#153 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#154 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#155 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#156 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#153, + 'distance_accuracy_value','confusion accuracy'); +#157 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#158,#160); +#158 = ( REPRESENTATION_RELATIONSHIP('','',#132,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#159) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#159 = ITEM_DEFINED_TRANSFORMATION('','',#11,#23); +#160 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#161 + ); +#161 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('14','SubLeftA','',#5,#127,$); +#162 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#129)); +#163 = SHAPE_DEFINITION_REPRESENTATION(#164,#170); +#164 = PRODUCT_DEFINITION_SHAPE('','',#165); +#165 = PRODUCT_DEFINITION('design','',#166,#169); +#166 = PRODUCT_DEFINITION_FORMATION('','',#167); +#167 = PRODUCT('SubLeftB','SubLeftB','',(#168)); +#168 = PRODUCT_CONTEXT('',#2,'mechanical'); +#169 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#170 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#171),#190); +#171 = SHELL_BASED_SURFACE_MODEL('',(#172)); +#172 = OPEN_SHELL('',(#173)); +#173 = ADVANCED_FACE('',(#174),#185,.T.); +#174 = FACE_BOUND('',#175,.T.); +#175 = EDGE_LOOP('',(#176)); +#176 = ORIENTED_EDGE('',*,*,#177,.T.); +#177 = EDGE_CURVE('',#178,#178,#180,.T.); +#178 = VERTEX_POINT('',#179); +#179 = CARTESIAN_POINT('',(8.,0.,0.)); +#180 = CIRCLE('',#181,8.); +#181 = AXIS2_PLACEMENT_3D('',#182,#183,#184); +#182 = CARTESIAN_POINT('',(0.,0.,0.)); +#183 = DIRECTION('',(0.,0.,1.)); +#184 = DIRECTION('',(1.,0.,0.)); +#185 = PLANE('',#186); +#186 = AXIS2_PLACEMENT_3D('',#187,#188,#189); +#187 = CARTESIAN_POINT('',(-5.127900497023E-16,1.528755336223E-17,0.)); +#188 = DIRECTION('',(0.,0.,1.)); +#189 = DIRECTION('',(1.,0.,0.)); +#190 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#194)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#191,#192,#193)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#191 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#192 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#193 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#194 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#191, + 'distance_accuracy_value','confusion accuracy'); +#195 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#196,#198); +#196 = ( REPRESENTATION_RELATIONSHIP('','',#170,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#197) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#197 = ITEM_DEFINED_TRANSFORMATION('','',#11,#27); +#198 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#199 + ); +#199 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('15','SubLeftB','',#5,#165,$); +#200 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#167)); +#201 = SHAPE_DEFINITION_REPRESENTATION(#202,#208); +#202 = PRODUCT_DEFINITION_SHAPE('','',#203); +#203 = PRODUCT_DEFINITION('design','',#204,#207); +#204 = PRODUCT_DEFINITION_FORMATION('','',#205); +#205 = PRODUCT('SubLeftA1','SubLeftA1','',(#206)); +#206 = PRODUCT_CONTEXT('',#2,'mechanical'); +#207 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#208 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#209),#228); +#209 = SHELL_BASED_SURFACE_MODEL('',(#210)); +#210 = OPEN_SHELL('',(#211)); +#211 = ADVANCED_FACE('',(#212),#223,.T.); +#212 = FACE_BOUND('',#213,.T.); +#213 = EDGE_LOOP('',(#214)); +#214 = ORIENTED_EDGE('',*,*,#215,.T.); +#215 = EDGE_CURVE('',#216,#216,#218,.T.); +#216 = VERTEX_POINT('',#217); +#217 = CARTESIAN_POINT('',(2.,0.,0.)); +#218 = CIRCLE('',#219,2.); +#219 = AXIS2_PLACEMENT_3D('',#220,#221,#222); +#220 = CARTESIAN_POINT('',(0.,0.,0.)); +#221 = DIRECTION('',(0.,0.,1.)); +#222 = DIRECTION('',(1.,0.,0.)); +#223 = PLANE('',#224); +#224 = AXIS2_PLACEMENT_3D('',#225,#226,#227); +#225 = CARTESIAN_POINT('',(-1.281975124256E-16,3.821888340557E-18,0.)); +#226 = DIRECTION('',(0.,0.,1.)); +#227 = DIRECTION('',(1.,0.,0.)); +#228 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#232)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#229,#230,#231)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#229 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#230 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#231 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#232 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#229, + 'distance_accuracy_value','confusion accuracy'); +#233 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#234,#236); +#234 = ( REPRESENTATION_RELATIONSHIP('','',#208,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#235) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#235 = ITEM_DEFINED_TRANSFORMATION('','',#11,#31); +#236 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#237 + ); +#237 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('16','SubLeftA1','',#5,#203,$); +#238 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#205)); +#239 = SHAPE_DEFINITION_REPRESENTATION(#240,#246); +#240 = PRODUCT_DEFINITION_SHAPE('','',#241); +#241 = PRODUCT_DEFINITION('design','',#242,#245); +#242 = PRODUCT_DEFINITION_FORMATION('','',#243); +#243 = PRODUCT('SubLeftA2','SubLeftA2','',(#244)); +#244 = PRODUCT_CONTEXT('',#2,'mechanical'); +#245 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#246 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#247),#266); +#247 = SHELL_BASED_SURFACE_MODEL('',(#248)); +#248 = OPEN_SHELL('',(#249)); +#249 = ADVANCED_FACE('',(#250),#261,.T.); +#250 = FACE_BOUND('',#251,.T.); +#251 = EDGE_LOOP('',(#252)); +#252 = ORIENTED_EDGE('',*,*,#253,.T.); +#253 = EDGE_CURVE('',#254,#254,#256,.T.); +#254 = VERTEX_POINT('',#255); +#255 = CARTESIAN_POINT('',(4.,0.,0.)); +#256 = CIRCLE('',#257,4.); +#257 = AXIS2_PLACEMENT_3D('',#258,#259,#260); +#258 = CARTESIAN_POINT('',(0.,0.,0.)); +#259 = DIRECTION('',(0.,0.,1.)); +#260 = DIRECTION('',(1.,0.,0.)); +#261 = PLANE('',#262); +#262 = AXIS2_PLACEMENT_3D('',#263,#264,#265); +#263 = CARTESIAN_POINT('',(-2.563950248511E-16,7.643776681114E-18,0.)); +#264 = DIRECTION('',(0.,0.,1.)); +#265 = DIRECTION('',(1.,0.,0.)); +#266 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#270)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#267,#268,#269)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#267 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#268 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#269 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#270 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#267, + 'distance_accuracy_value','confusion accuracy'); +#271 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#272,#274); +#272 = ( REPRESENTATION_RELATIONSHIP('','',#246,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#273) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#273 = ITEM_DEFINED_TRANSFORMATION('','',#11,#35); +#274 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#275 + ); +#275 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('17','SubLeftA2','',#5,#241,$); +#276 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#243)); +#277 = SHAPE_DEFINITION_REPRESENTATION(#278,#284); +#278 = PRODUCT_DEFINITION_SHAPE('','',#279); +#279 = PRODUCT_DEFINITION('design','',#280,#283); +#280 = PRODUCT_DEFINITION_FORMATION('','',#281); +#281 = PRODUCT('SubRightA','SubRightA','',(#282)); +#282 = PRODUCT_CONTEXT('',#2,'mechanical'); +#283 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#284 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#285),#304); +#285 = SHELL_BASED_SURFACE_MODEL('',(#286)); +#286 = OPEN_SHELL('',(#287)); +#287 = ADVANCED_FACE('',(#288),#299,.T.); +#288 = FACE_BOUND('',#289,.T.); +#289 = EDGE_LOOP('',(#290)); +#290 = ORIENTED_EDGE('',*,*,#291,.T.); +#291 = EDGE_CURVE('',#292,#292,#294,.T.); +#292 = VERTEX_POINT('',#293); +#293 = CARTESIAN_POINT('',(2.,0.,0.)); +#294 = CIRCLE('',#295,2.); +#295 = AXIS2_PLACEMENT_3D('',#296,#297,#298); +#296 = CARTESIAN_POINT('',(0.,0.,0.)); +#297 = DIRECTION('',(0.,0.,1.)); +#298 = DIRECTION('',(1.,0.,0.)); +#299 = PLANE('',#300); +#300 = AXIS2_PLACEMENT_3D('',#301,#302,#303); +#301 = CARTESIAN_POINT('',(-1.281975124256E-16,3.821888340557E-18,0.)); +#302 = DIRECTION('',(0.,0.,1.)); +#303 = DIRECTION('',(1.,0.,0.)); +#304 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#308)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#305,#306,#307)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#305 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#306 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#307 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#308 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#305, + 'distance_accuracy_value','confusion accuracy'); +#309 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#310,#312); +#310 = ( REPRESENTATION_RELATIONSHIP('','',#284,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#311) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#311 = ITEM_DEFINED_TRANSFORMATION('','',#11,#39); +#312 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#313 + ); +#313 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('18','SubRightA','',#5,#279,$); +#314 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#281)); +#315 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#316) + ,#114); +#316 = STYLED_ITEM('color',(#317),#97); +#317 = PRESENTATION_STYLE_ASSIGNMENT((#318,#324)); +#318 = SURFACE_STYLE_USAGE(.BOTH.,#319); +#319 = SURFACE_SIDE_STYLE('',(#320)); +#320 = SURFACE_STYLE_FILL_AREA(#321); +#321 = FILL_AREA_STYLE('',(#322)); +#322 = FILL_AREA_STYLE_COLOUR('',#323); +#323 = COLOUR_RGB('',0.800000010877,0.800000010877,0.800000010877); +#324 = CURVE_STYLE('',#325,POSITIVE_LENGTH_MEASURE(0.1),#326); +#325 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#326 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, + 9.803921802644E-02); +#327 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#328) + ,#266); +#328 = STYLED_ITEM('color',(#329),#249); +#329 = PRESENTATION_STYLE_ASSIGNMENT((#330,#335)); +#330 = SURFACE_STYLE_USAGE(.BOTH.,#331); +#331 = SURFACE_SIDE_STYLE('',(#332)); +#332 = SURFACE_STYLE_FILL_AREA(#333); +#333 = FILL_AREA_STYLE('',(#334)); +#334 = FILL_AREA_STYLE_COLOUR('',#323); +#335 = CURVE_STYLE('',#336,POSITIVE_LENGTH_MEASURE(0.1),#326); +#336 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#337 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#338) + ,#304); +#338 = STYLED_ITEM('color',(#339),#287); +#339 = PRESENTATION_STYLE_ASSIGNMENT((#340,#345)); +#340 = SURFACE_STYLE_USAGE(.BOTH.,#341); +#341 = SURFACE_SIDE_STYLE('',(#342)); +#342 = SURFACE_STYLE_FILL_AREA(#343); +#343 = FILL_AREA_STYLE('',(#344)); +#344 = FILL_AREA_STYLE_COLOUR('',#323); +#345 = CURVE_STYLE('',#346,POSITIVE_LENGTH_MEASURE(0.1),#326); +#346 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#347 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#348) + ,#228); +#348 = STYLED_ITEM('color',(#349),#211); +#349 = PRESENTATION_STYLE_ASSIGNMENT((#350,#355)); +#350 = SURFACE_STYLE_USAGE(.BOTH.,#351); +#351 = SURFACE_SIDE_STYLE('',(#352)); +#352 = SURFACE_STYLE_FILL_AREA(#353); +#353 = FILL_AREA_STYLE('',(#354)); +#354 = FILL_AREA_STYLE_COLOUR('',#323); +#355 = CURVE_STYLE('',#356,POSITIVE_LENGTH_MEASURE(0.1),#326); +#356 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#357 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#358) + ,#76); +#358 = STYLED_ITEM('color',(#359),#59); +#359 = PRESENTATION_STYLE_ASSIGNMENT((#360,#365)); +#360 = SURFACE_STYLE_USAGE(.BOTH.,#361); +#361 = SURFACE_SIDE_STYLE('',(#362)); +#362 = SURFACE_STYLE_FILL_AREA(#363); +#363 = FILL_AREA_STYLE('',(#364)); +#364 = FILL_AREA_STYLE_COLOUR('',#323); +#365 = CURVE_STYLE('',#366,POSITIVE_LENGTH_MEASURE(0.1),#326); +#366 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#367 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#368) + ,#152); +#368 = STYLED_ITEM('color',(#369),#135); +#369 = PRESENTATION_STYLE_ASSIGNMENT((#370,#375)); +#370 = SURFACE_STYLE_USAGE(.BOTH.,#371); +#371 = SURFACE_SIDE_STYLE('',(#372)); +#372 = SURFACE_STYLE_FILL_AREA(#373); +#373 = FILL_AREA_STYLE('',(#374)); +#374 = FILL_AREA_STYLE_COLOUR('',#323); +#375 = CURVE_STYLE('',#376,POSITIVE_LENGTH_MEASURE(0.1),#326); +#376 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#377 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#378) + ,#190); +#378 = STYLED_ITEM('color',(#379),#173); +#379 = PRESENTATION_STYLE_ASSIGNMENT((#380,#385)); +#380 = SURFACE_STYLE_USAGE(.BOTH.,#381); +#381 = SURFACE_SIDE_STYLE('',(#382)); +#382 = SURFACE_STYLE_FILL_AREA(#383); +#383 = FILL_AREA_STYLE('',(#384)); +#384 = FILL_AREA_STYLE_COLOUR('',#323); +#385 = CURVE_STYLE('',#386,POSITIVE_LENGTH_MEASURE(0.1),#326); +#386 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +ENDSEC; +END-ISO-10303-21; diff --git a/testData/FusedConductor/FusedConductor.20250930-153234.FCBak b/testData/FusedConductor/FusedConductor.20250930-153234.FCBak new file mode 100644 index 0000000000000000000000000000000000000000..f9436fae275e836b8a311d63640b8fd24bcc94ff GIT binary patch literal 13624 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 W;PmAj1i%Md0|OxeVS;}p;{O98|2JF! literal 0 HcmV?d00001 diff --git a/testData/FusedConductor/FusedConductor.json b/testData/FusedConductor/FusedConductor.json new file mode 100644 index 0000000..b90e55f --- /dev/null +++ b/testData/FusedConductor/FusedConductor.json @@ -0,0 +1,40 @@ +{ + "CrossSection":[ + { + "name":"Shield", + "material":{ + "type":"PEC" + } + }, + { + "name":"A", + "material":{ + "type":"PEC" + } + }, + { + "name":"B", + "material":{ + "type":"PEC" + } + }, + { + "name":"C", + "material":{ + "type":"PEC" + } + }, + { + "name":"D", + "material":{ + "type":"PEC" + } + }, + { + "name":"E", + "material":{ + "type":"PEC" + } + } + ] +} \ No newline at end of file diff --git a/testData/FusedConductor/FusedConductor.step b/testData/FusedConductor/FusedConductor.step new file mode 100644 index 0000000..1ff048b --- /dev/null +++ b/testData/FusedConductor/FusedConductor.step @@ -0,0 +1,401 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('FreeCAD Model'),'2;1'); +FILE_NAME('Open CASCADE Shape Model','2025-10-01T13:24:21',(''),(''), + '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('FusedConductor','FusedConductor','',(#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); +#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('',(3.,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('',(-8.,0.,0.)); +#25 = DIRECTION('',(0.,0.,1.)); +#26 = DIRECTION('',(1.,0.,0.)); +#27 = AXIS2_PLACEMENT_3D('',#28,#29,#30); +#28 = CARTESIAN_POINT('',(-2.,7.,0.)); +#29 = DIRECTION('',(0.,0.,1.)); +#30 = DIRECTION('',(1.,0.,0.)); +#31 = AXIS2_PLACEMENT_3D('',#32,#33,#34); +#32 = CARTESIAN_POINT('',(-2.,30.,0.)); +#33 = DIRECTION('',(0.,0.,1.)); +#34 = DIRECTION('',(1.,0.,0.)); +#35 = AXIS2_PLACEMENT_3D('',#36,#37,#38); +#36 = CARTESIAN_POINT('',(16.,1.,0.)); +#37 = DIRECTION('',(0.,0.,1.)); +#38 = DIRECTION('',(1.,0.,0.)); +#39 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#43)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#40,#41,#42)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#40 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#41 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#42 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#43 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#40, + 'distance_accuracy_value','confusion accuracy'); +#44 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7)); +#45 = SHAPE_DEFINITION_REPRESENTATION(#46,#52); +#46 = PRODUCT_DEFINITION_SHAPE('','',#47); +#47 = PRODUCT_DEFINITION('design','',#48,#51); +#48 = PRODUCT_DEFINITION_FORMATION('','',#49); +#49 = PRODUCT('A','A','',(#50)); +#50 = PRODUCT_CONTEXT('',#2,'mechanical'); +#51 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#52 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#53),#72); +#53 = SHELL_BASED_SURFACE_MODEL('',(#54)); +#54 = OPEN_SHELL('',(#55)); +#55 = ADVANCED_FACE('',(#56),#67,.T.); +#56 = FACE_BOUND('',#57,.T.); +#57 = EDGE_LOOP('',(#58)); +#58 = ORIENTED_EDGE('',*,*,#59,.T.); +#59 = EDGE_CURVE('',#60,#60,#62,.T.); +#60 = VERTEX_POINT('',#61); +#61 = CARTESIAN_POINT('',(8.,0.,0.)); +#62 = CIRCLE('',#63,8.); +#63 = AXIS2_PLACEMENT_3D('',#64,#65,#66); +#64 = CARTESIAN_POINT('',(0.,0.,0.)); +#65 = DIRECTION('',(0.,0.,1.)); +#66 = DIRECTION('',(1.,0.,0.)); +#67 = PLANE('',#68); +#68 = AXIS2_PLACEMENT_3D('',#69,#70,#71); +#69 = CARTESIAN_POINT('',(-5.1E-16,2.E-17,0.)); +#70 = DIRECTION('',(0.,0.,1.)); +#71 = DIRECTION('',(1.,0.,0.)); +#72 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#76)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#73,#74,#75)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#73 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#74 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#75 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#76 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#73, + 'distance_accuracy_value','confusion accuracy'); +#77 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#78,#80); +#78 = ( REPRESENTATION_RELATIONSHIP('','',#52,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#79) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#79 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15); +#80 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#81); +#81 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('6','A','',#5,#47,$); +#82 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#49)); +#83 = SHAPE_DEFINITION_REPRESENTATION(#84,#90); +#84 = PRODUCT_DEFINITION_SHAPE('','',#85); +#85 = PRODUCT_DEFINITION('design','',#86,#89); +#86 = PRODUCT_DEFINITION_FORMATION('','',#87); +#87 = PRODUCT('Shield','Shield','',(#88)); +#88 = PRODUCT_CONTEXT('',#2,'mechanical'); +#89 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#90 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#91),#110); +#91 = SHELL_BASED_SURFACE_MODEL('',(#92)); +#92 = OPEN_SHELL('',(#93)); +#93 = ADVANCED_FACE('',(#94),#105,.T.); +#94 = FACE_BOUND('',#95,.T.); +#95 = EDGE_LOOP('',(#96)); +#96 = ORIENTED_EDGE('',*,*,#97,.T.); +#97 = EDGE_CURVE('',#98,#98,#100,.T.); +#98 = VERTEX_POINT('',#99); +#99 = CARTESIAN_POINT('',(50.,0.,0.)); +#100 = CIRCLE('',#101,50.); +#101 = AXIS2_PLACEMENT_3D('',#102,#103,#104); +#102 = CARTESIAN_POINT('',(0.,0.,0.)); +#103 = DIRECTION('',(0.,0.,1.)); +#104 = DIRECTION('',(1.,0.,-0.)); +#105 = PLANE('',#106); +#106 = AXIS2_PLACEMENT_3D('',#107,#108,#109); +#107 = CARTESIAN_POINT('',(-3.5E-15,-2.04E-15,0.)); +#108 = DIRECTION('',(0.,0.,1.)); +#109 = DIRECTION('',(1.,0.,-0.)); +#110 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#114)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#111,#112,#113)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#111 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#112 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#113 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#114 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#111, + 'distance_accuracy_value','confusion accuracy'); +#115 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#116,#118); +#116 = ( REPRESENTATION_RELATIONSHIP('','',#90,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#117) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#117 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); +#118 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#119 + ); +#119 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('7','Shield','',#5,#85,$); +#120 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#87)); +#121 = SHAPE_DEFINITION_REPRESENTATION(#122,#128); +#122 = PRODUCT_DEFINITION_SHAPE('','',#123); +#123 = PRODUCT_DEFINITION('design','',#124,#127); +#124 = PRODUCT_DEFINITION_FORMATION('','',#125); +#125 = PRODUCT('B','B','',(#126)); +#126 = PRODUCT_CONTEXT('',#2,'mechanical'); +#127 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#128 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#129),#148); +#129 = SHELL_BASED_SURFACE_MODEL('',(#130)); +#130 = OPEN_SHELL('',(#131)); +#131 = ADVANCED_FACE('',(#132),#143,.T.); +#132 = FACE_BOUND('',#133,.T.); +#133 = EDGE_LOOP('',(#134)); +#134 = ORIENTED_EDGE('',*,*,#135,.T.); +#135 = EDGE_CURVE('',#136,#136,#138,.T.); +#136 = VERTEX_POINT('',#137); +#137 = CARTESIAN_POINT('',(8.,0.,0.)); +#138 = CIRCLE('',#139,8.); +#139 = AXIS2_PLACEMENT_3D('',#140,#141,#142); +#140 = CARTESIAN_POINT('',(0.,0.,0.)); +#141 = DIRECTION('',(0.,0.,1.)); +#142 = DIRECTION('',(1.,0.,0.)); +#143 = PLANE('',#144); +#144 = AXIS2_PLACEMENT_3D('',#145,#146,#147); +#145 = CARTESIAN_POINT('',(-5.1E-16,2.E-17,0.)); +#146 = DIRECTION('',(0.,0.,1.)); +#147 = DIRECTION('',(1.,0.,0.)); +#148 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#152)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#149,#150,#151)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#149 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#150 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#151 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#152 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#149, + 'distance_accuracy_value','confusion accuracy'); +#153 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#154,#156); +#154 = ( REPRESENTATION_RELATIONSHIP('','',#128,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#155) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#155 = ITEM_DEFINED_TRANSFORMATION('','',#11,#23); +#156 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#157 + ); +#157 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('8','B','',#5,#123,$); +#158 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#125)); +#159 = SHAPE_DEFINITION_REPRESENTATION(#160,#166); +#160 = PRODUCT_DEFINITION_SHAPE('','',#161); +#161 = PRODUCT_DEFINITION('design','',#162,#165); +#162 = PRODUCT_DEFINITION_FORMATION('','',#163); +#163 = PRODUCT('C','C','',(#164)); +#164 = PRODUCT_CONTEXT('',#2,'mechanical'); +#165 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#166 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#167),#186); +#167 = SHELL_BASED_SURFACE_MODEL('',(#168)); +#168 = OPEN_SHELL('',(#169)); +#169 = ADVANCED_FACE('',(#170),#181,.T.); +#170 = FACE_BOUND('',#171,.T.); +#171 = EDGE_LOOP('',(#172)); +#172 = ORIENTED_EDGE('',*,*,#173,.T.); +#173 = EDGE_CURVE('',#174,#174,#176,.T.); +#174 = VERTEX_POINT('',#175); +#175 = CARTESIAN_POINT('',(8.,0.,0.)); +#176 = CIRCLE('',#177,8.); +#177 = AXIS2_PLACEMENT_3D('',#178,#179,#180); +#178 = CARTESIAN_POINT('',(0.,0.,0.)); +#179 = DIRECTION('',(0.,0.,1.)); +#180 = DIRECTION('',(1.,0.,0.)); +#181 = PLANE('',#182); +#182 = AXIS2_PLACEMENT_3D('',#183,#184,#185); +#183 = CARTESIAN_POINT('',(-5.127900497023E-16,1.528755336223E-17,0.)); +#184 = DIRECTION('',(0.,0.,1.)); +#185 = DIRECTION('',(1.,0.,0.)); +#186 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#190)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#187,#188,#189)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#187 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#188 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#189 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#190 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#187, + 'distance_accuracy_value','confusion accuracy'); +#191 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#192,#194); +#192 = ( REPRESENTATION_RELATIONSHIP('','',#166,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#193) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#193 = ITEM_DEFINED_TRANSFORMATION('','',#11,#27); +#194 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#195 + ); +#195 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('9','C','',#5,#161,$); +#196 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#163)); +#197 = SHAPE_DEFINITION_REPRESENTATION(#198,#204); +#198 = PRODUCT_DEFINITION_SHAPE('','',#199); +#199 = PRODUCT_DEFINITION('design','',#200,#203); +#200 = PRODUCT_DEFINITION_FORMATION('','',#201); +#201 = PRODUCT('D','D','',(#202)); +#202 = PRODUCT_CONTEXT('',#2,'mechanical'); +#203 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#204 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#205),#224); +#205 = SHELL_BASED_SURFACE_MODEL('',(#206)); +#206 = OPEN_SHELL('',(#207)); +#207 = ADVANCED_FACE('',(#208),#219,.T.); +#208 = FACE_BOUND('',#209,.T.); +#209 = EDGE_LOOP('',(#210)); +#210 = ORIENTED_EDGE('',*,*,#211,.T.); +#211 = EDGE_CURVE('',#212,#212,#214,.T.); +#212 = VERTEX_POINT('',#213); +#213 = CARTESIAN_POINT('',(8.,0.,0.)); +#214 = CIRCLE('',#215,8.); +#215 = AXIS2_PLACEMENT_3D('',#216,#217,#218); +#216 = CARTESIAN_POINT('',(0.,0.,0.)); +#217 = DIRECTION('',(0.,0.,1.)); +#218 = DIRECTION('',(1.,0.,0.)); +#219 = PLANE('',#220); +#220 = AXIS2_PLACEMENT_3D('',#221,#222,#223); +#221 = CARTESIAN_POINT('',(-5.127900497023E-16,1.528755336223E-17,0.)); +#222 = DIRECTION('',(0.,0.,1.)); +#223 = DIRECTION('',(1.,0.,0.)); +#224 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#228)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#225,#226,#227)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#225 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#226 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#227 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#228 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#225, + 'distance_accuracy_value','confusion accuracy'); +#229 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#230,#232); +#230 = ( REPRESENTATION_RELATIONSHIP('','',#204,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#231) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#231 = ITEM_DEFINED_TRANSFORMATION('','',#11,#31); +#232 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#233 + ); +#233 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('10','D','',#5,#199,$); +#234 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#201)); +#235 = SHAPE_DEFINITION_REPRESENTATION(#236,#242); +#236 = PRODUCT_DEFINITION_SHAPE('','',#237); +#237 = PRODUCT_DEFINITION('design','',#238,#241); +#238 = PRODUCT_DEFINITION_FORMATION('','',#239); +#239 = PRODUCT('E','E','',(#240)); +#240 = PRODUCT_CONTEXT('',#2,'mechanical'); +#241 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#242 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#243),#262); +#243 = SHELL_BASED_SURFACE_MODEL('',(#244)); +#244 = OPEN_SHELL('',(#245)); +#245 = ADVANCED_FACE('',(#246),#257,.T.); +#246 = FACE_BOUND('',#247,.T.); +#247 = EDGE_LOOP('',(#248)); +#248 = ORIENTED_EDGE('',*,*,#249,.T.); +#249 = EDGE_CURVE('',#250,#250,#252,.T.); +#250 = VERTEX_POINT('',#251); +#251 = CARTESIAN_POINT('',(8.,0.,0.)); +#252 = CIRCLE('',#253,8.); +#253 = AXIS2_PLACEMENT_3D('',#254,#255,#256); +#254 = CARTESIAN_POINT('',(0.,0.,0.)); +#255 = DIRECTION('',(0.,0.,1.)); +#256 = DIRECTION('',(1.,0.,0.)); +#257 = PLANE('',#258); +#258 = AXIS2_PLACEMENT_3D('',#259,#260,#261); +#259 = CARTESIAN_POINT('',(-5.127900497023E-16,1.528755336223E-17,0.)); +#260 = DIRECTION('',(0.,0.,1.)); +#261 = DIRECTION('',(1.,0.,0.)); +#262 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#266)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#263,#264,#265)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#263 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#264 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#265 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#266 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#263, + 'distance_accuracy_value','confusion accuracy'); +#267 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#268,#270); +#268 = ( REPRESENTATION_RELATIONSHIP('','',#242,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#269) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#269 = ITEM_DEFINED_TRANSFORMATION('','',#11,#35); +#270 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#271 + ); +#271 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('11','E','',#5,#237,$); +#272 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#239)); +#273 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#274) + ,#262); +#274 = STYLED_ITEM('color',(#275),#245); +#275 = PRESENTATION_STYLE_ASSIGNMENT((#276,#282)); +#276 = SURFACE_STYLE_USAGE(.BOTH.,#277); +#277 = SURFACE_SIDE_STYLE('',(#278)); +#278 = SURFACE_STYLE_FILL_AREA(#279); +#279 = FILL_AREA_STYLE('',(#280)); +#280 = FILL_AREA_STYLE_COLOUR('',#281); +#281 = COLOUR_RGB('',0.800000010877,0.800000010877,0.800000010877); +#282 = CURVE_STYLE('',#283,POSITIVE_LENGTH_MEASURE(0.1),#284); +#283 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#284 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, + 9.803921802644E-02); +#285 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#286) + ,#148); +#286 = STYLED_ITEM('color',(#287),#131); +#287 = PRESENTATION_STYLE_ASSIGNMENT((#288,#293)); +#288 = SURFACE_STYLE_USAGE(.BOTH.,#289); +#289 = SURFACE_SIDE_STYLE('',(#290)); +#290 = SURFACE_STYLE_FILL_AREA(#291); +#291 = FILL_AREA_STYLE('',(#292)); +#292 = FILL_AREA_STYLE_COLOUR('',#281); +#293 = CURVE_STYLE('',#294,POSITIVE_LENGTH_MEASURE(0.1),#284); +#294 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#295 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#296) + ,#72); +#296 = STYLED_ITEM('color',(#297),#55); +#297 = PRESENTATION_STYLE_ASSIGNMENT((#298,#303)); +#298 = SURFACE_STYLE_USAGE(.BOTH.,#299); +#299 = SURFACE_SIDE_STYLE('',(#300)); +#300 = SURFACE_STYLE_FILL_AREA(#301); +#301 = FILL_AREA_STYLE('',(#302)); +#302 = FILL_AREA_STYLE_COLOUR('',#281); +#303 = CURVE_STYLE('',#304,POSITIVE_LENGTH_MEASURE(0.1),#284); +#304 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#305 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#306) + ,#186); +#306 = STYLED_ITEM('color',(#307),#169); +#307 = PRESENTATION_STYLE_ASSIGNMENT((#308,#313)); +#308 = SURFACE_STYLE_USAGE(.BOTH.,#309); +#309 = SURFACE_SIDE_STYLE('',(#310)); +#310 = SURFACE_STYLE_FILL_AREA(#311); +#311 = FILL_AREA_STYLE('',(#312)); +#312 = FILL_AREA_STYLE_COLOUR('',#281); +#313 = CURVE_STYLE('',#314,POSITIVE_LENGTH_MEASURE(0.1),#284); +#314 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#315 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#316) + ,#224); +#316 = STYLED_ITEM('color',(#317),#207); +#317 = PRESENTATION_STYLE_ASSIGNMENT((#318,#323)); +#318 = SURFACE_STYLE_USAGE(.BOTH.,#319); +#319 = SURFACE_SIDE_STYLE('',(#320)); +#320 = SURFACE_STYLE_FILL_AREA(#321); +#321 = FILL_AREA_STYLE('',(#322)); +#322 = FILL_AREA_STYLE_COLOUR('',#281); +#323 = CURVE_STYLE('',#324,POSITIVE_LENGTH_MEASURE(0.1),#284); +#324 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#325 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#326) + ,#110); +#326 = STYLED_ITEM('color',(#327),#93); +#327 = PRESENTATION_STYLE_ASSIGNMENT((#328,#335)); +#328 = SURFACE_STYLE_USAGE(.BOTH.,#329); +#329 = SURFACE_SIDE_STYLE('',(#330,#333)); +#330 = SURFACE_STYLE_FILL_AREA(#331); +#331 = FILL_AREA_STYLE('',(#332)); +#332 = FILL_AREA_STYLE_COLOUR('',#281); +#333 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#281,( + #334)); +#334 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#335 = CURVE_STYLE('',#336,POSITIVE_LENGTH_MEASURE(0.1),#284); +#336 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +ENDSEC; +END-ISO-10303-21; From 304dabd61d7e986c8e8cd9ec5fd66ae370c3a71a Mon Sep 17 00:00:00 2001 From: adrianarce-elemwave Date: Thu, 2 Oct 2025 17:43:17 +0200 Subject: [PATCH 03/23] Added json files --- partially_filled_coax.areas.json | 20 - testData/agrawal1981/agrawal1981.json | 46 + .../conductor_and_outer_dielectric.json | 16 + testData/empty_coax/empty_coax.json | 16 + testData/five_wires/five_wires.json | 70 ++ .../lansink2024_single_wire_multipolar.json | 16 + testData/nested_coax/nested_coax.json | 22 + .../three_wires_ribbon.20250709-095732.FCBak | Bin 0 -> 15650 bytes .../three_wires_ribbon.FCStd | Bin 15650 -> 21065 bytes .../three_wires_ribbon.json | 40 + .../three_wires_ribbon.step | 914 +++++++----------- testData/two_wires_coax/two_wires_coax.json | 22 + .../two_wires_open.20250709-095732.FCBak | Bin 0 -> 5861 bytes testData/two_wires_open/two_wires_open.FCStd | Bin 5861 -> 6171 bytes testData/two_wires_open/two_wires_open.json | 16 + testData/two_wires_open/two_wires_open.step | 328 +++---- .../unshielded_multiwire.json | 22 + 17 files changed, 748 insertions(+), 800 deletions(-) delete mode 100644 partially_filled_coax.areas.json create mode 100644 testData/agrawal1981/agrawal1981.json create mode 100644 testData/conductor_and_outer_dielectric/conductor_and_outer_dielectric.json create mode 100644 testData/empty_coax/empty_coax.json create mode 100644 testData/five_wires/five_wires.json create mode 100644 testData/lansink2024_single_wire_multipolar/lansink2024_single_wire_multipolar.json create mode 100644 testData/nested_coax/nested_coax.json create mode 100644 testData/three_wires_ribbon/three_wires_ribbon.20250709-095732.FCBak create mode 100644 testData/three_wires_ribbon/three_wires_ribbon.json create mode 100644 testData/two_wires_coax/two_wires_coax.json create mode 100644 testData/two_wires_open/two_wires_open.20250709-095732.FCBak create mode 100644 testData/two_wires_open/two_wires_open.json create mode 100644 testData/unshielded_multiwire/unshielded_multiwire.json diff --git a/partially_filled_coax.areas.json b/partially_filled_coax.areas.json deleted file mode 100644 index 5d26d89..0000000 --- a/partially_filled_coax.areas.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "geometries": [ - { - "geometry": "Vacuum_0", - "area": 4005.5306333269873 - }, - { - "geometry": "Dielectric_1", - "area": 1884.9555921538756 - }, - { - "geometry": "Conductor_0", - "area": 7853.98163397448 - }, - { - "geometry": "Conductor_1", - "area": 1963.49540849362 - } - ] -} \ No newline at end of file diff --git a/testData/agrawal1981/agrawal1981.json b/testData/agrawal1981/agrawal1981.json new file mode 100644 index 0000000..c341a70 --- /dev/null +++ b/testData/agrawal1981/agrawal1981.json @@ -0,0 +1,46 @@ +{ + "CrossSection":[ + { + "name":"Conductor_0", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_001", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_002", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_003", + "material":{ + "type":"PEC" + } + }, + { + "name":"Dielectric_001", + "material":{ + "type":"Dielectric" + } + }, + { + "name":"Dielectric_002", + "material":{ + "type":"Dielectric" + } + }, + { + "name":"Dielectric_003", + "material":{ + "type":"Dielectric" + } + } + ] +} \ No newline at end of file diff --git a/testData/conductor_and_outer_dielectric/conductor_and_outer_dielectric.json b/testData/conductor_and_outer_dielectric/conductor_and_outer_dielectric.json new file mode 100644 index 0000000..cf9fd42 --- /dev/null +++ b/testData/conductor_and_outer_dielectric/conductor_and_outer_dielectric.json @@ -0,0 +1,16 @@ +{ + "CrossSection":[ + { + "name":"Conductor_000", + "material":{ + "type":"PEC" + } + }, + { + "name":"Dielectric_000", + "material":{ + "type":"Dielectric" + } + } + ] +} \ No newline at end of file diff --git a/testData/empty_coax/empty_coax.json b/testData/empty_coax/empty_coax.json new file mode 100644 index 0000000..ac13926 --- /dev/null +++ b/testData/empty_coax/empty_coax.json @@ -0,0 +1,16 @@ +{ + "CrossSection":[ + { + "name":"Conductor_0", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_1", + "material":{ + "type":"PEC" + } + } + ] +} \ No newline at end of file diff --git a/testData/five_wires/five_wires.json b/testData/five_wires/five_wires.json new file mode 100644 index 0000000..baf93aa --- /dev/null +++ b/testData/five_wires/five_wires.json @@ -0,0 +1,70 @@ +{ + "CrossSection":[ + { + "name":"Conductor_0", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_1", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_002", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_003", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_004", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_005", + "material":{ + "type":"PEC" + } + }, + { + "name":"Dielectric_1", + "material":{ + "type":"Dielectric" + } + }, + { + "name":"Dielectric_002", + "material":{ + "type":"Dielectric" + } + }, + { + "name":"Dielectric_003", + "material":{ + "type":"Dielectric" + } + }, + { + "name":"Dielectric_004", + "material":{ + "type":"Dielectric" + } + }, + { + "name":"Dielectric_005", + "material":{ + "type":"Dielectric" + } + } + ] +} \ No newline at end of file diff --git a/testData/lansink2024_single_wire_multipolar/lansink2024_single_wire_multipolar.json b/testData/lansink2024_single_wire_multipolar/lansink2024_single_wire_multipolar.json new file mode 100644 index 0000000..d4a35a4 --- /dev/null +++ b/testData/lansink2024_single_wire_multipolar/lansink2024_single_wire_multipolar.json @@ -0,0 +1,16 @@ +{ + "CrossSection":[ + { + "name":"Conductor_0", + "material":{ + "type":"PEC" + } + }, + { + "name":"Dielectric_0", + "material":{ + "type":"Dielectric" + } + } + ] +} \ No newline at end of file diff --git a/testData/nested_coax/nested_coax.json b/testData/nested_coax/nested_coax.json new file mode 100644 index 0000000..c82189f --- /dev/null +++ b/testData/nested_coax/nested_coax.json @@ -0,0 +1,22 @@ +{ + "CrossSection":[ + { + "name":"Conductor_0", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_1", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_2", + "material":{ + "type":"PEC" + } + } + ] +} \ No newline at end of file diff --git a/testData/three_wires_ribbon/three_wires_ribbon.20250709-095732.FCBak b/testData/three_wires_ribbon/three_wires_ribbon.20250709-095732.FCBak new file mode 100644 index 0000000000000000000000000000000000000000..fcc9ca8d3cc87f5cd58cc6e2f2d8950b5496bc49 GIT binary patch literal 15650 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 WJ$yL^5lGC=*jQLlgz#Sl@c#kbWRH&k literal 0 HcmV?d00001 diff --git a/testData/three_wires_ribbon/three_wires_ribbon.FCStd b/testData/three_wires_ribbon/three_wires_ribbon.FCStd index fcc9ca8d3cc87f5cd58cc6e2f2d8950b5496bc49..d84b8d0f7565bba9608a9b6a1840e05d8dfd9428 100644 GIT binary patch literal 21065 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 X3vjp$@EH}HJ=4d>*2Ye6X88UG#qI{? literal 15650 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 WJ$yL^5lGC=*jQLlgz#Sl@c#kbWRH&k diff --git a/testData/three_wires_ribbon/three_wires_ribbon.json b/testData/three_wires_ribbon/three_wires_ribbon.json new file mode 100644 index 0000000..292fe72 --- /dev/null +++ b/testData/three_wires_ribbon/three_wires_ribbon.json @@ -0,0 +1,40 @@ +{ + "CrossSection":[ + { + "name":"Conductor_000", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_001", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_002", + "material":{ + "type":"PEC" + } + }, + { + "name":"Dielectric_0", + "material":{ + "type":"Dielectric" + } + }, + { + "name":"Dielectric_001", + "material":{ + "type":"Dielectric" + } + }, + { + "name":"Dielectric_002", + "material":{ + "type":"Dielectric" + } + } + ] +} \ No newline at end of file diff --git a/testData/three_wires_ribbon/three_wires_ribbon.step b/testData/three_wires_ribbon/three_wires_ribbon.step index 7e48d70..9e4ad8f 100644 --- a/testData/three_wires_ribbon/three_wires_ribbon.step +++ b/testData/three_wires_ribbon/three_wires_ribbon.step @@ -1,8 +1,8 @@ ISO-10303-21; HEADER; FILE_DESCRIPTION(('FreeCAD Model'),'2;1'); -FILE_NAME('Open CASCADE Shape Model','2023-09-19T20:10:34',(''),(''), - 'Open CASCADE STEP processor 7.6','FreeCAD','Unknown'); +FILE_NAME('Open CASCADE Shape Model','2025-10-02T13:59:31',(''),(''), + 'Open CASCADE STEP processor 7.8','FreeCAD','Unknown'); FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }')); ENDSEC; DATA; @@ -17,7 +17,7 @@ DATA; #7 = PRODUCT('three_wires_ribbon','three_wires_ribbon','',(#8)); #8 = PRODUCT_CONTEXT('',#2,'mechanical'); #9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#10 = SHAPE_REPRESENTATION('',(#11,#15,#19,#23,#27),#31); +#10 = SHAPE_REPRESENTATION('',(#11,#15,#19,#23,#27,#31,#35),#39); #11 = AXIS2_PLACEMENT_3D('',#12,#13,#14); #12 = CARTESIAN_POINT('',(0.,0.,0.)); #13 = DIRECTION('',(0.,0.,1.)); @@ -31,606 +31,382 @@ DATA; #21 = DIRECTION('',(0.,0.,1.)); #22 = DIRECTION('',(1.,0.,0.)); #23 = AXIS2_PLACEMENT_3D('',#24,#25,#26); -#24 = CARTESIAN_POINT('',(0.,0.,0.)); +#24 = CARTESIAN_POINT('',(1.27,0.,0.)); #25 = DIRECTION('',(0.,0.,1.)); #26 = DIRECTION('',(1.,0.,0.)); #27 = AXIS2_PLACEMENT_3D('',#28,#29,#30); -#28 = CARTESIAN_POINT('',(1.27,1.E-16,0.)); +#28 = CARTESIAN_POINT('',(1.27,0.,0.)); #29 = DIRECTION('',(0.,0.,1.)); #30 = DIRECTION('',(1.,0.,0.)); -#31 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#35)) GLOBAL_UNIT_ASSIGNED_CONTEXT( -(#32,#33,#34)) REPRESENTATION_CONTEXT('Context #1', +#31 = AXIS2_PLACEMENT_3D('',#32,#33,#34); +#32 = CARTESIAN_POINT('',(2.54,0.,0.)); +#33 = DIRECTION('',(0.,0.,1.)); +#34 = DIRECTION('',(1.,0.,0.)); +#35 = AXIS2_PLACEMENT_3D('',#36,#37,#38); +#36 = CARTESIAN_POINT('',(2.54,0.,0.)); +#37 = DIRECTION('',(0.,0.,1.)); +#38 = DIRECTION('',(1.,0.,0.)); +#39 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#43)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#40,#41,#42)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#32 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#33 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#34 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#35 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#32, +#40 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#41 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#42 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#43 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#40, 'distance_accuracy_value','confusion accuracy'); -#36 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7)); -#37 = SHAPE_DEFINITION_REPRESENTATION(#38,#44); -#38 = PRODUCT_DEFINITION_SHAPE('','',#39); -#39 = PRODUCT_DEFINITION('design','',#40,#43); -#40 = PRODUCT_DEFINITION_FORMATION('','',#41); -#41 = PRODUCT('solid_wire_000','solid_wire_000','',(#42)); -#42 = PRODUCT_CONTEXT('',#2,'mechanical'); -#43 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#44 = SHAPE_REPRESENTATION('',(#11,#45,#49),#53); -#45 = AXIS2_PLACEMENT_3D('',#46,#47,#48); -#46 = CARTESIAN_POINT('',(0.,0.,0.)); -#47 = DIRECTION('',(0.,0.,1.)); -#48 = DIRECTION('',(1.,0.,0.)); -#49 = AXIS2_PLACEMENT_3D('',#50,#51,#52); -#50 = CARTESIAN_POINT('',(0.,0.,0.)); -#51 = DIRECTION('',(0.,0.,1.)); -#52 = DIRECTION('',(1.,0.,0.)); -#53 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#57)) GLOBAL_UNIT_ASSIGNED_CONTEXT( -(#54,#55,#56)) REPRESENTATION_CONTEXT('Context #1', +#44 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7)); +#45 = SHAPE_DEFINITION_REPRESENTATION(#46,#52); +#46 = PRODUCT_DEFINITION_SHAPE('','',#47); +#47 = PRODUCT_DEFINITION('design','',#48,#51); +#48 = PRODUCT_DEFINITION_FORMATION('','',#49); +#49 = PRODUCT('Conductor_000','Conductor_000','',(#50)); +#50 = PRODUCT_CONTEXT('',#2,'mechanical'); +#51 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#52 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#53),#72); +#53 = SHELL_BASED_SURFACE_MODEL('',(#54)); +#54 = OPEN_SHELL('',(#55)); +#55 = ADVANCED_FACE('',(#56),#67,.T.); +#56 = FACE_BOUND('',#57,.T.); +#57 = EDGE_LOOP('',(#58)); +#58 = ORIENTED_EDGE('',*,*,#59,.T.); +#59 = EDGE_CURVE('',#60,#60,#62,.T.); +#60 = VERTEX_POINT('',#61); +#61 = CARTESIAN_POINT('',(0.1905,0.,0.)); +#62 = CIRCLE('',#63,0.1905); +#63 = AXIS2_PLACEMENT_3D('',#64,#65,#66); +#64 = CARTESIAN_POINT('',(0.,0.,0.)); +#65 = DIRECTION('',(0.,0.,1.)); +#66 = DIRECTION('',(1.,0.,-0.)); +#67 = PLANE('',#68); +#68 = AXIS2_PLACEMENT_3D('',#69,#70,#71); +#69 = CARTESIAN_POINT('',(-7.009925220121E-18,-7.665819544648E-19,0.)); +#70 = DIRECTION('',(0.,0.,1.)); +#71 = DIRECTION('',(1.,0.,-0.)); +#72 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#76)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#73,#74,#75)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#54 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#55 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#56 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#57 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#54, +#73 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#74 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#75 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#76 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#73, 'distance_accuracy_value','confusion accuracy'); -#58 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#59,#61); -#59 = ( REPRESENTATION_RELATIONSHIP('','',#44,#10) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#60) +#77 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#78,#80); +#78 = ( REPRESENTATION_RELATIONSHIP('','',#52,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#79) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#60 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15); -#61 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#62); -#62 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('13','solid_wire_000','',#5,#39,$); -#63 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#41)); -#64 = SHAPE_DEFINITION_REPRESENTATION(#65,#71); -#65 = PRODUCT_DEFINITION_SHAPE('','',#66); -#66 = PRODUCT_DEFINITION('design','',#67,#70); -#67 = PRODUCT_DEFINITION_FORMATION('','',#68); -#68 = PRODUCT('Conductor_0','Conductor_0','',(#69)); -#69 = PRODUCT_CONTEXT('',#2,'mechanical'); -#70 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#71 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#72),#99); -#72 = SHELL_BASED_SURFACE_MODEL('',(#73)); -#73 = OPEN_SHELL('',(#74)); -#74 = ADVANCED_FACE('',(#75),#88,.T.); -#75 = FACE_BOUND('',#76,.T.); -#76 = EDGE_LOOP('',(#77)); -#77 = ORIENTED_EDGE('',*,*,#78,.T.); -#78 = EDGE_CURVE('',#79,#79,#81,.T.); -#79 = VERTEX_POINT('',#80); -#80 = CARTESIAN_POINT('',(0.1905,0.,0.)); -#81 = SURFACE_CURVE('',#82,(#87),.PCURVE_S1.); -#82 = CIRCLE('',#83,0.1905); -#83 = AXIS2_PLACEMENT_3D('',#84,#85,#86); -#84 = CARTESIAN_POINT('',(0.,0.,0.)); -#85 = DIRECTION('',(0.,0.,1.)); -#86 = DIRECTION('',(1.,0.,-0.)); -#87 = PCURVE('',#88,#93); -#88 = PLANE('',#89); -#89 = AXIS2_PLACEMENT_3D('',#90,#91,#92); -#90 = CARTESIAN_POINT('',(-7.009925220121E-18,-7.665819544648E-19,0.)); -#91 = DIRECTION('',(0.,0.,1.)); -#92 = DIRECTION('',(1.,0.,-0.)); -#93 = DEFINITIONAL_REPRESENTATION('',(#94),#98); -#94 = CIRCLE('',#95,0.1905); -#95 = AXIS2_PLACEMENT_2D('',#96,#97); -#96 = CARTESIAN_POINT('',(7.009925220121E-18,7.665819544648E-19)); -#97 = DIRECTION('',(1.,0.)); -#98 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) -PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' - ) ); -#99 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#103)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#100,#101,#102)) REPRESENTATION_CONTEXT('Context #1', +#79 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15); +#80 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#81); +#81 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('17','Conductor_000','',#5,#47,$); +#82 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#49)); +#83 = SHAPE_DEFINITION_REPRESENTATION(#84,#90); +#84 = PRODUCT_DEFINITION_SHAPE('','',#85); +#85 = PRODUCT_DEFINITION('design','',#86,#89); +#86 = PRODUCT_DEFINITION_FORMATION('','',#87); +#87 = PRODUCT('Dielectric_0','Dielectric_0','',(#88)); +#88 = PRODUCT_CONTEXT('',#2,'mechanical'); +#89 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#90 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#91),#110); +#91 = SHELL_BASED_SURFACE_MODEL('',(#92)); +#92 = OPEN_SHELL('',(#93)); +#93 = ADVANCED_FACE('',(#94),#105,.T.); +#94 = FACE_BOUND('',#95,.T.); +#95 = EDGE_LOOP('',(#96)); +#96 = ORIENTED_EDGE('',*,*,#97,.T.); +#97 = EDGE_CURVE('',#98,#98,#100,.T.); +#98 = VERTEX_POINT('',#99); +#99 = CARTESIAN_POINT('',(0.4445,0.,0.)); +#100 = CIRCLE('',#101,0.4445); +#101 = AXIS2_PLACEMENT_3D('',#102,#103,#104); +#102 = CARTESIAN_POINT('',(0.,0.,0.)); +#103 = DIRECTION('',(0.,0.,1.)); +#104 = DIRECTION('',(1.,0.,-0.)); +#105 = PLANE('',#106); +#106 = AXIS2_PLACEMENT_3D('',#107,#108,#109); +#107 = CARTESIAN_POINT('',(-1.201701466306E-17,5.888845918762E-18,0.)); +#108 = DIRECTION('',(0.,0.,1.)); +#109 = DIRECTION('',(1.,0.,-0.)); +#110 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#114)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#111,#112,#113)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#100 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#101 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#102 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#103 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#100, +#111 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#112 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#113 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#114 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#111, 'distance_accuracy_value','confusion accuracy'); -#104 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#105,#107); -#105 = ( REPRESENTATION_RELATIONSHIP('','',#71,#44) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#106) +#115 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#116,#118); +#116 = ( REPRESENTATION_RELATIONSHIP('','',#90,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#117) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#106 = ITEM_DEFINED_TRANSFORMATION('','',#11,#45); -#107 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#108 +#117 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); +#118 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#119 ); -#108 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('11','Conductor_0','',#39,#66,$); -#109 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#68)); -#110 = SHAPE_DEFINITION_REPRESENTATION(#111,#117); -#111 = PRODUCT_DEFINITION_SHAPE('','',#112); -#112 = PRODUCT_DEFINITION('design','',#113,#116); -#113 = PRODUCT_DEFINITION_FORMATION('','',#114); -#114 = PRODUCT('Dielectric_0','Dielectric_0','',(#115)); -#115 = PRODUCT_CONTEXT('',#2,'mechanical'); -#116 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#117 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#118),#145); -#118 = SHELL_BASED_SURFACE_MODEL('',(#119)); -#119 = OPEN_SHELL('',(#120)); -#120 = ADVANCED_FACE('',(#121),#134,.T.); -#121 = FACE_BOUND('',#122,.T.); -#122 = EDGE_LOOP('',(#123)); -#123 = ORIENTED_EDGE('',*,*,#124,.T.); -#124 = EDGE_CURVE('',#125,#125,#127,.T.); -#125 = VERTEX_POINT('',#126); -#126 = CARTESIAN_POINT('',(0.4445,0.,0.)); -#127 = SURFACE_CURVE('',#128,(#133),.PCURVE_S1.); -#128 = CIRCLE('',#129,0.4445); -#129 = AXIS2_PLACEMENT_3D('',#130,#131,#132); -#130 = CARTESIAN_POINT('',(0.,0.,0.)); -#131 = DIRECTION('',(0.,0.,1.)); -#132 = DIRECTION('',(1.,0.,-0.)); -#133 = PCURVE('',#134,#139); -#134 = PLANE('',#135); -#135 = AXIS2_PLACEMENT_3D('',#136,#137,#138); -#136 = CARTESIAN_POINT('',(-1.201701466306E-17,5.888845918762E-18,0.)); -#137 = DIRECTION('',(0.,0.,1.)); -#138 = DIRECTION('',(1.,0.,-0.)); -#139 = DEFINITIONAL_REPRESENTATION('',(#140),#144); -#140 = CIRCLE('',#141,0.4445); -#141 = AXIS2_PLACEMENT_2D('',#142,#143); -#142 = CARTESIAN_POINT('',(1.201701466306E-17,-5.888845918762E-18)); -#143 = DIRECTION('',(1.,0.)); -#144 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) -PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' - ) ); -#145 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#149)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#146,#147,#148)) REPRESENTATION_CONTEXT('Context #1', +#119 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('18','Dielectric_0','',#5,#85,$); +#120 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#87)); +#121 = SHAPE_DEFINITION_REPRESENTATION(#122,#128); +#122 = PRODUCT_DEFINITION_SHAPE('','',#123); +#123 = PRODUCT_DEFINITION('design','',#124,#127); +#124 = PRODUCT_DEFINITION_FORMATION('','',#125); +#125 = PRODUCT('Conductor_001','Conductor_001','',(#126)); +#126 = PRODUCT_CONTEXT('',#2,'mechanical'); +#127 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#128 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#129),#148); +#129 = SHELL_BASED_SURFACE_MODEL('',(#130)); +#130 = OPEN_SHELL('',(#131)); +#131 = ADVANCED_FACE('',(#132),#143,.T.); +#132 = FACE_BOUND('',#133,.T.); +#133 = EDGE_LOOP('',(#134)); +#134 = ORIENTED_EDGE('',*,*,#135,.T.); +#135 = EDGE_CURVE('',#136,#136,#138,.T.); +#136 = VERTEX_POINT('',#137); +#137 = CARTESIAN_POINT('',(0.1905,0.,0.)); +#138 = CIRCLE('',#139,0.1905); +#139 = AXIS2_PLACEMENT_3D('',#140,#141,#142); +#140 = CARTESIAN_POINT('',(0.,0.,0.)); +#141 = DIRECTION('',(0.,0.,1.)); +#142 = DIRECTION('',(1.,0.,0.)); +#143 = PLANE('',#144); +#144 = AXIS2_PLACEMENT_3D('',#145,#146,#147); +#145 = CARTESIAN_POINT('',(-7.009925220121E-18,-7.665819544648E-19,0.)); +#146 = DIRECTION('',(0.,0.,1.)); +#147 = DIRECTION('',(1.,0.,0.)); +#148 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#152)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#149,#150,#151)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#146 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#147 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#148 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#149 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#146, +#149 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#150 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#151 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#152 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#149, 'distance_accuracy_value','confusion accuracy'); -#150 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#151,#153); -#151 = ( REPRESENTATION_RELATIONSHIP('','',#117,#44) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#152) +#153 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#154,#156); +#154 = ( REPRESENTATION_RELATIONSHIP('','',#128,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#155) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#152 = ITEM_DEFINED_TRANSFORMATION('','',#11,#49); -#153 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#154 +#155 = ITEM_DEFINED_TRANSFORMATION('','',#11,#23); +#156 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#157 ); -#154 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('12','Dielectric_0','',#39,#112,$ +#157 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('19','Conductor_001','',#5,#123,$ ); -#155 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#114)); -#156 = SHAPE_DEFINITION_REPRESENTATION(#157,#163); -#157 = PRODUCT_DEFINITION_SHAPE('','',#158); -#158 = PRODUCT_DEFINITION('design','',#159,#162); -#159 = PRODUCT_DEFINITION_FORMATION('','',#160); -#160 = PRODUCT('solid_wire_001','solid_wire_001','',(#161)); -#161 = PRODUCT_CONTEXT('',#2,'mechanical'); -#162 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#163 = SHAPE_REPRESENTATION('',(#11,#164,#168),#172); -#164 = AXIS2_PLACEMENT_3D('',#165,#166,#167); -#165 = CARTESIAN_POINT('',(1.27,0.,0.)); -#166 = DIRECTION('',(0.,0.,1.)); -#167 = DIRECTION('',(1.,0.,0.)); -#168 = AXIS2_PLACEMENT_3D('',#169,#170,#171); -#169 = CARTESIAN_POINT('',(1.27,0.,0.)); -#170 = DIRECTION('',(0.,0.,1.)); -#171 = DIRECTION('',(1.,0.,0.)); -#172 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#176)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#173,#174,#175)) REPRESENTATION_CONTEXT('Context #1', +#158 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#125)); +#159 = SHAPE_DEFINITION_REPRESENTATION(#160,#166); +#160 = PRODUCT_DEFINITION_SHAPE('','',#161); +#161 = PRODUCT_DEFINITION('design','',#162,#165); +#162 = PRODUCT_DEFINITION_FORMATION('','',#163); +#163 = PRODUCT('Dielectric_001','Dielectric_001','',(#164)); +#164 = PRODUCT_CONTEXT('',#2,'mechanical'); +#165 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#166 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#167),#186); +#167 = SHELL_BASED_SURFACE_MODEL('',(#168)); +#168 = OPEN_SHELL('',(#169)); +#169 = ADVANCED_FACE('',(#170),#181,.T.); +#170 = FACE_BOUND('',#171,.T.); +#171 = EDGE_LOOP('',(#172)); +#172 = ORIENTED_EDGE('',*,*,#173,.T.); +#173 = EDGE_CURVE('',#174,#174,#176,.T.); +#174 = VERTEX_POINT('',#175); +#175 = CARTESIAN_POINT('',(0.4445,0.,0.)); +#176 = CIRCLE('',#177,0.4445); +#177 = AXIS2_PLACEMENT_3D('',#178,#179,#180); +#178 = CARTESIAN_POINT('',(0.,0.,0.)); +#179 = DIRECTION('',(0.,0.,1.)); +#180 = DIRECTION('',(1.,0.,0.)); +#181 = PLANE('',#182); +#182 = AXIS2_PLACEMENT_3D('',#183,#184,#185); +#183 = CARTESIAN_POINT('',(-1.201701466306E-17,5.888845918762E-18,0.)); +#184 = DIRECTION('',(0.,0.,1.)); +#185 = DIRECTION('',(1.,0.,0.)); +#186 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#190)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#187,#188,#189)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#173 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#174 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#175 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#176 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#173, +#187 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#188 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#189 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#190 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#187, 'distance_accuracy_value','confusion accuracy'); -#177 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#178,#180); -#178 = ( REPRESENTATION_RELATIONSHIP('','',#163,#10) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#179) +#191 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#192,#194); +#192 = ( REPRESENTATION_RELATIONSHIP('','',#166,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#193) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#179 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); -#180 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#181 +#193 = ITEM_DEFINED_TRANSFORMATION('','',#11,#27); +#194 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#195 ); -#181 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('16','solid_wire_001','',#5,#158,$ +#195 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('20','Dielectric_001','',#5,#161,$ ); -#182 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#160)); -#183 = SHAPE_DEFINITION_REPRESENTATION(#184,#190); -#184 = PRODUCT_DEFINITION_SHAPE('','',#185); -#185 = PRODUCT_DEFINITION('design','',#186,#189); -#186 = PRODUCT_DEFINITION_FORMATION('','',#187); -#187 = PRODUCT('Conductor_001','Conductor_001','',(#188)); -#188 = PRODUCT_CONTEXT('',#2,'mechanical'); -#189 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#190 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#191),#218); -#191 = SHELL_BASED_SURFACE_MODEL('',(#192)); -#192 = OPEN_SHELL('',(#193)); -#193 = ADVANCED_FACE('',(#194),#207,.T.); -#194 = FACE_BOUND('',#195,.T.); -#195 = EDGE_LOOP('',(#196)); -#196 = ORIENTED_EDGE('',*,*,#197,.T.); -#197 = EDGE_CURVE('',#198,#198,#200,.T.); -#198 = VERTEX_POINT('',#199); -#199 = CARTESIAN_POINT('',(0.1905,0.,0.)); -#200 = SURFACE_CURVE('',#201,(#206),.PCURVE_S1.); -#201 = CIRCLE('',#202,0.1905); -#202 = AXIS2_PLACEMENT_3D('',#203,#204,#205); -#203 = CARTESIAN_POINT('',(0.,0.,0.)); -#204 = DIRECTION('',(0.,0.,1.)); -#205 = DIRECTION('',(1.,0.,-0.)); -#206 = PCURVE('',#207,#212); -#207 = PLANE('',#208); -#208 = AXIS2_PLACEMENT_3D('',#209,#210,#211); -#209 = CARTESIAN_POINT('',(-7.009925220121E-18,-7.665819544648E-19,0.)); -#210 = DIRECTION('',(0.,0.,1.)); -#211 = DIRECTION('',(1.,0.,-0.)); -#212 = DEFINITIONAL_REPRESENTATION('',(#213),#217); -#213 = CIRCLE('',#214,0.1905); -#214 = AXIS2_PLACEMENT_2D('',#215,#216); -#215 = CARTESIAN_POINT('',(7.009925220121E-18,7.665819544648E-19)); -#216 = DIRECTION('',(1.,0.)); -#217 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) -PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' - ) ); -#218 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#222)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#219,#220,#221)) REPRESENTATION_CONTEXT('Context #1', +#196 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#163)); +#197 = SHAPE_DEFINITION_REPRESENTATION(#198,#204); +#198 = PRODUCT_DEFINITION_SHAPE('','',#199); +#199 = PRODUCT_DEFINITION('design','',#200,#203); +#200 = PRODUCT_DEFINITION_FORMATION('','',#201); +#201 = PRODUCT('Conductor_002','Conductor_002','',(#202)); +#202 = PRODUCT_CONTEXT('',#2,'mechanical'); +#203 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#204 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#205),#224); +#205 = SHELL_BASED_SURFACE_MODEL('',(#206)); +#206 = OPEN_SHELL('',(#207)); +#207 = ADVANCED_FACE('',(#208),#219,.T.); +#208 = FACE_BOUND('',#209,.T.); +#209 = EDGE_LOOP('',(#210)); +#210 = ORIENTED_EDGE('',*,*,#211,.T.); +#211 = EDGE_CURVE('',#212,#212,#214,.T.); +#212 = VERTEX_POINT('',#213); +#213 = CARTESIAN_POINT('',(0.1905,0.,0.)); +#214 = CIRCLE('',#215,0.1905); +#215 = AXIS2_PLACEMENT_3D('',#216,#217,#218); +#216 = CARTESIAN_POINT('',(0.,0.,0.)); +#217 = DIRECTION('',(0.,0.,1.)); +#218 = DIRECTION('',(1.,0.,0.)); +#219 = PLANE('',#220); +#220 = AXIS2_PLACEMENT_3D('',#221,#222,#223); +#221 = CARTESIAN_POINT('',(-7.009925220121E-18,-7.665819544648E-19,0.)); +#222 = DIRECTION('',(0.,0.,1.)); +#223 = DIRECTION('',(1.,0.,0.)); +#224 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#228)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#225,#226,#227)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#219 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#220 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#221 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#222 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#219, +#225 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#226 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#227 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#228 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#225, 'distance_accuracy_value','confusion accuracy'); -#223 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#224,#226); -#224 = ( REPRESENTATION_RELATIONSHIP('','',#190,#163) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#225) +#229 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#230,#232); +#230 = ( REPRESENTATION_RELATIONSHIP('','',#204,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#231) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#225 = ITEM_DEFINED_TRANSFORMATION('','',#11,#164); -#226 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#227 +#231 = ITEM_DEFINED_TRANSFORMATION('','',#11,#31); +#232 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#233 ); -#227 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('14','Conductor_001','',#158,#185, - $); -#228 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#187)); -#229 = SHAPE_DEFINITION_REPRESENTATION(#230,#236); -#230 = PRODUCT_DEFINITION_SHAPE('','',#231); -#231 = PRODUCT_DEFINITION('design','',#232,#235); -#232 = PRODUCT_DEFINITION_FORMATION('','',#233); -#233 = PRODUCT('Dielectric_001','Dielectric_001','',(#234)); -#234 = PRODUCT_CONTEXT('',#2,'mechanical'); -#235 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#236 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#237),#264); -#237 = SHELL_BASED_SURFACE_MODEL('',(#238)); -#238 = OPEN_SHELL('',(#239)); -#239 = ADVANCED_FACE('',(#240),#253,.T.); -#240 = FACE_BOUND('',#241,.T.); -#241 = EDGE_LOOP('',(#242)); -#242 = ORIENTED_EDGE('',*,*,#243,.T.); -#243 = EDGE_CURVE('',#244,#244,#246,.T.); -#244 = VERTEX_POINT('',#245); -#245 = CARTESIAN_POINT('',(0.4445,0.,0.)); -#246 = SURFACE_CURVE('',#247,(#252),.PCURVE_S1.); -#247 = CIRCLE('',#248,0.4445); -#248 = AXIS2_PLACEMENT_3D('',#249,#250,#251); -#249 = CARTESIAN_POINT('',(0.,0.,0.)); -#250 = DIRECTION('',(0.,0.,1.)); -#251 = DIRECTION('',(1.,0.,-0.)); -#252 = PCURVE('',#253,#258); -#253 = PLANE('',#254); -#254 = AXIS2_PLACEMENT_3D('',#255,#256,#257); -#255 = CARTESIAN_POINT('',(-1.201701466306E-17,5.888845918762E-18,0.)); -#256 = DIRECTION('',(0.,0.,1.)); -#257 = DIRECTION('',(1.,0.,-0.)); -#258 = DEFINITIONAL_REPRESENTATION('',(#259),#263); -#259 = CIRCLE('',#260,0.4445); -#260 = AXIS2_PLACEMENT_2D('',#261,#262); -#261 = CARTESIAN_POINT('',(1.201701466306E-17,-5.888845918762E-18)); -#262 = DIRECTION('',(1.,0.)); -#263 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) -PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' - ) ); -#264 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#268)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#265,#266,#267)) REPRESENTATION_CONTEXT('Context #1', - '3D Context with UNIT and UNCERTAINTY') ); -#265 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#266 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#267 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#268 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#265, - 'distance_accuracy_value','confusion accuracy'); -#269 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#270,#272); -#270 = ( REPRESENTATION_RELATIONSHIP('','',#236,#163) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#271) -SHAPE_REPRESENTATION_RELATIONSHIP() ); -#271 = ITEM_DEFINED_TRANSFORMATION('','',#11,#168); -#272 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#273 - ); -#273 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('15','Dielectric_001','',#158,#231 - ,$); -#274 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#233)); -#275 = SHAPE_DEFINITION_REPRESENTATION(#276,#282); -#276 = PRODUCT_DEFINITION_SHAPE('','',#277); -#277 = PRODUCT_DEFINITION('design','',#278,#281); -#278 = PRODUCT_DEFINITION_FORMATION('','',#279); -#279 = PRODUCT('solid_wire_002','solid_wire_002','',(#280)); -#280 = PRODUCT_CONTEXT('',#2,'mechanical'); -#281 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#282 = SHAPE_REPRESENTATION('',(#11,#283,#287),#291); -#283 = AXIS2_PLACEMENT_3D('',#284,#285,#286); -#284 = CARTESIAN_POINT('',(2.54,0.,0.)); -#285 = DIRECTION('',(0.,0.,1.)); -#286 = DIRECTION('',(1.,0.,0.)); -#287 = AXIS2_PLACEMENT_3D('',#288,#289,#290); -#288 = CARTESIAN_POINT('',(2.54,0.,0.)); -#289 = DIRECTION('',(0.,0.,1.)); -#290 = DIRECTION('',(1.,0.,0.)); -#291 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#295)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#292,#293,#294)) REPRESENTATION_CONTEXT('Context #1', - '3D Context with UNIT and UNCERTAINTY') ); -#292 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#293 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#294 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#295 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#292, - 'distance_accuracy_value','confusion accuracy'); -#296 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#297,#299); -#297 = ( REPRESENTATION_RELATIONSHIP('','',#282,#10) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#298) -SHAPE_REPRESENTATION_RELATIONSHIP() ); -#298 = ITEM_DEFINED_TRANSFORMATION('','',#11,#23); -#299 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#300 - ); -#300 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('19','solid_wire_002','',#5,#277,$ +#233 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('21','Conductor_002','',#5,#199,$ ); -#301 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#279)); -#302 = SHAPE_DEFINITION_REPRESENTATION(#303,#309); -#303 = PRODUCT_DEFINITION_SHAPE('','',#304); -#304 = PRODUCT_DEFINITION('design','',#305,#308); -#305 = PRODUCT_DEFINITION_FORMATION('','',#306); -#306 = PRODUCT('Conductor_002','Conductor_002','',(#307)); -#307 = PRODUCT_CONTEXT('',#2,'mechanical'); -#308 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#309 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#310),#337); -#310 = SHELL_BASED_SURFACE_MODEL('',(#311)); -#311 = OPEN_SHELL('',(#312)); -#312 = ADVANCED_FACE('',(#313),#326,.T.); -#313 = FACE_BOUND('',#314,.T.); -#314 = EDGE_LOOP('',(#315)); -#315 = ORIENTED_EDGE('',*,*,#316,.T.); -#316 = EDGE_CURVE('',#317,#317,#319,.T.); -#317 = VERTEX_POINT('',#318); -#318 = CARTESIAN_POINT('',(0.1905,0.,0.)); -#319 = SURFACE_CURVE('',#320,(#325),.PCURVE_S1.); -#320 = CIRCLE('',#321,0.1905); -#321 = AXIS2_PLACEMENT_3D('',#322,#323,#324); -#322 = CARTESIAN_POINT('',(0.,0.,0.)); -#323 = DIRECTION('',(0.,0.,1.)); -#324 = DIRECTION('',(1.,0.,-0.)); -#325 = PCURVE('',#326,#331); -#326 = PLANE('',#327); -#327 = AXIS2_PLACEMENT_3D('',#328,#329,#330); -#328 = CARTESIAN_POINT('',(-7.009925220121E-18,-7.665819544648E-19,0.)); -#329 = DIRECTION('',(0.,0.,1.)); -#330 = DIRECTION('',(1.,0.,-0.)); -#331 = DEFINITIONAL_REPRESENTATION('',(#332),#336); -#332 = CIRCLE('',#333,0.1905); -#333 = AXIS2_PLACEMENT_2D('',#334,#335); -#334 = CARTESIAN_POINT('',(7.009925220121E-18,7.665819544648E-19)); -#335 = DIRECTION('',(1.,0.)); -#336 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) -PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' - ) ); -#337 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#341)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#338,#339,#340)) REPRESENTATION_CONTEXT('Context #1', +#234 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#201)); +#235 = SHAPE_DEFINITION_REPRESENTATION(#236,#242); +#236 = PRODUCT_DEFINITION_SHAPE('','',#237); +#237 = PRODUCT_DEFINITION('design','',#238,#241); +#238 = PRODUCT_DEFINITION_FORMATION('','',#239); +#239 = PRODUCT('Dielectric_002','Dielectric_002','',(#240)); +#240 = PRODUCT_CONTEXT('',#2,'mechanical'); +#241 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#242 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#243),#262); +#243 = SHELL_BASED_SURFACE_MODEL('',(#244)); +#244 = OPEN_SHELL('',(#245)); +#245 = ADVANCED_FACE('',(#246),#257,.T.); +#246 = FACE_BOUND('',#247,.T.); +#247 = EDGE_LOOP('',(#248)); +#248 = ORIENTED_EDGE('',*,*,#249,.T.); +#249 = EDGE_CURVE('',#250,#250,#252,.T.); +#250 = VERTEX_POINT('',#251); +#251 = CARTESIAN_POINT('',(0.4445,0.,0.)); +#252 = CIRCLE('',#253,0.4445); +#253 = AXIS2_PLACEMENT_3D('',#254,#255,#256); +#254 = CARTESIAN_POINT('',(0.,0.,0.)); +#255 = DIRECTION('',(0.,0.,1.)); +#256 = DIRECTION('',(1.,0.,0.)); +#257 = PLANE('',#258); +#258 = AXIS2_PLACEMENT_3D('',#259,#260,#261); +#259 = CARTESIAN_POINT('',(-1.201701466306E-17,5.888845918762E-18,0.)); +#260 = DIRECTION('',(0.,0.,1.)); +#261 = DIRECTION('',(1.,0.,0.)); +#262 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#266)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#263,#264,#265)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#338 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#339 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#340 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#341 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#338, +#263 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#264 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#265 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#266 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#263, 'distance_accuracy_value','confusion accuracy'); -#342 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#343,#345); -#343 = ( REPRESENTATION_RELATIONSHIP('','',#309,#282) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#344) +#267 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#268,#270); +#268 = ( REPRESENTATION_RELATIONSHIP('','',#242,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#269) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#344 = ITEM_DEFINED_TRANSFORMATION('','',#11,#283); -#345 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#346 +#269 = ITEM_DEFINED_TRANSFORMATION('','',#11,#35); +#270 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#271 ); -#346 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('17','Conductor_002','',#277,#304, - $); -#347 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#306)); -#348 = SHAPE_DEFINITION_REPRESENTATION(#349,#355); -#349 = PRODUCT_DEFINITION_SHAPE('','',#350); -#350 = PRODUCT_DEFINITION('design','',#351,#354); -#351 = PRODUCT_DEFINITION_FORMATION('','',#352); -#352 = PRODUCT('Dielectric_002','Dielectric_002','',(#353)); -#353 = PRODUCT_CONTEXT('',#2,'mechanical'); -#354 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#355 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#356),#383); -#356 = SHELL_BASED_SURFACE_MODEL('',(#357)); -#357 = OPEN_SHELL('',(#358)); -#358 = ADVANCED_FACE('',(#359),#372,.T.); -#359 = FACE_BOUND('',#360,.T.); -#360 = EDGE_LOOP('',(#361)); -#361 = ORIENTED_EDGE('',*,*,#362,.T.); -#362 = EDGE_CURVE('',#363,#363,#365,.T.); -#363 = VERTEX_POINT('',#364); -#364 = CARTESIAN_POINT('',(0.4445,0.,0.)); -#365 = SURFACE_CURVE('',#366,(#371),.PCURVE_S1.); -#366 = CIRCLE('',#367,0.4445); -#367 = AXIS2_PLACEMENT_3D('',#368,#369,#370); -#368 = CARTESIAN_POINT('',(0.,0.,0.)); -#369 = DIRECTION('',(0.,0.,1.)); -#370 = DIRECTION('',(1.,0.,-0.)); -#371 = PCURVE('',#372,#377); -#372 = PLANE('',#373); -#373 = AXIS2_PLACEMENT_3D('',#374,#375,#376); -#374 = CARTESIAN_POINT('',(-1.201701466306E-17,5.888845918762E-18,0.)); -#375 = DIRECTION('',(0.,0.,1.)); -#376 = DIRECTION('',(1.,0.,-0.)); -#377 = DEFINITIONAL_REPRESENTATION('',(#378),#382); -#378 = CIRCLE('',#379,0.4445); -#379 = AXIS2_PLACEMENT_2D('',#380,#381); -#380 = CARTESIAN_POINT('',(1.201701466306E-17,-5.888845918762E-18)); -#381 = DIRECTION('',(1.,0.)); -#382 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) -PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' - ) ); -#383 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#387)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#384,#385,#386)) REPRESENTATION_CONTEXT('Context #1', - '3D Context with UNIT and UNCERTAINTY') ); -#384 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#385 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#386 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#387 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#384, - 'distance_accuracy_value','confusion accuracy'); -#388 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#389,#391); -#389 = ( REPRESENTATION_RELATIONSHIP('','',#355,#282) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#390) -SHAPE_REPRESENTATION_RELATIONSHIP() ); -#390 = ITEM_DEFINED_TRANSFORMATION('','',#11,#287); -#391 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#392 - ); -#392 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('18','Dielectric_002','',#277,#350 - ,$); -#393 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#352)); -#394 = SHAPE_DEFINITION_REPRESENTATION(#395,#401); -#395 = PRODUCT_DEFINITION_SHAPE('','',#396); -#396 = PRODUCT_DEFINITION('design','',#397,#400); -#397 = PRODUCT_DEFINITION_FORMATION('','',#398); -#398 = PRODUCT('OpenBoundary_0','OpenBoundary_0','',(#399)); -#399 = PRODUCT_CONTEXT('',#2,'mechanical'); -#400 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#401 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#402),#429); -#402 = SHELL_BASED_SURFACE_MODEL('',(#403)); -#403 = OPEN_SHELL('',(#404)); -#404 = ADVANCED_FACE('',(#405),#418,.T.); -#405 = FACE_BOUND('',#406,.T.); -#406 = EDGE_LOOP('',(#407)); -#407 = ORIENTED_EDGE('',*,*,#408,.T.); -#408 = EDGE_CURVE('',#409,#409,#411,.T.); -#409 = VERTEX_POINT('',#410); -#410 = CARTESIAN_POINT('',(150.,0.,0.)); -#411 = SURFACE_CURVE('',#412,(#417),.PCURVE_S1.); -#412 = CIRCLE('',#413,150.); -#413 = AXIS2_PLACEMENT_3D('',#414,#415,#416); -#414 = CARTESIAN_POINT('',(0.,0.,0.)); -#415 = DIRECTION('',(0.,0.,1.)); -#416 = DIRECTION('',(1.,0.,0.)); -#417 = PCURVE('',#418,#423); -#418 = PLANE('',#419); -#419 = AXIS2_PLACEMENT_3D('',#420,#421,#422); -#420 = CARTESIAN_POINT('',(-2.333764492867E-14,3.211823975732E-15,0.)); -#421 = DIRECTION('',(0.,0.,1.)); -#422 = DIRECTION('',(1.,0.,0.)); -#423 = DEFINITIONAL_REPRESENTATION('',(#424),#428); -#424 = CIRCLE('',#425,150.); -#425 = AXIS2_PLACEMENT_2D('',#426,#427); -#426 = CARTESIAN_POINT('',(2.333764492867E-14,-3.211823975732E-15)); -#427 = DIRECTION('',(1.,0.)); -#428 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) -PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' - ) ); -#429 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#433)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#430,#431,#432)) REPRESENTATION_CONTEXT('Context #1', - '3D Context with UNIT and UNCERTAINTY') ); -#430 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#431 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#432 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#433 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#430, - 'distance_accuracy_value','confusion accuracy'); -#434 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#435,#437); -#435 = ( REPRESENTATION_RELATIONSHIP('','',#401,#10) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#436) -SHAPE_REPRESENTATION_RELATIONSHIP() ); -#436 = ITEM_DEFINED_TRANSFORMATION('','',#11,#27); -#437 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#438 +#271 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('22','Dielectric_002','',#5,#237,$ ); -#438 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('20','OpenBoundary_0','',#5,#396,$); -#439 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#398)); -#440 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#441) - ,#145); -#441 = STYLED_ITEM('color',(#442),#120); -#442 = PRESENTATION_STYLE_ASSIGNMENT((#443,#451)); -#443 = SURFACE_STYLE_USAGE(.BOTH.,#444); -#444 = SURFACE_SIDE_STYLE('',(#445,#449)); -#445 = SURFACE_STYLE_FILL_AREA(#446); -#446 = FILL_AREA_STYLE('',(#447)); -#447 = FILL_AREA_STYLE_COLOUR('',#448); -#448 = DRAUGHTING_PRE_DEFINED_COLOUR('red'); -#449 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#448,( - #450)); -#450 = SURFACE_STYLE_TRANSPARENT(0.899999976158); -#451 = CURVE_STYLE('',#452,POSITIVE_LENGTH_MEASURE(0.1),#453); -#452 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#453 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, +#272 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#239)); +#273 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#274) + ,#186); +#274 = STYLED_ITEM('color',(#275),#169); +#275 = PRESENTATION_STYLE_ASSIGNMENT((#276,#284)); +#276 = SURFACE_STYLE_USAGE(.BOTH.,#277); +#277 = SURFACE_SIDE_STYLE('',(#278,#282)); +#278 = SURFACE_STYLE_FILL_AREA(#279); +#279 = FILL_AREA_STYLE('',(#280)); +#280 = FILL_AREA_STYLE_COLOUR('',#281); +#281 = DRAUGHTING_PRE_DEFINED_COLOUR('red'); +#282 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#281,( + #283)); +#283 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#284 = CURVE_STYLE('',#285,POSITIVE_LENGTH_MEASURE(0.1),#286); +#285 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#286 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, 9.803921802644E-02); -#454 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#455) - ,#337); -#455 = STYLED_ITEM('color',(#456),#312); -#456 = PRESENTATION_STYLE_ASSIGNMENT((#457,#463)); -#457 = SURFACE_STYLE_USAGE(.BOTH.,#458); -#458 = SURFACE_SIDE_STYLE('',(#459)); -#459 = SURFACE_STYLE_FILL_AREA(#460); -#460 = FILL_AREA_STYLE('',(#461)); -#461 = FILL_AREA_STYLE_COLOUR('',#462); -#462 = COLOUR_RGB('',1.,0.333333345507,0.); -#463 = CURVE_STYLE('',#464,POSITIVE_LENGTH_MEASURE(0.1),#453); -#464 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#465 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#466) - ,#264); -#466 = STYLED_ITEM('color',(#467),#239); -#467 = PRESENTATION_STYLE_ASSIGNMENT((#468,#475)); -#468 = SURFACE_STYLE_USAGE(.BOTH.,#469); -#469 = SURFACE_SIDE_STYLE('',(#470,#473)); -#470 = SURFACE_STYLE_FILL_AREA(#471); -#471 = FILL_AREA_STYLE('',(#472)); -#472 = FILL_AREA_STYLE_COLOUR('',#448); -#473 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#448,( - #474)); -#474 = SURFACE_STYLE_TRANSPARENT(0.899999976158); -#475 = CURVE_STYLE('',#476,POSITIVE_LENGTH_MEASURE(0.1),#453); -#476 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#477 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#478) - ,#383); -#478 = STYLED_ITEM('color',(#479),#358); -#479 = PRESENTATION_STYLE_ASSIGNMENT((#480,#487)); -#480 = SURFACE_STYLE_USAGE(.BOTH.,#481); -#481 = SURFACE_SIDE_STYLE('',(#482,#485)); -#482 = SURFACE_STYLE_FILL_AREA(#483); -#483 = FILL_AREA_STYLE('',(#484)); -#484 = FILL_AREA_STYLE_COLOUR('',#448); -#485 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#448,( - #486)); -#486 = SURFACE_STYLE_TRANSPARENT(0.899999976158); -#487 = CURVE_STYLE('',#488,POSITIVE_LENGTH_MEASURE(0.1),#453); -#488 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#489 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#490) - ,#99); -#490 = STYLED_ITEM('color',(#491),#74); -#491 = PRESENTATION_STYLE_ASSIGNMENT((#492,#497)); -#492 = SURFACE_STYLE_USAGE(.BOTH.,#493); -#493 = SURFACE_SIDE_STYLE('',(#494)); -#494 = SURFACE_STYLE_FILL_AREA(#495); -#495 = FILL_AREA_STYLE('',(#496)); -#496 = FILL_AREA_STYLE_COLOUR('',#462); -#497 = CURVE_STYLE('',#498,POSITIVE_LENGTH_MEASURE(0.1),#453); -#498 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#499 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#500) - ,#429); -#500 = STYLED_ITEM('color',(#501),#404); -#501 = PRESENTATION_STYLE_ASSIGNMENT((#502,#508)); -#502 = SURFACE_STYLE_USAGE(.BOTH.,#503); -#503 = SURFACE_SIDE_STYLE('',(#504)); -#504 = SURFACE_STYLE_FILL_AREA(#505); -#505 = FILL_AREA_STYLE('',(#506)); -#506 = FILL_AREA_STYLE_COLOUR('',#507); -#507 = COLOUR_RGB('',0.800000010877,0.800000010877,0.800000010877); -#508 = CURVE_STYLE('',#509,POSITIVE_LENGTH_MEASURE(0.1),#453); -#509 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#510 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#511) - ,#218); -#511 = STYLED_ITEM('color',(#512),#193); -#512 = PRESENTATION_STYLE_ASSIGNMENT((#513,#518)); -#513 = SURFACE_STYLE_USAGE(.BOTH.,#514); -#514 = SURFACE_SIDE_STYLE('',(#515)); -#515 = SURFACE_STYLE_FILL_AREA(#516); -#516 = FILL_AREA_STYLE('',(#517)); -#517 = FILL_AREA_STYLE_COLOUR('',#462); -#518 = CURVE_STYLE('',#519,POSITIVE_LENGTH_MEASURE(0.1),#453); -#519 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#287 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#288) + ,#110); +#288 = STYLED_ITEM('color',(#289),#93); +#289 = PRESENTATION_STYLE_ASSIGNMENT((#290,#297)); +#290 = SURFACE_STYLE_USAGE(.BOTH.,#291); +#291 = SURFACE_SIDE_STYLE('',(#292,#295)); +#292 = SURFACE_STYLE_FILL_AREA(#293); +#293 = FILL_AREA_STYLE('',(#294)); +#294 = FILL_AREA_STYLE_COLOUR('',#281); +#295 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#281,( + #296)); +#296 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#297 = CURVE_STYLE('',#298,POSITIVE_LENGTH_MEASURE(0.1),#286); +#298 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#299 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#300) + ,#224); +#300 = STYLED_ITEM('color',(#301),#207); +#301 = PRESENTATION_STYLE_ASSIGNMENT((#302,#308)); +#302 = SURFACE_STYLE_USAGE(.BOTH.,#303); +#303 = SURFACE_SIDE_STYLE('',(#304)); +#304 = SURFACE_STYLE_FILL_AREA(#305); +#305 = FILL_AREA_STYLE('',(#306)); +#306 = FILL_AREA_STYLE_COLOUR('',#307); +#307 = COLOUR_RGB('',1.,0.333333345507,0.); +#308 = CURVE_STYLE('',#309,POSITIVE_LENGTH_MEASURE(0.1),#286); +#309 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#310 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#311) + ,#148); +#311 = STYLED_ITEM('color',(#312),#131); +#312 = PRESENTATION_STYLE_ASSIGNMENT((#313,#318)); +#313 = SURFACE_STYLE_USAGE(.BOTH.,#314); +#314 = SURFACE_SIDE_STYLE('',(#315)); +#315 = SURFACE_STYLE_FILL_AREA(#316); +#316 = FILL_AREA_STYLE('',(#317)); +#317 = FILL_AREA_STYLE_COLOUR('',#307); +#318 = CURVE_STYLE('',#319,POSITIVE_LENGTH_MEASURE(0.1),#286); +#319 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#320 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#321) + ,#72); +#321 = STYLED_ITEM('color',(#322),#55); +#322 = PRESENTATION_STYLE_ASSIGNMENT((#323,#328)); +#323 = SURFACE_STYLE_USAGE(.BOTH.,#324); +#324 = SURFACE_SIDE_STYLE('',(#325)); +#325 = SURFACE_STYLE_FILL_AREA(#326); +#326 = FILL_AREA_STYLE('',(#327)); +#327 = FILL_AREA_STYLE_COLOUR('',#307); +#328 = CURVE_STYLE('',#329,POSITIVE_LENGTH_MEASURE(0.1),#286); +#329 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#330 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#331) + ,#262); +#331 = STYLED_ITEM('color',(#332),#245); +#332 = PRESENTATION_STYLE_ASSIGNMENT((#333,#340)); +#333 = SURFACE_STYLE_USAGE(.BOTH.,#334); +#334 = SURFACE_SIDE_STYLE('',(#335,#338)); +#335 = SURFACE_STYLE_FILL_AREA(#336); +#336 = FILL_AREA_STYLE('',(#337)); +#337 = FILL_AREA_STYLE_COLOUR('',#281); +#338 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#281,( + #339)); +#339 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#340 = CURVE_STYLE('',#341,POSITIVE_LENGTH_MEASURE(0.1),#286); +#341 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); ENDSEC; END-ISO-10303-21; diff --git a/testData/two_wires_coax/two_wires_coax.json b/testData/two_wires_coax/two_wires_coax.json new file mode 100644 index 0000000..c82189f --- /dev/null +++ b/testData/two_wires_coax/two_wires_coax.json @@ -0,0 +1,22 @@ +{ + "CrossSection":[ + { + "name":"Conductor_0", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_1", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_2", + "material":{ + "type":"PEC" + } + } + ] +} \ No newline at end of file diff --git a/testData/two_wires_open/two_wires_open.20250709-095732.FCBak b/testData/two_wires_open/two_wires_open.20250709-095732.FCBak new file mode 100644 index 0000000000000000000000000000000000000000..56cbc226789ebedefe441c039f191bd15fc3208c GIT binary patch literal 5861 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 Vtto5{4nW?;!a_z`mgev3{68IXq^bY_ literal 5861 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 Date: Thu, 2 Oct 2025 17:43:49 +0200 Subject: [PATCH 04/23] Add label to exported json --- src/AreaExporterService.py | 13 +++++--- test/test_AreaExporterService.py | 56 +++++++++++++++++++++++++++++--- 2 files changed, 61 insertions(+), 8 deletions(-) diff --git a/src/AreaExporterService.py b/src/AreaExporterService.py index c11401d..4d8e9d3 100644 --- a/src/AreaExporterService.py +++ b/src/AreaExporterService.py @@ -11,18 +11,23 @@ def __init__(self): "geometries": [] } - def addComputedArea(self, geometry:str, area:float): + def addComputedArea(self, geometry:str, label:str, area:float): geometry:Dict ={ "geometry": geometry, - "area": area, + "label": label, + "area": round(area,6), } self.computedAreas['geometries'].append(geometry) - def addPhysicalModelOfDimension(self, dimension=2): + def addPhysicalModelOfDimension(self, mappedElements:Dict[str,str], dimension=2): physicalGroups = gmsh.model.getPhysicalGroups(dimension) for physicalGroup in physicalGroups: entityTags = gmsh.model.getEntitiesForPhysicalGroup(*physicalGroup) geometryName = gmsh.model.getPhysicalName(*physicalGroup) + label = '' + for key, geometry in mappedElements.items(): + if geometry == geometryName: + label = key for tag in entityTags: if dimension == 1: rad = gmsh.model.occ.getMass(dimension, tag) / (2*np.pi) @@ -30,7 +35,7 @@ def addPhysicalModelOfDimension(self, dimension=2): if dimension == 2: area = gmsh.model.occ.getMass(dimension, tag) if geometryName != AreaExporterService._EMPTY_NAME_CASE: - self.addComputedArea(geometryName, area) + self.addComputedArea(geometryName, label, area) def exportToJson(self, exportFileName:str): with open(exportFileName + ".areas.json", 'w') as f: diff --git a/test/test_AreaExporterService.py b/test/test_AreaExporterService.py index 21fe124..fe40ecf 100644 --- a/test/test_AreaExporterService.py +++ b/test/test_AreaExporterService.py @@ -23,15 +23,15 @@ def setUp(self): def tearDown(self): gmsh.finalize() - def inputFileFromCaseName(self, caseName): + def inputFileFromCaseName(self, caseName) -> None: return self.testdataPath + caseName + '/' + caseName + ".step" def testAreaExporterReturnsTrueValues(self): caseName = 'five_wires' - Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) + mappedElements = Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) areaExporter = AreaExporterService() - areaExporter.addPhysicalModelOfDimension(dimension=1) - areaExporter.addPhysicalModelOfDimension(dimension=2) + areaExporter.addPhysicalModelOfDimension(mappedElements=mappedElements, dimension=1) + areaExporter.addPhysicalModelOfDimension(mappedElements=mappedElements, dimension=2) geometries = areaExporter.computedAreas['geometries'] internalElements = [] @@ -43,3 +43,51 @@ def testAreaExporterReturnsTrueValues(self): areaElements = self.sumAreasFromList(internalElements) self.assertAlmostEqual(totalArea, areaElements) + + def testJsonFormat(self) -> None: + caseName = 'DielectricUnshieldedPair' + mappedElements = Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) + areaExporter = AreaExporterService() + areaExporter.addPhysicalModelOfDimension(mappedElements=mappedElements, dimension=1) + areaExporter.addPhysicalModelOfDimension(mappedElements=mappedElements, dimension=2) + + expectedDict = { + 'geometries': [ + { + 'area': 201.06193, + 'geometry': 'Conductor_1', + 'label': 'RightConductor' + }, + { + 'area': 201.06193, + 'geometry': 'Conductor_0', + 'label': 'LeftConductor'}, + { + 'area': 312048.117187, + 'geometry': 'OpenBoundary_0', + 'label': 'OpenBoundary_0' + }, + { + 'area': 603.185789, + 'geometry': 'Dielectric_1', + 'label': 'RightDielectric' + }, + { + 'area': 603.185789, + 'geometry': 'Dielectric_0', + 'label': 'LeftDielectric' + }, + { + 'area': 6491.504606, + 'geometry': 'Vacuum_0', + 'label': 'Vacuum_0' + }, + { + 'area': 303948.117142, + 'geometry': 'Vacuum_1', + 'label': 'Vacuum_1' + } + ] + } + self.maxDiff = None + self.assertDictEqual(areaExporter.computedAreas, expectedDict) From 98ee095adaed1fc76ad21d7d39cb26e3bbe9e011 Mon Sep 17 00:00:00 2001 From: adrianarce-elemwave Date: Thu, 2 Oct 2025 17:47:14 +0200 Subject: [PATCH 05/23] Changed physical model to use mapped graph --- src/Graph.py | 26 ++++++++- src/ShapesClassification.py | 96 +++++++++++++++--------------- src/mesher.py | 60 ++++++++++--------- test/test_ShapesClassification.py | 29 ++++++++- test/test_graph.py | 13 +++++ test/test_mesher.py | 97 ++++++++++++++----------------- 6 files changed, 189 insertions(+), 132 deletions(-) diff --git a/src/Graph.py b/src/Graph.py index 7354dd8..2806609 100644 --- a/src/Graph.py +++ b/src/Graph.py @@ -1,4 +1,5 @@ -from typing import List, Tuple +from collections import defaultdict, deque +from typing import Dict, List, Tuple class Graph: def __init__(self): @@ -91,5 +92,28 @@ def dfs(node, path): self._nodes = list(new_nodes) self._edges = list(new_edges) + def getAdyacencyTree(self) -> Dict: + tree = defaultdict(list) + for root in self.roots: + tree[''].append(root) + for parent, child in self._edges: + tree[parent].append(child) + return tree + + def getNodesByLevels(self) -> List: + adyacencyTree = self.getAdyacencyTree() + qeue = deque([('',0)]) + nodeList = [] + while qeue: + node,level = qeue.popleft() + nodeList.append(node) + for child in adyacencyTree[node]: + qeue.append((child, level+1)) + return nodeList[1:] #Removes case 0 that is not part of nodes + + def _reorderData(self) -> None: + self._edges = sorted(self._edges) + self._nodes = sorted(self._nodes) + def __str__(self): return f"Graph(Nodes: {self._nodes},\n Edges: {self._edges})" \ No newline at end of file diff --git a/src/ShapesClassification.py b/src/ShapesClassification.py index 41ed84e..baca977 100644 --- a/src/ShapesClassification.py +++ b/src/ShapesClassification.py @@ -15,9 +15,9 @@ class ShapesClassification: _ROUND_VALUE:int = 6 isOpenCase:bool - crossSectionData: Dict - pecs: Dict - dielectrics: Dict + crossSectionData: Dict[str,List[Dict[str,any]]] + pecs: Dict[str,List[Tuple[int,int]]] + dielectrics: Dict[str,List[Tuple[int,int]]] nestedGraph: Graph def __init__(self, shapes, jsonFile:str): @@ -29,12 +29,11 @@ def __init__(self, shapes, jsonFile:str): self.crossSectionData = jsonData['CrossSection'] self.pecs = self.get_pecs(shapes) self.dielectrics = self.get_dielectrics(shapes) - self.shieldReference = dict() self.vacuum = dict() + self.open = dict() self.nestedGraph = self.__getNestedGraph() self.isOpenCase = self.isOpenProblem() - @staticmethod def getNumberFromName(entity_name: str, label: str): ini = entity_name.rindex(label) + len(label) @@ -72,7 +71,10 @@ def __getGeometryNamesByMaterialType(self, materialType:str) -> List[str]: return names def isOpenProblem(self) -> None: - if len(self.nestedGraph.roots) > 1: + roots = self.nestedGraph.roots + if len(roots) > 1: #Más de un componente pec/pec pec/dielectric dielectric/dielectric etc da al exterior + return True + if roots[0] in self.dielectrics.keys(): #El único root es un dielectrico return True return False @@ -80,7 +82,7 @@ def removeConductorsFromDielectrics(self): for num, diel in self.dielectrics.items(): pec_surfs = [] for num2, pec_surf in self.pecs.items(): - if num2 == 0 and not self.isOpenCase: + if (num2 in self.nestedGraph.roots) and (not self.isOpenCase): continue pec_surfs.extend(pec_surf) self.dielectrics[num] = gmsh.model.occ.cut(diel, pec_surfs, removeTool=False)[0] @@ -88,51 +90,32 @@ def removeConductorsFromDielectrics(self): gmsh.model.occ.synchronize() def ensureDielectricsDoNotOverlap(self): - for n1, diel1 in self.dielectrics.items(): - others = list( - chain( - *[x[1] for x in self.dielectrics.items() if x[0] != n1] - ) - ) + for currentKey in self.dielectrics.keys(): + + others = list(chain(*[tag for key, tag in self.dielectrics.items() if currentKey != key])) if len(others) == 0: continue - self.dielectrics[n1] = gmsh.model.occ.cut( - self.dielectrics[n1], others, removeObject=True, removeTool=False)[0] + self.dielectrics[currentKey] = gmsh.model.occ.cut( + self.dielectrics[currentKey], others, removeObject=True, removeTool=False + )[0] gmsh.model.occ.synchronize() def buildVacuumDomain(self): - if self.isOpenCase and len(self.open) == 0: + if self.isOpenCase: self.vacuum = self._buildDefaultVacuumDomain() - elif self.isOpenCase and len(self.open) > 0: - self.vacuum = self._buildVacuumDomainFromOpenBoundary() else: self.vacuum = self._buildClosedVacuumDomain() return self.vacuum - def _buildVacuumDomainFromOpenBoundary(self) -> Dict[int, List[int]]: - dom = self.open[0] - - surfsToRemove = [] - for num, surf in self.pecs.items(): - surfsToRemove.extend(surf) - - for _, surf in self.dielectrics.items(): - surfsToRemove.extend(surf) - - dom = gmsh.model.occ.cut( - dom, surfsToRemove, removeObject=False, removeTool=False)[0] - gmsh.model.occ.synchronize() - - return dict([[0, dom]]) - def _buildClosedVacuumDomain(self) -> Tuple[int, int]: - dom = self.pecs[0] + root = self.nestedGraph.roots[0] + dom = self.pecs[root] surfsToRemove = [] for num, surf in self.pecs.items(): - if num == 0: + if num == root: continue surfsToRemove.extend(surf) @@ -141,7 +124,7 @@ def _buildClosedVacuumDomain(self) -> Tuple[int, int]: dom = gmsh.model.occ.cut( dom, surfsToRemove, removeObject=False, removeTool=False)[0] gmsh.model.occ.synchronize() - return dict([[0, dom]]) + return dict([['Vacuum_0', dom]]) def _buildDefaultVacuumDomain(self): NEAR_REGION_BOUNDING_BOX_SCALING_FACTOR = 1.25 @@ -170,7 +153,7 @@ def _buildDefaultVacuumDomain(self): farVacuumDiameter, farVacuumDiameter))] gmsh.model.occ.synchronize() - self.open = dict([[0, gmsh.model.getBoundary(farVacuum)]]) + self.open = dict([['OpenBoundary_0', gmsh.model.getBoundary(farVacuum)]]) farVacuum = gmsh.model.occ.cut( farVacuum, nearVacuum, removeObject=True, removeTool=False)[0] @@ -189,32 +172,47 @@ def _buildDefaultVacuumDomain(self): innerRegion = gmsh.model.getBoundary(nearVacuum, recursive=True) gmsh.model.mesh.setSize(innerRegion, minSide / 20) - - gmsh.model.occ.synchronize() - return dict([[0, nearVacuum], [1, farVacuum]]) + return dict([['Vacuum_0', nearVacuum], ['Vacuum_1', farVacuum]]) def __getNestedGraph(self): gmsh.model.occ.synchronize() graph = Graph() - for key in self.pecs.keys(): + elements:Dict = {} + elements = {**self.pecs, **self.dielectrics} + for key in elements: graph.add_node(key) - for i, keyA in enumerate(self.pecs.keys()): - for j, keyB in enumerate(self.pecs.keys()): + for i, keyA in enumerate(elements): + for j, keyB in enumerate(elements): if i < j: inter = gmsh.model.occ.intersect( - self.pecs[keyA], - self.pecs[keyB], + elements[keyA], + elements[keyB], removeObject=False, removeTool=False ) if len(inter[1][0]) == 0: #comprueba las intersecciones en las que interfiere el objeto continue else: - if inter[1][0] == self.pecs[keyA]: + if inter[1][0] == elements[keyA]: graph.add_edge(keyB, keyA) - elif inter[1][0] == self.pecs[keyB]: + elif inter[1][0] == elements[keyB]: graph.add_edge(keyA, keyB) graph.prune_to_longest_paths() - return graph \ No newline at end of file + graph._reorderData() + return graph + + def getComponentsMappedByLevel(self) -> Dict[str,str]: + sortedNodes = self.nestedGraph.getNodesByLevels() + mappedElements = [] + conductors = [] + dielectrics = [] + for node in sortedNodes: + if node in self.pecs.keys(): + conductors.append((node, 'Conductor_{}'.format(len(conductors)))) + if node in self.dielectrics.keys(): + dielectrics.append((node, 'Dielectric_{}'.format(len(dielectrics)))) + mappedElements.extend(conductors) + mappedElements.extend(dielectrics) + return {element[0]:element[1] for element in mappedElements} \ No newline at end of file diff --git a/src/mesher.py b/src/mesher.py index 38823e1..320903b 100644 --- a/src/mesher.py +++ b/src/mesher.py @@ -1,4 +1,5 @@ -from typing import Tuple +import os +from typing import List, Tuple import gmsh from pathlib import Path from typing import Dict @@ -31,8 +32,8 @@ def runFromInput(self, inputFile, runGui=False): caseName = Path(inputFile).stem gmsh.initialize() - self.meshFromStep(inputFile, caseName, self.DEFAULT_MESHING_OPTIONS) - self.exportGeometryAreas(caseName) + mappedElements = self.meshFromStep(inputFile, caseName, self.DEFAULT_MESHING_OPTIONS) + self.exportGeometryAreas(caseName, mappedElements) gmsh.write(caseName + '.msh') gmsh.write(caseName + '.vtk') # vtk export is just for debugging. if runGui: @@ -40,14 +41,14 @@ def runFromInput(self, inputFile, runGui=False): gmsh.finalize() - def meshFromStep(self, inputFile: str, caseName: str, meshingOptions=None): + def meshFromStep(self, inputFile: str, caseName: str, meshingOptions=None) -> Dict[str,str]: if meshingOptions is None: meshingOptions = Mesher.DEFAULT_MESHING_OPTIONS gmsh.model.add(caseName) allShapes = ShapesClassification( gmsh.model.occ.importShapes(inputFile, highestDimOnly=False), - inputFile.strip('.step') + '.json' + os.path.splitext(inputFile)[0] +'.json' ) # --- Geometry manipulation --- @@ -56,33 +57,40 @@ def meshFromStep(self, inputFile: str, caseName: str, meshingOptions=None): vacuumDomain = allShapes.buildVacuumDomain() # -- Boundaries pecBoundaries = self.extractBoundaries(allShapes.pecs) - + mappedComponents = allShapes.getComponentsMappedByLevel() + + for domain in vacuumDomain.keys(): + mappedComponents[domain] = domain + for openRegion in allShapes.open.keys(): + mappedComponents[openRegion] = openRegion + components = { + **pecBoundaries, + **allShapes.dielectrics, + **allShapes.open, + **vacuumDomain, + } + self.buildPhysicalModel( - pecBoundaries, - allShapes.dielectrics, - allShapes.open, - vacuumDomain + components, + mappedComponents ) for [opt, val] in meshingOptions.items(): gmsh.option.setNumber(opt, val) - # --- Mesh generation --- - gmsh.model.mesh.generate(2) + return mappedComponents - def exportGeometryAreas(self, caseName:str): + + def exportGeometryAreas(self, caseName:str, mappedElements:Dict[str,str]): exporter = AreaExporterService() - exporter.addPhysicalModelOfDimension(dimension=2) - exporter.addPhysicalModelOfDimension(dimension=1) + exporter.addPhysicalModelOfDimension(mappedElements, dimension=2) + exporter.addPhysicalModelOfDimension(mappedElements, dimension=1) exporter.exportToJson(caseName) - def buildPhysicalModel(self, pecBoundaries, dielectrics, openRegion, vacuumDomain): - self._addPhysicalGroup("Conductor_", pecBoundaries, dimensionTag=1) - self._addPhysicalGroup("OpenBoundary_", openRegion, dimensionTag=1) - self._addPhysicalGroup("Vacuum_", vacuumDomain, dimensionTag=2) - self._addPhysicalGroup("Dielectric_", dielectrics, dimensionTag=2) + def buildPhysicalModel(self, components:Dict[str,List[Tuple[int,int]]], labeMapping:Dict[str,str]): + self._createPhysicalGroups(components, labeMapping) allEnts = gmsh.model.get_entities() entsInPG = [] @@ -96,13 +104,13 @@ def buildPhysicalModel(self, pecBoundaries, dielectrics, openRegion, vacuumDomai gmsh.model.occ.synchronize() - def _addPhysicalGroup(self, physicalGroupName:str, objsDict:Dict, dimensionTag=1): - for num, objs in objsDict.items(): - name = physicalGroupName + str(num) - tags = [x[1] for x in objs] - gmsh.model.addPhysicalGroup(dimensionTag, tags, name=name) + def _createPhysicalGroups(self, objsDict:Dict[str,List[Tuple[int,int]]], labelMapping:Dict[str,str]): + for name, elements in objsDict.items(): + mappedName = labelMapping[name] + dimensionTag = elements[0][0] + tags = [x[1] for x in elements] + gmsh.model.addPhysicalGroup(dimensionTag, tags, name=mappedName) - @staticmethod def getPhysicalGroupWithName(name: str): pGs = gmsh.model.getPhysicalGroups() diff --git a/test/test_ShapesClassification.py b/test/test_ShapesClassification.py index cfba528..520ea88 100644 --- a/test/test_ShapesClassification.py +++ b/test/test_ShapesClassification.py @@ -31,7 +31,7 @@ def inputFileFromCaseName(self, caseName): return self.testdataPath + caseName + '/' + caseName + ".step" def initShapeClassification(self, inputFile:str) -> None: - jsonFile = inputFile.strip('.step') + '.json' + jsonFile = os.path.splitext(inputFile)[0] +'.json' self.shapeClassification = ShapesClassification( gmsh.model.occ.importShapes(inputFile, highestDimOnly=False), jsonFile @@ -90,4 +90,29 @@ def testDielectricUnshieldedPairClassification(self) -> None: self.assertListEqual(self.shapeClassification.allShapes, expectedShapes) self.assertDictEqual(self.shapeClassification.pecs, expectedPecs) self.assertDictEqual(self.shapeClassification.dielectrics, expectedDielectrics) - self.assertTrue(self.shapeClassification.isOpenCase) \ No newline at end of file + self.assertTrue(self.shapeClassification.isOpenCase) + + def test_partially_filled_coax_step_shapes(self): + case = 'partially_filled_coax' + filepath = self.inputFileFromCaseName(case) + self.initShapeClassification(filepath) + + self.assertEqual(len(self.shapeClassification.pecs), 2) + self.assertEqual(len(self.shapeClassification.dielectrics), 1) + + def test_five_wires_step_shapes(self): + case = 'five_wires' + filepath = self.inputFileFromCaseName(case) + self.initShapeClassification(filepath) + + self.assertEqual(len(self.shapeClassification.pecs), 6) + self.assertEqual(len(self.shapeClassification.dielectrics), 5) + + def test_three_wires_ribbon_step_shapes(self): + case = 'three_wires_ribbon' + filepath = self.inputFileFromCaseName(case) + self.initShapeClassification(filepath) + + self.assertEqual(len(self.shapeClassification.open), 0) + self.assertEqual(len(self.shapeClassification.pecs), 3) + self.assertEqual(len(self.shapeClassification.dielectrics), 3) \ No newline at end of file diff --git a/test/test_graph.py b/test/test_graph.py index cd77d2e..e4f1932 100644 --- a/test/test_graph.py +++ b/test/test_graph.py @@ -74,6 +74,19 @@ def testPruneToLongestPaths(self) -> None: self.graph.prune_to_longest_paths() self.assertListEqual(sorted(self.graph.edges), sorted(expectedEdges)) + def testGetNodesByLevel(self) -> None: + self.graph.nodes = ['A' ,'B', 'C', 'D', 'E', 'F', 'G'] + self.graph.edges = [ + ('A', 'B'), ('A', 'D'), + ('B', 'C'), + ('C', 'E'), + ('F', 'G') + ] + + expectedList = ['A', 'F', 'B', 'D', 'G', 'C', 'E'] + sortedNodes = self.graph.getNodesByLevels() + self.assertListEqual(sortedNodes, expectedList) + def testGetRoots(self) -> None: self.graph.nodes = ['A' ,'B', 'C', 'D', 'E', 'F', 'G'] self.graph.edges = [ diff --git a/test/test_mesher.py b/test/test_mesher.py index 5fe7e29..c371d0d 100644 --- a/test/test_mesher.py +++ b/test/test_mesher.py @@ -30,6 +30,14 @@ def setUp(self): def tearDown(self): gmsh.finalize() + def assertPhysicalGroup(self,expectedNames, expectedEntities): + pGs = gmsh.model.getPhysicalGroups() + pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] + self.assertEqual(sorted(pGNames), sorted(expectedNames)) + + for idx, name in enumerate(expectedNames): + self.assertEqual(self.countEntitiesInPhysicalGroupWithName(name), expectedEntities[idx], name) + def countEntitiesInPhysicalGroupWithName(self, name: str): return len( gmsh.model.getEntitiesForPhysicalGroup( @@ -63,7 +71,7 @@ def test_mesh_from_step_with_partially_filled_coax(self): self.assertEqual(len(pGs), 4) pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] - expectedNames = ['Conductor_0', 'Conductor_1', 'Dielectric_1', 'Vacuum_0'] + expectedNames = ['Conductor_0', 'Conductor_1', 'Dielectric_0', 'Vacuum_0'] self.assertEqual(sorted(pGNames), sorted(expectedNames)) for name in expectedNames: @@ -72,8 +80,8 @@ def test_mesh_from_step_with_partially_filled_coax(self): def test_mesh_from_step_with_empty_coax(self): caseName = 'empty_coax' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - gmsh.write(caseName + '.msh') - gmsh.write(caseName + '.vtk') + #gmsh.write(caseName + '.msh') + #gmsh.write(caseName + '.vtk') pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] @@ -97,33 +105,46 @@ def test_mesh_from_step_with_two_wires_coax(self): def test_mesh_from_step_with_two_wires_open(self): caseName = 'two_wires_open' + Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - - gmsh.write(caseName + '.vtk') + #gmsh.write(caseName + '.vtk') pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] - expectedNames = ['Conductor_0', 'Conductor_1', 'OpenBoundary_0', 'Vacuum_0'] + expectedNames = ['Conductor_0', 'Conductor_1', 'OpenBoundary_0', 'Vacuum_0', 'Vacuum_1'] self.assertEqual(sorted(pGNames), sorted(expectedNames)) - expectedEntities = [1,1,1,1] + expectedEntities = [1,1,1,1,1] for idx, name in enumerate(expectedNames): self.assertEqual(self.countEntitiesInPhysicalGroupWithName(name), expectedEntities[idx], name) + def test_mesh_dielectric_pair_open(self) -> None: + caseName = 'DielectricUnshieldedPair' + expectedNames = [ + 'Conductor_0', 'Conductor_1', + 'Dielectric_0', 'Dielectric_1', + 'OpenBoundary_0', 'Vacuum_0', 'Vacuum_1'] + expectedEntities = [1,1,1,1,1,1,1] + + Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) + #gmsh.write(caseName + '.vtk') + + self.assertPhysicalGroup(expectedNames, expectedEntities) + + def test_mesh_from_step_with_five_wires(self): expectedNames = [ 'Conductor_0', 'Conductor_1', 'Conductor_2', 'Conductor_3', 'Conductor_4', 'Conductor_5', - 'Dielectric_1', 'Dielectric_2', - 'Dielectric_3', 'Dielectric_4', - 'Dielectric_5', 'Vacuum_0', + 'Dielectric_0', 'Dielectric_1', + 'Dielectric_2', 'Dielectric_3', + 'Dielectric_4', 'Vacuum_0' ] caseName = 'five_wires' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] self.assertEqual(sorted(pGNames), sorted(expectedNames)) @@ -135,7 +156,7 @@ def test_mesh_from_step_with_three_wires_ribbon(self): caseName = 'three_wires_ribbon' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - gmsh.write(caseName + '.vtk') + #gmsh.write(caseName + '.vtk') pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] @@ -143,13 +164,13 @@ def test_mesh_from_step_with_three_wires_ribbon(self): 'Conductor_0', 'Conductor_1', 'Conductor_2', 'OpenBoundary_0', 'Dielectric_0', 'Dielectric_1', 'Dielectric_2', - 'Vacuum_0' + 'Vacuum_0', 'Vacuum_1' ] expectedEntities = [1,1,1, 1, 1,1,1, - 1] - + 1,1] + self.maxDiff = None self.assertEqual(sorted(pGNames), sorted(expectedNames)) for idx, name in enumerate(expectedNames): @@ -180,7 +201,7 @@ def test_mesh_from_step_with_agrawal1981(self): pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] expectedNames = ['Conductor_0', 'Conductor_1', 'Conductor_2', 'Conductor_3', 'OpenBoundary_0', - 'Dielectric_1', 'Dielectric_2', 'Dielectric_3', + 'Dielectric_1', 'Dielectric_2', 'Dielectric_0', 'Vacuum_0'] expectedEntities = [4, 1, 1, 1, 1, @@ -190,49 +211,17 @@ def test_mesh_from_step_with_agrawal1981(self): for idx, name in enumerate(expectedNames): self.assertEqual(self.countEntitiesInPhysicalGroupWithName(name), expectedEntities[idx], name) - def test_partially_filled_coax_step_shapes(self): - caseName = 'partially_filled_coax' - stepShapes = ShapesClassification( - gmsh.model.occ.importShapes( - self.testdataPath + caseName + '/' + caseName + '.step' - ) - ) - - self.assertEqual(len(stepShapes.pecs), 2) - self.assertEqual(len(stepShapes.dielectrics), 1) - - def test_five_wires_step_shapes(self): - caseName = 'five_wires' - stepShapes = ShapesClassification( - gmsh.model.occ.importShapes( - self.testdataPath + caseName + '/' + caseName + '.step' - ) - ) - - self.assertEqual(len(stepShapes.pecs), 6) - self.assertEqual(len(stepShapes.dielectrics), 5) - - def test_three_wires_ribbon_step_shapes(self): - caseName = 'three_wires_ribbon' - stepShapes = ShapesClassification( - gmsh.model.occ.importShapes( - self.testdataPath + caseName + '/' + caseName + '.step' - ) - ) - - self.assertEqual(len(stepShapes.open), 1) - self.assertEqual(len(stepShapes.pecs), 3) - self.assertEqual(len(stepShapes.dielectrics), 3) + def test_unshielded_multiwire(self): caseName = 'unshielded_multiwire' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - gmsh.write(caseName + '.vtk') + #gmsh.write(caseName + '.vtk') pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] - expectedNames = ['Conductor_0', 'Conductor_1', 'Dielectric_1', + expectedNames = ['Conductor_0', 'Conductor_1', 'Dielectric_0', 'OpenBoundary_0', 'Vacuum_0', 'Vacuum_1'] expectedEntities = [1, 1, 1, @@ -247,7 +236,7 @@ def test_conductor_and_outer_dielectric(self): caseName = 'conductor_and_outer_dielectric' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - gmsh.write(caseName + '.vtk') + #gmsh.write(caseName + '.vtk') pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] @@ -269,8 +258,8 @@ def test_lansink2024_single_wire_multipolar(self): caseName = 'lansink2024_single_wire_multipolar' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - gmsh.write(caseName + '.msh') - gmsh.write(caseName + '.vtk') + #gmsh.write(caseName + '.msh') + #gmsh.write(caseName + '.vtk') pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] From f817b9ef79fdc2c2b33f19623267e416dffd9abe Mon Sep 17 00:00:00 2001 From: adrianarce-elemwave Date: Thu, 2 Oct 2025 17:55:53 +0200 Subject: [PATCH 06/23] minor, assertion fix --- test/test_AreaExporterService.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_AreaExporterService.py b/test/test_AreaExporterService.py index fe40ecf..e85a5f4 100644 --- a/test/test_AreaExporterService.py +++ b/test/test_AreaExporterService.py @@ -42,7 +42,7 @@ def testAreaExporterReturnsTrueValues(self): internalElements.append(geometry['area']) areaElements = self.sumAreasFromList(internalElements) - self.assertAlmostEqual(totalArea, areaElements) + self.assertAlmostEqual(totalArea, areaElements, places=5) def testJsonFormat(self) -> None: caseName = 'DielectricUnshieldedPair' From 0c965a3c7b8effd839b3750317ccb6e643edf0d4 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Sun, 12 Oct 2025 08:06:14 +0200 Subject: [PATCH 07/23] Adds realistic bundle case --- src/mesher.py | 2 +- test/test_mesher.py | 165 +- ...stic_case_with_dielectrics_fdtd_cell.FCStd | Bin 0 -> 118388 bytes ...istic_case_with_dielectrics_fdtd_cell.json | 67 + ...istic_case_with_dielectrics_fdtd_cell.step | 5360 +++++++++++++++++ 5 files changed, 5533 insertions(+), 61 deletions(-) create mode 100644 testData/realistic_case_with_dielectrics_fdtd_cell/realistic_case_with_dielectrics_fdtd_cell.FCStd create mode 100644 testData/realistic_case_with_dielectrics_fdtd_cell/realistic_case_with_dielectrics_fdtd_cell.json create mode 100644 testData/realistic_case_with_dielectrics_fdtd_cell/realistic_case_with_dielectrics_fdtd_cell.step diff --git a/src/mesher.py b/src/mesher.py index 320903b..4e02fe0 100644 --- a/src/mesher.py +++ b/src/mesher.py @@ -14,7 +14,7 @@ class Mesher(): "Mesh.MshFileVersion": 2.2, # Required for MFEM compatibility "Mesh.MeshSizeFromCurvature": 50, - "Mesh.ElementOrder": 3, + "Mesh.ElementOrder": 1, "Mesh.ScalingFactor": 1e-3, "Mesh.SurfaceFaces": 1, "Mesh.MeshSizeMax": 40, diff --git a/test/test_mesher.py b/test/test_mesher.py index c371d0d..d6b26a2 100644 --- a/test/test_mesher.py +++ b/test/test_mesher.py @@ -12,7 +12,6 @@ sys.path.insert(0, project_root) - class TestMesher(unittest.TestCase): @classmethod def setUpClass(cls): @@ -30,13 +29,14 @@ def setUp(self): def tearDown(self): gmsh.finalize() - def assertPhysicalGroup(self,expectedNames, expectedEntities): + def assertPhysicalGroup(self, expectedNames, expectedEntities): pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] self.assertEqual(sorted(pGNames), sorted(expectedNames)) for idx, name in enumerate(expectedNames): - self.assertEqual(self.countEntitiesInPhysicalGroupWithName(name), expectedEntities[idx], name) + self.assertEqual(self.countEntitiesInPhysicalGroupWithName( + name), expectedEntities[idx], name) def countEntitiesInPhysicalGroupWithName(self, name: str): return len( @@ -71,17 +71,19 @@ def test_mesh_from_step_with_partially_filled_coax(self): self.assertEqual(len(pGs), 4) pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] - expectedNames = ['Conductor_0', 'Conductor_1', 'Dielectric_0', 'Vacuum_0'] + expectedNames = ['Conductor_0', + 'Conductor_1', 'Dielectric_0', 'Vacuum_0'] self.assertEqual(sorted(pGNames), sorted(expectedNames)) for name in expectedNames: - self.assertEqual(self.countEntitiesInPhysicalGroupWithName(name), 1) + self.assertEqual( + self.countEntitiesInPhysicalGroupWithName(name), 1) def test_mesh_from_step_with_empty_coax(self): caseName = 'empty_coax' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - #gmsh.write(caseName + '.msh') - #gmsh.write(caseName + '.vtk') + # gmsh.write(caseName + '.msh') + # gmsh.write(caseName + '.vtk') pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] @@ -89,35 +91,40 @@ def test_mesh_from_step_with_empty_coax(self): self.assertEqual(sorted(pGNames), sorted(expectedNames)) for name in expectedNames: - self.assertEqual(self.countEntitiesInPhysicalGroupWithName(name), 1) + self.assertEqual( + self.countEntitiesInPhysicalGroupWithName(name), 1) def test_mesh_from_step_with_two_wires_coax(self): caseName = 'two_wires_coax' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - + pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] - expectedNames = ['Conductor_0', 'Conductor_1', 'Conductor_2', 'Vacuum_0'] + expectedNames = ['Conductor_0', + 'Conductor_1', 'Conductor_2', 'Vacuum_0'] self.assertEqual(sorted(pGNames), sorted(expectedNames)) for name in expectedNames: - self.assertEqual(self.countEntitiesInPhysicalGroupWithName(name), 1) + self.assertEqual( + self.countEntitiesInPhysicalGroupWithName(name), 1) def test_mesh_from_step_with_two_wires_open(self): caseName = 'two_wires_open' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - #gmsh.write(caseName + '.vtk') + # gmsh.write(caseName + '.vtk') pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] - expectedNames = ['Conductor_0', 'Conductor_1', 'OpenBoundary_0', 'Vacuum_0', 'Vacuum_1'] + expectedNames = ['Conductor_0', 'Conductor_1', + 'OpenBoundary_0', 'Vacuum_0', 'Vacuum_1'] self.assertEqual(sorted(pGNames), sorted(expectedNames)) - expectedEntities = [1,1,1,1,1] + expectedEntities = [1, 1, 1, 1, 1] for idx, name in enumerate(expectedNames): - self.assertEqual(self.countEntitiesInPhysicalGroupWithName(name), expectedEntities[idx], name) + self.assertEqual(self.countEntitiesInPhysicalGroupWithName( + name), expectedEntities[idx], name) def test_mesh_dielectric_pair_open(self) -> None: caseName = 'DielectricUnshieldedPair' @@ -125,21 +132,20 @@ def test_mesh_dielectric_pair_open(self) -> None: 'Conductor_0', 'Conductor_1', 'Dielectric_0', 'Dielectric_1', 'OpenBoundary_0', 'Vacuum_0', 'Vacuum_1'] - expectedEntities = [1,1,1,1,1,1,1] + expectedEntities = [1, 1, 1, 1, 1, 1, 1] Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - #gmsh.write(caseName + '.vtk') + # gmsh.write(caseName + '.vtk') self.assertPhysicalGroup(expectedNames, expectedEntities) - def test_mesh_from_step_with_five_wires(self): expectedNames = [ 'Conductor_0', 'Conductor_1', 'Conductor_2', 'Conductor_3', 'Conductor_4', 'Conductor_5', - 'Dielectric_0', 'Dielectric_1', - 'Dielectric_2', 'Dielectric_3', + 'Dielectric_0', 'Dielectric_1', + 'Dielectric_2', 'Dielectric_3', 'Dielectric_4', 'Vacuum_0' ] @@ -150,45 +156,52 @@ def test_mesh_from_step_with_five_wires(self): self.assertEqual(sorted(pGNames), sorted(expectedNames)) for name in expectedNames: - self.assertEqual(self.countEntitiesInPhysicalGroupWithName(name), 1) + self.assertEqual( + self.countEntitiesInPhysicalGroupWithName(name), 1) def test_mesh_from_step_with_three_wires_ribbon(self): caseName = 'three_wires_ribbon' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - - #gmsh.write(caseName + '.vtk') + + # gmsh.write(caseName + '.vtk') pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] expectedNames = [ - 'Conductor_0', 'Conductor_1', 'Conductor_2', + 'Conductor_0', 'Conductor_1', 'Conductor_2', 'OpenBoundary_0', - 'Dielectric_0', 'Dielectric_1', 'Dielectric_2', + 'Dielectric_0', 'Dielectric_1', 'Dielectric_2', 'Vacuum_0', 'Vacuum_1' ] - expectedEntities = [1,1,1, + expectedEntities = [1, 1, 1, 1, - 1,1,1, - 1,1] + 1, 1, 1, + 1, 1] self.maxDiff = None self.assertEqual(sorted(pGNames), sorted(expectedNames)) for idx, name in enumerate(expectedNames): - self.assertEqual(self.countEntitiesInPhysicalGroupWithName(name), expectedEntities[idx], name) + self.assertEqual(self.countEntitiesInPhysicalGroupWithName( + name), expectedEntities[idx], name) def test_mesh_from_step_with_nested_coax(self): caseName = 'nested_coax' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - + pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] - expectedNames = ['Conductor_0', 'Conductor_1', 'Conductor_2', 'Vacuum_0'] + expectedNames = ['Conductor_0', + 'Conductor_1', 'Conductor_2', 'Vacuum_0'] self.assertEqual(sorted(pGNames), sorted(expectedNames)) - self.assertEqual(self.countEntitiesInPhysicalGroupWithName('Conductor_0'), 1) - self.assertEqual(self.countEntitiesInPhysicalGroupWithName('Conductor_1'), 2) - self.assertEqual(self.countEntitiesInPhysicalGroupWithName('Conductor_2'), 1) - self.assertEqual(self.countEntitiesInPhysicalGroupWithName('Vacuum_0'), 2) + self.assertEqual( + self.countEntitiesInPhysicalGroupWithName('Conductor_0'), 1) + self.assertEqual( + self.countEntitiesInPhysicalGroupWithName('Conductor_1'), 2) + self.assertEqual( + self.countEntitiesInPhysicalGroupWithName('Conductor_2'), 1) + self.assertEqual( + self.countEntitiesInPhysicalGroupWithName('Vacuum_0'), 2) def test_mesh_from_step_with_agrawal1981(self): caseName = 'agrawal1981' @@ -200,28 +213,27 @@ def test_mesh_from_step_with_agrawal1981(self): pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] expectedNames = ['Conductor_0', 'Conductor_1', 'Conductor_2', 'Conductor_3', - 'OpenBoundary_0', - 'Dielectric_1', 'Dielectric_2', 'Dielectric_0', + 'OpenBoundary_0', + 'Dielectric_1', 'Dielectric_2', 'Dielectric_0', 'Vacuum_0'] - expectedEntities = [4, 1, 1, 1, + expectedEntities = [4, 1, 1, 1, 1, 1, 1, 1, 2] - - for idx, name in enumerate(expectedNames): - self.assertEqual(self.countEntitiesInPhysicalGroupWithName(name), expectedEntities[idx], name) - + for idx, name in enumerate(expectedNames): + self.assertEqual(self.countEntitiesInPhysicalGroupWithName( + name), expectedEntities[idx], name) def test_unshielded_multiwire(self): caseName = 'unshielded_multiwire' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - - #gmsh.write(caseName + '.vtk') + + # gmsh.write(caseName + '.vtk') pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] - expectedNames = ['Conductor_0', 'Conductor_1', 'Dielectric_0', + expectedNames = ['Conductor_0', 'Conductor_1', 'Dielectric_0', 'OpenBoundary_0', 'Vacuum_0', 'Vacuum_1'] expectedEntities = [1, 1, 1, @@ -230,41 +242,73 @@ def test_unshielded_multiwire(self): self.assertEqual(sorted(pGNames), sorted(expectedNames)) for idx, name in enumerate(expectedNames): - self.assertEqual(self.countEntitiesInPhysicalGroupWithName(name), expectedEntities[idx], name) + self.assertEqual(self.countEntitiesInPhysicalGroupWithName( + name), expectedEntities[idx], name) def test_conductor_and_outer_dielectric(self): caseName = 'conductor_and_outer_dielectric' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - - #gmsh.write(caseName + '.vtk') + + gmsh.write(caseName + '.vtk') + gmsh.write(caseName + '.msh') pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] - expectedNames = ['Conductor_0', - 'Dielectric_0', + expectedNames = ['Conductor_0', + 'Dielectric_0', 'OpenBoundary_0', 'Vacuum_0', 'Vacuum_1'] - expectedEntities = [1, - 1, + expectedEntities = [1, + 1, 1, 2, 1] self.assertEqual(sorted(pGNames), sorted(expectedNames)) for idx, name in enumerate(expectedNames): - self.assertEqual(self.countEntitiesInPhysicalGroupWithName(name), expectedEntities[idx], name) + self.assertEqual(self.countEntitiesInPhysicalGroupWithName( + name), expectedEntities[idx], name) + + def test_realistic_case_with_dielectrics_fdtd_cell(self): + caseName = 'realistic_case_with_dielectrics_fdtd_cell' + Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) + + gmsh.write(caseName + '.vtk') + gmsh.write(caseName + '.msh') + + pGs = gmsh.model.getPhysicalGroups() + pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] + + expectedNames = ['Conductor_0', 'Conductor_1', 'Conductor_2', 'Conductor_3', 'Conductor_4', + 'Conductor_5', 'Conductor_6', 'Conductor_7', 'Conductor_8', 'Conductor_9', + 'Conductor_10', 'Conductor_11', 'Conductor_12', 'Conductor_13', 'Conductor_14', + 'Conductor_15', 'Conductor_16', 'Conductor_17', 'Conductor_18', 'Conductor_19', + 'Conductor_20', 'Conductor_21', 'Conductor_22', 'Conductor_23', 'Conductor_24', + 'Conductor_25', 'Conductor_26', 'Conductor_27', 'Conductor_28', 'Conductor_29', + 'Conductor_30', + 'Dielectric_0', 'Dielectric_1', 'Dielectric_2', 'Dielectric_3', 'Dielectric_4', + 'Dielectric_5', 'Dielectric_6', 'Dielectric_7', 'Dielectric_8', 'Dielectric_9', + 'Dielectric_10', 'Dielectric_11', 'Dielectric_12', 'Dielectric_13', 'Dielectric_14', + 'Dielectric_15', 'Dielectric_16', 'Dielectric_17', 'Dielectric_18', 'Dielectric_19', + 'Dielectric_20', 'Dielectric_21', 'Dielectric_22', 'Dielectric_23', 'Dielectric_24', + 'Dielectric_25', 'Dielectric_26', 'Dielectric_27', 'Dielectric_28', 'Dielectric_29', + 'Dielectric_30', 'Dielectric_31', # There is one more dielectric because it is separated by the external dielectric. + 'OpenBoundary_0', + 'Vacuum_0', 'Vacuum_1'] + self.assertEqual(sorted(pGNames), sorted(expectedNames)) + def test_lansink2024_single_wire_multipolar(self): caseName = 'lansink2024_single_wire_multipolar' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - - #gmsh.write(caseName + '.msh') - #gmsh.write(caseName + '.vtk') + + # gmsh.write(caseName + '.msh') + # gmsh.write(caseName + '.vtk') pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] - expectedNames = ['Conductor_0', - 'Dielectric_0', + expectedNames = ['Conductor_0', + 'Dielectric_0', 'OpenBoundary_0', 'Vacuum_0', 'Vacuum_1'] expectedEntities = [1, 1, 1, @@ -273,8 +317,9 @@ def test_lansink2024_single_wire_multipolar(self): self.assertEqual(sorted(pGNames), sorted(expectedNames)) for idx, name in enumerate(expectedNames): - self.assertEqual(self.countEntitiesInPhysicalGroupWithName(name), expectedEntities[idx], name) + self.assertEqual(self.countEntitiesInPhysicalGroupWithName( + name), expectedEntities[idx], name) if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/testData/realistic_case_with_dielectrics_fdtd_cell/realistic_case_with_dielectrics_fdtd_cell.FCStd b/testData/realistic_case_with_dielectrics_fdtd_cell/realistic_case_with_dielectrics_fdtd_cell.FCStd new file mode 100644 index 0000000000000000000000000000000000000000..da6cd83a6379df7996f4e0fd9f6bfc71c52b7702 GIT binary patch literal 118388 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�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%0AXY@qcPrZ1!{hc$Z_sWxHCBwO5=&;D} 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 F{{i{;;rIXm literal 0 HcmV?d00001 diff --git a/testData/realistic_case_with_dielectrics_fdtd_cell/realistic_case_with_dielectrics_fdtd_cell.json b/testData/realistic_case_with_dielectrics_fdtd_cell/realistic_case_with_dielectrics_fdtd_cell.json new file mode 100644 index 0000000..50f3ca2 --- /dev/null +++ b/testData/realistic_case_with_dielectrics_fdtd_cell/realistic_case_with_dielectrics_fdtd_cell.json @@ -0,0 +1,67 @@ +{ + "CrossSection": [ + { "name": "Conductor_000", "material": { "type": "PEC" } }, + { "name": "Conductor_001", "material": { "type": "PEC" } }, + { "name": "Conductor_002", "material": { "type": "PEC" } }, + { "name": "Conductor_003", "material": { "type": "PEC" } }, + { "name": "Conductor_004", "material": { "type": "PEC" } }, + { "name": "Conductor_005", "material": { "type": "PEC" } }, + { "name": "Conductor_006", "material": { "type": "PEC" } }, + { "name": "Conductor_007", "material": { "type": "PEC" } }, + { "name": "Conductor_008", "material": { "type": "PEC" } }, + { "name": "Conductor_009", "material": { "type": "PEC" } }, + { "name": "Conductor_010", "material": { "type": "PEC" } }, + { "name": "Conductor_011", "material": { "type": "PEC" } }, + { "name": "Conductor_012", "material": { "type": "PEC" } }, + { "name": "Conductor_013", "material": { "type": "PEC" } }, + { "name": "Conductor_014", "material": { "type": "PEC" } }, + { "name": "Conductor_015", "material": { "type": "PEC" } }, + { "name": "Conductor_016", "material": { "type": "PEC" } }, + { "name": "Conductor_017", "material": { "type": "PEC" } }, + { "name": "Conductor_018", "material": { "type": "PEC" } }, + { "name": "Conductor_019", "material": { "type": "PEC" } }, + { "name": "Conductor_020", "material": { "type": "PEC" } }, + { "name": "Conductor_021", "material": { "type": "PEC" } }, + { "name": "Conductor_022", "material": { "type": "PEC" } }, + { "name": "Conductor_023", "material": { "type": "PEC" } }, + { "name": "Conductor_024", "material": { "type": "PEC" } }, + { "name": "Conductor_025", "material": { "type": "PEC" } }, + { "name": "Conductor_026", "material": { "type": "PEC" } }, + { "name": "Conductor_027", "material": { "type": "PEC" } }, + { "name": "Conductor_028", "material": { "type": "PEC" } }, + { "name": "Conductor_029", "material": { "type": "PEC" } }, + { "name": "Conductor_030", "material": { "type": "PEC" } }, + { "name": "Dielectric_000", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_001", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_002", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_003", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_004", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_005", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_006", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_007", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_008", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_009", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_010", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_011", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_012", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_013", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_014", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_015", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_016", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_017", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_018", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_019", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_020", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_021", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_022", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_023", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_024", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_025", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_026", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_027", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_028", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_029", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Dielectric_030", "material": { "type": "Dielectric", "permittivity": 2.0 } }, + { "name": "Inner_region", "material": { "type": "Dielectric", "permittivity": 1.0 } } + ] +} \ No newline at end of file diff --git a/testData/realistic_case_with_dielectrics_fdtd_cell/realistic_case_with_dielectrics_fdtd_cell.step b/testData/realistic_case_with_dielectrics_fdtd_cell/realistic_case_with_dielectrics_fdtd_cell.step new file mode 100644 index 0000000..6b3905e --- /dev/null +++ b/testData/realistic_case_with_dielectrics_fdtd_cell/realistic_case_with_dielectrics_fdtd_cell.step @@ -0,0 +1,5360 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('FreeCAD Model'),'2;1'); +FILE_NAME('Open CASCADE Shape Model','2025-10-12T07:53:31',(''),(''), + 'Open CASCADE STEP processor 7.6','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('realistic_case_with_dielectrics_fdtd_cell', + 'realistic_case_with_dielectrics_fdtd_cell','',(#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, + #51,#55,#59,#63,#67,#71,#75,#79,#83,#87,#91,#95,#99,#103,#107,#111, + #115,#119,#123,#127,#131,#135,#139,#143,#147,#151,#155,#159,#163, + #167,#171,#175,#179,#183,#187,#191,#195,#199,#203,#207,#211,#215, + #219,#223,#227,#231,#235,#239,#243,#247,#251,#255,#259,#263,#267), + #271); +#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('',(-1.209,5.934,0.)); +#21 = DIRECTION('',(0.,0.,1.)); +#22 = DIRECTION('',(1.,0.,0.)); +#23 = AXIS2_PLACEMENT_3D('',#24,#25,#26); +#24 = CARTESIAN_POINT('',(-3.734,4.83,0.)); +#25 = DIRECTION('',(0.,0.,1.)); +#26 = DIRECTION('',(1.,0.,0.)); +#27 = AXIS2_PLACEMENT_3D('',#28,#29,#30); +#28 = CARTESIAN_POINT('',(-5.595,2.349,0.)); +#29 = DIRECTION('',(0.,0.,1.)); +#30 = DIRECTION('',(1.,0.,0.)); +#31 = AXIS2_PLACEMENT_3D('',#32,#33,#34); +#32 = CARTESIAN_POINT('',(-5.905,-0.548,0.)); +#33 = DIRECTION('',(0.,0.,1.)); +#34 = DIRECTION('',(1.,0.,0.)); +#35 = AXIS2_PLACEMENT_3D('',#36,#37,#38); +#36 = CARTESIAN_POINT('',(-5.141,-3.16,0.)); +#37 = DIRECTION('',(0.,0.,1.)); +#38 = DIRECTION('',(1.,0.,0.)); +#39 = AXIS2_PLACEMENT_3D('',#40,#41,#42); +#40 = CARTESIAN_POINT('',(-2.923,-5.378,0.)); +#41 = DIRECTION('',(0.,0.,1.)); +#42 = DIRECTION('',(1.,0.,0.)); +#43 = AXIS2_PLACEMENT_3D('',#44,#45,#46); +#44 = CARTESIAN_POINT('',(6.545,-0.417,0.)); +#45 = DIRECTION('',(0.,0.,1.)); +#46 = DIRECTION('',(1.,0.,0.)); +#47 = AXIS2_PLACEMENT_3D('',#48,#49,#50); +#48 = CARTESIAN_POINT('',(5.699,2.671,0.)); +#49 = DIRECTION('',(0.,0.,1.)); +#50 = DIRECTION('',(1.,0.,0.)); +#51 = AXIS2_PLACEMENT_3D('',#52,#53,#54); +#52 = CARTESIAN_POINT('',(3.767,4.46,0.)); +#53 = DIRECTION('',(0.,0.,1.)); +#54 = DIRECTION('',(1.,0.,0.)); +#55 = AXIS2_PLACEMENT_3D('',#56,#57,#58); +#56 = CARTESIAN_POINT('',(1.763,2.457,0.)); +#57 = DIRECTION('',(0.,0.,1.)); +#58 = DIRECTION('',(1.,0.,0.)); +#59 = AXIS2_PLACEMENT_3D('',#60,#61,#62); +#60 = CARTESIAN_POINT('',(2.2E-02,0.358,0.)); +#61 = DIRECTION('',(0.,0.,1.)); +#62 = DIRECTION('',(1.,0.,0.)); +#63 = AXIS2_PLACEMENT_3D('',#64,#65,#66); +#64 = CARTESIAN_POINT('',(-1.015,-2.337,0.)); +#65 = DIRECTION('',(0.,0.,1.)); +#66 = DIRECTION('',(1.,0.,0.)); +#67 = AXIS2_PLACEMENT_3D('',#68,#69,#70); +#68 = CARTESIAN_POINT('',(-2.983,-3.6E-02,0.)); +#69 = DIRECTION('',(0.,0.,1.)); +#70 = DIRECTION('',(1.,0.,0.)); +#71 = AXIS2_PLACEMENT_3D('',#72,#73,#74); +#72 = CARTESIAN_POINT('',(-1.683,2.314,0.)); +#73 = DIRECTION('',(0.,0.,1.)); +#74 = DIRECTION('',(1.,0.,0.)); +#75 = AXIS2_PLACEMENT_3D('',#76,#77,#78); +#76 = CARTESIAN_POINT('',(-9.7E-02,3.721,0.)); +#77 = DIRECTION('',(0.,0.,1.)); +#78 = DIRECTION('',(1.,0.,0.)); +#79 = AXIS2_PLACEMENT_3D('',#80,#81,#82); +#80 = CARTESIAN_POINT('',(-3.221,-2.325,0.)); +#81 = DIRECTION('',(0.,0.,1.)); +#82 = DIRECTION('',(1.,0.,0.)); +#83 = AXIS2_PLACEMENT_3D('',#84,#85,#86); +#84 = CARTESIAN_POINT('',(1.334,-1.359,0.)); +#85 = DIRECTION('',(0.,0.,1.)); +#86 = DIRECTION('',(1.,0.,0.)); +#87 = AXIS2_PLACEMENT_3D('',#88,#89,#90); +#88 = CARTESIAN_POINT('',(3.588,1.443,0.)); +#89 = DIRECTION('',(0.,0.,1.)); +#90 = DIRECTION('',(1.,0.,0.)); +#91 = AXIS2_PLACEMENT_3D('',#92,#93,#94); +#92 = CARTESIAN_POINT('',(4.578,0.203,0.)); +#93 = DIRECTION('',(0.,0.,1.)); +#94 = DIRECTION('',(1.,0.,0.)); +#95 = AXIS2_PLACEMENT_3D('',#96,#97,#98); +#96 = CARTESIAN_POINT('',(4.399,-0.751,0.)); +#97 = DIRECTION('',(0.,0.,1.)); +#98 = DIRECTION('',(1.,0.,0.)); +#99 = AXIS2_PLACEMENT_3D('',#100,#101,#102); +#100 = CARTESIAN_POINT('',(2.658,-1.24,0.)); +#101 = DIRECTION('',(0.,0.,1.)); +#102 = DIRECTION('',(1.,0.,0.)); +#103 = AXIS2_PLACEMENT_3D('',#104,#105,#106); +#104 = CARTESIAN_POINT('',(3.779,-1.86,0.)); +#105 = DIRECTION('',(0.,0.,1.)); +#106 = DIRECTION('',(1.,0.,0.)); +#107 = AXIS2_PLACEMENT_3D('',#108,#109,#110); +#108 = CARTESIAN_POINT('',(4.876,-2.552,0.)); +#109 = DIRECTION('',(0.,0.,1.)); +#110 = DIRECTION('',(1.,0.,0.)); +#111 = AXIS2_PLACEMENT_3D('',#112,#113,#114); +#112 = CARTESIAN_POINT('',(6.235,-2.623,0.)); +#113 = DIRECTION('',(0.,0.,1.)); +#114 = DIRECTION('',(1.,0.,0.)); +#115 = AXIS2_PLACEMENT_3D('',#116,#117,#118); +#116 = CARTESIAN_POINT('',(5.961,-3.661,0.)); +#117 = DIRECTION('',(0.,0.,1.)); +#118 = DIRECTION('',(1.,0.,0.)); +#119 = AXIS2_PLACEMENT_3D('',#120,#121,#122); +#120 = CARTESIAN_POINT('',(0.929,6.547,0.)); +#121 = DIRECTION('',(0.,0.,1.)); +#122 = DIRECTION('',(1.,0.,0.)); +#123 = AXIS2_PLACEMENT_3D('',#124,#125,#126); +#124 = CARTESIAN_POINT('',(2.562,6.213,0.)); +#125 = DIRECTION('',(0.,0.,1.)); +#126 = DIRECTION('',(1.,0.,0.)); +#127 = AXIS2_PLACEMENT_3D('',#128,#129,#130); +#128 = CARTESIAN_POINT('',(1.012,4.866,0.)); +#129 = DIRECTION('',(0.,0.,1.)); +#130 = DIRECTION('',(1.,0.,0.)); +#131 = AXIS2_PLACEMENT_3D('',#132,#133,#134); +#132 = CARTESIAN_POINT('',(2.562,0.251,0.)); +#133 = DIRECTION('',(0.,0.,1.)); +#134 = DIRECTION('',(1.,0.,0.)); +#135 = AXIS2_PLACEMENT_3D('',#136,#137,#138); +#136 = CARTESIAN_POINT('',(-1.087,-6.535,0.)); +#137 = DIRECTION('',(0.,0.,1.)); +#138 = DIRECTION('',(1.,0.,0.)); +#139 = AXIS2_PLACEMENT_3D('',#140,#141,#142); +#140 = CARTESIAN_POINT('',(2.336,-4.901,0.)); +#141 = DIRECTION('',(0.,0.,1.)); +#142 = DIRECTION('',(1.,0.,0.)); +#143 = AXIS2_PLACEMENT_3D('',#144,#145,#146); +#144 = CARTESIAN_POINT('',(-1.209,5.934,0.)); +#145 = DIRECTION('',(0.,0.,1.)); +#146 = DIRECTION('',(1.,0.,0.)); +#147 = AXIS2_PLACEMENT_3D('',#148,#149,#150); +#148 = CARTESIAN_POINT('',(-3.734,4.83,0.)); +#149 = DIRECTION('',(0.,0.,1.)); +#150 = DIRECTION('',(1.,0.,0.)); +#151 = AXIS2_PLACEMENT_3D('',#152,#153,#154); +#152 = CARTESIAN_POINT('',(-5.595,2.349,0.)); +#153 = DIRECTION('',(0.,0.,1.)); +#154 = DIRECTION('',(1.,0.,0.)); +#155 = AXIS2_PLACEMENT_3D('',#156,#157,#158); +#156 = CARTESIAN_POINT('',(-5.905,-0.548,0.)); +#157 = DIRECTION('',(0.,0.,1.)); +#158 = DIRECTION('',(1.,0.,0.)); +#159 = AXIS2_PLACEMENT_3D('',#160,#161,#162); +#160 = CARTESIAN_POINT('',(-5.141,-3.16,0.)); +#161 = DIRECTION('',(0.,0.,1.)); +#162 = DIRECTION('',(1.,0.,0.)); +#163 = AXIS2_PLACEMENT_3D('',#164,#165,#166); +#164 = CARTESIAN_POINT('',(-2.923,-5.378,0.)); +#165 = DIRECTION('',(0.,0.,1.)); +#166 = DIRECTION('',(1.,0.,0.)); +#167 = AXIS2_PLACEMENT_3D('',#168,#169,#170); +#168 = CARTESIAN_POINT('',(6.545,-0.417,0.)); +#169 = DIRECTION('',(0.,0.,1.)); +#170 = DIRECTION('',(1.,0.,0.)); +#171 = AXIS2_PLACEMENT_3D('',#172,#173,#174); +#172 = CARTESIAN_POINT('',(5.699,2.671,0.)); +#173 = DIRECTION('',(0.,0.,1.)); +#174 = DIRECTION('',(1.,0.,0.)); +#175 = AXIS2_PLACEMENT_3D('',#176,#177,#178); +#176 = CARTESIAN_POINT('',(3.767,4.46,0.)); +#177 = DIRECTION('',(0.,0.,1.)); +#178 = DIRECTION('',(1.,0.,0.)); +#179 = AXIS2_PLACEMENT_3D('',#180,#181,#182); +#180 = CARTESIAN_POINT('',(1.763,2.457,0.)); +#181 = DIRECTION('',(0.,0.,1.)); +#182 = DIRECTION('',(1.,0.,0.)); +#183 = AXIS2_PLACEMENT_3D('',#184,#185,#186); +#184 = CARTESIAN_POINT('',(2.2E-02,0.358,0.)); +#185 = DIRECTION('',(0.,0.,1.)); +#186 = DIRECTION('',(1.,0.,0.)); +#187 = AXIS2_PLACEMENT_3D('',#188,#189,#190); +#188 = CARTESIAN_POINT('',(-1.015,-2.337,0.)); +#189 = DIRECTION('',(0.,0.,1.)); +#190 = DIRECTION('',(1.,0.,0.)); +#191 = AXIS2_PLACEMENT_3D('',#192,#193,#194); +#192 = CARTESIAN_POINT('',(-2.983,-3.6E-02,0.)); +#193 = DIRECTION('',(0.,0.,1.)); +#194 = DIRECTION('',(1.,0.,0.)); +#195 = AXIS2_PLACEMENT_3D('',#196,#197,#198); +#196 = CARTESIAN_POINT('',(-1.683,2.314,0.)); +#197 = DIRECTION('',(0.,0.,1.)); +#198 = DIRECTION('',(1.,0.,0.)); +#199 = AXIS2_PLACEMENT_3D('',#200,#201,#202); +#200 = CARTESIAN_POINT('',(0.,0.,0.)); +#201 = DIRECTION('',(0.,0.,1.)); +#202 = DIRECTION('',(1.,0.,0.)); +#203 = AXIS2_PLACEMENT_3D('',#204,#205,#206); +#204 = CARTESIAN_POINT('',(-9.7E-02,3.721,0.)); +#205 = DIRECTION('',(0.,0.,1.)); +#206 = DIRECTION('',(1.,0.,0.)); +#207 = AXIS2_PLACEMENT_3D('',#208,#209,#210); +#208 = CARTESIAN_POINT('',(-3.221,-2.325,0.)); +#209 = DIRECTION('',(0.,0.,1.)); +#210 = DIRECTION('',(1.,0.,0.)); +#211 = AXIS2_PLACEMENT_3D('',#212,#213,#214); +#212 = CARTESIAN_POINT('',(1.334,-1.359,0.)); +#213 = DIRECTION('',(0.,0.,1.)); +#214 = DIRECTION('',(1.,0.,0.)); +#215 = AXIS2_PLACEMENT_3D('',#216,#217,#218); +#216 = CARTESIAN_POINT('',(3.588,1.443,0.)); +#217 = DIRECTION('',(0.,0.,1.)); +#218 = DIRECTION('',(1.,0.,0.)); +#219 = AXIS2_PLACEMENT_3D('',#220,#221,#222); +#220 = CARTESIAN_POINT('',(4.578,0.203,0.)); +#221 = DIRECTION('',(0.,0.,1.)); +#222 = DIRECTION('',(1.,0.,0.)); +#223 = AXIS2_PLACEMENT_3D('',#224,#225,#226); +#224 = CARTESIAN_POINT('',(4.399,-0.751,0.)); +#225 = DIRECTION('',(0.,0.,1.)); +#226 = DIRECTION('',(1.,0.,0.)); +#227 = AXIS2_PLACEMENT_3D('',#228,#229,#230); +#228 = CARTESIAN_POINT('',(2.658,-1.24,0.)); +#229 = DIRECTION('',(0.,0.,1.)); +#230 = DIRECTION('',(1.,0.,0.)); +#231 = AXIS2_PLACEMENT_3D('',#232,#233,#234); +#232 = CARTESIAN_POINT('',(3.779,-1.86,0.)); +#233 = DIRECTION('',(0.,0.,1.)); +#234 = DIRECTION('',(1.,0.,0.)); +#235 = AXIS2_PLACEMENT_3D('',#236,#237,#238); +#236 = CARTESIAN_POINT('',(4.876,-2.552,0.)); +#237 = DIRECTION('',(0.,0.,1.)); +#238 = DIRECTION('',(1.,0.,0.)); +#239 = AXIS2_PLACEMENT_3D('',#240,#241,#242); +#240 = CARTESIAN_POINT('',(6.235,-2.623,0.)); +#241 = DIRECTION('',(0.,0.,1.)); +#242 = DIRECTION('',(1.,0.,0.)); +#243 = AXIS2_PLACEMENT_3D('',#244,#245,#246); +#244 = CARTESIAN_POINT('',(5.961,-3.661,0.)); +#245 = DIRECTION('',(0.,0.,1.)); +#246 = DIRECTION('',(1.,0.,0.)); +#247 = AXIS2_PLACEMENT_3D('',#248,#249,#250); +#248 = CARTESIAN_POINT('',(0.929,6.547,0.)); +#249 = DIRECTION('',(0.,0.,1.)); +#250 = DIRECTION('',(1.,0.,0.)); +#251 = AXIS2_PLACEMENT_3D('',#252,#253,#254); +#252 = CARTESIAN_POINT('',(2.562,6.213,0.)); +#253 = DIRECTION('',(0.,0.,1.)); +#254 = DIRECTION('',(1.,0.,0.)); +#255 = AXIS2_PLACEMENT_3D('',#256,#257,#258); +#256 = CARTESIAN_POINT('',(1.012,4.866,0.)); +#257 = DIRECTION('',(0.,0.,1.)); +#258 = DIRECTION('',(1.,0.,0.)); +#259 = AXIS2_PLACEMENT_3D('',#260,#261,#262); +#260 = CARTESIAN_POINT('',(2.562,0.251,0.)); +#261 = DIRECTION('',(0.,0.,1.)); +#262 = DIRECTION('',(1.,0.,0.)); +#263 = AXIS2_PLACEMENT_3D('',#264,#265,#266); +#264 = CARTESIAN_POINT('',(-1.087,-6.535,0.)); +#265 = DIRECTION('',(0.,0.,1.)); +#266 = DIRECTION('',(1.,0.,0.)); +#267 = AXIS2_PLACEMENT_3D('',#268,#269,#270); +#268 = CARTESIAN_POINT('',(0.,0.,0.)); +#269 = DIRECTION('',(0.,0.,1.)); +#270 = DIRECTION('',(1.,0.,0.)); +#271 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#275)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#272,#273,#274)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#272 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#273 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#274 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#275 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#272, + 'distance_accuracy_value','confusion accuracy'); +#276 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7)); +#277 = SHAPE_DEFINITION_REPRESENTATION(#278,#284); +#278 = PRODUCT_DEFINITION_SHAPE('','',#279); +#279 = PRODUCT_DEFINITION('design','',#280,#283); +#280 = PRODUCT_DEFINITION_FORMATION('','',#281); +#281 = PRODUCT('Inner_region','Inner_region','',(#282)); +#282 = PRODUCT_CONTEXT('',#2,'mechanical'); +#283 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#284 = SHAPE_REPRESENTATION('',(#11,#285,#378),#975); +#285 = SHELL_BASED_SURFACE_MODEL('',(#286)); +#286 = OPEN_SHELL('',(#287)); +#287 = ADVANCED_FACE('',(#288,#359),#302,.T.); +#288 = FACE_BOUND('',#289,.T.); +#289 = EDGE_LOOP('',(#290,#313,#329,#345)); +#290 = ORIENTED_EDGE('',*,*,#291,.T.); +#291 = EDGE_CURVE('',#292,#294,#296,.T.); +#292 = VERTEX_POINT('',#293); +#293 = CARTESIAN_POINT('',(-15.,-15.,0.)); +#294 = VERTEX_POINT('',#295); +#295 = CARTESIAN_POINT('',(15.,-15.,0.)); +#296 = SURFACE_CURVE('',#297,(#301),.PCURVE_S1.); +#297 = LINE('',#298,#299); +#298 = CARTESIAN_POINT('',(-15.,-15.,0.)); +#299 = VECTOR('',#300,1.); +#300 = DIRECTION('',(1.,0.,0.)); +#301 = PCURVE('',#302,#307); +#302 = PLANE('',#303); +#303 = AXIS2_PLACEMENT_3D('',#304,#305,#306); +#304 = CARTESIAN_POINT('',(0.,0.,0.)); +#305 = DIRECTION('',(0.,0.,1.)); +#306 = DIRECTION('',(1.,0.,0.)); +#307 = DEFINITIONAL_REPRESENTATION('',(#308),#312); +#308 = LINE('',#309,#310); +#309 = CARTESIAN_POINT('',(-15.,-15.)); +#310 = VECTOR('',#311,1.); +#311 = DIRECTION('',(1.,0.)); +#312 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#313 = ORIENTED_EDGE('',*,*,#314,.T.); +#314 = EDGE_CURVE('',#294,#315,#317,.T.); +#315 = VERTEX_POINT('',#316); +#316 = CARTESIAN_POINT('',(15.,15.,0.)); +#317 = SURFACE_CURVE('',#318,(#322),.PCURVE_S1.); +#318 = LINE('',#319,#320); +#319 = CARTESIAN_POINT('',(15.,-15.,0.)); +#320 = VECTOR('',#321,1.); +#321 = DIRECTION('',(0.,1.,0.)); +#322 = PCURVE('',#302,#323); +#323 = DEFINITIONAL_REPRESENTATION('',(#324),#328); +#324 = LINE('',#325,#326); +#325 = CARTESIAN_POINT('',(15.,-15.)); +#326 = VECTOR('',#327,1.); +#327 = DIRECTION('',(0.,1.)); +#328 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#329 = ORIENTED_EDGE('',*,*,#330,.T.); +#330 = EDGE_CURVE('',#315,#331,#333,.T.); +#331 = VERTEX_POINT('',#332); +#332 = CARTESIAN_POINT('',(-15.,15.,0.)); +#333 = SURFACE_CURVE('',#334,(#338),.PCURVE_S1.); +#334 = LINE('',#335,#336); +#335 = CARTESIAN_POINT('',(15.,15.,0.)); +#336 = VECTOR('',#337,1.); +#337 = DIRECTION('',(-1.,0.,0.)); +#338 = PCURVE('',#302,#339); +#339 = DEFINITIONAL_REPRESENTATION('',(#340),#344); +#340 = LINE('',#341,#342); +#341 = CARTESIAN_POINT('',(15.,15.)); +#342 = VECTOR('',#343,1.); +#343 = DIRECTION('',(-1.,0.)); +#344 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#345 = ORIENTED_EDGE('',*,*,#346,.T.); +#346 = EDGE_CURVE('',#331,#292,#347,.T.); +#347 = SURFACE_CURVE('',#348,(#352),.PCURVE_S1.); +#348 = LINE('',#349,#350); +#349 = CARTESIAN_POINT('',(-15.,15.,0.)); +#350 = VECTOR('',#351,1.); +#351 = DIRECTION('',(0.,-1.,0.)); +#352 = PCURVE('',#302,#353); +#353 = DEFINITIONAL_REPRESENTATION('',(#354),#358); +#354 = LINE('',#355,#356); +#355 = CARTESIAN_POINT('',(-15.,15.)); +#356 = VECTOR('',#357,1.); +#357 = DIRECTION('',(0.,-1.)); +#358 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#359 = FACE_BOUND('',#360,.T.); +#360 = EDGE_LOOP('',(#361)); +#361 = ORIENTED_EDGE('',*,*,#362,.F.); +#362 = EDGE_CURVE('',#363,#363,#365,.T.); +#363 = VERTEX_POINT('',#364); +#364 = CARTESIAN_POINT('',(8.05,0.,0.)); +#365 = SURFACE_CURVE('',#366,(#371),.PCURVE_S1.); +#366 = CIRCLE('',#367,8.05); +#367 = AXIS2_PLACEMENT_3D('',#368,#369,#370); +#368 = CARTESIAN_POINT('',(0.,0.,0.)); +#369 = DIRECTION('',(0.,0.,1.)); +#370 = DIRECTION('',(1.,0.,0.)); +#371 = PCURVE('',#302,#372); +#372 = DEFINITIONAL_REPRESENTATION('',(#373),#377); +#373 = CIRCLE('',#374,8.05); +#374 = AXIS2_PLACEMENT_2D('',#375,#376); +#375 = CARTESIAN_POINT('',(0.,0.)); +#376 = DIRECTION('',(1.,0.)); +#377 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#378 = SHELL_BASED_SURFACE_MODEL('',(#379)); +#379 = OPEN_SHELL('',(#380)); +#380 = ADVANCED_FACE('',(#381,#405,#424,#443,#462,#481,#500,#519,#538, + #557,#576,#595,#614,#633,#652,#671,#690,#709,#728,#747,#766,#785, + #804,#823,#842,#861,#880,#899,#918,#937,#956),#394,.T.); +#381 = FACE_BOUND('',#382,.T.); +#382 = EDGE_LOOP('',(#383)); +#383 = ORIENTED_EDGE('',*,*,#384,.T.); +#384 = EDGE_CURVE('',#385,#385,#387,.T.); +#385 = VERTEX_POINT('',#386); +#386 = CARTESIAN_POINT('',(7.95,0.,0.)); +#387 = SURFACE_CURVE('',#388,(#393),.PCURVE_S1.); +#388 = CIRCLE('',#389,7.95); +#389 = AXIS2_PLACEMENT_3D('',#390,#391,#392); +#390 = CARTESIAN_POINT('',(0.,0.,0.)); +#391 = DIRECTION('',(0.,0.,1.)); +#392 = DIRECTION('',(1.,0.,0.)); +#393 = PCURVE('',#394,#399); +#394 = PLANE('',#395); +#395 = AXIS2_PLACEMENT_3D('',#396,#397,#398); +#396 = CARTESIAN_POINT('',(0.,0.,0.)); +#397 = DIRECTION('',(0.,0.,1.)); +#398 = DIRECTION('',(1.,0.,0.)); +#399 = DEFINITIONAL_REPRESENTATION('',(#400),#404); +#400 = CIRCLE('',#401,7.95); +#401 = AXIS2_PLACEMENT_2D('',#402,#403); +#402 = CARTESIAN_POINT('',(0.,0.)); +#403 = DIRECTION('',(1.,0.)); +#404 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#405 = FACE_BOUND('',#406,.T.); +#406 = EDGE_LOOP('',(#407)); +#407 = ORIENTED_EDGE('',*,*,#408,.F.); +#408 = EDGE_CURVE('',#409,#409,#411,.T.); +#409 = VERTEX_POINT('',#410); +#410 = CARTESIAN_POINT('',(-0.362,-6.535,0.)); +#411 = SURFACE_CURVE('',#412,(#417),.PCURVE_S1.); +#412 = CIRCLE('',#413,0.725); +#413 = AXIS2_PLACEMENT_3D('',#414,#415,#416); +#414 = CARTESIAN_POINT('',(-1.087,-6.535,0.)); +#415 = DIRECTION('',(0.,0.,1.)); +#416 = DIRECTION('',(1.,0.,0.)); +#417 = PCURVE('',#394,#418); +#418 = DEFINITIONAL_REPRESENTATION('',(#419),#423); +#419 = CIRCLE('',#420,0.725); +#420 = AXIS2_PLACEMENT_2D('',#421,#422); +#421 = CARTESIAN_POINT('',(-1.087,-6.535)); +#422 = DIRECTION('',(1.,0.)); +#423 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#424 = FACE_BOUND('',#425,.T.); +#425 = EDGE_LOOP('',(#426)); +#426 = ORIENTED_EDGE('',*,*,#427,.F.); +#427 = EDGE_CURVE('',#428,#428,#430,.T.); +#428 = VERTEX_POINT('',#429); +#429 = CARTESIAN_POINT('',(-1.673,-5.378,0.)); +#430 = SURFACE_CURVE('',#431,(#436),.PCURVE_S1.); +#431 = CIRCLE('',#432,1.25); +#432 = AXIS2_PLACEMENT_3D('',#433,#434,#435); +#433 = CARTESIAN_POINT('',(-2.923,-5.378,0.)); +#434 = DIRECTION('',(0.,0.,1.)); +#435 = DIRECTION('',(1.,0.,0.)); +#436 = PCURVE('',#394,#437); +#437 = DEFINITIONAL_REPRESENTATION('',(#438),#442); +#438 = CIRCLE('',#439,1.25); +#439 = AXIS2_PLACEMENT_2D('',#440,#441); +#440 = CARTESIAN_POINT('',(-2.923,-5.378)); +#441 = DIRECTION('',(1.,0.)); +#442 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#443 = FACE_BOUND('',#444,.T.); +#444 = EDGE_LOOP('',(#445)); +#445 = ORIENTED_EDGE('',*,*,#446,.F.); +#446 = EDGE_CURVE('',#447,#447,#449,.T.); +#447 = VERTEX_POINT('',#448); +#448 = CARTESIAN_POINT('',(-3.891,-3.16,0.)); +#449 = SURFACE_CURVE('',#450,(#455),.PCURVE_S1.); +#450 = CIRCLE('',#451,1.25); +#451 = AXIS2_PLACEMENT_3D('',#452,#453,#454); +#452 = CARTESIAN_POINT('',(-5.141,-3.16,0.)); +#453 = DIRECTION('',(0.,0.,1.)); +#454 = DIRECTION('',(1.,0.,0.)); +#455 = PCURVE('',#394,#456); +#456 = DEFINITIONAL_REPRESENTATION('',(#457),#461); +#457 = CIRCLE('',#458,1.25); +#458 = AXIS2_PLACEMENT_2D('',#459,#460); +#459 = CARTESIAN_POINT('',(-5.141,-3.16)); +#460 = DIRECTION('',(1.,0.)); +#461 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#462 = FACE_BOUND('',#463,.T.); +#463 = EDGE_LOOP('',(#464)); +#464 = ORIENTED_EDGE('',*,*,#465,.F.); +#465 = EDGE_CURVE('',#466,#466,#468,.T.); +#466 = VERTEX_POINT('',#467); +#467 = CARTESIAN_POINT('',(-4.655,-0.548,0.)); +#468 = SURFACE_CURVE('',#469,(#474),.PCURVE_S1.); +#469 = CIRCLE('',#470,1.25); +#470 = AXIS2_PLACEMENT_3D('',#471,#472,#473); +#471 = CARTESIAN_POINT('',(-5.905,-0.548,0.)); +#472 = DIRECTION('',(0.,0.,1.)); +#473 = DIRECTION('',(1.,0.,0.)); +#474 = PCURVE('',#394,#475); +#475 = DEFINITIONAL_REPRESENTATION('',(#476),#480); +#476 = CIRCLE('',#477,1.25); +#477 = AXIS2_PLACEMENT_2D('',#478,#479); +#478 = CARTESIAN_POINT('',(-5.905,-0.548)); +#479 = DIRECTION('',(1.,0.)); +#480 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#481 = FACE_BOUND('',#482,.T.); +#482 = EDGE_LOOP('',(#483)); +#483 = ORIENTED_EDGE('',*,*,#484,.F.); +#484 = EDGE_CURVE('',#485,#485,#487,.T.); +#485 = VERTEX_POINT('',#486); +#486 = CARTESIAN_POINT('',(-2.761,-2.325,0.)); +#487 = SURFACE_CURVE('',#488,(#493),.PCURVE_S1.); +#488 = CIRCLE('',#489,0.46); +#489 = AXIS2_PLACEMENT_3D('',#490,#491,#492); +#490 = CARTESIAN_POINT('',(-3.221,-2.325,0.)); +#491 = DIRECTION('',(0.,0.,1.)); +#492 = DIRECTION('',(1.,0.,0.)); +#493 = PCURVE('',#394,#494); +#494 = DEFINITIONAL_REPRESENTATION('',(#495),#499); +#495 = CIRCLE('',#496,0.46); +#496 = AXIS2_PLACEMENT_2D('',#497,#498); +#497 = CARTESIAN_POINT('',(-3.221,-2.325)); +#498 = DIRECTION('',(1.,0.)); +#499 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#500 = FACE_BOUND('',#501,.T.); +#501 = EDGE_LOOP('',(#502)); +#502 = ORIENTED_EDGE('',*,*,#503,.F.); +#503 = EDGE_CURVE('',#504,#504,#506,.T.); +#504 = VERTEX_POINT('',#505); +#505 = CARTESIAN_POINT('',(0.235,-2.337,0.)); +#506 = SURFACE_CURVE('',#507,(#512),.PCURVE_S1.); +#507 = CIRCLE('',#508,1.25); +#508 = AXIS2_PLACEMENT_3D('',#509,#510,#511); +#509 = CARTESIAN_POINT('',(-1.015,-2.337,0.)); +#510 = DIRECTION('',(0.,0.,1.)); +#511 = DIRECTION('',(1.,0.,0.)); +#512 = PCURVE('',#394,#513); +#513 = DEFINITIONAL_REPRESENTATION('',(#514),#518); +#514 = CIRCLE('',#515,1.25); +#515 = AXIS2_PLACEMENT_2D('',#516,#517); +#516 = CARTESIAN_POINT('',(-1.015,-2.337)); +#517 = DIRECTION('',(1.,0.)); +#518 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#519 = FACE_BOUND('',#520,.T.); +#520 = EDGE_LOOP('',(#521)); +#521 = ORIENTED_EDGE('',*,*,#522,.F.); +#522 = EDGE_CURVE('',#523,#523,#525,.T.); +#523 = VERTEX_POINT('',#524); +#524 = CARTESIAN_POINT('',(-1.733,-3.6E-02,0.)); +#525 = SURFACE_CURVE('',#526,(#531),.PCURVE_S1.); +#526 = CIRCLE('',#527,1.25); +#527 = AXIS2_PLACEMENT_3D('',#528,#529,#530); +#528 = CARTESIAN_POINT('',(-2.983,-3.6E-02,0.)); +#529 = DIRECTION('',(0.,0.,1.)); +#530 = DIRECTION('',(1.,0.,0.)); +#531 = PCURVE('',#394,#532); +#532 = DEFINITIONAL_REPRESENTATION('',(#533),#537); +#533 = CIRCLE('',#534,1.25); +#534 = AXIS2_PLACEMENT_2D('',#535,#536); +#535 = CARTESIAN_POINT('',(-2.983,-3.6E-02)); +#536 = DIRECTION('',(1.,0.)); +#537 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#538 = FACE_BOUND('',#539,.T.); +#539 = EDGE_LOOP('',(#540)); +#540 = ORIENTED_EDGE('',*,*,#541,.F.); +#541 = EDGE_CURVE('',#542,#542,#544,.T.); +#542 = VERTEX_POINT('',#543); +#543 = CARTESIAN_POINT('',(1.794,-1.359,0.)); +#544 = SURFACE_CURVE('',#545,(#550),.PCURVE_S1.); +#545 = CIRCLE('',#546,0.46); +#546 = AXIS2_PLACEMENT_3D('',#547,#548,#549); +#547 = CARTESIAN_POINT('',(1.334,-1.359,0.)); +#548 = DIRECTION('',(0.,0.,1.)); +#549 = DIRECTION('',(1.,0.,0.)); +#550 = PCURVE('',#394,#551); +#551 = DEFINITIONAL_REPRESENTATION('',(#552),#556); +#552 = CIRCLE('',#553,0.46); +#553 = AXIS2_PLACEMENT_2D('',#554,#555); +#554 = CARTESIAN_POINT('',(1.334,-1.359)); +#555 = DIRECTION('',(1.,0.)); +#556 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#557 = FACE_BOUND('',#558,.T.); +#558 = EDGE_LOOP('',(#559)); +#559 = ORIENTED_EDGE('',*,*,#560,.F.); +#560 = EDGE_CURVE('',#561,#561,#563,.T.); +#561 = VERTEX_POINT('',#562); +#562 = CARTESIAN_POINT('',(3.118,-1.24,0.)); +#563 = SURFACE_CURVE('',#564,(#569),.PCURVE_S1.); +#564 = CIRCLE('',#565,0.46); +#565 = AXIS2_PLACEMENT_3D('',#566,#567,#568); +#566 = CARTESIAN_POINT('',(2.658,-1.24,0.)); +#567 = DIRECTION('',(0.,0.,1.)); +#568 = DIRECTION('',(1.,0.,0.)); +#569 = PCURVE('',#394,#570); +#570 = DEFINITIONAL_REPRESENTATION('',(#571),#575); +#571 = CIRCLE('',#572,0.46); +#572 = AXIS2_PLACEMENT_2D('',#573,#574); +#573 = CARTESIAN_POINT('',(2.658,-1.24)); +#574 = DIRECTION('',(1.,0.)); +#575 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#576 = FACE_BOUND('',#577,.T.); +#577 = EDGE_LOOP('',(#578)); +#578 = ORIENTED_EDGE('',*,*,#579,.F.); +#579 = EDGE_CURVE('',#580,#580,#582,.T.); +#580 = VERTEX_POINT('',#581); +#581 = CARTESIAN_POINT('',(4.239,-1.86,0.)); +#582 = SURFACE_CURVE('',#583,(#588),.PCURVE_S1.); +#583 = CIRCLE('',#584,0.46); +#584 = AXIS2_PLACEMENT_3D('',#585,#586,#587); +#585 = CARTESIAN_POINT('',(3.779,-1.86,0.)); +#586 = DIRECTION('',(0.,0.,1.)); +#587 = DIRECTION('',(1.,0.,0.)); +#588 = PCURVE('',#394,#589); +#589 = DEFINITIONAL_REPRESENTATION('',(#590),#594); +#590 = CIRCLE('',#591,0.46); +#591 = AXIS2_PLACEMENT_2D('',#592,#593); +#592 = CARTESIAN_POINT('',(3.779,-1.86)); +#593 = DIRECTION('',(1.,0.)); +#594 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#595 = FACE_BOUND('',#596,.T.); +#596 = EDGE_LOOP('',(#597)); +#597 = ORIENTED_EDGE('',*,*,#598,.F.); +#598 = EDGE_CURVE('',#599,#599,#601,.T.); +#599 = VERTEX_POINT('',#600); +#600 = CARTESIAN_POINT('',(6.421,-3.661,0.)); +#601 = SURFACE_CURVE('',#602,(#607),.PCURVE_S1.); +#602 = CIRCLE('',#603,0.46); +#603 = AXIS2_PLACEMENT_3D('',#604,#605,#606); +#604 = CARTESIAN_POINT('',(5.961,-3.661,0.)); +#605 = DIRECTION('',(0.,0.,1.)); +#606 = DIRECTION('',(1.,0.,0.)); +#607 = PCURVE('',#394,#608); +#608 = DEFINITIONAL_REPRESENTATION('',(#609),#613); +#609 = CIRCLE('',#610,0.46); +#610 = AXIS2_PLACEMENT_2D('',#611,#612); +#611 = CARTESIAN_POINT('',(5.961,-3.661)); +#612 = DIRECTION('',(1.,0.)); +#613 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#614 = FACE_BOUND('',#615,.T.); +#615 = EDGE_LOOP('',(#616)); +#616 = ORIENTED_EDGE('',*,*,#617,.F.); +#617 = EDGE_CURVE('',#618,#618,#620,.T.); +#618 = VERTEX_POINT('',#619); +#619 = CARTESIAN_POINT('',(5.336,-2.552,0.)); +#620 = SURFACE_CURVE('',#621,(#626),.PCURVE_S1.); +#621 = CIRCLE('',#622,0.46); +#622 = AXIS2_PLACEMENT_3D('',#623,#624,#625); +#623 = CARTESIAN_POINT('',(4.876,-2.552,0.)); +#624 = DIRECTION('',(0.,0.,1.)); +#625 = DIRECTION('',(1.,0.,0.)); +#626 = PCURVE('',#394,#627); +#627 = DEFINITIONAL_REPRESENTATION('',(#628),#632); +#628 = CIRCLE('',#629,0.46); +#629 = AXIS2_PLACEMENT_2D('',#630,#631); +#630 = CARTESIAN_POINT('',(4.876,-2.552)); +#631 = DIRECTION('',(1.,0.)); +#632 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#633 = FACE_BOUND('',#634,.T.); +#634 = EDGE_LOOP('',(#635)); +#635 = ORIENTED_EDGE('',*,*,#636,.F.); +#636 = EDGE_CURVE('',#637,#637,#639,.T.); +#637 = VERTEX_POINT('',#638); +#638 = CARTESIAN_POINT('',(6.695,-2.623,0.)); +#639 = SURFACE_CURVE('',#640,(#645),.PCURVE_S1.); +#640 = CIRCLE('',#641,0.46); +#641 = AXIS2_PLACEMENT_3D('',#642,#643,#644); +#642 = CARTESIAN_POINT('',(6.235,-2.623,0.)); +#643 = DIRECTION('',(0.,0.,1.)); +#644 = DIRECTION('',(1.,0.,0.)); +#645 = PCURVE('',#394,#646); +#646 = DEFINITIONAL_REPRESENTATION('',(#647),#651); +#647 = CIRCLE('',#648,0.46); +#648 = AXIS2_PLACEMENT_2D('',#649,#650); +#649 = CARTESIAN_POINT('',(6.235,-2.623)); +#650 = DIRECTION('',(1.,0.)); +#651 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#652 = FACE_BOUND('',#653,.T.); +#653 = EDGE_LOOP('',(#654)); +#654 = ORIENTED_EDGE('',*,*,#655,.F.); +#655 = EDGE_CURVE('',#656,#656,#658,.T.); +#656 = VERTEX_POINT('',#657); +#657 = CARTESIAN_POINT('',(4.859,-0.751,0.)); +#658 = SURFACE_CURVE('',#659,(#664),.PCURVE_S1.); +#659 = CIRCLE('',#660,0.46); +#660 = AXIS2_PLACEMENT_3D('',#661,#662,#663); +#661 = CARTESIAN_POINT('',(4.399,-0.751,0.)); +#662 = DIRECTION('',(0.,0.,1.)); +#663 = DIRECTION('',(1.,0.,0.)); +#664 = PCURVE('',#394,#665); +#665 = DEFINITIONAL_REPRESENTATION('',(#666),#670); +#666 = CIRCLE('',#667,0.46); +#667 = AXIS2_PLACEMENT_2D('',#668,#669); +#668 = CARTESIAN_POINT('',(4.399,-0.751)); +#669 = DIRECTION('',(1.,0.)); +#670 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#671 = FACE_BOUND('',#672,.T.); +#672 = EDGE_LOOP('',(#673)); +#673 = ORIENTED_EDGE('',*,*,#674,.F.); +#674 = EDGE_CURVE('',#675,#675,#677,.T.); +#675 = VERTEX_POINT('',#676); +#676 = CARTESIAN_POINT('',(7.795,-0.417,0.)); +#677 = SURFACE_CURVE('',#678,(#683),.PCURVE_S1.); +#678 = CIRCLE('',#679,1.25); +#679 = AXIS2_PLACEMENT_3D('',#680,#681,#682); +#680 = CARTESIAN_POINT('',(6.545,-0.417,0.)); +#681 = DIRECTION('',(0.,0.,1.)); +#682 = DIRECTION('',(1.,0.,0.)); +#683 = PCURVE('',#394,#684); +#684 = DEFINITIONAL_REPRESENTATION('',(#685),#689); +#685 = CIRCLE('',#686,1.25); +#686 = AXIS2_PLACEMENT_2D('',#687,#688); +#687 = CARTESIAN_POINT('',(6.545,-0.417)); +#688 = DIRECTION('',(1.,0.)); +#689 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#690 = FACE_BOUND('',#691,.T.); +#691 = EDGE_LOOP('',(#692)); +#692 = ORIENTED_EDGE('',*,*,#693,.F.); +#693 = EDGE_CURVE('',#694,#694,#696,.T.); +#694 = VERTEX_POINT('',#695); +#695 = CARTESIAN_POINT('',(-4.345,2.349,0.)); +#696 = SURFACE_CURVE('',#697,(#702),.PCURVE_S1.); +#697 = CIRCLE('',#698,1.25); +#698 = AXIS2_PLACEMENT_3D('',#699,#700,#701); +#699 = CARTESIAN_POINT('',(-5.595,2.349,0.)); +#700 = DIRECTION('',(0.,0.,1.)); +#701 = DIRECTION('',(1.,0.,0.)); +#702 = PCURVE('',#394,#703); +#703 = DEFINITIONAL_REPRESENTATION('',(#704),#708); +#704 = CIRCLE('',#705,1.25); +#705 = AXIS2_PLACEMENT_2D('',#706,#707); +#706 = CARTESIAN_POINT('',(-5.595,2.349)); +#707 = DIRECTION('',(1.,0.)); +#708 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#709 = FACE_BOUND('',#710,.T.); +#710 = EDGE_LOOP('',(#711)); +#711 = ORIENTED_EDGE('',*,*,#712,.F.); +#712 = EDGE_CURVE('',#713,#713,#715,.T.); +#713 = VERTEX_POINT('',#714); +#714 = CARTESIAN_POINT('',(-0.433,2.314,0.)); +#715 = SURFACE_CURVE('',#716,(#721),.PCURVE_S1.); +#716 = CIRCLE('',#717,1.25); +#717 = AXIS2_PLACEMENT_3D('',#718,#719,#720); +#718 = CARTESIAN_POINT('',(-1.683,2.314,0.)); +#719 = DIRECTION('',(0.,0.,1.)); +#720 = DIRECTION('',(1.,0.,0.)); +#721 = PCURVE('',#394,#722); +#722 = DEFINITIONAL_REPRESENTATION('',(#723),#727); +#723 = CIRCLE('',#724,1.25); +#724 = AXIS2_PLACEMENT_2D('',#725,#726); +#725 = CARTESIAN_POINT('',(-1.683,2.314)); +#726 = DIRECTION('',(1.,0.)); +#727 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#728 = FACE_BOUND('',#729,.T.); +#729 = EDGE_LOOP('',(#730)); +#730 = ORIENTED_EDGE('',*,*,#731,.F.); +#731 = EDGE_CURVE('',#732,#732,#734,.T.); +#732 = VERTEX_POINT('',#733); +#733 = CARTESIAN_POINT('',(0.363,3.721,0.)); +#734 = SURFACE_CURVE('',#735,(#740),.PCURVE_S1.); +#735 = CIRCLE('',#736,0.46); +#736 = AXIS2_PLACEMENT_3D('',#737,#738,#739); +#737 = CARTESIAN_POINT('',(-9.7E-02,3.721,0.)); +#738 = DIRECTION('',(0.,0.,1.)); +#739 = DIRECTION('',(1.,0.,0.)); +#740 = PCURVE('',#394,#741); +#741 = DEFINITIONAL_REPRESENTATION('',(#742),#746); +#742 = CIRCLE('',#743,0.46); +#743 = AXIS2_PLACEMENT_2D('',#744,#745); +#744 = CARTESIAN_POINT('',(-9.7E-02,3.721)); +#745 = DIRECTION('',(1.,0.)); +#746 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#747 = FACE_BOUND('',#748,.T.); +#748 = EDGE_LOOP('',(#749)); +#749 = ORIENTED_EDGE('',*,*,#750,.F.); +#750 = EDGE_CURVE('',#751,#751,#753,.T.); +#751 = VERTEX_POINT('',#752); +#752 = CARTESIAN_POINT('',(-2.484,4.83,0.)); +#753 = SURFACE_CURVE('',#754,(#759),.PCURVE_S1.); +#754 = CIRCLE('',#755,1.25); +#755 = AXIS2_PLACEMENT_3D('',#756,#757,#758); +#756 = CARTESIAN_POINT('',(-3.734,4.83,0.)); +#757 = DIRECTION('',(0.,0.,1.)); +#758 = DIRECTION('',(1.,0.,0.)); +#759 = PCURVE('',#394,#760); +#760 = DEFINITIONAL_REPRESENTATION('',(#761),#765); +#761 = CIRCLE('',#762,1.25); +#762 = AXIS2_PLACEMENT_2D('',#763,#764); +#763 = CARTESIAN_POINT('',(-3.734,4.83)); +#764 = DIRECTION('',(1.,0.)); +#765 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#766 = FACE_BOUND('',#767,.T.); +#767 = EDGE_LOOP('',(#768)); +#768 = ORIENTED_EDGE('',*,*,#769,.F.); +#769 = EDGE_CURVE('',#770,#770,#772,.T.); +#770 = VERTEX_POINT('',#771); +#771 = CARTESIAN_POINT('',(4.1E-02,5.934,0.)); +#772 = SURFACE_CURVE('',#773,(#778),.PCURVE_S1.); +#773 = CIRCLE('',#774,1.25); +#774 = AXIS2_PLACEMENT_3D('',#775,#776,#777); +#775 = CARTESIAN_POINT('',(-1.209,5.934,0.)); +#776 = DIRECTION('',(0.,0.,1.)); +#777 = DIRECTION('',(1.,0.,0.)); +#778 = PCURVE('',#394,#779); +#779 = DEFINITIONAL_REPRESENTATION('',(#780),#784); +#780 = CIRCLE('',#781,1.25); +#781 = AXIS2_PLACEMENT_2D('',#782,#783); +#782 = CARTESIAN_POINT('',(-1.209,5.934)); +#783 = DIRECTION('',(1.,0.)); +#784 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#785 = FACE_BOUND('',#786,.T.); +#786 = EDGE_LOOP('',(#787)); +#787 = ORIENTED_EDGE('',*,*,#788,.F.); +#788 = EDGE_CURVE('',#789,#789,#791,.T.); +#789 = VERTEX_POINT('',#790); +#790 = CARTESIAN_POINT('',(1.272,0.358,0.)); +#791 = SURFACE_CURVE('',#792,(#797),.PCURVE_S1.); +#792 = CIRCLE('',#793,1.25); +#793 = AXIS2_PLACEMENT_3D('',#794,#795,#796); +#794 = CARTESIAN_POINT('',(2.2E-02,0.358,0.)); +#795 = DIRECTION('',(0.,0.,1.)); +#796 = DIRECTION('',(1.,0.,0.)); +#797 = PCURVE('',#394,#798); +#798 = DEFINITIONAL_REPRESENTATION('',(#799),#803); +#799 = CIRCLE('',#800,1.25); +#800 = AXIS2_PLACEMENT_2D('',#801,#802); +#801 = CARTESIAN_POINT('',(2.2E-02,0.358)); +#802 = DIRECTION('',(1.,0.)); +#803 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#804 = FACE_BOUND('',#805,.T.); +#805 = EDGE_LOOP('',(#806)); +#806 = ORIENTED_EDGE('',*,*,#807,.F.); +#807 = EDGE_CURVE('',#808,#808,#810,.T.); +#808 = VERTEX_POINT('',#809); +#809 = CARTESIAN_POINT('',(3.287,0.251,0.)); +#810 = SURFACE_CURVE('',#811,(#816),.PCURVE_S1.); +#811 = CIRCLE('',#812,0.725); +#812 = AXIS2_PLACEMENT_3D('',#813,#814,#815); +#813 = CARTESIAN_POINT('',(2.562,0.251,0.)); +#814 = DIRECTION('',(0.,0.,1.)); +#815 = DIRECTION('',(1.,0.,0.)); +#816 = PCURVE('',#394,#817); +#817 = DEFINITIONAL_REPRESENTATION('',(#818),#822); +#818 = CIRCLE('',#819,0.725); +#819 = AXIS2_PLACEMENT_2D('',#820,#821); +#820 = CARTESIAN_POINT('',(2.562,0.251)); +#821 = DIRECTION('',(1.,0.)); +#822 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#823 = FACE_BOUND('',#824,.T.); +#824 = EDGE_LOOP('',(#825)); +#825 = ORIENTED_EDGE('',*,*,#826,.F.); +#826 = EDGE_CURVE('',#827,#827,#829,.T.); +#827 = VERTEX_POINT('',#828); +#828 = CARTESIAN_POINT('',(4.048,1.443,0.)); +#829 = SURFACE_CURVE('',#830,(#835),.PCURVE_S1.); +#830 = CIRCLE('',#831,0.46); +#831 = AXIS2_PLACEMENT_3D('',#832,#833,#834); +#832 = CARTESIAN_POINT('',(3.588,1.443,0.)); +#833 = DIRECTION('',(0.,0.,1.)); +#834 = DIRECTION('',(1.,0.,0.)); +#835 = PCURVE('',#394,#836); +#836 = DEFINITIONAL_REPRESENTATION('',(#837),#841); +#837 = CIRCLE('',#838,0.46); +#838 = AXIS2_PLACEMENT_2D('',#839,#840); +#839 = CARTESIAN_POINT('',(3.588,1.443)); +#840 = DIRECTION('',(1.,0.)); +#841 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#842 = FACE_BOUND('',#843,.T.); +#843 = EDGE_LOOP('',(#844)); +#844 = ORIENTED_EDGE('',*,*,#845,.F.); +#845 = EDGE_CURVE('',#846,#846,#848,.T.); +#846 = VERTEX_POINT('',#847); +#847 = CARTESIAN_POINT('',(3.013,2.457,0.)); +#848 = SURFACE_CURVE('',#849,(#854),.PCURVE_S1.); +#849 = CIRCLE('',#850,1.25); +#850 = AXIS2_PLACEMENT_3D('',#851,#852,#853); +#851 = CARTESIAN_POINT('',(1.763,2.457,0.)); +#852 = DIRECTION('',(0.,0.,1.)); +#853 = DIRECTION('',(1.,0.,0.)); +#854 = PCURVE('',#394,#855); +#855 = DEFINITIONAL_REPRESENTATION('',(#856),#860); +#856 = CIRCLE('',#857,1.25); +#857 = AXIS2_PLACEMENT_2D('',#858,#859); +#858 = CARTESIAN_POINT('',(1.763,2.457)); +#859 = DIRECTION('',(1.,0.)); +#860 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#861 = FACE_BOUND('',#862,.T.); +#862 = EDGE_LOOP('',(#863)); +#863 = ORIENTED_EDGE('',*,*,#864,.F.); +#864 = EDGE_CURVE('',#865,#865,#867,.T.); +#865 = VERTEX_POINT('',#866); +#866 = CARTESIAN_POINT('',(5.038,0.203,0.)); +#867 = SURFACE_CURVE('',#868,(#873),.PCURVE_S1.); +#868 = CIRCLE('',#869,0.46); +#869 = AXIS2_PLACEMENT_3D('',#870,#871,#872); +#870 = CARTESIAN_POINT('',(4.578,0.203,0.)); +#871 = DIRECTION('',(0.,0.,1.)); +#872 = DIRECTION('',(1.,0.,0.)); +#873 = PCURVE('',#394,#874); +#874 = DEFINITIONAL_REPRESENTATION('',(#875),#879); +#875 = CIRCLE('',#876,0.46); +#876 = AXIS2_PLACEMENT_2D('',#877,#878); +#877 = CARTESIAN_POINT('',(4.578,0.203)); +#878 = DIRECTION('',(1.,0.)); +#879 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#880 = FACE_BOUND('',#881,.T.); +#881 = EDGE_LOOP('',(#882)); +#882 = ORIENTED_EDGE('',*,*,#883,.F.); +#883 = EDGE_CURVE('',#884,#884,#886,.T.); +#884 = VERTEX_POINT('',#885); +#885 = CARTESIAN_POINT('',(6.949,2.671,0.)); +#886 = SURFACE_CURVE('',#887,(#892),.PCURVE_S1.); +#887 = CIRCLE('',#888,1.25); +#888 = AXIS2_PLACEMENT_3D('',#889,#890,#891); +#889 = CARTESIAN_POINT('',(5.699,2.671,0.)); +#890 = DIRECTION('',(0.,0.,1.)); +#891 = DIRECTION('',(1.,0.,0.)); +#892 = PCURVE('',#394,#893); +#893 = DEFINITIONAL_REPRESENTATION('',(#894),#898); +#894 = CIRCLE('',#895,1.25); +#895 = AXIS2_PLACEMENT_2D('',#896,#897); +#896 = CARTESIAN_POINT('',(5.699,2.671)); +#897 = DIRECTION('',(1.,0.)); +#898 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#899 = FACE_BOUND('',#900,.T.); +#900 = EDGE_LOOP('',(#901)); +#901 = ORIENTED_EDGE('',*,*,#902,.F.); +#902 = EDGE_CURVE('',#903,#903,#905,.T.); +#903 = VERTEX_POINT('',#904); +#904 = CARTESIAN_POINT('',(1.737,4.866,0.)); +#905 = SURFACE_CURVE('',#906,(#911),.PCURVE_S1.); +#906 = CIRCLE('',#907,0.725); +#907 = AXIS2_PLACEMENT_3D('',#908,#909,#910); +#908 = CARTESIAN_POINT('',(1.012,4.866,0.)); +#909 = DIRECTION('',(0.,0.,1.)); +#910 = DIRECTION('',(1.,0.,0.)); +#911 = PCURVE('',#394,#912); +#912 = DEFINITIONAL_REPRESENTATION('',(#913),#917); +#913 = CIRCLE('',#914,0.725); +#914 = AXIS2_PLACEMENT_2D('',#915,#916); +#915 = CARTESIAN_POINT('',(1.012,4.866)); +#916 = DIRECTION('',(1.,0.)); +#917 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#918 = FACE_BOUND('',#919,.T.); +#919 = EDGE_LOOP('',(#920)); +#920 = ORIENTED_EDGE('',*,*,#921,.F.); +#921 = EDGE_CURVE('',#922,#922,#924,.T.); +#922 = VERTEX_POINT('',#923); +#923 = CARTESIAN_POINT('',(5.017,4.46,0.)); +#924 = SURFACE_CURVE('',#925,(#930),.PCURVE_S1.); +#925 = CIRCLE('',#926,1.25); +#926 = AXIS2_PLACEMENT_3D('',#927,#928,#929); +#927 = CARTESIAN_POINT('',(3.767,4.46,0.)); +#928 = DIRECTION('',(0.,0.,1.)); +#929 = DIRECTION('',(1.,0.,0.)); +#930 = PCURVE('',#394,#931); +#931 = DEFINITIONAL_REPRESENTATION('',(#932),#936); +#932 = CIRCLE('',#933,1.25); +#933 = AXIS2_PLACEMENT_2D('',#934,#935); +#934 = CARTESIAN_POINT('',(3.767,4.46)); +#935 = DIRECTION('',(1.,0.)); +#936 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#937 = FACE_BOUND('',#938,.T.); +#938 = EDGE_LOOP('',(#939)); +#939 = ORIENTED_EDGE('',*,*,#940,.F.); +#940 = EDGE_CURVE('',#941,#941,#943,.T.); +#941 = VERTEX_POINT('',#942); +#942 = CARTESIAN_POINT('',(1.654,6.547,0.)); +#943 = SURFACE_CURVE('',#944,(#949),.PCURVE_S1.); +#944 = CIRCLE('',#945,0.725); +#945 = AXIS2_PLACEMENT_3D('',#946,#947,#948); +#946 = CARTESIAN_POINT('',(0.929,6.547,0.)); +#947 = DIRECTION('',(0.,0.,1.)); +#948 = DIRECTION('',(1.,0.,0.)); +#949 = PCURVE('',#394,#950); +#950 = DEFINITIONAL_REPRESENTATION('',(#951),#955); +#951 = CIRCLE('',#952,0.725); +#952 = AXIS2_PLACEMENT_2D('',#953,#954); +#953 = CARTESIAN_POINT('',(0.929,6.547)); +#954 = DIRECTION('',(1.,0.)); +#955 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#956 = FACE_BOUND('',#957,.T.); +#957 = EDGE_LOOP('',(#958)); +#958 = ORIENTED_EDGE('',*,*,#959,.F.); +#959 = EDGE_CURVE('',#960,#960,#962,.T.); +#960 = VERTEX_POINT('',#961); +#961 = CARTESIAN_POINT('',(3.287,6.213,0.)); +#962 = SURFACE_CURVE('',#963,(#968),.PCURVE_S1.); +#963 = CIRCLE('',#964,0.725); +#964 = AXIS2_PLACEMENT_3D('',#965,#966,#967); +#965 = CARTESIAN_POINT('',(2.562,6.213,0.)); +#966 = DIRECTION('',(0.,0.,1.)); +#967 = DIRECTION('',(1.,0.,0.)); +#968 = PCURVE('',#394,#969); +#969 = DEFINITIONAL_REPRESENTATION('',(#970),#974); +#970 = CIRCLE('',#971,0.725); +#971 = AXIS2_PLACEMENT_2D('',#972,#973); +#972 = CARTESIAN_POINT('',(2.562,6.213)); +#973 = DIRECTION('',(1.,0.)); +#974 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#975 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#979)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#976,#977,#978)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#976 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#977 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#978 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#979 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#976, + 'distance_accuracy_value','confusion accuracy'); +#980 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#981,#983); +#981 = ( REPRESENTATION_RELATIONSHIP('','',#284,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#982) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#982 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15); +#983 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#984 + ); +#984 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('65','Inner_region','',#5,#279,$); +#985 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#281)); +#986 = SHAPE_DEFINITION_REPRESENTATION(#987,#993); +#987 = PRODUCT_DEFINITION_SHAPE('','',#988); +#988 = PRODUCT_DEFINITION('design','',#989,#992); +#989 = PRODUCT_DEFINITION_FORMATION('','',#990); +#990 = PRODUCT('Conductor_000','Conductor_000','',(#991)); +#991 = PRODUCT_CONTEXT('',#2,'mechanical'); +#992 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#993 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#994),#1021); +#994 = SHELL_BASED_SURFACE_MODEL('',(#995)); +#995 = OPEN_SHELL('',(#996)); +#996 = ADVANCED_FACE('',(#997),#1010,.T.); +#997 = FACE_BOUND('',#998,.T.); +#998 = EDGE_LOOP('',(#999)); +#999 = ORIENTED_EDGE('',*,*,#1000,.T.); +#1000 = EDGE_CURVE('',#1001,#1001,#1003,.T.); +#1001 = VERTEX_POINT('',#1002); +#1002 = CARTESIAN_POINT('',(1.15,0.,0.)); +#1003 = SURFACE_CURVE('',#1004,(#1009),.PCURVE_S1.); +#1004 = CIRCLE('',#1005,1.15); +#1005 = AXIS2_PLACEMENT_3D('',#1006,#1007,#1008); +#1006 = CARTESIAN_POINT('',(0.,0.,0.)); +#1007 = DIRECTION('',(0.,0.,1.)); +#1008 = DIRECTION('',(1.,0.,0.)); +#1009 = PCURVE('',#1010,#1015); +#1010 = PLANE('',#1011); +#1011 = AXIS2_PLACEMENT_3D('',#1012,#1013,#1014); +#1012 = CARTESIAN_POINT('',(-1.5E-16,6.E-17,0.)); +#1013 = DIRECTION('',(0.,0.,1.)); +#1014 = DIRECTION('',(1.,0.,0.)); +#1015 = DEFINITIONAL_REPRESENTATION('',(#1016),#1020); +#1016 = CIRCLE('',#1017,1.15); +#1017 = AXIS2_PLACEMENT_2D('',#1018,#1019); +#1018 = CARTESIAN_POINT('',(1.5E-16,-6.E-17)); +#1019 = DIRECTION('',(1.,0.)); +#1020 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#1021 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1025)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#1022,#1023,#1024)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#1022 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#1023 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#1024 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#1025 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#1022, + 'distance_accuracy_value','confusion accuracy'); +#1026 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1027,#1029); +#1027 = ( REPRESENTATION_RELATIONSHIP('','',#993,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1028) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#1028 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); +#1029 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #1030); +#1030 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('66','Conductor_000','',#5,#988,$ + ); +#1031 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#990)); +#1032 = SHAPE_DEFINITION_REPRESENTATION(#1033,#1039); +#1033 = PRODUCT_DEFINITION_SHAPE('','',#1034); +#1034 = PRODUCT_DEFINITION('design','',#1035,#1038); +#1035 = PRODUCT_DEFINITION_FORMATION('','',#1036); +#1036 = PRODUCT('Conductor_001','Conductor_001','',(#1037)); +#1037 = PRODUCT_CONTEXT('',#2,'mechanical'); +#1038 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#1039 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#1040),#1067); +#1040 = SHELL_BASED_SURFACE_MODEL('',(#1041)); +#1041 = OPEN_SHELL('',(#1042)); +#1042 = ADVANCED_FACE('',(#1043),#1056,.T.); +#1043 = FACE_BOUND('',#1044,.T.); +#1044 = EDGE_LOOP('',(#1045)); +#1045 = ORIENTED_EDGE('',*,*,#1046,.T.); +#1046 = EDGE_CURVE('',#1047,#1047,#1049,.T.); +#1047 = VERTEX_POINT('',#1048); +#1048 = CARTESIAN_POINT('',(1.15,0.,0.)); +#1049 = SURFACE_CURVE('',#1050,(#1055),.PCURVE_S1.); +#1050 = CIRCLE('',#1051,1.15); +#1051 = AXIS2_PLACEMENT_3D('',#1052,#1053,#1054); +#1052 = CARTESIAN_POINT('',(0.,0.,0.)); +#1053 = DIRECTION('',(0.,0.,1.)); +#1054 = DIRECTION('',(1.,0.,0.)); +#1055 = PCURVE('',#1056,#1061); +#1056 = PLANE('',#1057); +#1057 = AXIS2_PLACEMENT_3D('',#1058,#1059,#1060); +#1058 = CARTESIAN_POINT('',(-1.5E-16,6.E-17,0.)); +#1059 = DIRECTION('',(0.,0.,1.)); +#1060 = DIRECTION('',(1.,0.,0.)); +#1061 = DEFINITIONAL_REPRESENTATION('',(#1062),#1066); +#1062 = CIRCLE('',#1063,1.15); +#1063 = AXIS2_PLACEMENT_2D('',#1064,#1065); +#1064 = CARTESIAN_POINT('',(1.5E-16,-6.E-17)); +#1065 = DIRECTION('',(1.,0.)); +#1066 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#1067 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1071)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#1068,#1069,#1070)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#1068 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#1069 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#1070 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#1071 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#1068, + 'distance_accuracy_value','confusion accuracy'); +#1072 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1073,#1075); +#1073 = ( REPRESENTATION_RELATIONSHIP('','',#1039,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1074) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#1074 = ITEM_DEFINED_TRANSFORMATION('','',#11,#23); +#1075 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #1076); +#1076 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('67','Conductor_001','',#5,#1034, + $); +#1077 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#1036)); +#1078 = SHAPE_DEFINITION_REPRESENTATION(#1079,#1085); +#1079 = PRODUCT_DEFINITION_SHAPE('','',#1080); +#1080 = PRODUCT_DEFINITION('design','',#1081,#1084); +#1081 = PRODUCT_DEFINITION_FORMATION('','',#1082); +#1082 = PRODUCT('Conductor_002','Conductor_002','',(#1083)); +#1083 = PRODUCT_CONTEXT('',#2,'mechanical'); +#1084 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#1085 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#1086),#1113); +#1086 = SHELL_BASED_SURFACE_MODEL('',(#1087)); +#1087 = OPEN_SHELL('',(#1088)); +#1088 = ADVANCED_FACE('',(#1089),#1102,.T.); +#1089 = FACE_BOUND('',#1090,.T.); +#1090 = EDGE_LOOP('',(#1091)); +#1091 = ORIENTED_EDGE('',*,*,#1092,.T.); +#1092 = EDGE_CURVE('',#1093,#1093,#1095,.T.); +#1093 = VERTEX_POINT('',#1094); +#1094 = CARTESIAN_POINT('',(1.15,0.,0.)); +#1095 = SURFACE_CURVE('',#1096,(#1101),.PCURVE_S1.); +#1096 = CIRCLE('',#1097,1.15); +#1097 = AXIS2_PLACEMENT_3D('',#1098,#1099,#1100); +#1098 = CARTESIAN_POINT('',(0.,0.,0.)); +#1099 = DIRECTION('',(0.,0.,1.)); +#1100 = DIRECTION('',(1.,0.,0.)); +#1101 = PCURVE('',#1102,#1107); +#1102 = PLANE('',#1103); +#1103 = AXIS2_PLACEMENT_3D('',#1104,#1105,#1106); +#1104 = CARTESIAN_POINT('',(-1.5E-16,6.E-17,0.)); +#1105 = DIRECTION('',(0.,0.,1.)); +#1106 = DIRECTION('',(1.,0.,0.)); +#1107 = DEFINITIONAL_REPRESENTATION('',(#1108),#1112); +#1108 = CIRCLE('',#1109,1.15); +#1109 = AXIS2_PLACEMENT_2D('',#1110,#1111); +#1110 = CARTESIAN_POINT('',(1.5E-16,-6.E-17)); +#1111 = DIRECTION('',(1.,0.)); +#1112 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#1113 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1117)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#1114,#1115,#1116)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#1114 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#1115 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#1116 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#1117 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#1114, + 'distance_accuracy_value','confusion accuracy'); +#1118 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1119,#1121); +#1119 = ( REPRESENTATION_RELATIONSHIP('','',#1085,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1120) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#1120 = ITEM_DEFINED_TRANSFORMATION('','',#11,#27); +#1121 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #1122); +#1122 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('68','Conductor_002','',#5,#1080, + $); +#1123 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#1082)); +#1124 = SHAPE_DEFINITION_REPRESENTATION(#1125,#1131); +#1125 = PRODUCT_DEFINITION_SHAPE('','',#1126); +#1126 = PRODUCT_DEFINITION('design','',#1127,#1130); +#1127 = PRODUCT_DEFINITION_FORMATION('','',#1128); +#1128 = PRODUCT('Conductor_003','Conductor_003','',(#1129)); +#1129 = PRODUCT_CONTEXT('',#2,'mechanical'); +#1130 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#1131 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#1132),#1159); +#1132 = SHELL_BASED_SURFACE_MODEL('',(#1133)); +#1133 = OPEN_SHELL('',(#1134)); +#1134 = ADVANCED_FACE('',(#1135),#1148,.T.); +#1135 = FACE_BOUND('',#1136,.T.); +#1136 = EDGE_LOOP('',(#1137)); +#1137 = ORIENTED_EDGE('',*,*,#1138,.T.); +#1138 = EDGE_CURVE('',#1139,#1139,#1141,.T.); +#1139 = VERTEX_POINT('',#1140); +#1140 = CARTESIAN_POINT('',(1.15,0.,0.)); +#1141 = SURFACE_CURVE('',#1142,(#1147),.PCURVE_S1.); +#1142 = CIRCLE('',#1143,1.15); +#1143 = AXIS2_PLACEMENT_3D('',#1144,#1145,#1146); +#1144 = CARTESIAN_POINT('',(0.,0.,0.)); +#1145 = DIRECTION('',(0.,0.,1.)); +#1146 = DIRECTION('',(1.,0.,0.)); +#1147 = PCURVE('',#1148,#1153); +#1148 = PLANE('',#1149); +#1149 = AXIS2_PLACEMENT_3D('',#1150,#1151,#1152); +#1150 = CARTESIAN_POINT('',(-1.5E-16,6.E-17,0.)); +#1151 = DIRECTION('',(0.,0.,1.)); +#1152 = DIRECTION('',(1.,0.,0.)); +#1153 = DEFINITIONAL_REPRESENTATION('',(#1154),#1158); +#1154 = CIRCLE('',#1155,1.15); +#1155 = AXIS2_PLACEMENT_2D('',#1156,#1157); +#1156 = CARTESIAN_POINT('',(1.5E-16,-6.E-17)); +#1157 = DIRECTION('',(1.,0.)); +#1158 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#1159 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1163)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#1160,#1161,#1162)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#1160 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#1161 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#1162 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#1163 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#1160, + 'distance_accuracy_value','confusion accuracy'); +#1164 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1165,#1167); +#1165 = ( REPRESENTATION_RELATIONSHIP('','',#1131,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1166) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#1166 = ITEM_DEFINED_TRANSFORMATION('','',#11,#31); +#1167 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #1168); +#1168 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('69','Conductor_003','',#5,#1126, + $); +#1169 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#1128)); +#1170 = SHAPE_DEFINITION_REPRESENTATION(#1171,#1177); +#1171 = PRODUCT_DEFINITION_SHAPE('','',#1172); +#1172 = PRODUCT_DEFINITION('design','',#1173,#1176); +#1173 = PRODUCT_DEFINITION_FORMATION('','',#1174); +#1174 = PRODUCT('Conductor_004','Conductor_004','',(#1175)); +#1175 = PRODUCT_CONTEXT('',#2,'mechanical'); +#1176 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#1177 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#1178),#1205); +#1178 = SHELL_BASED_SURFACE_MODEL('',(#1179)); +#1179 = OPEN_SHELL('',(#1180)); +#1180 = ADVANCED_FACE('',(#1181),#1194,.T.); +#1181 = FACE_BOUND('',#1182,.T.); +#1182 = EDGE_LOOP('',(#1183)); +#1183 = ORIENTED_EDGE('',*,*,#1184,.T.); +#1184 = EDGE_CURVE('',#1185,#1185,#1187,.T.); +#1185 = VERTEX_POINT('',#1186); +#1186 = CARTESIAN_POINT('',(1.15,0.,0.)); +#1187 = SURFACE_CURVE('',#1188,(#1193),.PCURVE_S1.); +#1188 = CIRCLE('',#1189,1.15); +#1189 = AXIS2_PLACEMENT_3D('',#1190,#1191,#1192); +#1190 = CARTESIAN_POINT('',(0.,0.,0.)); +#1191 = DIRECTION('',(0.,0.,1.)); +#1192 = DIRECTION('',(1.,0.,0.)); +#1193 = PCURVE('',#1194,#1199); +#1194 = PLANE('',#1195); +#1195 = AXIS2_PLACEMENT_3D('',#1196,#1197,#1198); +#1196 = CARTESIAN_POINT('',(-1.5E-16,6.E-17,0.)); +#1197 = DIRECTION('',(0.,0.,1.)); +#1198 = DIRECTION('',(1.,0.,0.)); +#1199 = DEFINITIONAL_REPRESENTATION('',(#1200),#1204); +#1200 = CIRCLE('',#1201,1.15); +#1201 = AXIS2_PLACEMENT_2D('',#1202,#1203); +#1202 = CARTESIAN_POINT('',(1.5E-16,-6.E-17)); +#1203 = DIRECTION('',(1.,0.)); +#1204 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#1205 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1209)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#1206,#1207,#1208)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#1206 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#1207 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#1208 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#1209 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#1206, + 'distance_accuracy_value','confusion accuracy'); +#1210 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1211,#1213); +#1211 = ( REPRESENTATION_RELATIONSHIP('','',#1177,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1212) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#1212 = ITEM_DEFINED_TRANSFORMATION('','',#11,#35); +#1213 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #1214); +#1214 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('70','Conductor_004','',#5,#1172, + $); +#1215 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#1174)); +#1216 = SHAPE_DEFINITION_REPRESENTATION(#1217,#1223); +#1217 = PRODUCT_DEFINITION_SHAPE('','',#1218); +#1218 = PRODUCT_DEFINITION('design','',#1219,#1222); +#1219 = PRODUCT_DEFINITION_FORMATION('','',#1220); +#1220 = PRODUCT('Conductor_005','Conductor_005','',(#1221)); +#1221 = PRODUCT_CONTEXT('',#2,'mechanical'); +#1222 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#1223 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#1224),#1251); +#1224 = SHELL_BASED_SURFACE_MODEL('',(#1225)); +#1225 = OPEN_SHELL('',(#1226)); +#1226 = ADVANCED_FACE('',(#1227),#1240,.T.); +#1227 = FACE_BOUND('',#1228,.T.); +#1228 = EDGE_LOOP('',(#1229)); +#1229 = ORIENTED_EDGE('',*,*,#1230,.T.); +#1230 = EDGE_CURVE('',#1231,#1231,#1233,.T.); +#1231 = VERTEX_POINT('',#1232); +#1232 = CARTESIAN_POINT('',(1.15,0.,0.)); +#1233 = SURFACE_CURVE('',#1234,(#1239),.PCURVE_S1.); +#1234 = CIRCLE('',#1235,1.15); +#1235 = AXIS2_PLACEMENT_3D('',#1236,#1237,#1238); +#1236 = CARTESIAN_POINT('',(0.,0.,0.)); +#1237 = DIRECTION('',(0.,0.,1.)); +#1238 = DIRECTION('',(1.,0.,0.)); +#1239 = PCURVE('',#1240,#1245); +#1240 = PLANE('',#1241); +#1241 = AXIS2_PLACEMENT_3D('',#1242,#1243,#1244); +#1242 = CARTESIAN_POINT('',(-1.5E-16,6.E-17,0.)); +#1243 = DIRECTION('',(0.,0.,1.)); +#1244 = DIRECTION('',(1.,0.,0.)); +#1245 = DEFINITIONAL_REPRESENTATION('',(#1246),#1250); +#1246 = CIRCLE('',#1247,1.15); +#1247 = AXIS2_PLACEMENT_2D('',#1248,#1249); +#1248 = CARTESIAN_POINT('',(1.5E-16,-6.E-17)); +#1249 = DIRECTION('',(1.,0.)); +#1250 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#1251 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1255)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#1252,#1253,#1254)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#1252 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#1253 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#1254 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#1255 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#1252, + 'distance_accuracy_value','confusion accuracy'); +#1256 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1257,#1259); +#1257 = ( REPRESENTATION_RELATIONSHIP('','',#1223,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1258) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#1258 = ITEM_DEFINED_TRANSFORMATION('','',#11,#39); +#1259 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #1260); +#1260 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('71','Conductor_005','',#5,#1218, + $); +#1261 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#1220)); +#1262 = SHAPE_DEFINITION_REPRESENTATION(#1263,#1269); +#1263 = PRODUCT_DEFINITION_SHAPE('','',#1264); +#1264 = PRODUCT_DEFINITION('design','',#1265,#1268); +#1265 = PRODUCT_DEFINITION_FORMATION('','',#1266); +#1266 = PRODUCT('Conductor_006','Conductor_006','',(#1267)); +#1267 = PRODUCT_CONTEXT('',#2,'mechanical'); +#1268 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#1269 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#1270),#1297); +#1270 = SHELL_BASED_SURFACE_MODEL('',(#1271)); +#1271 = OPEN_SHELL('',(#1272)); +#1272 = ADVANCED_FACE('',(#1273),#1286,.T.); +#1273 = FACE_BOUND('',#1274,.T.); +#1274 = EDGE_LOOP('',(#1275)); +#1275 = ORIENTED_EDGE('',*,*,#1276,.T.); +#1276 = EDGE_CURVE('',#1277,#1277,#1279,.T.); +#1277 = VERTEX_POINT('',#1278); +#1278 = CARTESIAN_POINT('',(1.15,0.,0.)); +#1279 = SURFACE_CURVE('',#1280,(#1285),.PCURVE_S1.); +#1280 = CIRCLE('',#1281,1.15); +#1281 = AXIS2_PLACEMENT_3D('',#1282,#1283,#1284); +#1282 = CARTESIAN_POINT('',(0.,0.,0.)); +#1283 = DIRECTION('',(0.,0.,1.)); +#1284 = DIRECTION('',(1.,0.,0.)); +#1285 = PCURVE('',#1286,#1291); +#1286 = PLANE('',#1287); +#1287 = AXIS2_PLACEMENT_3D('',#1288,#1289,#1290); +#1288 = CARTESIAN_POINT('',(-1.5E-16,6.E-17,0.)); +#1289 = DIRECTION('',(0.,0.,1.)); +#1290 = DIRECTION('',(1.,0.,0.)); +#1291 = DEFINITIONAL_REPRESENTATION('',(#1292),#1296); +#1292 = CIRCLE('',#1293,1.15); +#1293 = AXIS2_PLACEMENT_2D('',#1294,#1295); +#1294 = CARTESIAN_POINT('',(1.5E-16,-6.E-17)); +#1295 = DIRECTION('',(1.,0.)); +#1296 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#1297 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1301)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#1298,#1299,#1300)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#1298 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#1299 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#1300 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#1301 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#1298, + 'distance_accuracy_value','confusion accuracy'); +#1302 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1303,#1305); +#1303 = ( REPRESENTATION_RELATIONSHIP('','',#1269,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1304) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#1304 = ITEM_DEFINED_TRANSFORMATION('','',#11,#43); +#1305 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #1306); +#1306 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('72','Conductor_006','',#5,#1264, + $); +#1307 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#1266)); +#1308 = SHAPE_DEFINITION_REPRESENTATION(#1309,#1315); +#1309 = PRODUCT_DEFINITION_SHAPE('','',#1310); +#1310 = PRODUCT_DEFINITION('design','',#1311,#1314); +#1311 = PRODUCT_DEFINITION_FORMATION('','',#1312); +#1312 = PRODUCT('Conductor_007','Conductor_007','',(#1313)); +#1313 = PRODUCT_CONTEXT('',#2,'mechanical'); +#1314 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#1315 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#1316),#1343); +#1316 = SHELL_BASED_SURFACE_MODEL('',(#1317)); +#1317 = OPEN_SHELL('',(#1318)); +#1318 = ADVANCED_FACE('',(#1319),#1332,.T.); +#1319 = FACE_BOUND('',#1320,.T.); +#1320 = EDGE_LOOP('',(#1321)); +#1321 = ORIENTED_EDGE('',*,*,#1322,.T.); +#1322 = EDGE_CURVE('',#1323,#1323,#1325,.T.); +#1323 = VERTEX_POINT('',#1324); +#1324 = CARTESIAN_POINT('',(1.15,0.,0.)); +#1325 = SURFACE_CURVE('',#1326,(#1331),.PCURVE_S1.); +#1326 = CIRCLE('',#1327,1.15); +#1327 = AXIS2_PLACEMENT_3D('',#1328,#1329,#1330); +#1328 = CARTESIAN_POINT('',(0.,0.,0.)); +#1329 = DIRECTION('',(0.,0.,1.)); +#1330 = DIRECTION('',(1.,0.,0.)); +#1331 = PCURVE('',#1332,#1337); +#1332 = PLANE('',#1333); +#1333 = AXIS2_PLACEMENT_3D('',#1334,#1335,#1336); +#1334 = CARTESIAN_POINT('',(-1.5E-16,6.E-17,0.)); +#1335 = DIRECTION('',(0.,0.,1.)); +#1336 = DIRECTION('',(1.,0.,0.)); +#1337 = DEFINITIONAL_REPRESENTATION('',(#1338),#1342); +#1338 = CIRCLE('',#1339,1.15); +#1339 = AXIS2_PLACEMENT_2D('',#1340,#1341); +#1340 = CARTESIAN_POINT('',(1.5E-16,-6.E-17)); +#1341 = DIRECTION('',(1.,0.)); +#1342 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#1343 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1347)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#1344,#1345,#1346)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#1344 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#1345 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#1346 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#1347 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#1344, + 'distance_accuracy_value','confusion accuracy'); +#1348 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1349,#1351); +#1349 = ( REPRESENTATION_RELATIONSHIP('','',#1315,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1350) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#1350 = ITEM_DEFINED_TRANSFORMATION('','',#11,#47); +#1351 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #1352); +#1352 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('73','Conductor_007','',#5,#1310, + $); +#1353 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#1312)); +#1354 = SHAPE_DEFINITION_REPRESENTATION(#1355,#1361); +#1355 = PRODUCT_DEFINITION_SHAPE('','',#1356); +#1356 = PRODUCT_DEFINITION('design','',#1357,#1360); +#1357 = PRODUCT_DEFINITION_FORMATION('','',#1358); +#1358 = PRODUCT('Conductor_008','Conductor_008','',(#1359)); +#1359 = PRODUCT_CONTEXT('',#2,'mechanical'); +#1360 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#1361 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#1362),#1389); +#1362 = SHELL_BASED_SURFACE_MODEL('',(#1363)); +#1363 = OPEN_SHELL('',(#1364)); +#1364 = ADVANCED_FACE('',(#1365),#1378,.T.); +#1365 = FACE_BOUND('',#1366,.T.); +#1366 = EDGE_LOOP('',(#1367)); +#1367 = ORIENTED_EDGE('',*,*,#1368,.T.); +#1368 = EDGE_CURVE('',#1369,#1369,#1371,.T.); +#1369 = VERTEX_POINT('',#1370); +#1370 = CARTESIAN_POINT('',(1.15,0.,0.)); +#1371 = SURFACE_CURVE('',#1372,(#1377),.PCURVE_S1.); +#1372 = CIRCLE('',#1373,1.15); +#1373 = AXIS2_PLACEMENT_3D('',#1374,#1375,#1376); +#1374 = CARTESIAN_POINT('',(0.,0.,0.)); +#1375 = DIRECTION('',(0.,0.,1.)); +#1376 = DIRECTION('',(1.,0.,0.)); +#1377 = PCURVE('',#1378,#1383); +#1378 = PLANE('',#1379); +#1379 = AXIS2_PLACEMENT_3D('',#1380,#1381,#1382); +#1380 = CARTESIAN_POINT('',(-1.5E-16,6.E-17,0.)); +#1381 = DIRECTION('',(0.,0.,1.)); +#1382 = DIRECTION('',(1.,0.,0.)); +#1383 = DEFINITIONAL_REPRESENTATION('',(#1384),#1388); +#1384 = CIRCLE('',#1385,1.15); +#1385 = AXIS2_PLACEMENT_2D('',#1386,#1387); +#1386 = CARTESIAN_POINT('',(1.5E-16,-6.E-17)); +#1387 = DIRECTION('',(1.,0.)); +#1388 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#1389 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1393)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#1390,#1391,#1392)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#1390 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#1391 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#1392 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#1393 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#1390, + 'distance_accuracy_value','confusion accuracy'); +#1394 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1395,#1397); +#1395 = ( REPRESENTATION_RELATIONSHIP('','',#1361,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1396) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#1396 = ITEM_DEFINED_TRANSFORMATION('','',#11,#51); +#1397 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #1398); +#1398 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('74','Conductor_008','',#5,#1356, + $); +#1399 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#1358)); +#1400 = SHAPE_DEFINITION_REPRESENTATION(#1401,#1407); +#1401 = PRODUCT_DEFINITION_SHAPE('','',#1402); +#1402 = PRODUCT_DEFINITION('design','',#1403,#1406); +#1403 = PRODUCT_DEFINITION_FORMATION('','',#1404); +#1404 = PRODUCT('Conductor_009','Conductor_009','',(#1405)); +#1405 = PRODUCT_CONTEXT('',#2,'mechanical'); +#1406 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#1407 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#1408),#1435); +#1408 = SHELL_BASED_SURFACE_MODEL('',(#1409)); +#1409 = OPEN_SHELL('',(#1410)); +#1410 = ADVANCED_FACE('',(#1411),#1424,.T.); +#1411 = FACE_BOUND('',#1412,.T.); +#1412 = EDGE_LOOP('',(#1413)); +#1413 = ORIENTED_EDGE('',*,*,#1414,.T.); +#1414 = EDGE_CURVE('',#1415,#1415,#1417,.T.); +#1415 = VERTEX_POINT('',#1416); +#1416 = CARTESIAN_POINT('',(1.15,0.,0.)); +#1417 = SURFACE_CURVE('',#1418,(#1423),.PCURVE_S1.); +#1418 = CIRCLE('',#1419,1.15); +#1419 = AXIS2_PLACEMENT_3D('',#1420,#1421,#1422); +#1420 = CARTESIAN_POINT('',(0.,0.,0.)); +#1421 = DIRECTION('',(0.,0.,1.)); +#1422 = DIRECTION('',(1.,0.,0.)); +#1423 = PCURVE('',#1424,#1429); +#1424 = PLANE('',#1425); +#1425 = AXIS2_PLACEMENT_3D('',#1426,#1427,#1428); +#1426 = CARTESIAN_POINT('',(-1.5E-16,6.E-17,0.)); +#1427 = DIRECTION('',(0.,0.,1.)); +#1428 = DIRECTION('',(1.,0.,0.)); +#1429 = DEFINITIONAL_REPRESENTATION('',(#1430),#1434); +#1430 = CIRCLE('',#1431,1.15); +#1431 = AXIS2_PLACEMENT_2D('',#1432,#1433); +#1432 = CARTESIAN_POINT('',(1.5E-16,-6.E-17)); +#1433 = DIRECTION('',(1.,0.)); +#1434 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#1435 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1439)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#1436,#1437,#1438)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#1436 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#1437 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#1438 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#1439 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#1436, + 'distance_accuracy_value','confusion accuracy'); +#1440 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1441,#1443); +#1441 = ( REPRESENTATION_RELATIONSHIP('','',#1407,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1442) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#1442 = ITEM_DEFINED_TRANSFORMATION('','',#11,#55); +#1443 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #1444); +#1444 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('75','Conductor_009','',#5,#1402, + $); +#1445 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#1404)); +#1446 = SHAPE_DEFINITION_REPRESENTATION(#1447,#1453); +#1447 = PRODUCT_DEFINITION_SHAPE('','',#1448); +#1448 = PRODUCT_DEFINITION('design','',#1449,#1452); +#1449 = PRODUCT_DEFINITION_FORMATION('','',#1450); +#1450 = PRODUCT('Conductor_010','Conductor_010','',(#1451)); +#1451 = PRODUCT_CONTEXT('',#2,'mechanical'); +#1452 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#1453 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#1454),#1481); +#1454 = SHELL_BASED_SURFACE_MODEL('',(#1455)); +#1455 = OPEN_SHELL('',(#1456)); +#1456 = ADVANCED_FACE('',(#1457),#1470,.T.); +#1457 = FACE_BOUND('',#1458,.T.); +#1458 = EDGE_LOOP('',(#1459)); +#1459 = ORIENTED_EDGE('',*,*,#1460,.T.); +#1460 = EDGE_CURVE('',#1461,#1461,#1463,.T.); +#1461 = VERTEX_POINT('',#1462); +#1462 = CARTESIAN_POINT('',(1.15,0.,0.)); +#1463 = SURFACE_CURVE('',#1464,(#1469),.PCURVE_S1.); +#1464 = CIRCLE('',#1465,1.15); +#1465 = AXIS2_PLACEMENT_3D('',#1466,#1467,#1468); +#1466 = CARTESIAN_POINT('',(0.,0.,0.)); +#1467 = DIRECTION('',(0.,0.,1.)); +#1468 = DIRECTION('',(1.,0.,0.)); +#1469 = PCURVE('',#1470,#1475); +#1470 = PLANE('',#1471); +#1471 = AXIS2_PLACEMENT_3D('',#1472,#1473,#1474); +#1472 = CARTESIAN_POINT('',(-1.5E-16,6.E-17,0.)); +#1473 = DIRECTION('',(0.,0.,1.)); +#1474 = DIRECTION('',(1.,0.,0.)); +#1475 = DEFINITIONAL_REPRESENTATION('',(#1476),#1480); +#1476 = CIRCLE('',#1477,1.15); +#1477 = AXIS2_PLACEMENT_2D('',#1478,#1479); +#1478 = CARTESIAN_POINT('',(1.5E-16,-6.E-17)); +#1479 = DIRECTION('',(1.,0.)); +#1480 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#1481 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1485)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#1482,#1483,#1484)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#1482 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#1483 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#1484 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#1485 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#1482, + 'distance_accuracy_value','confusion accuracy'); +#1486 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1487,#1489); +#1487 = ( REPRESENTATION_RELATIONSHIP('','',#1453,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1488) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#1488 = ITEM_DEFINED_TRANSFORMATION('','',#11,#59); +#1489 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #1490); +#1490 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('76','Conductor_010','',#5,#1448, + $); +#1491 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#1450)); +#1492 = SHAPE_DEFINITION_REPRESENTATION(#1493,#1499); +#1493 = PRODUCT_DEFINITION_SHAPE('','',#1494); +#1494 = PRODUCT_DEFINITION('design','',#1495,#1498); +#1495 = PRODUCT_DEFINITION_FORMATION('','',#1496); +#1496 = PRODUCT('Conductor_011','Conductor_011','',(#1497)); +#1497 = PRODUCT_CONTEXT('',#2,'mechanical'); +#1498 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#1499 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#1500),#1527); +#1500 = SHELL_BASED_SURFACE_MODEL('',(#1501)); +#1501 = OPEN_SHELL('',(#1502)); +#1502 = ADVANCED_FACE('',(#1503),#1516,.T.); +#1503 = FACE_BOUND('',#1504,.T.); +#1504 = EDGE_LOOP('',(#1505)); +#1505 = ORIENTED_EDGE('',*,*,#1506,.T.); +#1506 = EDGE_CURVE('',#1507,#1507,#1509,.T.); +#1507 = VERTEX_POINT('',#1508); +#1508 = CARTESIAN_POINT('',(1.15,0.,0.)); +#1509 = SURFACE_CURVE('',#1510,(#1515),.PCURVE_S1.); +#1510 = CIRCLE('',#1511,1.15); +#1511 = AXIS2_PLACEMENT_3D('',#1512,#1513,#1514); +#1512 = CARTESIAN_POINT('',(0.,0.,0.)); +#1513 = DIRECTION('',(0.,0.,1.)); +#1514 = DIRECTION('',(1.,0.,0.)); +#1515 = PCURVE('',#1516,#1521); +#1516 = PLANE('',#1517); +#1517 = AXIS2_PLACEMENT_3D('',#1518,#1519,#1520); +#1518 = CARTESIAN_POINT('',(-1.5E-16,6.E-17,0.)); +#1519 = DIRECTION('',(0.,0.,1.)); +#1520 = DIRECTION('',(1.,0.,0.)); +#1521 = DEFINITIONAL_REPRESENTATION('',(#1522),#1526); +#1522 = CIRCLE('',#1523,1.15); +#1523 = AXIS2_PLACEMENT_2D('',#1524,#1525); +#1524 = CARTESIAN_POINT('',(1.5E-16,-6.E-17)); +#1525 = DIRECTION('',(1.,0.)); +#1526 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#1527 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1531)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#1528,#1529,#1530)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#1528 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#1529 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#1530 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#1531 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#1528, + 'distance_accuracy_value','confusion accuracy'); +#1532 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1533,#1535); +#1533 = ( REPRESENTATION_RELATIONSHIP('','',#1499,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1534) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#1534 = ITEM_DEFINED_TRANSFORMATION('','',#11,#63); +#1535 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #1536); +#1536 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('77','Conductor_011','',#5,#1494, + $); +#1537 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#1496)); +#1538 = SHAPE_DEFINITION_REPRESENTATION(#1539,#1545); +#1539 = PRODUCT_DEFINITION_SHAPE('','',#1540); +#1540 = PRODUCT_DEFINITION('design','',#1541,#1544); +#1541 = PRODUCT_DEFINITION_FORMATION('','',#1542); +#1542 = PRODUCT('Conductor_012','Conductor_012','',(#1543)); +#1543 = PRODUCT_CONTEXT('',#2,'mechanical'); +#1544 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#1545 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#1546),#1573); +#1546 = SHELL_BASED_SURFACE_MODEL('',(#1547)); +#1547 = OPEN_SHELL('',(#1548)); +#1548 = ADVANCED_FACE('',(#1549),#1562,.T.); +#1549 = FACE_BOUND('',#1550,.T.); +#1550 = EDGE_LOOP('',(#1551)); +#1551 = ORIENTED_EDGE('',*,*,#1552,.T.); +#1552 = EDGE_CURVE('',#1553,#1553,#1555,.T.); +#1553 = VERTEX_POINT('',#1554); +#1554 = CARTESIAN_POINT('',(1.15,0.,0.)); +#1555 = SURFACE_CURVE('',#1556,(#1561),.PCURVE_S1.); +#1556 = CIRCLE('',#1557,1.15); +#1557 = AXIS2_PLACEMENT_3D('',#1558,#1559,#1560); +#1558 = CARTESIAN_POINT('',(0.,0.,0.)); +#1559 = DIRECTION('',(0.,0.,1.)); +#1560 = DIRECTION('',(1.,0.,0.)); +#1561 = PCURVE('',#1562,#1567); +#1562 = PLANE('',#1563); +#1563 = AXIS2_PLACEMENT_3D('',#1564,#1565,#1566); +#1564 = CARTESIAN_POINT('',(-1.5E-16,6.E-17,0.)); +#1565 = DIRECTION('',(0.,0.,1.)); +#1566 = DIRECTION('',(1.,0.,0.)); +#1567 = DEFINITIONAL_REPRESENTATION('',(#1568),#1572); +#1568 = CIRCLE('',#1569,1.15); +#1569 = AXIS2_PLACEMENT_2D('',#1570,#1571); +#1570 = CARTESIAN_POINT('',(1.5E-16,-6.E-17)); +#1571 = DIRECTION('',(1.,0.)); +#1572 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#1573 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1577)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#1574,#1575,#1576)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#1574 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#1575 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#1576 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#1577 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#1574, + 'distance_accuracy_value','confusion accuracy'); +#1578 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1579,#1581); +#1579 = ( REPRESENTATION_RELATIONSHIP('','',#1545,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1580) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#1580 = ITEM_DEFINED_TRANSFORMATION('','',#11,#67); +#1581 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #1582); +#1582 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('78','Conductor_012','',#5,#1540, + $); +#1583 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#1542)); +#1584 = SHAPE_DEFINITION_REPRESENTATION(#1585,#1591); +#1585 = PRODUCT_DEFINITION_SHAPE('','',#1586); +#1586 = PRODUCT_DEFINITION('design','',#1587,#1590); +#1587 = PRODUCT_DEFINITION_FORMATION('','',#1588); +#1588 = PRODUCT('Conductor_013','Conductor_013','',(#1589)); +#1589 = PRODUCT_CONTEXT('',#2,'mechanical'); +#1590 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#1591 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#1592),#1619); +#1592 = SHELL_BASED_SURFACE_MODEL('',(#1593)); +#1593 = OPEN_SHELL('',(#1594)); +#1594 = ADVANCED_FACE('',(#1595),#1608,.T.); +#1595 = FACE_BOUND('',#1596,.T.); +#1596 = EDGE_LOOP('',(#1597)); +#1597 = ORIENTED_EDGE('',*,*,#1598,.T.); +#1598 = EDGE_CURVE('',#1599,#1599,#1601,.T.); +#1599 = VERTEX_POINT('',#1600); +#1600 = CARTESIAN_POINT('',(1.15,0.,0.)); +#1601 = SURFACE_CURVE('',#1602,(#1607),.PCURVE_S1.); +#1602 = CIRCLE('',#1603,1.15); +#1603 = AXIS2_PLACEMENT_3D('',#1604,#1605,#1606); +#1604 = CARTESIAN_POINT('',(0.,0.,0.)); +#1605 = DIRECTION('',(0.,0.,1.)); +#1606 = DIRECTION('',(1.,0.,0.)); +#1607 = PCURVE('',#1608,#1613); +#1608 = PLANE('',#1609); +#1609 = AXIS2_PLACEMENT_3D('',#1610,#1611,#1612); +#1610 = CARTESIAN_POINT('',(-1.5E-16,6.E-17,0.)); +#1611 = DIRECTION('',(0.,0.,1.)); +#1612 = DIRECTION('',(1.,0.,0.)); +#1613 = DEFINITIONAL_REPRESENTATION('',(#1614),#1618); +#1614 = CIRCLE('',#1615,1.15); +#1615 = AXIS2_PLACEMENT_2D('',#1616,#1617); +#1616 = CARTESIAN_POINT('',(1.5E-16,-6.E-17)); +#1617 = DIRECTION('',(1.,0.)); +#1618 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#1619 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1623)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#1620,#1621,#1622)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#1620 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#1621 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#1622 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#1623 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#1620, + 'distance_accuracy_value','confusion accuracy'); +#1624 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1625,#1627); +#1625 = ( REPRESENTATION_RELATIONSHIP('','',#1591,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1626) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#1626 = ITEM_DEFINED_TRANSFORMATION('','',#11,#71); +#1627 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #1628); +#1628 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('79','Conductor_013','',#5,#1586, + $); +#1629 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#1588)); +#1630 = SHAPE_DEFINITION_REPRESENTATION(#1631,#1637); +#1631 = PRODUCT_DEFINITION_SHAPE('','',#1632); +#1632 = PRODUCT_DEFINITION('design','',#1633,#1636); +#1633 = PRODUCT_DEFINITION_FORMATION('','',#1634); +#1634 = PRODUCT('Conductor_014','Conductor_014','',(#1635)); +#1635 = PRODUCT_CONTEXT('',#2,'mechanical'); +#1636 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#1637 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#1638),#1665); +#1638 = SHELL_BASED_SURFACE_MODEL('',(#1639)); +#1639 = OPEN_SHELL('',(#1640)); +#1640 = ADVANCED_FACE('',(#1641),#1654,.T.); +#1641 = FACE_BOUND('',#1642,.T.); +#1642 = EDGE_LOOP('',(#1643)); +#1643 = ORIENTED_EDGE('',*,*,#1644,.T.); +#1644 = EDGE_CURVE('',#1645,#1645,#1647,.T.); +#1645 = VERTEX_POINT('',#1646); +#1646 = CARTESIAN_POINT('',(0.36,0.,0.)); +#1647 = SURFACE_CURVE('',#1648,(#1653),.PCURVE_S1.); +#1648 = CIRCLE('',#1649,0.36); +#1649 = AXIS2_PLACEMENT_3D('',#1650,#1651,#1652); +#1650 = CARTESIAN_POINT('',(0.,0.,0.)); +#1651 = DIRECTION('',(0.,0.,1.)); +#1652 = DIRECTION('',(1.,0.,0.)); +#1653 = PCURVE('',#1654,#1659); +#1654 = PLANE('',#1655); +#1655 = AXIS2_PLACEMENT_3D('',#1656,#1657,#1658); +#1656 = CARTESIAN_POINT('',(-1.E-17,0.,0.)); +#1657 = DIRECTION('',(0.,0.,1.)); +#1658 = DIRECTION('',(1.,0.,0.)); +#1659 = DEFINITIONAL_REPRESENTATION('',(#1660),#1664); +#1660 = CIRCLE('',#1661,0.36); +#1661 = AXIS2_PLACEMENT_2D('',#1662,#1663); +#1662 = CARTESIAN_POINT('',(1.E-17,0.)); +#1663 = DIRECTION('',(1.,0.)); +#1664 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#1665 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1669)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#1666,#1667,#1668)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#1666 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#1667 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#1668 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#1669 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#1666, + 'distance_accuracy_value','confusion accuracy'); +#1670 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1671,#1673); +#1671 = ( REPRESENTATION_RELATIONSHIP('','',#1637,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1672) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#1672 = ITEM_DEFINED_TRANSFORMATION('','',#11,#75); +#1673 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #1674); +#1674 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('80','Conductor_014','',#5,#1632, + $); +#1675 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#1634)); +#1676 = SHAPE_DEFINITION_REPRESENTATION(#1677,#1683); +#1677 = PRODUCT_DEFINITION_SHAPE('','',#1678); +#1678 = PRODUCT_DEFINITION('design','',#1679,#1682); +#1679 = PRODUCT_DEFINITION_FORMATION('','',#1680); +#1680 = PRODUCT('Conductor_015','Conductor_015','',(#1681)); +#1681 = PRODUCT_CONTEXT('',#2,'mechanical'); +#1682 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#1683 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#1684),#1711); +#1684 = SHELL_BASED_SURFACE_MODEL('',(#1685)); +#1685 = OPEN_SHELL('',(#1686)); +#1686 = ADVANCED_FACE('',(#1687),#1700,.T.); +#1687 = FACE_BOUND('',#1688,.T.); +#1688 = EDGE_LOOP('',(#1689)); +#1689 = ORIENTED_EDGE('',*,*,#1690,.T.); +#1690 = EDGE_CURVE('',#1691,#1691,#1693,.T.); +#1691 = VERTEX_POINT('',#1692); +#1692 = CARTESIAN_POINT('',(0.36,0.,0.)); +#1693 = SURFACE_CURVE('',#1694,(#1699),.PCURVE_S1.); +#1694 = CIRCLE('',#1695,0.36); +#1695 = AXIS2_PLACEMENT_3D('',#1696,#1697,#1698); +#1696 = CARTESIAN_POINT('',(0.,0.,0.)); +#1697 = DIRECTION('',(0.,0.,1.)); +#1698 = DIRECTION('',(1.,0.,0.)); +#1699 = PCURVE('',#1700,#1705); +#1700 = PLANE('',#1701); +#1701 = AXIS2_PLACEMENT_3D('',#1702,#1703,#1704); +#1702 = CARTESIAN_POINT('',(-1.E-17,0.,0.)); +#1703 = DIRECTION('',(0.,0.,1.)); +#1704 = DIRECTION('',(1.,0.,0.)); +#1705 = DEFINITIONAL_REPRESENTATION('',(#1706),#1710); +#1706 = CIRCLE('',#1707,0.36); +#1707 = AXIS2_PLACEMENT_2D('',#1708,#1709); +#1708 = CARTESIAN_POINT('',(1.E-17,0.)); +#1709 = DIRECTION('',(1.,0.)); +#1710 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#1711 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1715)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#1712,#1713,#1714)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#1712 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#1713 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#1714 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#1715 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#1712, + 'distance_accuracy_value','confusion accuracy'); +#1716 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1717,#1719); +#1717 = ( REPRESENTATION_RELATIONSHIP('','',#1683,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1718) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#1718 = ITEM_DEFINED_TRANSFORMATION('','',#11,#79); +#1719 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #1720); +#1720 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('81','Conductor_015','',#5,#1678, + $); +#1721 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#1680)); +#1722 = SHAPE_DEFINITION_REPRESENTATION(#1723,#1729); +#1723 = PRODUCT_DEFINITION_SHAPE('','',#1724); +#1724 = PRODUCT_DEFINITION('design','',#1725,#1728); +#1725 = PRODUCT_DEFINITION_FORMATION('','',#1726); +#1726 = PRODUCT('Conductor_016','Conductor_016','',(#1727)); +#1727 = PRODUCT_CONTEXT('',#2,'mechanical'); +#1728 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#1729 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#1730),#1757); +#1730 = SHELL_BASED_SURFACE_MODEL('',(#1731)); +#1731 = OPEN_SHELL('',(#1732)); +#1732 = ADVANCED_FACE('',(#1733),#1746,.T.); +#1733 = FACE_BOUND('',#1734,.T.); +#1734 = EDGE_LOOP('',(#1735)); +#1735 = ORIENTED_EDGE('',*,*,#1736,.T.); +#1736 = EDGE_CURVE('',#1737,#1737,#1739,.T.); +#1737 = VERTEX_POINT('',#1738); +#1738 = CARTESIAN_POINT('',(0.36,0.,0.)); +#1739 = SURFACE_CURVE('',#1740,(#1745),.PCURVE_S1.); +#1740 = CIRCLE('',#1741,0.36); +#1741 = AXIS2_PLACEMENT_3D('',#1742,#1743,#1744); +#1742 = CARTESIAN_POINT('',(0.,0.,0.)); +#1743 = DIRECTION('',(0.,0.,1.)); +#1744 = DIRECTION('',(1.,0.,0.)); +#1745 = PCURVE('',#1746,#1751); +#1746 = PLANE('',#1747); +#1747 = AXIS2_PLACEMENT_3D('',#1748,#1749,#1750); +#1748 = CARTESIAN_POINT('',(-1.E-17,0.,0.)); +#1749 = DIRECTION('',(0.,0.,1.)); +#1750 = DIRECTION('',(1.,0.,0.)); +#1751 = DEFINITIONAL_REPRESENTATION('',(#1752),#1756); +#1752 = CIRCLE('',#1753,0.36); +#1753 = AXIS2_PLACEMENT_2D('',#1754,#1755); +#1754 = CARTESIAN_POINT('',(1.E-17,0.)); +#1755 = DIRECTION('',(1.,0.)); +#1756 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#1757 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1761)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#1758,#1759,#1760)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#1758 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#1759 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#1760 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#1761 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#1758, + 'distance_accuracy_value','confusion accuracy'); +#1762 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1763,#1765); +#1763 = ( REPRESENTATION_RELATIONSHIP('','',#1729,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1764) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#1764 = ITEM_DEFINED_TRANSFORMATION('','',#11,#83); +#1765 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #1766); +#1766 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('82','Conductor_016','',#5,#1724, + $); +#1767 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#1726)); +#1768 = SHAPE_DEFINITION_REPRESENTATION(#1769,#1775); +#1769 = PRODUCT_DEFINITION_SHAPE('','',#1770); +#1770 = PRODUCT_DEFINITION('design','',#1771,#1774); +#1771 = PRODUCT_DEFINITION_FORMATION('','',#1772); +#1772 = PRODUCT('Conductor_017','Conductor_017','',(#1773)); +#1773 = PRODUCT_CONTEXT('',#2,'mechanical'); +#1774 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#1775 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#1776),#1803); +#1776 = SHELL_BASED_SURFACE_MODEL('',(#1777)); +#1777 = OPEN_SHELL('',(#1778)); +#1778 = ADVANCED_FACE('',(#1779),#1792,.T.); +#1779 = FACE_BOUND('',#1780,.T.); +#1780 = EDGE_LOOP('',(#1781)); +#1781 = ORIENTED_EDGE('',*,*,#1782,.T.); +#1782 = EDGE_CURVE('',#1783,#1783,#1785,.T.); +#1783 = VERTEX_POINT('',#1784); +#1784 = CARTESIAN_POINT('',(0.36,0.,0.)); +#1785 = SURFACE_CURVE('',#1786,(#1791),.PCURVE_S1.); +#1786 = CIRCLE('',#1787,0.36); +#1787 = AXIS2_PLACEMENT_3D('',#1788,#1789,#1790); +#1788 = CARTESIAN_POINT('',(0.,0.,0.)); +#1789 = DIRECTION('',(0.,0.,1.)); +#1790 = DIRECTION('',(1.,0.,0.)); +#1791 = PCURVE('',#1792,#1797); +#1792 = PLANE('',#1793); +#1793 = AXIS2_PLACEMENT_3D('',#1794,#1795,#1796); +#1794 = CARTESIAN_POINT('',(-1.E-17,0.,0.)); +#1795 = DIRECTION('',(0.,0.,1.)); +#1796 = DIRECTION('',(1.,0.,0.)); +#1797 = DEFINITIONAL_REPRESENTATION('',(#1798),#1802); +#1798 = CIRCLE('',#1799,0.36); +#1799 = AXIS2_PLACEMENT_2D('',#1800,#1801); +#1800 = CARTESIAN_POINT('',(1.E-17,0.)); +#1801 = DIRECTION('',(1.,0.)); +#1802 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#1803 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1807)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#1804,#1805,#1806)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#1804 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#1805 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#1806 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#1807 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#1804, + 'distance_accuracy_value','confusion accuracy'); +#1808 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1809,#1811); +#1809 = ( REPRESENTATION_RELATIONSHIP('','',#1775,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1810) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#1810 = ITEM_DEFINED_TRANSFORMATION('','',#11,#87); +#1811 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #1812); +#1812 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('83','Conductor_017','',#5,#1770, + $); +#1813 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#1772)); +#1814 = SHAPE_DEFINITION_REPRESENTATION(#1815,#1821); +#1815 = PRODUCT_DEFINITION_SHAPE('','',#1816); +#1816 = PRODUCT_DEFINITION('design','',#1817,#1820); +#1817 = PRODUCT_DEFINITION_FORMATION('','',#1818); +#1818 = PRODUCT('Conductor_018','Conductor_018','',(#1819)); +#1819 = PRODUCT_CONTEXT('',#2,'mechanical'); +#1820 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#1821 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#1822),#1849); +#1822 = SHELL_BASED_SURFACE_MODEL('',(#1823)); +#1823 = OPEN_SHELL('',(#1824)); +#1824 = ADVANCED_FACE('',(#1825),#1838,.T.); +#1825 = FACE_BOUND('',#1826,.T.); +#1826 = EDGE_LOOP('',(#1827)); +#1827 = ORIENTED_EDGE('',*,*,#1828,.T.); +#1828 = EDGE_CURVE('',#1829,#1829,#1831,.T.); +#1829 = VERTEX_POINT('',#1830); +#1830 = CARTESIAN_POINT('',(0.36,0.,0.)); +#1831 = SURFACE_CURVE('',#1832,(#1837),.PCURVE_S1.); +#1832 = CIRCLE('',#1833,0.36); +#1833 = AXIS2_PLACEMENT_3D('',#1834,#1835,#1836); +#1834 = CARTESIAN_POINT('',(0.,0.,0.)); +#1835 = DIRECTION('',(0.,0.,1.)); +#1836 = DIRECTION('',(1.,0.,0.)); +#1837 = PCURVE('',#1838,#1843); +#1838 = PLANE('',#1839); +#1839 = AXIS2_PLACEMENT_3D('',#1840,#1841,#1842); +#1840 = CARTESIAN_POINT('',(-1.E-17,0.,0.)); +#1841 = DIRECTION('',(0.,0.,1.)); +#1842 = DIRECTION('',(1.,0.,0.)); +#1843 = DEFINITIONAL_REPRESENTATION('',(#1844),#1848); +#1844 = CIRCLE('',#1845,0.36); +#1845 = AXIS2_PLACEMENT_2D('',#1846,#1847); +#1846 = CARTESIAN_POINT('',(1.E-17,0.)); +#1847 = DIRECTION('',(1.,0.)); +#1848 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#1849 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1853)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#1850,#1851,#1852)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#1850 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#1851 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#1852 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#1853 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#1850, + 'distance_accuracy_value','confusion accuracy'); +#1854 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1855,#1857); +#1855 = ( REPRESENTATION_RELATIONSHIP('','',#1821,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1856) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#1856 = ITEM_DEFINED_TRANSFORMATION('','',#11,#91); +#1857 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #1858); +#1858 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('84','Conductor_018','',#5,#1816, + $); +#1859 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#1818)); +#1860 = SHAPE_DEFINITION_REPRESENTATION(#1861,#1867); +#1861 = PRODUCT_DEFINITION_SHAPE('','',#1862); +#1862 = PRODUCT_DEFINITION('design','',#1863,#1866); +#1863 = PRODUCT_DEFINITION_FORMATION('','',#1864); +#1864 = PRODUCT('Conductor_019','Conductor_019','',(#1865)); +#1865 = PRODUCT_CONTEXT('',#2,'mechanical'); +#1866 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#1867 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#1868),#1895); +#1868 = SHELL_BASED_SURFACE_MODEL('',(#1869)); +#1869 = OPEN_SHELL('',(#1870)); +#1870 = ADVANCED_FACE('',(#1871),#1884,.T.); +#1871 = FACE_BOUND('',#1872,.T.); +#1872 = EDGE_LOOP('',(#1873)); +#1873 = ORIENTED_EDGE('',*,*,#1874,.T.); +#1874 = EDGE_CURVE('',#1875,#1875,#1877,.T.); +#1875 = VERTEX_POINT('',#1876); +#1876 = CARTESIAN_POINT('',(0.36,0.,0.)); +#1877 = SURFACE_CURVE('',#1878,(#1883),.PCURVE_S1.); +#1878 = CIRCLE('',#1879,0.36); +#1879 = AXIS2_PLACEMENT_3D('',#1880,#1881,#1882); +#1880 = CARTESIAN_POINT('',(0.,0.,0.)); +#1881 = DIRECTION('',(0.,0.,1.)); +#1882 = DIRECTION('',(1.,0.,0.)); +#1883 = PCURVE('',#1884,#1889); +#1884 = PLANE('',#1885); +#1885 = AXIS2_PLACEMENT_3D('',#1886,#1887,#1888); +#1886 = CARTESIAN_POINT('',(-1.E-17,0.,0.)); +#1887 = DIRECTION('',(0.,0.,1.)); +#1888 = DIRECTION('',(1.,0.,0.)); +#1889 = DEFINITIONAL_REPRESENTATION('',(#1890),#1894); +#1890 = CIRCLE('',#1891,0.36); +#1891 = AXIS2_PLACEMENT_2D('',#1892,#1893); +#1892 = CARTESIAN_POINT('',(1.E-17,0.)); +#1893 = DIRECTION('',(1.,0.)); +#1894 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#1895 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1899)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#1896,#1897,#1898)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#1896 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#1897 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#1898 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#1899 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#1896, + 'distance_accuracy_value','confusion accuracy'); +#1900 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1901,#1903); +#1901 = ( REPRESENTATION_RELATIONSHIP('','',#1867,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1902) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#1902 = ITEM_DEFINED_TRANSFORMATION('','',#11,#95); +#1903 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #1904); +#1904 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('85','Conductor_019','',#5,#1862, + $); +#1905 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#1864)); +#1906 = SHAPE_DEFINITION_REPRESENTATION(#1907,#1913); +#1907 = PRODUCT_DEFINITION_SHAPE('','',#1908); +#1908 = PRODUCT_DEFINITION('design','',#1909,#1912); +#1909 = PRODUCT_DEFINITION_FORMATION('','',#1910); +#1910 = PRODUCT('Conductor_020','Conductor_020','',(#1911)); +#1911 = PRODUCT_CONTEXT('',#2,'mechanical'); +#1912 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#1913 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#1914),#1941); +#1914 = SHELL_BASED_SURFACE_MODEL('',(#1915)); +#1915 = OPEN_SHELL('',(#1916)); +#1916 = ADVANCED_FACE('',(#1917),#1930,.T.); +#1917 = FACE_BOUND('',#1918,.T.); +#1918 = EDGE_LOOP('',(#1919)); +#1919 = ORIENTED_EDGE('',*,*,#1920,.T.); +#1920 = EDGE_CURVE('',#1921,#1921,#1923,.T.); +#1921 = VERTEX_POINT('',#1922); +#1922 = CARTESIAN_POINT('',(0.36,0.,0.)); +#1923 = SURFACE_CURVE('',#1924,(#1929),.PCURVE_S1.); +#1924 = CIRCLE('',#1925,0.36); +#1925 = AXIS2_PLACEMENT_3D('',#1926,#1927,#1928); +#1926 = CARTESIAN_POINT('',(0.,0.,0.)); +#1927 = DIRECTION('',(0.,0.,1.)); +#1928 = DIRECTION('',(1.,0.,0.)); +#1929 = PCURVE('',#1930,#1935); +#1930 = PLANE('',#1931); +#1931 = AXIS2_PLACEMENT_3D('',#1932,#1933,#1934); +#1932 = CARTESIAN_POINT('',(-1.E-17,0.,0.)); +#1933 = DIRECTION('',(0.,0.,1.)); +#1934 = DIRECTION('',(1.,0.,0.)); +#1935 = DEFINITIONAL_REPRESENTATION('',(#1936),#1940); +#1936 = CIRCLE('',#1937,0.36); +#1937 = AXIS2_PLACEMENT_2D('',#1938,#1939); +#1938 = CARTESIAN_POINT('',(1.E-17,0.)); +#1939 = DIRECTION('',(1.,0.)); +#1940 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#1941 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1945)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#1942,#1943,#1944)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#1942 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#1943 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#1944 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#1945 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#1942, + 'distance_accuracy_value','confusion accuracy'); +#1946 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1947,#1949); +#1947 = ( REPRESENTATION_RELATIONSHIP('','',#1913,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1948) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#1948 = ITEM_DEFINED_TRANSFORMATION('','',#11,#99); +#1949 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #1950); +#1950 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('86','Conductor_020','',#5,#1908, + $); +#1951 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#1910)); +#1952 = SHAPE_DEFINITION_REPRESENTATION(#1953,#1959); +#1953 = PRODUCT_DEFINITION_SHAPE('','',#1954); +#1954 = PRODUCT_DEFINITION('design','',#1955,#1958); +#1955 = PRODUCT_DEFINITION_FORMATION('','',#1956); +#1956 = PRODUCT('Conductor_021','Conductor_021','',(#1957)); +#1957 = PRODUCT_CONTEXT('',#2,'mechanical'); +#1958 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#1959 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#1960),#1987); +#1960 = SHELL_BASED_SURFACE_MODEL('',(#1961)); +#1961 = OPEN_SHELL('',(#1962)); +#1962 = ADVANCED_FACE('',(#1963),#1976,.T.); +#1963 = FACE_BOUND('',#1964,.T.); +#1964 = EDGE_LOOP('',(#1965)); +#1965 = ORIENTED_EDGE('',*,*,#1966,.T.); +#1966 = EDGE_CURVE('',#1967,#1967,#1969,.T.); +#1967 = VERTEX_POINT('',#1968); +#1968 = CARTESIAN_POINT('',(0.36,0.,0.)); +#1969 = SURFACE_CURVE('',#1970,(#1975),.PCURVE_S1.); +#1970 = CIRCLE('',#1971,0.36); +#1971 = AXIS2_PLACEMENT_3D('',#1972,#1973,#1974); +#1972 = CARTESIAN_POINT('',(0.,0.,0.)); +#1973 = DIRECTION('',(0.,0.,1.)); +#1974 = DIRECTION('',(1.,0.,0.)); +#1975 = PCURVE('',#1976,#1981); +#1976 = PLANE('',#1977); +#1977 = AXIS2_PLACEMENT_3D('',#1978,#1979,#1980); +#1978 = CARTESIAN_POINT('',(-1.E-17,0.,0.)); +#1979 = DIRECTION('',(0.,0.,1.)); +#1980 = DIRECTION('',(1.,0.,0.)); +#1981 = DEFINITIONAL_REPRESENTATION('',(#1982),#1986); +#1982 = CIRCLE('',#1983,0.36); +#1983 = AXIS2_PLACEMENT_2D('',#1984,#1985); +#1984 = CARTESIAN_POINT('',(1.E-17,0.)); +#1985 = DIRECTION('',(1.,0.)); +#1986 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#1987 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1991)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#1988,#1989,#1990)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#1988 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#1989 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#1990 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#1991 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#1988, + 'distance_accuracy_value','confusion accuracy'); +#1992 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1993,#1995); +#1993 = ( REPRESENTATION_RELATIONSHIP('','',#1959,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1994) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#1994 = ITEM_DEFINED_TRANSFORMATION('','',#11,#103); +#1995 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #1996); +#1996 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('87','Conductor_021','',#5,#1954, + $); +#1997 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#1956)); +#1998 = SHAPE_DEFINITION_REPRESENTATION(#1999,#2005); +#1999 = PRODUCT_DEFINITION_SHAPE('','',#2000); +#2000 = PRODUCT_DEFINITION('design','',#2001,#2004); +#2001 = PRODUCT_DEFINITION_FORMATION('','',#2002); +#2002 = PRODUCT('Conductor_022','Conductor_022','',(#2003)); +#2003 = PRODUCT_CONTEXT('',#2,'mechanical'); +#2004 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#2005 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#2006),#2033); +#2006 = SHELL_BASED_SURFACE_MODEL('',(#2007)); +#2007 = OPEN_SHELL('',(#2008)); +#2008 = ADVANCED_FACE('',(#2009),#2022,.T.); +#2009 = FACE_BOUND('',#2010,.T.); +#2010 = EDGE_LOOP('',(#2011)); +#2011 = ORIENTED_EDGE('',*,*,#2012,.T.); +#2012 = EDGE_CURVE('',#2013,#2013,#2015,.T.); +#2013 = VERTEX_POINT('',#2014); +#2014 = CARTESIAN_POINT('',(0.36,0.,0.)); +#2015 = SURFACE_CURVE('',#2016,(#2021),.PCURVE_S1.); +#2016 = CIRCLE('',#2017,0.36); +#2017 = AXIS2_PLACEMENT_3D('',#2018,#2019,#2020); +#2018 = CARTESIAN_POINT('',(0.,0.,0.)); +#2019 = DIRECTION('',(0.,0.,1.)); +#2020 = DIRECTION('',(1.,0.,0.)); +#2021 = PCURVE('',#2022,#2027); +#2022 = PLANE('',#2023); +#2023 = AXIS2_PLACEMENT_3D('',#2024,#2025,#2026); +#2024 = CARTESIAN_POINT('',(-1.E-17,0.,0.)); +#2025 = DIRECTION('',(0.,0.,1.)); +#2026 = DIRECTION('',(1.,0.,0.)); +#2027 = DEFINITIONAL_REPRESENTATION('',(#2028),#2032); +#2028 = CIRCLE('',#2029,0.36); +#2029 = AXIS2_PLACEMENT_2D('',#2030,#2031); +#2030 = CARTESIAN_POINT('',(1.E-17,0.)); +#2031 = DIRECTION('',(1.,0.)); +#2032 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#2033 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2037)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#2034,#2035,#2036)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#2034 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#2035 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#2036 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#2037 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#2034, + 'distance_accuracy_value','confusion accuracy'); +#2038 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#2039,#2041); +#2039 = ( REPRESENTATION_RELATIONSHIP('','',#2005,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#2040) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#2040 = ITEM_DEFINED_TRANSFORMATION('','',#11,#107); +#2041 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #2042); +#2042 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('88','Conductor_022','',#5,#2000, + $); +#2043 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#2002)); +#2044 = SHAPE_DEFINITION_REPRESENTATION(#2045,#2051); +#2045 = PRODUCT_DEFINITION_SHAPE('','',#2046); +#2046 = PRODUCT_DEFINITION('design','',#2047,#2050); +#2047 = PRODUCT_DEFINITION_FORMATION('','',#2048); +#2048 = PRODUCT('Conductor_023','Conductor_023','',(#2049)); +#2049 = PRODUCT_CONTEXT('',#2,'mechanical'); +#2050 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#2051 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#2052),#2079); +#2052 = SHELL_BASED_SURFACE_MODEL('',(#2053)); +#2053 = OPEN_SHELL('',(#2054)); +#2054 = ADVANCED_FACE('',(#2055),#2068,.T.); +#2055 = FACE_BOUND('',#2056,.T.); +#2056 = EDGE_LOOP('',(#2057)); +#2057 = ORIENTED_EDGE('',*,*,#2058,.T.); +#2058 = EDGE_CURVE('',#2059,#2059,#2061,.T.); +#2059 = VERTEX_POINT('',#2060); +#2060 = CARTESIAN_POINT('',(0.36,0.,0.)); +#2061 = SURFACE_CURVE('',#2062,(#2067),.PCURVE_S1.); +#2062 = CIRCLE('',#2063,0.36); +#2063 = AXIS2_PLACEMENT_3D('',#2064,#2065,#2066); +#2064 = CARTESIAN_POINT('',(0.,0.,0.)); +#2065 = DIRECTION('',(0.,0.,1.)); +#2066 = DIRECTION('',(1.,0.,0.)); +#2067 = PCURVE('',#2068,#2073); +#2068 = PLANE('',#2069); +#2069 = AXIS2_PLACEMENT_3D('',#2070,#2071,#2072); +#2070 = CARTESIAN_POINT('',(-1.E-17,0.,0.)); +#2071 = DIRECTION('',(0.,0.,1.)); +#2072 = DIRECTION('',(1.,0.,0.)); +#2073 = DEFINITIONAL_REPRESENTATION('',(#2074),#2078); +#2074 = CIRCLE('',#2075,0.36); +#2075 = AXIS2_PLACEMENT_2D('',#2076,#2077); +#2076 = CARTESIAN_POINT('',(1.E-17,0.)); +#2077 = DIRECTION('',(1.,0.)); +#2078 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#2079 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2083)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#2080,#2081,#2082)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#2080 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#2081 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#2082 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#2083 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#2080, + 'distance_accuracy_value','confusion accuracy'); +#2084 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#2085,#2087); +#2085 = ( REPRESENTATION_RELATIONSHIP('','',#2051,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#2086) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#2086 = ITEM_DEFINED_TRANSFORMATION('','',#11,#111); +#2087 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #2088); +#2088 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('89','Conductor_023','',#5,#2046, + $); +#2089 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#2048)); +#2090 = SHAPE_DEFINITION_REPRESENTATION(#2091,#2097); +#2091 = PRODUCT_DEFINITION_SHAPE('','',#2092); +#2092 = PRODUCT_DEFINITION('design','',#2093,#2096); +#2093 = PRODUCT_DEFINITION_FORMATION('','',#2094); +#2094 = PRODUCT('Conductor_024','Conductor_024','',(#2095)); +#2095 = PRODUCT_CONTEXT('',#2,'mechanical'); +#2096 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#2097 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#2098),#2125); +#2098 = SHELL_BASED_SURFACE_MODEL('',(#2099)); +#2099 = OPEN_SHELL('',(#2100)); +#2100 = ADVANCED_FACE('',(#2101),#2114,.T.); +#2101 = FACE_BOUND('',#2102,.T.); +#2102 = EDGE_LOOP('',(#2103)); +#2103 = ORIENTED_EDGE('',*,*,#2104,.T.); +#2104 = EDGE_CURVE('',#2105,#2105,#2107,.T.); +#2105 = VERTEX_POINT('',#2106); +#2106 = CARTESIAN_POINT('',(0.36,0.,0.)); +#2107 = SURFACE_CURVE('',#2108,(#2113),.PCURVE_S1.); +#2108 = CIRCLE('',#2109,0.36); +#2109 = AXIS2_PLACEMENT_3D('',#2110,#2111,#2112); +#2110 = CARTESIAN_POINT('',(0.,0.,0.)); +#2111 = DIRECTION('',(0.,0.,1.)); +#2112 = DIRECTION('',(1.,0.,0.)); +#2113 = PCURVE('',#2114,#2119); +#2114 = PLANE('',#2115); +#2115 = AXIS2_PLACEMENT_3D('',#2116,#2117,#2118); +#2116 = CARTESIAN_POINT('',(-1.E-17,0.,0.)); +#2117 = DIRECTION('',(0.,0.,1.)); +#2118 = DIRECTION('',(1.,0.,0.)); +#2119 = DEFINITIONAL_REPRESENTATION('',(#2120),#2124); +#2120 = CIRCLE('',#2121,0.36); +#2121 = AXIS2_PLACEMENT_2D('',#2122,#2123); +#2122 = CARTESIAN_POINT('',(1.E-17,0.)); +#2123 = DIRECTION('',(1.,0.)); +#2124 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#2125 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2129)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#2126,#2127,#2128)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#2126 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#2127 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#2128 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#2129 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#2126, + 'distance_accuracy_value','confusion accuracy'); +#2130 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#2131,#2133); +#2131 = ( REPRESENTATION_RELATIONSHIP('','',#2097,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#2132) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#2132 = ITEM_DEFINED_TRANSFORMATION('','',#11,#115); +#2133 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #2134); +#2134 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('90','Conductor_024','',#5,#2092, + $); +#2135 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#2094)); +#2136 = SHAPE_DEFINITION_REPRESENTATION(#2137,#2143); +#2137 = PRODUCT_DEFINITION_SHAPE('','',#2138); +#2138 = PRODUCT_DEFINITION('design','',#2139,#2142); +#2139 = PRODUCT_DEFINITION_FORMATION('','',#2140); +#2140 = PRODUCT('Conductor_025','Conductor_025','',(#2141)); +#2141 = PRODUCT_CONTEXT('',#2,'mechanical'); +#2142 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#2143 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#2144),#2171); +#2144 = SHELL_BASED_SURFACE_MODEL('',(#2145)); +#2145 = OPEN_SHELL('',(#2146)); +#2146 = ADVANCED_FACE('',(#2147),#2160,.T.); +#2147 = FACE_BOUND('',#2148,.T.); +#2148 = EDGE_LOOP('',(#2149)); +#2149 = ORIENTED_EDGE('',*,*,#2150,.T.); +#2150 = EDGE_CURVE('',#2151,#2151,#2153,.T.); +#2151 = VERTEX_POINT('',#2152); +#2152 = CARTESIAN_POINT('',(0.575,0.,0.)); +#2153 = SURFACE_CURVE('',#2154,(#2159),.PCURVE_S1.); +#2154 = CIRCLE('',#2155,0.575); +#2155 = AXIS2_PLACEMENT_3D('',#2156,#2157,#2158); +#2156 = CARTESIAN_POINT('',(0.,0.,0.)); +#2157 = DIRECTION('',(0.,0.,1.)); +#2158 = DIRECTION('',(1.,0.,0.)); +#2159 = PCURVE('',#2160,#2165); +#2160 = PLANE('',#2161); +#2161 = AXIS2_PLACEMENT_3D('',#2162,#2163,#2164); +#2162 = CARTESIAN_POINT('',(-7.E-17,3.E-17,0.)); +#2163 = DIRECTION('',(0.,0.,1.)); +#2164 = DIRECTION('',(1.,0.,0.)); +#2165 = DEFINITIONAL_REPRESENTATION('',(#2166),#2170); +#2166 = CIRCLE('',#2167,0.575); +#2167 = AXIS2_PLACEMENT_2D('',#2168,#2169); +#2168 = CARTESIAN_POINT('',(7.E-17,-3.E-17)); +#2169 = DIRECTION('',(1.,0.)); +#2170 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#2171 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2175)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#2172,#2173,#2174)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#2172 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#2173 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#2174 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#2175 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#2172, + 'distance_accuracy_value','confusion accuracy'); +#2176 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#2177,#2179); +#2177 = ( REPRESENTATION_RELATIONSHIP('','',#2143,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#2178) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#2178 = ITEM_DEFINED_TRANSFORMATION('','',#11,#119); +#2179 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #2180); +#2180 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('91','Conductor_025','',#5,#2138, + $); +#2181 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#2140)); +#2182 = SHAPE_DEFINITION_REPRESENTATION(#2183,#2189); +#2183 = PRODUCT_DEFINITION_SHAPE('','',#2184); +#2184 = PRODUCT_DEFINITION('design','',#2185,#2188); +#2185 = PRODUCT_DEFINITION_FORMATION('','',#2186); +#2186 = PRODUCT('Conductor_026','Conductor_026','',(#2187)); +#2187 = PRODUCT_CONTEXT('',#2,'mechanical'); +#2188 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#2189 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#2190),#2217); +#2190 = SHELL_BASED_SURFACE_MODEL('',(#2191)); +#2191 = OPEN_SHELL('',(#2192)); +#2192 = ADVANCED_FACE('',(#2193),#2206,.T.); +#2193 = FACE_BOUND('',#2194,.T.); +#2194 = EDGE_LOOP('',(#2195)); +#2195 = ORIENTED_EDGE('',*,*,#2196,.T.); +#2196 = EDGE_CURVE('',#2197,#2197,#2199,.T.); +#2197 = VERTEX_POINT('',#2198); +#2198 = CARTESIAN_POINT('',(0.575,0.,0.)); +#2199 = SURFACE_CURVE('',#2200,(#2205),.PCURVE_S1.); +#2200 = CIRCLE('',#2201,0.575); +#2201 = AXIS2_PLACEMENT_3D('',#2202,#2203,#2204); +#2202 = CARTESIAN_POINT('',(0.,0.,0.)); +#2203 = DIRECTION('',(0.,0.,1.)); +#2204 = DIRECTION('',(1.,0.,0.)); +#2205 = PCURVE('',#2206,#2211); +#2206 = PLANE('',#2207); +#2207 = AXIS2_PLACEMENT_3D('',#2208,#2209,#2210); +#2208 = CARTESIAN_POINT('',(-7.E-17,3.E-17,0.)); +#2209 = DIRECTION('',(0.,0.,1.)); +#2210 = DIRECTION('',(1.,0.,0.)); +#2211 = DEFINITIONAL_REPRESENTATION('',(#2212),#2216); +#2212 = CIRCLE('',#2213,0.575); +#2213 = AXIS2_PLACEMENT_2D('',#2214,#2215); +#2214 = CARTESIAN_POINT('',(7.E-17,-3.E-17)); +#2215 = DIRECTION('',(1.,0.)); +#2216 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#2217 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2221)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#2218,#2219,#2220)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#2218 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#2219 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#2220 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#2221 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#2218, + 'distance_accuracy_value','confusion accuracy'); +#2222 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#2223,#2225); +#2223 = ( REPRESENTATION_RELATIONSHIP('','',#2189,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#2224) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#2224 = ITEM_DEFINED_TRANSFORMATION('','',#11,#123); +#2225 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #2226); +#2226 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('92','Conductor_026','',#5,#2184, + $); +#2227 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#2186)); +#2228 = SHAPE_DEFINITION_REPRESENTATION(#2229,#2235); +#2229 = PRODUCT_DEFINITION_SHAPE('','',#2230); +#2230 = PRODUCT_DEFINITION('design','',#2231,#2234); +#2231 = PRODUCT_DEFINITION_FORMATION('','',#2232); +#2232 = PRODUCT('Conductor_027','Conductor_027','',(#2233)); +#2233 = PRODUCT_CONTEXT('',#2,'mechanical'); +#2234 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#2235 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#2236),#2263); +#2236 = SHELL_BASED_SURFACE_MODEL('',(#2237)); +#2237 = OPEN_SHELL('',(#2238)); +#2238 = ADVANCED_FACE('',(#2239),#2252,.T.); +#2239 = FACE_BOUND('',#2240,.T.); +#2240 = EDGE_LOOP('',(#2241)); +#2241 = ORIENTED_EDGE('',*,*,#2242,.T.); +#2242 = EDGE_CURVE('',#2243,#2243,#2245,.T.); +#2243 = VERTEX_POINT('',#2244); +#2244 = CARTESIAN_POINT('',(0.575,0.,0.)); +#2245 = SURFACE_CURVE('',#2246,(#2251),.PCURVE_S1.); +#2246 = CIRCLE('',#2247,0.575); +#2247 = AXIS2_PLACEMENT_3D('',#2248,#2249,#2250); +#2248 = CARTESIAN_POINT('',(0.,0.,0.)); +#2249 = DIRECTION('',(0.,0.,1.)); +#2250 = DIRECTION('',(1.,0.,0.)); +#2251 = PCURVE('',#2252,#2257); +#2252 = PLANE('',#2253); +#2253 = AXIS2_PLACEMENT_3D('',#2254,#2255,#2256); +#2254 = CARTESIAN_POINT('',(-7.E-17,3.E-17,0.)); +#2255 = DIRECTION('',(0.,0.,1.)); +#2256 = DIRECTION('',(1.,0.,0.)); +#2257 = DEFINITIONAL_REPRESENTATION('',(#2258),#2262); +#2258 = CIRCLE('',#2259,0.575); +#2259 = AXIS2_PLACEMENT_2D('',#2260,#2261); +#2260 = CARTESIAN_POINT('',(7.E-17,-3.E-17)); +#2261 = DIRECTION('',(1.,0.)); +#2262 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#2263 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2267)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#2264,#2265,#2266)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#2264 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#2265 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#2266 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#2267 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#2264, + 'distance_accuracy_value','confusion accuracy'); +#2268 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#2269,#2271); +#2269 = ( REPRESENTATION_RELATIONSHIP('','',#2235,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#2270) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#2270 = ITEM_DEFINED_TRANSFORMATION('','',#11,#127); +#2271 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #2272); +#2272 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('93','Conductor_027','',#5,#2230, + $); +#2273 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#2232)); +#2274 = SHAPE_DEFINITION_REPRESENTATION(#2275,#2281); +#2275 = PRODUCT_DEFINITION_SHAPE('','',#2276); +#2276 = PRODUCT_DEFINITION('design','',#2277,#2280); +#2277 = PRODUCT_DEFINITION_FORMATION('','',#2278); +#2278 = PRODUCT('Conductor_028','Conductor_028','',(#2279)); +#2279 = PRODUCT_CONTEXT('',#2,'mechanical'); +#2280 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#2281 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#2282),#2309); +#2282 = SHELL_BASED_SURFACE_MODEL('',(#2283)); +#2283 = OPEN_SHELL('',(#2284)); +#2284 = ADVANCED_FACE('',(#2285),#2298,.T.); +#2285 = FACE_BOUND('',#2286,.T.); +#2286 = EDGE_LOOP('',(#2287)); +#2287 = ORIENTED_EDGE('',*,*,#2288,.T.); +#2288 = EDGE_CURVE('',#2289,#2289,#2291,.T.); +#2289 = VERTEX_POINT('',#2290); +#2290 = CARTESIAN_POINT('',(0.575,0.,0.)); +#2291 = SURFACE_CURVE('',#2292,(#2297),.PCURVE_S1.); +#2292 = CIRCLE('',#2293,0.575); +#2293 = AXIS2_PLACEMENT_3D('',#2294,#2295,#2296); +#2294 = CARTESIAN_POINT('',(0.,0.,0.)); +#2295 = DIRECTION('',(0.,0.,1.)); +#2296 = DIRECTION('',(1.,0.,0.)); +#2297 = PCURVE('',#2298,#2303); +#2298 = PLANE('',#2299); +#2299 = AXIS2_PLACEMENT_3D('',#2300,#2301,#2302); +#2300 = CARTESIAN_POINT('',(-7.E-17,3.E-17,0.)); +#2301 = DIRECTION('',(0.,0.,1.)); +#2302 = DIRECTION('',(1.,0.,0.)); +#2303 = DEFINITIONAL_REPRESENTATION('',(#2304),#2308); +#2304 = CIRCLE('',#2305,0.575); +#2305 = AXIS2_PLACEMENT_2D('',#2306,#2307); +#2306 = CARTESIAN_POINT('',(7.E-17,-3.E-17)); +#2307 = DIRECTION('',(1.,0.)); +#2308 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#2309 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2313)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#2310,#2311,#2312)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#2310 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#2311 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#2312 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#2313 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#2310, + 'distance_accuracy_value','confusion accuracy'); +#2314 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#2315,#2317); +#2315 = ( REPRESENTATION_RELATIONSHIP('','',#2281,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#2316) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#2316 = ITEM_DEFINED_TRANSFORMATION('','',#11,#131); +#2317 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #2318); +#2318 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('94','Conductor_028','',#5,#2276, + $); +#2319 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#2278)); +#2320 = SHAPE_DEFINITION_REPRESENTATION(#2321,#2327); +#2321 = PRODUCT_DEFINITION_SHAPE('','',#2322); +#2322 = PRODUCT_DEFINITION('design','',#2323,#2326); +#2323 = PRODUCT_DEFINITION_FORMATION('','',#2324); +#2324 = PRODUCT('Conductor_029','Conductor_029','',(#2325)); +#2325 = PRODUCT_CONTEXT('',#2,'mechanical'); +#2326 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#2327 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#2328),#2355); +#2328 = SHELL_BASED_SURFACE_MODEL('',(#2329)); +#2329 = OPEN_SHELL('',(#2330)); +#2330 = ADVANCED_FACE('',(#2331),#2344,.T.); +#2331 = FACE_BOUND('',#2332,.T.); +#2332 = EDGE_LOOP('',(#2333)); +#2333 = ORIENTED_EDGE('',*,*,#2334,.T.); +#2334 = EDGE_CURVE('',#2335,#2335,#2337,.T.); +#2335 = VERTEX_POINT('',#2336); +#2336 = CARTESIAN_POINT('',(0.575,0.,0.)); +#2337 = SURFACE_CURVE('',#2338,(#2343),.PCURVE_S1.); +#2338 = CIRCLE('',#2339,0.575); +#2339 = AXIS2_PLACEMENT_3D('',#2340,#2341,#2342); +#2340 = CARTESIAN_POINT('',(0.,0.,0.)); +#2341 = DIRECTION('',(0.,0.,1.)); +#2342 = DIRECTION('',(1.,0.,0.)); +#2343 = PCURVE('',#2344,#2349); +#2344 = PLANE('',#2345); +#2345 = AXIS2_PLACEMENT_3D('',#2346,#2347,#2348); +#2346 = CARTESIAN_POINT('',(-7.E-17,3.E-17,0.)); +#2347 = DIRECTION('',(0.,0.,1.)); +#2348 = DIRECTION('',(1.,0.,0.)); +#2349 = DEFINITIONAL_REPRESENTATION('',(#2350),#2354); +#2350 = CIRCLE('',#2351,0.575); +#2351 = AXIS2_PLACEMENT_2D('',#2352,#2353); +#2352 = CARTESIAN_POINT('',(7.E-17,-3.E-17)); +#2353 = DIRECTION('',(1.,0.)); +#2354 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#2355 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2359)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#2356,#2357,#2358)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#2356 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#2357 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#2358 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#2359 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#2356, + 'distance_accuracy_value','confusion accuracy'); +#2360 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#2361,#2363); +#2361 = ( REPRESENTATION_RELATIONSHIP('','',#2327,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#2362) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#2362 = ITEM_DEFINED_TRANSFORMATION('','',#11,#135); +#2363 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #2364); +#2364 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('95','Conductor_029','',#5,#2322, + $); +#2365 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#2324)); +#2366 = SHAPE_DEFINITION_REPRESENTATION(#2367,#2373); +#2367 = PRODUCT_DEFINITION_SHAPE('','',#2368); +#2368 = PRODUCT_DEFINITION('design','',#2369,#2372); +#2369 = PRODUCT_DEFINITION_FORMATION('','',#2370); +#2370 = PRODUCT('Conductor_030','Conductor_030','',(#2371)); +#2371 = PRODUCT_CONTEXT('',#2,'mechanical'); +#2372 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#2373 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#2374),#2401); +#2374 = SHELL_BASED_SURFACE_MODEL('',(#2375)); +#2375 = OPEN_SHELL('',(#2376)); +#2376 = ADVANCED_FACE('',(#2377),#2390,.T.); +#2377 = FACE_BOUND('',#2378,.T.); +#2378 = EDGE_LOOP('',(#2379)); +#2379 = ORIENTED_EDGE('',*,*,#2380,.T.); +#2380 = EDGE_CURVE('',#2381,#2381,#2383,.T.); +#2381 = VERTEX_POINT('',#2382); +#2382 = CARTESIAN_POINT('',(2.25,0.,0.)); +#2383 = SURFACE_CURVE('',#2384,(#2389),.PCURVE_S1.); +#2384 = CIRCLE('',#2385,2.25); +#2385 = AXIS2_PLACEMENT_3D('',#2386,#2387,#2388); +#2386 = CARTESIAN_POINT('',(0.,0.,0.)); +#2387 = DIRECTION('',(0.,0.,1.)); +#2388 = DIRECTION('',(1.,0.,0.)); +#2389 = PCURVE('',#2390,#2395); +#2390 = PLANE('',#2391); +#2391 = AXIS2_PLACEMENT_3D('',#2392,#2393,#2394); +#2392 = CARTESIAN_POINT('',(-1.5E-16,-9.E-17,0.)); +#2393 = DIRECTION('',(0.,0.,1.)); +#2394 = DIRECTION('',(1.,0.,0.)); +#2395 = DEFINITIONAL_REPRESENTATION('',(#2396),#2400); +#2396 = CIRCLE('',#2397,2.25); +#2397 = AXIS2_PLACEMENT_2D('',#2398,#2399); +#2398 = CARTESIAN_POINT('',(1.5E-16,9.E-17)); +#2399 = DIRECTION('',(1.,0.)); +#2400 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#2401 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2405)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#2402,#2403,#2404)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#2402 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#2403 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#2404 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#2405 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#2402, + 'distance_accuracy_value','confusion accuracy'); +#2406 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#2407,#2409); +#2407 = ( REPRESENTATION_RELATIONSHIP('','',#2373,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#2408) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#2408 = ITEM_DEFINED_TRANSFORMATION('','',#11,#139); +#2409 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #2410); +#2410 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('96','Conductor_030','',#5,#2368, + $); +#2411 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#2370)); +#2412 = SHAPE_DEFINITION_REPRESENTATION(#2413,#2419); +#2413 = PRODUCT_DEFINITION_SHAPE('','',#2414); +#2414 = PRODUCT_DEFINITION('design','',#2415,#2418); +#2415 = PRODUCT_DEFINITION_FORMATION('','',#2416); +#2416 = PRODUCT('Dielectric_000','Dielectric_000','',(#2417)); +#2417 = PRODUCT_CONTEXT('',#2,'mechanical'); +#2418 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#2419 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#2420),#2447); +#2420 = SHELL_BASED_SURFACE_MODEL('',(#2421)); +#2421 = OPEN_SHELL('',(#2422)); +#2422 = ADVANCED_FACE('',(#2423),#2436,.T.); +#2423 = FACE_BOUND('',#2424,.T.); +#2424 = EDGE_LOOP('',(#2425)); +#2425 = ORIENTED_EDGE('',*,*,#2426,.T.); +#2426 = EDGE_CURVE('',#2427,#2427,#2429,.T.); +#2427 = VERTEX_POINT('',#2428); +#2428 = CARTESIAN_POINT('',(1.25,0.,0.)); +#2429 = SURFACE_CURVE('',#2430,(#2435),.PCURVE_S1.); +#2430 = CIRCLE('',#2431,1.25); +#2431 = AXIS2_PLACEMENT_3D('',#2432,#2433,#2434); +#2432 = CARTESIAN_POINT('',(0.,0.,0.)); +#2433 = DIRECTION('',(0.,0.,1.)); +#2434 = DIRECTION('',(1.,0.,0.)); +#2435 = PCURVE('',#2436,#2441); +#2436 = PLANE('',#2437); +#2437 = AXIS2_PLACEMENT_3D('',#2438,#2439,#2440); +#2438 = CARTESIAN_POINT('',(-7.E-17,2.E-17,0.)); +#2439 = DIRECTION('',(0.,0.,1.)); +#2440 = DIRECTION('',(1.,0.,0.)); +#2441 = DEFINITIONAL_REPRESENTATION('',(#2442),#2446); +#2442 = CIRCLE('',#2443,1.25); +#2443 = AXIS2_PLACEMENT_2D('',#2444,#2445); +#2444 = CARTESIAN_POINT('',(7.E-17,-2.E-17)); +#2445 = DIRECTION('',(1.,0.)); +#2446 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#2447 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2451)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#2448,#2449,#2450)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#2448 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#2449 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#2450 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#2451 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#2448, + 'distance_accuracy_value','confusion accuracy'); +#2452 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#2453,#2455); +#2453 = ( REPRESENTATION_RELATIONSHIP('','',#2419,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#2454) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#2454 = ITEM_DEFINED_TRANSFORMATION('','',#11,#143); +#2455 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #2456); +#2456 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('97','Dielectric_000','',#5,#2414 + ,$); +#2457 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#2416)); +#2458 = SHAPE_DEFINITION_REPRESENTATION(#2459,#2465); +#2459 = PRODUCT_DEFINITION_SHAPE('','',#2460); +#2460 = PRODUCT_DEFINITION('design','',#2461,#2464); +#2461 = PRODUCT_DEFINITION_FORMATION('','',#2462); +#2462 = PRODUCT('Dielectric_001','Dielectric_001','',(#2463)); +#2463 = PRODUCT_CONTEXT('',#2,'mechanical'); +#2464 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#2465 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#2466),#2493); +#2466 = SHELL_BASED_SURFACE_MODEL('',(#2467)); +#2467 = OPEN_SHELL('',(#2468)); +#2468 = ADVANCED_FACE('',(#2469),#2482,.T.); +#2469 = FACE_BOUND('',#2470,.T.); +#2470 = EDGE_LOOP('',(#2471)); +#2471 = ORIENTED_EDGE('',*,*,#2472,.T.); +#2472 = EDGE_CURVE('',#2473,#2473,#2475,.T.); +#2473 = VERTEX_POINT('',#2474); +#2474 = CARTESIAN_POINT('',(1.25,0.,0.)); +#2475 = SURFACE_CURVE('',#2476,(#2481),.PCURVE_S1.); +#2476 = CIRCLE('',#2477,1.25); +#2477 = AXIS2_PLACEMENT_3D('',#2478,#2479,#2480); +#2478 = CARTESIAN_POINT('',(0.,0.,0.)); +#2479 = DIRECTION('',(0.,0.,1.)); +#2480 = DIRECTION('',(1.,0.,0.)); +#2481 = PCURVE('',#2482,#2487); +#2482 = PLANE('',#2483); +#2483 = AXIS2_PLACEMENT_3D('',#2484,#2485,#2486); +#2484 = CARTESIAN_POINT('',(-7.E-17,2.E-17,0.)); +#2485 = DIRECTION('',(0.,0.,1.)); +#2486 = DIRECTION('',(1.,0.,0.)); +#2487 = DEFINITIONAL_REPRESENTATION('',(#2488),#2492); +#2488 = CIRCLE('',#2489,1.25); +#2489 = AXIS2_PLACEMENT_2D('',#2490,#2491); +#2490 = CARTESIAN_POINT('',(7.E-17,-2.E-17)); +#2491 = DIRECTION('',(1.,0.)); +#2492 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#2493 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2497)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#2494,#2495,#2496)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#2494 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#2495 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#2496 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#2497 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#2494, + 'distance_accuracy_value','confusion accuracy'); +#2498 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#2499,#2501); +#2499 = ( REPRESENTATION_RELATIONSHIP('','',#2465,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#2500) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#2500 = ITEM_DEFINED_TRANSFORMATION('','',#11,#147); +#2501 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #2502); +#2502 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('98','Dielectric_001','',#5,#2460 + ,$); +#2503 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#2462)); +#2504 = SHAPE_DEFINITION_REPRESENTATION(#2505,#2511); +#2505 = PRODUCT_DEFINITION_SHAPE('','',#2506); +#2506 = PRODUCT_DEFINITION('design','',#2507,#2510); +#2507 = PRODUCT_DEFINITION_FORMATION('','',#2508); +#2508 = PRODUCT('Dielectric_002','Dielectric_002','',(#2509)); +#2509 = PRODUCT_CONTEXT('',#2,'mechanical'); +#2510 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#2511 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#2512),#2539); +#2512 = SHELL_BASED_SURFACE_MODEL('',(#2513)); +#2513 = OPEN_SHELL('',(#2514)); +#2514 = ADVANCED_FACE('',(#2515),#2528,.T.); +#2515 = FACE_BOUND('',#2516,.T.); +#2516 = EDGE_LOOP('',(#2517)); +#2517 = ORIENTED_EDGE('',*,*,#2518,.T.); +#2518 = EDGE_CURVE('',#2519,#2519,#2521,.T.); +#2519 = VERTEX_POINT('',#2520); +#2520 = CARTESIAN_POINT('',(1.25,0.,0.)); +#2521 = SURFACE_CURVE('',#2522,(#2527),.PCURVE_S1.); +#2522 = CIRCLE('',#2523,1.25); +#2523 = AXIS2_PLACEMENT_3D('',#2524,#2525,#2526); +#2524 = CARTESIAN_POINT('',(0.,0.,0.)); +#2525 = DIRECTION('',(0.,0.,1.)); +#2526 = DIRECTION('',(1.,0.,0.)); +#2527 = PCURVE('',#2528,#2533); +#2528 = PLANE('',#2529); +#2529 = AXIS2_PLACEMENT_3D('',#2530,#2531,#2532); +#2530 = CARTESIAN_POINT('',(-7.E-17,2.E-17,0.)); +#2531 = DIRECTION('',(0.,0.,1.)); +#2532 = DIRECTION('',(1.,0.,0.)); +#2533 = DEFINITIONAL_REPRESENTATION('',(#2534),#2538); +#2534 = CIRCLE('',#2535,1.25); +#2535 = AXIS2_PLACEMENT_2D('',#2536,#2537); +#2536 = CARTESIAN_POINT('',(7.E-17,-2.E-17)); +#2537 = DIRECTION('',(1.,0.)); +#2538 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#2539 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2543)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#2540,#2541,#2542)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#2540 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#2541 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#2542 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#2543 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#2540, + 'distance_accuracy_value','confusion accuracy'); +#2544 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#2545,#2547); +#2545 = ( REPRESENTATION_RELATIONSHIP('','',#2511,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#2546) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#2546 = ITEM_DEFINED_TRANSFORMATION('','',#11,#151); +#2547 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #2548); +#2548 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('99','Dielectric_002','',#5,#2506 + ,$); +#2549 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#2508)); +#2550 = SHAPE_DEFINITION_REPRESENTATION(#2551,#2557); +#2551 = PRODUCT_DEFINITION_SHAPE('','',#2552); +#2552 = PRODUCT_DEFINITION('design','',#2553,#2556); +#2553 = PRODUCT_DEFINITION_FORMATION('','',#2554); +#2554 = PRODUCT('Dielectric_003','Dielectric_003','',(#2555)); +#2555 = PRODUCT_CONTEXT('',#2,'mechanical'); +#2556 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#2557 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#2558),#2585); +#2558 = SHELL_BASED_SURFACE_MODEL('',(#2559)); +#2559 = OPEN_SHELL('',(#2560)); +#2560 = ADVANCED_FACE('',(#2561),#2574,.T.); +#2561 = FACE_BOUND('',#2562,.T.); +#2562 = EDGE_LOOP('',(#2563)); +#2563 = ORIENTED_EDGE('',*,*,#2564,.T.); +#2564 = EDGE_CURVE('',#2565,#2565,#2567,.T.); +#2565 = VERTEX_POINT('',#2566); +#2566 = CARTESIAN_POINT('',(1.25,0.,0.)); +#2567 = SURFACE_CURVE('',#2568,(#2573),.PCURVE_S1.); +#2568 = CIRCLE('',#2569,1.25); +#2569 = AXIS2_PLACEMENT_3D('',#2570,#2571,#2572); +#2570 = CARTESIAN_POINT('',(0.,0.,0.)); +#2571 = DIRECTION('',(0.,0.,1.)); +#2572 = DIRECTION('',(1.,0.,0.)); +#2573 = PCURVE('',#2574,#2579); +#2574 = PLANE('',#2575); +#2575 = AXIS2_PLACEMENT_3D('',#2576,#2577,#2578); +#2576 = CARTESIAN_POINT('',(-7.E-17,2.E-17,0.)); +#2577 = DIRECTION('',(0.,0.,1.)); +#2578 = DIRECTION('',(1.,0.,0.)); +#2579 = DEFINITIONAL_REPRESENTATION('',(#2580),#2584); +#2580 = CIRCLE('',#2581,1.25); +#2581 = AXIS2_PLACEMENT_2D('',#2582,#2583); +#2582 = CARTESIAN_POINT('',(7.E-17,-2.E-17)); +#2583 = DIRECTION('',(1.,0.)); +#2584 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#2585 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2589)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#2586,#2587,#2588)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#2586 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#2587 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#2588 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#2589 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#2586, + 'distance_accuracy_value','confusion accuracy'); +#2590 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#2591,#2593); +#2591 = ( REPRESENTATION_RELATIONSHIP('','',#2557,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#2592) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#2592 = ITEM_DEFINED_TRANSFORMATION('','',#11,#155); +#2593 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #2594); +#2594 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('100','Dielectric_003','',#5, + #2552,$); +#2595 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#2554)); +#2596 = SHAPE_DEFINITION_REPRESENTATION(#2597,#2603); +#2597 = PRODUCT_DEFINITION_SHAPE('','',#2598); +#2598 = PRODUCT_DEFINITION('design','',#2599,#2602); +#2599 = PRODUCT_DEFINITION_FORMATION('','',#2600); +#2600 = PRODUCT('Dielectric_004','Dielectric_004','',(#2601)); +#2601 = PRODUCT_CONTEXT('',#2,'mechanical'); +#2602 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#2603 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#2604),#2631); +#2604 = SHELL_BASED_SURFACE_MODEL('',(#2605)); +#2605 = OPEN_SHELL('',(#2606)); +#2606 = ADVANCED_FACE('',(#2607),#2620,.T.); +#2607 = FACE_BOUND('',#2608,.T.); +#2608 = EDGE_LOOP('',(#2609)); +#2609 = ORIENTED_EDGE('',*,*,#2610,.T.); +#2610 = EDGE_CURVE('',#2611,#2611,#2613,.T.); +#2611 = VERTEX_POINT('',#2612); +#2612 = CARTESIAN_POINT('',(1.25,0.,0.)); +#2613 = SURFACE_CURVE('',#2614,(#2619),.PCURVE_S1.); +#2614 = CIRCLE('',#2615,1.25); +#2615 = AXIS2_PLACEMENT_3D('',#2616,#2617,#2618); +#2616 = CARTESIAN_POINT('',(0.,0.,0.)); +#2617 = DIRECTION('',(0.,0.,1.)); +#2618 = DIRECTION('',(1.,0.,0.)); +#2619 = PCURVE('',#2620,#2625); +#2620 = PLANE('',#2621); +#2621 = AXIS2_PLACEMENT_3D('',#2622,#2623,#2624); +#2622 = CARTESIAN_POINT('',(-7.E-17,2.E-17,0.)); +#2623 = DIRECTION('',(0.,0.,1.)); +#2624 = DIRECTION('',(1.,0.,0.)); +#2625 = DEFINITIONAL_REPRESENTATION('',(#2626),#2630); +#2626 = CIRCLE('',#2627,1.25); +#2627 = AXIS2_PLACEMENT_2D('',#2628,#2629); +#2628 = CARTESIAN_POINT('',(7.E-17,-2.E-17)); +#2629 = DIRECTION('',(1.,0.)); +#2630 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#2631 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2635)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#2632,#2633,#2634)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#2632 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#2633 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#2634 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#2635 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#2632, + 'distance_accuracy_value','confusion accuracy'); +#2636 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#2637,#2639); +#2637 = ( REPRESENTATION_RELATIONSHIP('','',#2603,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#2638) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#2638 = ITEM_DEFINED_TRANSFORMATION('','',#11,#159); +#2639 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #2640); +#2640 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('101','Dielectric_004','',#5, + #2598,$); +#2641 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#2600)); +#2642 = SHAPE_DEFINITION_REPRESENTATION(#2643,#2649); +#2643 = PRODUCT_DEFINITION_SHAPE('','',#2644); +#2644 = PRODUCT_DEFINITION('design','',#2645,#2648); +#2645 = PRODUCT_DEFINITION_FORMATION('','',#2646); +#2646 = PRODUCT('Dielectric_005','Dielectric_005','',(#2647)); +#2647 = PRODUCT_CONTEXT('',#2,'mechanical'); +#2648 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#2649 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#2650),#2677); +#2650 = SHELL_BASED_SURFACE_MODEL('',(#2651)); +#2651 = OPEN_SHELL('',(#2652)); +#2652 = ADVANCED_FACE('',(#2653),#2666,.T.); +#2653 = FACE_BOUND('',#2654,.T.); +#2654 = EDGE_LOOP('',(#2655)); +#2655 = ORIENTED_EDGE('',*,*,#2656,.T.); +#2656 = EDGE_CURVE('',#2657,#2657,#2659,.T.); +#2657 = VERTEX_POINT('',#2658); +#2658 = CARTESIAN_POINT('',(1.25,0.,0.)); +#2659 = SURFACE_CURVE('',#2660,(#2665),.PCURVE_S1.); +#2660 = CIRCLE('',#2661,1.25); +#2661 = AXIS2_PLACEMENT_3D('',#2662,#2663,#2664); +#2662 = CARTESIAN_POINT('',(0.,0.,0.)); +#2663 = DIRECTION('',(0.,0.,1.)); +#2664 = DIRECTION('',(1.,0.,0.)); +#2665 = PCURVE('',#2666,#2671); +#2666 = PLANE('',#2667); +#2667 = AXIS2_PLACEMENT_3D('',#2668,#2669,#2670); +#2668 = CARTESIAN_POINT('',(-7.E-17,2.E-17,0.)); +#2669 = DIRECTION('',(0.,0.,1.)); +#2670 = DIRECTION('',(1.,0.,0.)); +#2671 = DEFINITIONAL_REPRESENTATION('',(#2672),#2676); +#2672 = CIRCLE('',#2673,1.25); +#2673 = AXIS2_PLACEMENT_2D('',#2674,#2675); +#2674 = CARTESIAN_POINT('',(7.E-17,-2.E-17)); +#2675 = DIRECTION('',(1.,0.)); +#2676 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#2677 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2681)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#2678,#2679,#2680)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#2678 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#2679 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#2680 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#2681 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#2678, + 'distance_accuracy_value','confusion accuracy'); +#2682 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#2683,#2685); +#2683 = ( REPRESENTATION_RELATIONSHIP('','',#2649,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#2684) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#2684 = ITEM_DEFINED_TRANSFORMATION('','',#11,#163); +#2685 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #2686); +#2686 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('102','Dielectric_005','',#5, + #2644,$); +#2687 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#2646)); +#2688 = SHAPE_DEFINITION_REPRESENTATION(#2689,#2695); +#2689 = PRODUCT_DEFINITION_SHAPE('','',#2690); +#2690 = PRODUCT_DEFINITION('design','',#2691,#2694); +#2691 = PRODUCT_DEFINITION_FORMATION('','',#2692); +#2692 = PRODUCT('Dielectric_006','Dielectric_006','',(#2693)); +#2693 = PRODUCT_CONTEXT('',#2,'mechanical'); +#2694 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#2695 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#2696),#2723); +#2696 = SHELL_BASED_SURFACE_MODEL('',(#2697)); +#2697 = OPEN_SHELL('',(#2698)); +#2698 = ADVANCED_FACE('',(#2699),#2712,.T.); +#2699 = FACE_BOUND('',#2700,.T.); +#2700 = EDGE_LOOP('',(#2701)); +#2701 = ORIENTED_EDGE('',*,*,#2702,.T.); +#2702 = EDGE_CURVE('',#2703,#2703,#2705,.T.); +#2703 = VERTEX_POINT('',#2704); +#2704 = CARTESIAN_POINT('',(1.25,0.,0.)); +#2705 = SURFACE_CURVE('',#2706,(#2711),.PCURVE_S1.); +#2706 = CIRCLE('',#2707,1.25); +#2707 = AXIS2_PLACEMENT_3D('',#2708,#2709,#2710); +#2708 = CARTESIAN_POINT('',(0.,0.,0.)); +#2709 = DIRECTION('',(0.,0.,1.)); +#2710 = DIRECTION('',(1.,0.,0.)); +#2711 = PCURVE('',#2712,#2717); +#2712 = PLANE('',#2713); +#2713 = AXIS2_PLACEMENT_3D('',#2714,#2715,#2716); +#2714 = CARTESIAN_POINT('',(-7.E-17,2.E-17,0.)); +#2715 = DIRECTION('',(0.,0.,1.)); +#2716 = DIRECTION('',(1.,0.,0.)); +#2717 = DEFINITIONAL_REPRESENTATION('',(#2718),#2722); +#2718 = CIRCLE('',#2719,1.25); +#2719 = AXIS2_PLACEMENT_2D('',#2720,#2721); +#2720 = CARTESIAN_POINT('',(7.E-17,-2.E-17)); +#2721 = DIRECTION('',(1.,0.)); +#2722 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#2723 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2727)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#2724,#2725,#2726)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#2724 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#2725 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#2726 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#2727 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#2724, + 'distance_accuracy_value','confusion accuracy'); +#2728 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#2729,#2731); +#2729 = ( REPRESENTATION_RELATIONSHIP('','',#2695,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#2730) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#2730 = ITEM_DEFINED_TRANSFORMATION('','',#11,#167); +#2731 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #2732); +#2732 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('103','Dielectric_006','',#5, + #2690,$); +#2733 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#2692)); +#2734 = SHAPE_DEFINITION_REPRESENTATION(#2735,#2741); +#2735 = PRODUCT_DEFINITION_SHAPE('','',#2736); +#2736 = PRODUCT_DEFINITION('design','',#2737,#2740); +#2737 = PRODUCT_DEFINITION_FORMATION('','',#2738); +#2738 = PRODUCT('Dielectric_007','Dielectric_007','',(#2739)); +#2739 = PRODUCT_CONTEXT('',#2,'mechanical'); +#2740 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#2741 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#2742),#2769); +#2742 = SHELL_BASED_SURFACE_MODEL('',(#2743)); +#2743 = OPEN_SHELL('',(#2744)); +#2744 = ADVANCED_FACE('',(#2745),#2758,.T.); +#2745 = FACE_BOUND('',#2746,.T.); +#2746 = EDGE_LOOP('',(#2747)); +#2747 = ORIENTED_EDGE('',*,*,#2748,.T.); +#2748 = EDGE_CURVE('',#2749,#2749,#2751,.T.); +#2749 = VERTEX_POINT('',#2750); +#2750 = CARTESIAN_POINT('',(1.25,0.,0.)); +#2751 = SURFACE_CURVE('',#2752,(#2757),.PCURVE_S1.); +#2752 = CIRCLE('',#2753,1.25); +#2753 = AXIS2_PLACEMENT_3D('',#2754,#2755,#2756); +#2754 = CARTESIAN_POINT('',(0.,0.,0.)); +#2755 = DIRECTION('',(0.,0.,1.)); +#2756 = DIRECTION('',(1.,0.,0.)); +#2757 = PCURVE('',#2758,#2763); +#2758 = PLANE('',#2759); +#2759 = AXIS2_PLACEMENT_3D('',#2760,#2761,#2762); +#2760 = CARTESIAN_POINT('',(-7.E-17,2.E-17,0.)); +#2761 = DIRECTION('',(0.,0.,1.)); +#2762 = DIRECTION('',(1.,0.,0.)); +#2763 = DEFINITIONAL_REPRESENTATION('',(#2764),#2768); +#2764 = CIRCLE('',#2765,1.25); +#2765 = AXIS2_PLACEMENT_2D('',#2766,#2767); +#2766 = CARTESIAN_POINT('',(7.E-17,-2.E-17)); +#2767 = DIRECTION('',(1.,0.)); +#2768 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#2769 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2773)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#2770,#2771,#2772)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#2770 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#2771 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#2772 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#2773 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#2770, + 'distance_accuracy_value','confusion accuracy'); +#2774 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#2775,#2777); +#2775 = ( REPRESENTATION_RELATIONSHIP('','',#2741,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#2776) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#2776 = ITEM_DEFINED_TRANSFORMATION('','',#11,#171); +#2777 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #2778); +#2778 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('104','Dielectric_007','',#5, + #2736,$); +#2779 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#2738)); +#2780 = SHAPE_DEFINITION_REPRESENTATION(#2781,#2787); +#2781 = PRODUCT_DEFINITION_SHAPE('','',#2782); +#2782 = PRODUCT_DEFINITION('design','',#2783,#2786); +#2783 = PRODUCT_DEFINITION_FORMATION('','',#2784); +#2784 = PRODUCT('Dielectric_008','Dielectric_008','',(#2785)); +#2785 = PRODUCT_CONTEXT('',#2,'mechanical'); +#2786 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#2787 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#2788),#2815); +#2788 = SHELL_BASED_SURFACE_MODEL('',(#2789)); +#2789 = OPEN_SHELL('',(#2790)); +#2790 = ADVANCED_FACE('',(#2791),#2804,.T.); +#2791 = FACE_BOUND('',#2792,.T.); +#2792 = EDGE_LOOP('',(#2793)); +#2793 = ORIENTED_EDGE('',*,*,#2794,.T.); +#2794 = EDGE_CURVE('',#2795,#2795,#2797,.T.); +#2795 = VERTEX_POINT('',#2796); +#2796 = CARTESIAN_POINT('',(1.25,0.,0.)); +#2797 = SURFACE_CURVE('',#2798,(#2803),.PCURVE_S1.); +#2798 = CIRCLE('',#2799,1.25); +#2799 = AXIS2_PLACEMENT_3D('',#2800,#2801,#2802); +#2800 = CARTESIAN_POINT('',(0.,0.,0.)); +#2801 = DIRECTION('',(0.,0.,1.)); +#2802 = DIRECTION('',(1.,0.,0.)); +#2803 = PCURVE('',#2804,#2809); +#2804 = PLANE('',#2805); +#2805 = AXIS2_PLACEMENT_3D('',#2806,#2807,#2808); +#2806 = CARTESIAN_POINT('',(-7.E-17,2.E-17,0.)); +#2807 = DIRECTION('',(0.,0.,1.)); +#2808 = DIRECTION('',(1.,0.,0.)); +#2809 = DEFINITIONAL_REPRESENTATION('',(#2810),#2814); +#2810 = CIRCLE('',#2811,1.25); +#2811 = AXIS2_PLACEMENT_2D('',#2812,#2813); +#2812 = CARTESIAN_POINT('',(7.E-17,-2.E-17)); +#2813 = DIRECTION('',(1.,0.)); +#2814 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#2815 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2819)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#2816,#2817,#2818)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#2816 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#2817 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#2818 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#2819 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#2816, + 'distance_accuracy_value','confusion accuracy'); +#2820 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#2821,#2823); +#2821 = ( REPRESENTATION_RELATIONSHIP('','',#2787,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#2822) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#2822 = ITEM_DEFINED_TRANSFORMATION('','',#11,#175); +#2823 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #2824); +#2824 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('105','Dielectric_008','',#5, + #2782,$); +#2825 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#2784)); +#2826 = SHAPE_DEFINITION_REPRESENTATION(#2827,#2833); +#2827 = PRODUCT_DEFINITION_SHAPE('','',#2828); +#2828 = PRODUCT_DEFINITION('design','',#2829,#2832); +#2829 = PRODUCT_DEFINITION_FORMATION('','',#2830); +#2830 = PRODUCT('Dielectric_009','Dielectric_009','',(#2831)); +#2831 = PRODUCT_CONTEXT('',#2,'mechanical'); +#2832 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#2833 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#2834),#2861); +#2834 = SHELL_BASED_SURFACE_MODEL('',(#2835)); +#2835 = OPEN_SHELL('',(#2836)); +#2836 = ADVANCED_FACE('',(#2837),#2850,.T.); +#2837 = FACE_BOUND('',#2838,.T.); +#2838 = EDGE_LOOP('',(#2839)); +#2839 = ORIENTED_EDGE('',*,*,#2840,.T.); +#2840 = EDGE_CURVE('',#2841,#2841,#2843,.T.); +#2841 = VERTEX_POINT('',#2842); +#2842 = CARTESIAN_POINT('',(1.25,0.,0.)); +#2843 = SURFACE_CURVE('',#2844,(#2849),.PCURVE_S1.); +#2844 = CIRCLE('',#2845,1.25); +#2845 = AXIS2_PLACEMENT_3D('',#2846,#2847,#2848); +#2846 = CARTESIAN_POINT('',(0.,0.,0.)); +#2847 = DIRECTION('',(0.,0.,1.)); +#2848 = DIRECTION('',(1.,0.,0.)); +#2849 = PCURVE('',#2850,#2855); +#2850 = PLANE('',#2851); +#2851 = AXIS2_PLACEMENT_3D('',#2852,#2853,#2854); +#2852 = CARTESIAN_POINT('',(-7.E-17,2.E-17,0.)); +#2853 = DIRECTION('',(0.,0.,1.)); +#2854 = DIRECTION('',(1.,0.,0.)); +#2855 = DEFINITIONAL_REPRESENTATION('',(#2856),#2860); +#2856 = CIRCLE('',#2857,1.25); +#2857 = AXIS2_PLACEMENT_2D('',#2858,#2859); +#2858 = CARTESIAN_POINT('',(7.E-17,-2.E-17)); +#2859 = DIRECTION('',(1.,0.)); +#2860 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#2861 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2865)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#2862,#2863,#2864)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#2862 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#2863 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#2864 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#2865 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#2862, + 'distance_accuracy_value','confusion accuracy'); +#2866 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#2867,#2869); +#2867 = ( REPRESENTATION_RELATIONSHIP('','',#2833,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#2868) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#2868 = ITEM_DEFINED_TRANSFORMATION('','',#11,#179); +#2869 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #2870); +#2870 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('106','Dielectric_009','',#5, + #2828,$); +#2871 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#2830)); +#2872 = SHAPE_DEFINITION_REPRESENTATION(#2873,#2879); +#2873 = PRODUCT_DEFINITION_SHAPE('','',#2874); +#2874 = PRODUCT_DEFINITION('design','',#2875,#2878); +#2875 = PRODUCT_DEFINITION_FORMATION('','',#2876); +#2876 = PRODUCT('Dielectric_010','Dielectric_010','',(#2877)); +#2877 = PRODUCT_CONTEXT('',#2,'mechanical'); +#2878 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#2879 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#2880),#2907); +#2880 = SHELL_BASED_SURFACE_MODEL('',(#2881)); +#2881 = OPEN_SHELL('',(#2882)); +#2882 = ADVANCED_FACE('',(#2883),#2896,.T.); +#2883 = FACE_BOUND('',#2884,.T.); +#2884 = EDGE_LOOP('',(#2885)); +#2885 = ORIENTED_EDGE('',*,*,#2886,.T.); +#2886 = EDGE_CURVE('',#2887,#2887,#2889,.T.); +#2887 = VERTEX_POINT('',#2888); +#2888 = CARTESIAN_POINT('',(1.25,0.,0.)); +#2889 = SURFACE_CURVE('',#2890,(#2895),.PCURVE_S1.); +#2890 = CIRCLE('',#2891,1.25); +#2891 = AXIS2_PLACEMENT_3D('',#2892,#2893,#2894); +#2892 = CARTESIAN_POINT('',(0.,0.,0.)); +#2893 = DIRECTION('',(0.,0.,1.)); +#2894 = DIRECTION('',(1.,0.,0.)); +#2895 = PCURVE('',#2896,#2901); +#2896 = PLANE('',#2897); +#2897 = AXIS2_PLACEMENT_3D('',#2898,#2899,#2900); +#2898 = CARTESIAN_POINT('',(-7.E-17,2.E-17,0.)); +#2899 = DIRECTION('',(0.,0.,1.)); +#2900 = DIRECTION('',(1.,0.,0.)); +#2901 = DEFINITIONAL_REPRESENTATION('',(#2902),#2906); +#2902 = CIRCLE('',#2903,1.25); +#2903 = AXIS2_PLACEMENT_2D('',#2904,#2905); +#2904 = CARTESIAN_POINT('',(7.E-17,-2.E-17)); +#2905 = DIRECTION('',(1.,0.)); +#2906 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#2907 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2911)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#2908,#2909,#2910)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#2908 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#2909 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#2910 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#2911 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#2908, + 'distance_accuracy_value','confusion accuracy'); +#2912 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#2913,#2915); +#2913 = ( REPRESENTATION_RELATIONSHIP('','',#2879,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#2914) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#2914 = ITEM_DEFINED_TRANSFORMATION('','',#11,#183); +#2915 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #2916); +#2916 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('107','Dielectric_010','',#5, + #2874,$); +#2917 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#2876)); +#2918 = SHAPE_DEFINITION_REPRESENTATION(#2919,#2925); +#2919 = PRODUCT_DEFINITION_SHAPE('','',#2920); +#2920 = PRODUCT_DEFINITION('design','',#2921,#2924); +#2921 = PRODUCT_DEFINITION_FORMATION('','',#2922); +#2922 = PRODUCT('Dielectric_011','Dielectric_011','',(#2923)); +#2923 = PRODUCT_CONTEXT('',#2,'mechanical'); +#2924 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#2925 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#2926),#2953); +#2926 = SHELL_BASED_SURFACE_MODEL('',(#2927)); +#2927 = OPEN_SHELL('',(#2928)); +#2928 = ADVANCED_FACE('',(#2929),#2942,.T.); +#2929 = FACE_BOUND('',#2930,.T.); +#2930 = EDGE_LOOP('',(#2931)); +#2931 = ORIENTED_EDGE('',*,*,#2932,.T.); +#2932 = EDGE_CURVE('',#2933,#2933,#2935,.T.); +#2933 = VERTEX_POINT('',#2934); +#2934 = CARTESIAN_POINT('',(1.25,0.,0.)); +#2935 = SURFACE_CURVE('',#2936,(#2941),.PCURVE_S1.); +#2936 = CIRCLE('',#2937,1.25); +#2937 = AXIS2_PLACEMENT_3D('',#2938,#2939,#2940); +#2938 = CARTESIAN_POINT('',(0.,0.,0.)); +#2939 = DIRECTION('',(0.,0.,1.)); +#2940 = DIRECTION('',(1.,0.,0.)); +#2941 = PCURVE('',#2942,#2947); +#2942 = PLANE('',#2943); +#2943 = AXIS2_PLACEMENT_3D('',#2944,#2945,#2946); +#2944 = CARTESIAN_POINT('',(-7.E-17,2.E-17,0.)); +#2945 = DIRECTION('',(0.,0.,1.)); +#2946 = DIRECTION('',(1.,0.,0.)); +#2947 = DEFINITIONAL_REPRESENTATION('',(#2948),#2952); +#2948 = CIRCLE('',#2949,1.25); +#2949 = AXIS2_PLACEMENT_2D('',#2950,#2951); +#2950 = CARTESIAN_POINT('',(7.E-17,-2.E-17)); +#2951 = DIRECTION('',(1.,0.)); +#2952 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#2953 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2957)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#2954,#2955,#2956)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#2954 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#2955 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#2956 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#2957 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#2954, + 'distance_accuracy_value','confusion accuracy'); +#2958 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#2959,#2961); +#2959 = ( REPRESENTATION_RELATIONSHIP('','',#2925,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#2960) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#2960 = ITEM_DEFINED_TRANSFORMATION('','',#11,#187); +#2961 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #2962); +#2962 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('108','Dielectric_011','',#5, + #2920,$); +#2963 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#2922)); +#2964 = SHAPE_DEFINITION_REPRESENTATION(#2965,#2971); +#2965 = PRODUCT_DEFINITION_SHAPE('','',#2966); +#2966 = PRODUCT_DEFINITION('design','',#2967,#2970); +#2967 = PRODUCT_DEFINITION_FORMATION('','',#2968); +#2968 = PRODUCT('Dielectric_012','Dielectric_012','',(#2969)); +#2969 = PRODUCT_CONTEXT('',#2,'mechanical'); +#2970 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#2971 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#2972),#2999); +#2972 = SHELL_BASED_SURFACE_MODEL('',(#2973)); +#2973 = OPEN_SHELL('',(#2974)); +#2974 = ADVANCED_FACE('',(#2975),#2988,.T.); +#2975 = FACE_BOUND('',#2976,.T.); +#2976 = EDGE_LOOP('',(#2977)); +#2977 = ORIENTED_EDGE('',*,*,#2978,.T.); +#2978 = EDGE_CURVE('',#2979,#2979,#2981,.T.); +#2979 = VERTEX_POINT('',#2980); +#2980 = CARTESIAN_POINT('',(1.25,0.,0.)); +#2981 = SURFACE_CURVE('',#2982,(#2987),.PCURVE_S1.); +#2982 = CIRCLE('',#2983,1.25); +#2983 = AXIS2_PLACEMENT_3D('',#2984,#2985,#2986); +#2984 = CARTESIAN_POINT('',(0.,0.,0.)); +#2985 = DIRECTION('',(0.,0.,1.)); +#2986 = DIRECTION('',(1.,0.,0.)); +#2987 = PCURVE('',#2988,#2993); +#2988 = PLANE('',#2989); +#2989 = AXIS2_PLACEMENT_3D('',#2990,#2991,#2992); +#2990 = CARTESIAN_POINT('',(-7.E-17,2.E-17,0.)); +#2991 = DIRECTION('',(0.,0.,1.)); +#2992 = DIRECTION('',(1.,0.,0.)); +#2993 = DEFINITIONAL_REPRESENTATION('',(#2994),#2998); +#2994 = CIRCLE('',#2995,1.25); +#2995 = AXIS2_PLACEMENT_2D('',#2996,#2997); +#2996 = CARTESIAN_POINT('',(7.E-17,-2.E-17)); +#2997 = DIRECTION('',(1.,0.)); +#2998 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#2999 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#3003)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#3000,#3001,#3002)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#3000 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#3001 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#3002 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#3003 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#3000, + 'distance_accuracy_value','confusion accuracy'); +#3004 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#3005,#3007); +#3005 = ( REPRESENTATION_RELATIONSHIP('','',#2971,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#3006) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#3006 = ITEM_DEFINED_TRANSFORMATION('','',#11,#191); +#3007 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #3008); +#3008 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('109','Dielectric_012','',#5, + #2966,$); +#3009 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#2968)); +#3010 = SHAPE_DEFINITION_REPRESENTATION(#3011,#3017); +#3011 = PRODUCT_DEFINITION_SHAPE('','',#3012); +#3012 = PRODUCT_DEFINITION('design','',#3013,#3016); +#3013 = PRODUCT_DEFINITION_FORMATION('','',#3014); +#3014 = PRODUCT('Dielectric_013','Dielectric_013','',(#3015)); +#3015 = PRODUCT_CONTEXT('',#2,'mechanical'); +#3016 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#3017 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#3018),#3045); +#3018 = SHELL_BASED_SURFACE_MODEL('',(#3019)); +#3019 = OPEN_SHELL('',(#3020)); +#3020 = ADVANCED_FACE('',(#3021),#3034,.T.); +#3021 = FACE_BOUND('',#3022,.T.); +#3022 = EDGE_LOOP('',(#3023)); +#3023 = ORIENTED_EDGE('',*,*,#3024,.T.); +#3024 = EDGE_CURVE('',#3025,#3025,#3027,.T.); +#3025 = VERTEX_POINT('',#3026); +#3026 = CARTESIAN_POINT('',(1.25,0.,0.)); +#3027 = SURFACE_CURVE('',#3028,(#3033),.PCURVE_S1.); +#3028 = CIRCLE('',#3029,1.25); +#3029 = AXIS2_PLACEMENT_3D('',#3030,#3031,#3032); +#3030 = CARTESIAN_POINT('',(0.,0.,0.)); +#3031 = DIRECTION('',(0.,0.,1.)); +#3032 = DIRECTION('',(1.,0.,0.)); +#3033 = PCURVE('',#3034,#3039); +#3034 = PLANE('',#3035); +#3035 = AXIS2_PLACEMENT_3D('',#3036,#3037,#3038); +#3036 = CARTESIAN_POINT('',(-7.E-17,2.E-17,0.)); +#3037 = DIRECTION('',(0.,0.,1.)); +#3038 = DIRECTION('',(1.,0.,0.)); +#3039 = DEFINITIONAL_REPRESENTATION('',(#3040),#3044); +#3040 = CIRCLE('',#3041,1.25); +#3041 = AXIS2_PLACEMENT_2D('',#3042,#3043); +#3042 = CARTESIAN_POINT('',(7.E-17,-2.E-17)); +#3043 = DIRECTION('',(1.,0.)); +#3044 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#3045 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#3049)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#3046,#3047,#3048)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#3046 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#3047 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#3048 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#3049 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#3046, + 'distance_accuracy_value','confusion accuracy'); +#3050 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#3051,#3053); +#3051 = ( REPRESENTATION_RELATIONSHIP('','',#3017,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#3052) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#3052 = ITEM_DEFINED_TRANSFORMATION('','',#11,#195); +#3053 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #3054); +#3054 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('110','Dielectric_013','',#5, + #3012,$); +#3055 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#3014)); +#3056 = SHAPE_DEFINITION_REPRESENTATION(#3057,#3063); +#3057 = PRODUCT_DEFINITION_SHAPE('','',#3058); +#3058 = PRODUCT_DEFINITION('design','',#3059,#3062); +#3059 = PRODUCT_DEFINITION_FORMATION('','',#3060); +#3060 = PRODUCT('Dielectric_030','Dielectric_030','',(#3061)); +#3061 = PRODUCT_CONTEXT('',#2,'mechanical'); +#3062 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#3063 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#3064),#3110); +#3064 = SHELL_BASED_SURFACE_MODEL('',(#3065)); +#3065 = OPEN_SHELL('',(#3066)); +#3066 = ADVANCED_FACE('',(#3067,#3091),#3080,.T.); +#3067 = FACE_BOUND('',#3068,.T.); +#3068 = EDGE_LOOP('',(#3069)); +#3069 = ORIENTED_EDGE('',*,*,#3070,.T.); +#3070 = EDGE_CURVE('',#3071,#3071,#3073,.T.); +#3071 = VERTEX_POINT('',#3072); +#3072 = CARTESIAN_POINT('',(8.05,0.,0.)); +#3073 = SURFACE_CURVE('',#3074,(#3079),.PCURVE_S1.); +#3074 = CIRCLE('',#3075,8.05); +#3075 = AXIS2_PLACEMENT_3D('',#3076,#3077,#3078); +#3076 = CARTESIAN_POINT('',(0.,0.,0.)); +#3077 = DIRECTION('',(0.,0.,1.)); +#3078 = DIRECTION('',(1.,0.,0.)); +#3079 = PCURVE('',#3080,#3085); +#3080 = PLANE('',#3081); +#3081 = AXIS2_PLACEMENT_3D('',#3082,#3083,#3084); +#3082 = CARTESIAN_POINT('',(-6.8E-16,-3.3E-16,0.)); +#3083 = DIRECTION('',(0.,0.,1.)); +#3084 = DIRECTION('',(1.,0.,0.)); +#3085 = DEFINITIONAL_REPRESENTATION('',(#3086),#3090); +#3086 = CIRCLE('',#3087,8.05); +#3087 = AXIS2_PLACEMENT_2D('',#3088,#3089); +#3088 = CARTESIAN_POINT('',(6.8E-16,3.3E-16)); +#3089 = DIRECTION('',(1.,0.)); +#3090 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#3091 = FACE_BOUND('',#3092,.T.); +#3092 = EDGE_LOOP('',(#3093)); +#3093 = ORIENTED_EDGE('',*,*,#3094,.F.); +#3094 = EDGE_CURVE('',#3095,#3095,#3097,.T.); +#3095 = VERTEX_POINT('',#3096); +#3096 = CARTESIAN_POINT('',(7.95,0.,0.)); +#3097 = SURFACE_CURVE('',#3098,(#3103),.PCURVE_S1.); +#3098 = CIRCLE('',#3099,7.95); +#3099 = AXIS2_PLACEMENT_3D('',#3100,#3101,#3102); +#3100 = CARTESIAN_POINT('',(0.,0.,0.)); +#3101 = DIRECTION('',(0.,0.,1.)); +#3102 = DIRECTION('',(1.,0.,0.)); +#3103 = PCURVE('',#3080,#3104); +#3104 = DEFINITIONAL_REPRESENTATION('',(#3105),#3109); +#3105 = CIRCLE('',#3106,7.95); +#3106 = AXIS2_PLACEMENT_2D('',#3107,#3108); +#3107 = CARTESIAN_POINT('',(6.8E-16,3.3E-16)); +#3108 = DIRECTION('',(1.,0.)); +#3109 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#3110 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#3114)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#3111,#3112,#3113)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#3111 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#3112 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#3113 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#3114 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#3111, + 'distance_accuracy_value','confusion accuracy'); +#3115 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#3116,#3118); +#3116 = ( REPRESENTATION_RELATIONSHIP('','',#3063,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#3117) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#3117 = ITEM_DEFINED_TRANSFORMATION('','',#11,#199); +#3118 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #3119); +#3119 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('111','Dielectric_030','',#5, + #3058,$); +#3120 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#3060)); +#3121 = SHAPE_DEFINITION_REPRESENTATION(#3122,#3128); +#3122 = PRODUCT_DEFINITION_SHAPE('','',#3123); +#3123 = PRODUCT_DEFINITION('design','',#3124,#3127); +#3124 = PRODUCT_DEFINITION_FORMATION('','',#3125); +#3125 = PRODUCT('Dielectric_014','Dielectric_014','',(#3126)); +#3126 = PRODUCT_CONTEXT('',#2,'mechanical'); +#3127 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#3128 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#3129),#3156); +#3129 = SHELL_BASED_SURFACE_MODEL('',(#3130)); +#3130 = OPEN_SHELL('',(#3131)); +#3131 = ADVANCED_FACE('',(#3132),#3145,.T.); +#3132 = FACE_BOUND('',#3133,.T.); +#3133 = EDGE_LOOP('',(#3134)); +#3134 = ORIENTED_EDGE('',*,*,#3135,.T.); +#3135 = EDGE_CURVE('',#3136,#3136,#3138,.T.); +#3136 = VERTEX_POINT('',#3137); +#3137 = CARTESIAN_POINT('',(0.46,0.,0.)); +#3138 = SURFACE_CURVE('',#3139,(#3144),.PCURVE_S1.); +#3139 = CIRCLE('',#3140,0.46); +#3140 = AXIS2_PLACEMENT_3D('',#3141,#3142,#3143); +#3141 = CARTESIAN_POINT('',(0.,0.,0.)); +#3142 = DIRECTION('',(0.,0.,1.)); +#3143 = DIRECTION('',(1.,0.,0.)); +#3144 = PCURVE('',#3145,#3150); +#3145 = PLANE('',#3146); +#3146 = AXIS2_PLACEMENT_3D('',#3147,#3148,#3149); +#3147 = CARTESIAN_POINT('',(-1.E-17,-2.E-17,0.)); +#3148 = DIRECTION('',(0.,0.,1.)); +#3149 = DIRECTION('',(1.,0.,0.)); +#3150 = DEFINITIONAL_REPRESENTATION('',(#3151),#3155); +#3151 = CIRCLE('',#3152,0.46); +#3152 = AXIS2_PLACEMENT_2D('',#3153,#3154); +#3153 = CARTESIAN_POINT('',(1.E-17,2.E-17)); +#3154 = DIRECTION('',(1.,0.)); +#3155 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#3156 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#3160)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#3157,#3158,#3159)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#3157 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#3158 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#3159 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#3160 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#3157, + 'distance_accuracy_value','confusion accuracy'); +#3161 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#3162,#3164); +#3162 = ( REPRESENTATION_RELATIONSHIP('','',#3128,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#3163) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#3163 = ITEM_DEFINED_TRANSFORMATION('','',#11,#203); +#3164 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #3165); +#3165 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('112','Dielectric_014','',#5, + #3123,$); +#3166 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#3125)); +#3167 = SHAPE_DEFINITION_REPRESENTATION(#3168,#3174); +#3168 = PRODUCT_DEFINITION_SHAPE('','',#3169); +#3169 = PRODUCT_DEFINITION('design','',#3170,#3173); +#3170 = PRODUCT_DEFINITION_FORMATION('','',#3171); +#3171 = PRODUCT('Dielectric_015','Dielectric_015','',(#3172)); +#3172 = PRODUCT_CONTEXT('',#2,'mechanical'); +#3173 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#3174 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#3175),#3202); +#3175 = SHELL_BASED_SURFACE_MODEL('',(#3176)); +#3176 = OPEN_SHELL('',(#3177)); +#3177 = ADVANCED_FACE('',(#3178),#3191,.T.); +#3178 = FACE_BOUND('',#3179,.T.); +#3179 = EDGE_LOOP('',(#3180)); +#3180 = ORIENTED_EDGE('',*,*,#3181,.T.); +#3181 = EDGE_CURVE('',#3182,#3182,#3184,.T.); +#3182 = VERTEX_POINT('',#3183); +#3183 = CARTESIAN_POINT('',(0.46,0.,0.)); +#3184 = SURFACE_CURVE('',#3185,(#3190),.PCURVE_S1.); +#3185 = CIRCLE('',#3186,0.46); +#3186 = AXIS2_PLACEMENT_3D('',#3187,#3188,#3189); +#3187 = CARTESIAN_POINT('',(0.,0.,0.)); +#3188 = DIRECTION('',(0.,0.,1.)); +#3189 = DIRECTION('',(1.,0.,0.)); +#3190 = PCURVE('',#3191,#3196); +#3191 = PLANE('',#3192); +#3192 = AXIS2_PLACEMENT_3D('',#3193,#3194,#3195); +#3193 = CARTESIAN_POINT('',(-1.E-17,-2.E-17,0.)); +#3194 = DIRECTION('',(0.,0.,1.)); +#3195 = DIRECTION('',(1.,0.,0.)); +#3196 = DEFINITIONAL_REPRESENTATION('',(#3197),#3201); +#3197 = CIRCLE('',#3198,0.46); +#3198 = AXIS2_PLACEMENT_2D('',#3199,#3200); +#3199 = CARTESIAN_POINT('',(1.E-17,2.E-17)); +#3200 = DIRECTION('',(1.,0.)); +#3201 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#3202 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#3206)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#3203,#3204,#3205)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#3203 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#3204 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#3205 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#3206 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#3203, + 'distance_accuracy_value','confusion accuracy'); +#3207 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#3208,#3210); +#3208 = ( REPRESENTATION_RELATIONSHIP('','',#3174,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#3209) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#3209 = ITEM_DEFINED_TRANSFORMATION('','',#11,#207); +#3210 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #3211); +#3211 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('113','Dielectric_015','',#5, + #3169,$); +#3212 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#3171)); +#3213 = SHAPE_DEFINITION_REPRESENTATION(#3214,#3220); +#3214 = PRODUCT_DEFINITION_SHAPE('','',#3215); +#3215 = PRODUCT_DEFINITION('design','',#3216,#3219); +#3216 = PRODUCT_DEFINITION_FORMATION('','',#3217); +#3217 = PRODUCT('Dielectric_016','Dielectric_016','',(#3218)); +#3218 = PRODUCT_CONTEXT('',#2,'mechanical'); +#3219 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#3220 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#3221),#3248); +#3221 = SHELL_BASED_SURFACE_MODEL('',(#3222)); +#3222 = OPEN_SHELL('',(#3223)); +#3223 = ADVANCED_FACE('',(#3224),#3237,.T.); +#3224 = FACE_BOUND('',#3225,.T.); +#3225 = EDGE_LOOP('',(#3226)); +#3226 = ORIENTED_EDGE('',*,*,#3227,.T.); +#3227 = EDGE_CURVE('',#3228,#3228,#3230,.T.); +#3228 = VERTEX_POINT('',#3229); +#3229 = CARTESIAN_POINT('',(0.46,0.,0.)); +#3230 = SURFACE_CURVE('',#3231,(#3236),.PCURVE_S1.); +#3231 = CIRCLE('',#3232,0.46); +#3232 = AXIS2_PLACEMENT_3D('',#3233,#3234,#3235); +#3233 = CARTESIAN_POINT('',(0.,0.,0.)); +#3234 = DIRECTION('',(0.,0.,1.)); +#3235 = DIRECTION('',(1.,0.,0.)); +#3236 = PCURVE('',#3237,#3242); +#3237 = PLANE('',#3238); +#3238 = AXIS2_PLACEMENT_3D('',#3239,#3240,#3241); +#3239 = CARTESIAN_POINT('',(-1.E-17,-2.E-17,0.)); +#3240 = DIRECTION('',(0.,0.,1.)); +#3241 = DIRECTION('',(1.,0.,0.)); +#3242 = DEFINITIONAL_REPRESENTATION('',(#3243),#3247); +#3243 = CIRCLE('',#3244,0.46); +#3244 = AXIS2_PLACEMENT_2D('',#3245,#3246); +#3245 = CARTESIAN_POINT('',(1.E-17,2.E-17)); +#3246 = DIRECTION('',(1.,0.)); +#3247 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#3248 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#3252)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#3249,#3250,#3251)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#3249 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#3250 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#3251 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#3252 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#3249, + 'distance_accuracy_value','confusion accuracy'); +#3253 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#3254,#3256); +#3254 = ( REPRESENTATION_RELATIONSHIP('','',#3220,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#3255) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#3255 = ITEM_DEFINED_TRANSFORMATION('','',#11,#211); +#3256 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #3257); +#3257 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('114','Dielectric_016','',#5, + #3215,$); +#3258 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#3217)); +#3259 = SHAPE_DEFINITION_REPRESENTATION(#3260,#3266); +#3260 = PRODUCT_DEFINITION_SHAPE('','',#3261); +#3261 = PRODUCT_DEFINITION('design','',#3262,#3265); +#3262 = PRODUCT_DEFINITION_FORMATION('','',#3263); +#3263 = PRODUCT('Dielectric_017','Dielectric_017','',(#3264)); +#3264 = PRODUCT_CONTEXT('',#2,'mechanical'); +#3265 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#3266 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#3267),#3294); +#3267 = SHELL_BASED_SURFACE_MODEL('',(#3268)); +#3268 = OPEN_SHELL('',(#3269)); +#3269 = ADVANCED_FACE('',(#3270),#3283,.T.); +#3270 = FACE_BOUND('',#3271,.T.); +#3271 = EDGE_LOOP('',(#3272)); +#3272 = ORIENTED_EDGE('',*,*,#3273,.T.); +#3273 = EDGE_CURVE('',#3274,#3274,#3276,.T.); +#3274 = VERTEX_POINT('',#3275); +#3275 = CARTESIAN_POINT('',(0.46,0.,0.)); +#3276 = SURFACE_CURVE('',#3277,(#3282),.PCURVE_S1.); +#3277 = CIRCLE('',#3278,0.46); +#3278 = AXIS2_PLACEMENT_3D('',#3279,#3280,#3281); +#3279 = CARTESIAN_POINT('',(0.,0.,0.)); +#3280 = DIRECTION('',(0.,0.,1.)); +#3281 = DIRECTION('',(1.,0.,0.)); +#3282 = PCURVE('',#3283,#3288); +#3283 = PLANE('',#3284); +#3284 = AXIS2_PLACEMENT_3D('',#3285,#3286,#3287); +#3285 = CARTESIAN_POINT('',(-1.E-17,-2.E-17,0.)); +#3286 = DIRECTION('',(0.,0.,1.)); +#3287 = DIRECTION('',(1.,0.,0.)); +#3288 = DEFINITIONAL_REPRESENTATION('',(#3289),#3293); +#3289 = CIRCLE('',#3290,0.46); +#3290 = AXIS2_PLACEMENT_2D('',#3291,#3292); +#3291 = CARTESIAN_POINT('',(1.E-17,2.E-17)); +#3292 = DIRECTION('',(1.,0.)); +#3293 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#3294 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#3298)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#3295,#3296,#3297)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#3295 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#3296 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#3297 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#3298 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#3295, + 'distance_accuracy_value','confusion accuracy'); +#3299 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#3300,#3302); +#3300 = ( REPRESENTATION_RELATIONSHIP('','',#3266,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#3301) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#3301 = ITEM_DEFINED_TRANSFORMATION('','',#11,#215); +#3302 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #3303); +#3303 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('115','Dielectric_017','',#5, + #3261,$); +#3304 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#3263)); +#3305 = SHAPE_DEFINITION_REPRESENTATION(#3306,#3312); +#3306 = PRODUCT_DEFINITION_SHAPE('','',#3307); +#3307 = PRODUCT_DEFINITION('design','',#3308,#3311); +#3308 = PRODUCT_DEFINITION_FORMATION('','',#3309); +#3309 = PRODUCT('Dielectric_018','Dielectric_018','',(#3310)); +#3310 = PRODUCT_CONTEXT('',#2,'mechanical'); +#3311 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#3312 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#3313),#3340); +#3313 = SHELL_BASED_SURFACE_MODEL('',(#3314)); +#3314 = OPEN_SHELL('',(#3315)); +#3315 = ADVANCED_FACE('',(#3316),#3329,.T.); +#3316 = FACE_BOUND('',#3317,.T.); +#3317 = EDGE_LOOP('',(#3318)); +#3318 = ORIENTED_EDGE('',*,*,#3319,.T.); +#3319 = EDGE_CURVE('',#3320,#3320,#3322,.T.); +#3320 = VERTEX_POINT('',#3321); +#3321 = CARTESIAN_POINT('',(0.46,0.,0.)); +#3322 = SURFACE_CURVE('',#3323,(#3328),.PCURVE_S1.); +#3323 = CIRCLE('',#3324,0.46); +#3324 = AXIS2_PLACEMENT_3D('',#3325,#3326,#3327); +#3325 = CARTESIAN_POINT('',(0.,0.,0.)); +#3326 = DIRECTION('',(0.,0.,1.)); +#3327 = DIRECTION('',(1.,0.,0.)); +#3328 = PCURVE('',#3329,#3334); +#3329 = PLANE('',#3330); +#3330 = AXIS2_PLACEMENT_3D('',#3331,#3332,#3333); +#3331 = CARTESIAN_POINT('',(-1.E-17,-2.E-17,0.)); +#3332 = DIRECTION('',(0.,0.,1.)); +#3333 = DIRECTION('',(1.,0.,0.)); +#3334 = DEFINITIONAL_REPRESENTATION('',(#3335),#3339); +#3335 = CIRCLE('',#3336,0.46); +#3336 = AXIS2_PLACEMENT_2D('',#3337,#3338); +#3337 = CARTESIAN_POINT('',(1.E-17,2.E-17)); +#3338 = DIRECTION('',(1.,0.)); +#3339 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#3340 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#3344)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#3341,#3342,#3343)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#3341 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#3342 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#3343 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#3344 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#3341, + 'distance_accuracy_value','confusion accuracy'); +#3345 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#3346,#3348); +#3346 = ( REPRESENTATION_RELATIONSHIP('','',#3312,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#3347) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#3347 = ITEM_DEFINED_TRANSFORMATION('','',#11,#219); +#3348 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #3349); +#3349 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('116','Dielectric_018','',#5, + #3307,$); +#3350 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#3309)); +#3351 = SHAPE_DEFINITION_REPRESENTATION(#3352,#3358); +#3352 = PRODUCT_DEFINITION_SHAPE('','',#3353); +#3353 = PRODUCT_DEFINITION('design','',#3354,#3357); +#3354 = PRODUCT_DEFINITION_FORMATION('','',#3355); +#3355 = PRODUCT('Dielectric_019','Dielectric_019','',(#3356)); +#3356 = PRODUCT_CONTEXT('',#2,'mechanical'); +#3357 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#3358 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#3359),#3386); +#3359 = SHELL_BASED_SURFACE_MODEL('',(#3360)); +#3360 = OPEN_SHELL('',(#3361)); +#3361 = ADVANCED_FACE('',(#3362),#3375,.T.); +#3362 = FACE_BOUND('',#3363,.T.); +#3363 = EDGE_LOOP('',(#3364)); +#3364 = ORIENTED_EDGE('',*,*,#3365,.T.); +#3365 = EDGE_CURVE('',#3366,#3366,#3368,.T.); +#3366 = VERTEX_POINT('',#3367); +#3367 = CARTESIAN_POINT('',(0.46,0.,0.)); +#3368 = SURFACE_CURVE('',#3369,(#3374),.PCURVE_S1.); +#3369 = CIRCLE('',#3370,0.46); +#3370 = AXIS2_PLACEMENT_3D('',#3371,#3372,#3373); +#3371 = CARTESIAN_POINT('',(0.,0.,0.)); +#3372 = DIRECTION('',(0.,0.,1.)); +#3373 = DIRECTION('',(1.,0.,0.)); +#3374 = PCURVE('',#3375,#3380); +#3375 = PLANE('',#3376); +#3376 = AXIS2_PLACEMENT_3D('',#3377,#3378,#3379); +#3377 = CARTESIAN_POINT('',(-1.E-17,-2.E-17,0.)); +#3378 = DIRECTION('',(0.,0.,1.)); +#3379 = DIRECTION('',(1.,0.,0.)); +#3380 = DEFINITIONAL_REPRESENTATION('',(#3381),#3385); +#3381 = CIRCLE('',#3382,0.46); +#3382 = AXIS2_PLACEMENT_2D('',#3383,#3384); +#3383 = CARTESIAN_POINT('',(1.E-17,2.E-17)); +#3384 = DIRECTION('',(1.,0.)); +#3385 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#3386 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#3390)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#3387,#3388,#3389)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#3387 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#3388 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#3389 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#3390 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#3387, + 'distance_accuracy_value','confusion accuracy'); +#3391 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#3392,#3394); +#3392 = ( REPRESENTATION_RELATIONSHIP('','',#3358,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#3393) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#3393 = ITEM_DEFINED_TRANSFORMATION('','',#11,#223); +#3394 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #3395); +#3395 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('117','Dielectric_019','',#5, + #3353,$); +#3396 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#3355)); +#3397 = SHAPE_DEFINITION_REPRESENTATION(#3398,#3404); +#3398 = PRODUCT_DEFINITION_SHAPE('','',#3399); +#3399 = PRODUCT_DEFINITION('design','',#3400,#3403); +#3400 = PRODUCT_DEFINITION_FORMATION('','',#3401); +#3401 = PRODUCT('Dielectric_020','Dielectric_020','',(#3402)); +#3402 = PRODUCT_CONTEXT('',#2,'mechanical'); +#3403 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#3404 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#3405),#3432); +#3405 = SHELL_BASED_SURFACE_MODEL('',(#3406)); +#3406 = OPEN_SHELL('',(#3407)); +#3407 = ADVANCED_FACE('',(#3408),#3421,.T.); +#3408 = FACE_BOUND('',#3409,.T.); +#3409 = EDGE_LOOP('',(#3410)); +#3410 = ORIENTED_EDGE('',*,*,#3411,.T.); +#3411 = EDGE_CURVE('',#3412,#3412,#3414,.T.); +#3412 = VERTEX_POINT('',#3413); +#3413 = CARTESIAN_POINT('',(0.46,0.,0.)); +#3414 = SURFACE_CURVE('',#3415,(#3420),.PCURVE_S1.); +#3415 = CIRCLE('',#3416,0.46); +#3416 = AXIS2_PLACEMENT_3D('',#3417,#3418,#3419); +#3417 = CARTESIAN_POINT('',(0.,0.,0.)); +#3418 = DIRECTION('',(0.,0.,1.)); +#3419 = DIRECTION('',(1.,0.,0.)); +#3420 = PCURVE('',#3421,#3426); +#3421 = PLANE('',#3422); +#3422 = AXIS2_PLACEMENT_3D('',#3423,#3424,#3425); +#3423 = CARTESIAN_POINT('',(-1.E-17,-2.E-17,0.)); +#3424 = DIRECTION('',(0.,0.,1.)); +#3425 = DIRECTION('',(1.,0.,0.)); +#3426 = DEFINITIONAL_REPRESENTATION('',(#3427),#3431); +#3427 = CIRCLE('',#3428,0.46); +#3428 = AXIS2_PLACEMENT_2D('',#3429,#3430); +#3429 = CARTESIAN_POINT('',(1.E-17,2.E-17)); +#3430 = DIRECTION('',(1.,0.)); +#3431 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#3432 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#3436)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#3433,#3434,#3435)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#3433 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#3434 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#3435 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#3436 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#3433, + 'distance_accuracy_value','confusion accuracy'); +#3437 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#3438,#3440); +#3438 = ( REPRESENTATION_RELATIONSHIP('','',#3404,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#3439) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#3439 = ITEM_DEFINED_TRANSFORMATION('','',#11,#227); +#3440 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #3441); +#3441 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('118','Dielectric_020','',#5, + #3399,$); +#3442 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#3401)); +#3443 = SHAPE_DEFINITION_REPRESENTATION(#3444,#3450); +#3444 = PRODUCT_DEFINITION_SHAPE('','',#3445); +#3445 = PRODUCT_DEFINITION('design','',#3446,#3449); +#3446 = PRODUCT_DEFINITION_FORMATION('','',#3447); +#3447 = PRODUCT('Dielectric_021','Dielectric_021','',(#3448)); +#3448 = PRODUCT_CONTEXT('',#2,'mechanical'); +#3449 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#3450 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#3451),#3478); +#3451 = SHELL_BASED_SURFACE_MODEL('',(#3452)); +#3452 = OPEN_SHELL('',(#3453)); +#3453 = ADVANCED_FACE('',(#3454),#3467,.T.); +#3454 = FACE_BOUND('',#3455,.T.); +#3455 = EDGE_LOOP('',(#3456)); +#3456 = ORIENTED_EDGE('',*,*,#3457,.T.); +#3457 = EDGE_CURVE('',#3458,#3458,#3460,.T.); +#3458 = VERTEX_POINT('',#3459); +#3459 = CARTESIAN_POINT('',(0.46,0.,0.)); +#3460 = SURFACE_CURVE('',#3461,(#3466),.PCURVE_S1.); +#3461 = CIRCLE('',#3462,0.46); +#3462 = AXIS2_PLACEMENT_3D('',#3463,#3464,#3465); +#3463 = CARTESIAN_POINT('',(0.,0.,0.)); +#3464 = DIRECTION('',(0.,0.,1.)); +#3465 = DIRECTION('',(1.,0.,0.)); +#3466 = PCURVE('',#3467,#3472); +#3467 = PLANE('',#3468); +#3468 = AXIS2_PLACEMENT_3D('',#3469,#3470,#3471); +#3469 = CARTESIAN_POINT('',(-1.E-17,-2.E-17,0.)); +#3470 = DIRECTION('',(0.,0.,1.)); +#3471 = DIRECTION('',(1.,0.,0.)); +#3472 = DEFINITIONAL_REPRESENTATION('',(#3473),#3477); +#3473 = CIRCLE('',#3474,0.46); +#3474 = AXIS2_PLACEMENT_2D('',#3475,#3476); +#3475 = CARTESIAN_POINT('',(1.E-17,2.E-17)); +#3476 = DIRECTION('',(1.,0.)); +#3477 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#3478 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#3482)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#3479,#3480,#3481)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#3479 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#3480 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#3481 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#3482 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#3479, + 'distance_accuracy_value','confusion accuracy'); +#3483 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#3484,#3486); +#3484 = ( REPRESENTATION_RELATIONSHIP('','',#3450,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#3485) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#3485 = ITEM_DEFINED_TRANSFORMATION('','',#11,#231); +#3486 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #3487); +#3487 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('119','Dielectric_021','',#5, + #3445,$); +#3488 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#3447)); +#3489 = SHAPE_DEFINITION_REPRESENTATION(#3490,#3496); +#3490 = PRODUCT_DEFINITION_SHAPE('','',#3491); +#3491 = PRODUCT_DEFINITION('design','',#3492,#3495); +#3492 = PRODUCT_DEFINITION_FORMATION('','',#3493); +#3493 = PRODUCT('Dielectric_022','Dielectric_022','',(#3494)); +#3494 = PRODUCT_CONTEXT('',#2,'mechanical'); +#3495 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#3496 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#3497),#3524); +#3497 = SHELL_BASED_SURFACE_MODEL('',(#3498)); +#3498 = OPEN_SHELL('',(#3499)); +#3499 = ADVANCED_FACE('',(#3500),#3513,.T.); +#3500 = FACE_BOUND('',#3501,.T.); +#3501 = EDGE_LOOP('',(#3502)); +#3502 = ORIENTED_EDGE('',*,*,#3503,.T.); +#3503 = EDGE_CURVE('',#3504,#3504,#3506,.T.); +#3504 = VERTEX_POINT('',#3505); +#3505 = CARTESIAN_POINT('',(0.46,0.,0.)); +#3506 = SURFACE_CURVE('',#3507,(#3512),.PCURVE_S1.); +#3507 = CIRCLE('',#3508,0.46); +#3508 = AXIS2_PLACEMENT_3D('',#3509,#3510,#3511); +#3509 = CARTESIAN_POINT('',(0.,0.,0.)); +#3510 = DIRECTION('',(0.,0.,1.)); +#3511 = DIRECTION('',(1.,0.,0.)); +#3512 = PCURVE('',#3513,#3518); +#3513 = PLANE('',#3514); +#3514 = AXIS2_PLACEMENT_3D('',#3515,#3516,#3517); +#3515 = CARTESIAN_POINT('',(-1.E-17,-2.E-17,0.)); +#3516 = DIRECTION('',(0.,0.,1.)); +#3517 = DIRECTION('',(1.,0.,0.)); +#3518 = DEFINITIONAL_REPRESENTATION('',(#3519),#3523); +#3519 = CIRCLE('',#3520,0.46); +#3520 = AXIS2_PLACEMENT_2D('',#3521,#3522); +#3521 = CARTESIAN_POINT('',(1.E-17,2.E-17)); +#3522 = DIRECTION('',(1.,0.)); +#3523 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#3524 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#3528)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#3525,#3526,#3527)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#3525 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#3526 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#3527 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#3528 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#3525, + 'distance_accuracy_value','confusion accuracy'); +#3529 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#3530,#3532); +#3530 = ( REPRESENTATION_RELATIONSHIP('','',#3496,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#3531) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#3531 = ITEM_DEFINED_TRANSFORMATION('','',#11,#235); +#3532 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #3533); +#3533 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('120','Dielectric_022','',#5, + #3491,$); +#3534 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#3493)); +#3535 = SHAPE_DEFINITION_REPRESENTATION(#3536,#3542); +#3536 = PRODUCT_DEFINITION_SHAPE('','',#3537); +#3537 = PRODUCT_DEFINITION('design','',#3538,#3541); +#3538 = PRODUCT_DEFINITION_FORMATION('','',#3539); +#3539 = PRODUCT('Dielectric_023','Dielectric_023','',(#3540)); +#3540 = PRODUCT_CONTEXT('',#2,'mechanical'); +#3541 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#3542 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#3543),#3570); +#3543 = SHELL_BASED_SURFACE_MODEL('',(#3544)); +#3544 = OPEN_SHELL('',(#3545)); +#3545 = ADVANCED_FACE('',(#3546),#3559,.T.); +#3546 = FACE_BOUND('',#3547,.T.); +#3547 = EDGE_LOOP('',(#3548)); +#3548 = ORIENTED_EDGE('',*,*,#3549,.T.); +#3549 = EDGE_CURVE('',#3550,#3550,#3552,.T.); +#3550 = VERTEX_POINT('',#3551); +#3551 = CARTESIAN_POINT('',(0.46,0.,0.)); +#3552 = SURFACE_CURVE('',#3553,(#3558),.PCURVE_S1.); +#3553 = CIRCLE('',#3554,0.46); +#3554 = AXIS2_PLACEMENT_3D('',#3555,#3556,#3557); +#3555 = CARTESIAN_POINT('',(0.,0.,0.)); +#3556 = DIRECTION('',(0.,0.,1.)); +#3557 = DIRECTION('',(1.,0.,0.)); +#3558 = PCURVE('',#3559,#3564); +#3559 = PLANE('',#3560); +#3560 = AXIS2_PLACEMENT_3D('',#3561,#3562,#3563); +#3561 = CARTESIAN_POINT('',(-1.E-17,-2.E-17,0.)); +#3562 = DIRECTION('',(0.,0.,1.)); +#3563 = DIRECTION('',(1.,0.,0.)); +#3564 = DEFINITIONAL_REPRESENTATION('',(#3565),#3569); +#3565 = CIRCLE('',#3566,0.46); +#3566 = AXIS2_PLACEMENT_2D('',#3567,#3568); +#3567 = CARTESIAN_POINT('',(1.E-17,2.E-17)); +#3568 = DIRECTION('',(1.,0.)); +#3569 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#3570 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#3574)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#3571,#3572,#3573)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#3571 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#3572 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#3573 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#3574 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#3571, + 'distance_accuracy_value','confusion accuracy'); +#3575 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#3576,#3578); +#3576 = ( REPRESENTATION_RELATIONSHIP('','',#3542,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#3577) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#3577 = ITEM_DEFINED_TRANSFORMATION('','',#11,#239); +#3578 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #3579); +#3579 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('121','Dielectric_023','',#5, + #3537,$); +#3580 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#3539)); +#3581 = SHAPE_DEFINITION_REPRESENTATION(#3582,#3588); +#3582 = PRODUCT_DEFINITION_SHAPE('','',#3583); +#3583 = PRODUCT_DEFINITION('design','',#3584,#3587); +#3584 = PRODUCT_DEFINITION_FORMATION('','',#3585); +#3585 = PRODUCT('Dielectric_024','Dielectric_024','',(#3586)); +#3586 = PRODUCT_CONTEXT('',#2,'mechanical'); +#3587 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#3588 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#3589),#3616); +#3589 = SHELL_BASED_SURFACE_MODEL('',(#3590)); +#3590 = OPEN_SHELL('',(#3591)); +#3591 = ADVANCED_FACE('',(#3592),#3605,.T.); +#3592 = FACE_BOUND('',#3593,.T.); +#3593 = EDGE_LOOP('',(#3594)); +#3594 = ORIENTED_EDGE('',*,*,#3595,.T.); +#3595 = EDGE_CURVE('',#3596,#3596,#3598,.T.); +#3596 = VERTEX_POINT('',#3597); +#3597 = CARTESIAN_POINT('',(0.46,0.,0.)); +#3598 = SURFACE_CURVE('',#3599,(#3604),.PCURVE_S1.); +#3599 = CIRCLE('',#3600,0.46); +#3600 = AXIS2_PLACEMENT_3D('',#3601,#3602,#3603); +#3601 = CARTESIAN_POINT('',(0.,0.,0.)); +#3602 = DIRECTION('',(0.,0.,1.)); +#3603 = DIRECTION('',(1.,0.,0.)); +#3604 = PCURVE('',#3605,#3610); +#3605 = PLANE('',#3606); +#3606 = AXIS2_PLACEMENT_3D('',#3607,#3608,#3609); +#3607 = CARTESIAN_POINT('',(-1.E-17,-2.E-17,0.)); +#3608 = DIRECTION('',(0.,0.,1.)); +#3609 = DIRECTION('',(1.,0.,0.)); +#3610 = DEFINITIONAL_REPRESENTATION('',(#3611),#3615); +#3611 = CIRCLE('',#3612,0.46); +#3612 = AXIS2_PLACEMENT_2D('',#3613,#3614); +#3613 = CARTESIAN_POINT('',(1.E-17,2.E-17)); +#3614 = DIRECTION('',(1.,0.)); +#3615 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#3616 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#3620)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#3617,#3618,#3619)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#3617 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#3618 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#3619 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#3620 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#3617, + 'distance_accuracy_value','confusion accuracy'); +#3621 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#3622,#3624); +#3622 = ( REPRESENTATION_RELATIONSHIP('','',#3588,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#3623) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#3623 = ITEM_DEFINED_TRANSFORMATION('','',#11,#243); +#3624 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #3625); +#3625 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('122','Dielectric_024','',#5, + #3583,$); +#3626 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#3585)); +#3627 = SHAPE_DEFINITION_REPRESENTATION(#3628,#3634); +#3628 = PRODUCT_DEFINITION_SHAPE('','',#3629); +#3629 = PRODUCT_DEFINITION('design','',#3630,#3633); +#3630 = PRODUCT_DEFINITION_FORMATION('','',#3631); +#3631 = PRODUCT('Dielectric_025','Dielectric_025','',(#3632)); +#3632 = PRODUCT_CONTEXT('',#2,'mechanical'); +#3633 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#3634 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#3635),#3662); +#3635 = SHELL_BASED_SURFACE_MODEL('',(#3636)); +#3636 = OPEN_SHELL('',(#3637)); +#3637 = ADVANCED_FACE('',(#3638),#3651,.T.); +#3638 = FACE_BOUND('',#3639,.T.); +#3639 = EDGE_LOOP('',(#3640)); +#3640 = ORIENTED_EDGE('',*,*,#3641,.T.); +#3641 = EDGE_CURVE('',#3642,#3642,#3644,.T.); +#3642 = VERTEX_POINT('',#3643); +#3643 = CARTESIAN_POINT('',(0.725,0.,0.)); +#3644 = SURFACE_CURVE('',#3645,(#3650),.PCURVE_S1.); +#3645 = CIRCLE('',#3646,0.725); +#3646 = AXIS2_PLACEMENT_3D('',#3647,#3648,#3649); +#3647 = CARTESIAN_POINT('',(0.,0.,0.)); +#3648 = DIRECTION('',(0.,0.,1.)); +#3649 = DIRECTION('',(1.,0.,0.)); +#3650 = PCURVE('',#3651,#3656); +#3651 = PLANE('',#3652); +#3652 = AXIS2_PLACEMENT_3D('',#3653,#3654,#3655); +#3653 = CARTESIAN_POINT('',(-3.E-17,-3.E-17,0.)); +#3654 = DIRECTION('',(0.,0.,1.)); +#3655 = DIRECTION('',(1.,0.,0.)); +#3656 = DEFINITIONAL_REPRESENTATION('',(#3657),#3661); +#3657 = CIRCLE('',#3658,0.725); +#3658 = AXIS2_PLACEMENT_2D('',#3659,#3660); +#3659 = CARTESIAN_POINT('',(3.E-17,3.E-17)); +#3660 = DIRECTION('',(1.,0.)); +#3661 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#3662 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#3666)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#3663,#3664,#3665)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#3663 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#3664 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#3665 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#3666 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#3663, + 'distance_accuracy_value','confusion accuracy'); +#3667 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#3668,#3670); +#3668 = ( REPRESENTATION_RELATIONSHIP('','',#3634,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#3669) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#3669 = ITEM_DEFINED_TRANSFORMATION('','',#11,#247); +#3670 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #3671); +#3671 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('123','Dielectric_025','',#5, + #3629,$); +#3672 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#3631)); +#3673 = SHAPE_DEFINITION_REPRESENTATION(#3674,#3680); +#3674 = PRODUCT_DEFINITION_SHAPE('','',#3675); +#3675 = PRODUCT_DEFINITION('design','',#3676,#3679); +#3676 = PRODUCT_DEFINITION_FORMATION('','',#3677); +#3677 = PRODUCT('Dielectric_026','Dielectric_026','',(#3678)); +#3678 = PRODUCT_CONTEXT('',#2,'mechanical'); +#3679 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#3680 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#3681),#3708); +#3681 = SHELL_BASED_SURFACE_MODEL('',(#3682)); +#3682 = OPEN_SHELL('',(#3683)); +#3683 = ADVANCED_FACE('',(#3684),#3697,.T.); +#3684 = FACE_BOUND('',#3685,.T.); +#3685 = EDGE_LOOP('',(#3686)); +#3686 = ORIENTED_EDGE('',*,*,#3687,.T.); +#3687 = EDGE_CURVE('',#3688,#3688,#3690,.T.); +#3688 = VERTEX_POINT('',#3689); +#3689 = CARTESIAN_POINT('',(0.725,0.,0.)); +#3690 = SURFACE_CURVE('',#3691,(#3696),.PCURVE_S1.); +#3691 = CIRCLE('',#3692,0.725); +#3692 = AXIS2_PLACEMENT_3D('',#3693,#3694,#3695); +#3693 = CARTESIAN_POINT('',(0.,0.,0.)); +#3694 = DIRECTION('',(0.,0.,1.)); +#3695 = DIRECTION('',(1.,0.,0.)); +#3696 = PCURVE('',#3697,#3702); +#3697 = PLANE('',#3698); +#3698 = AXIS2_PLACEMENT_3D('',#3699,#3700,#3701); +#3699 = CARTESIAN_POINT('',(-3.E-17,-3.E-17,0.)); +#3700 = DIRECTION('',(0.,0.,1.)); +#3701 = DIRECTION('',(1.,0.,0.)); +#3702 = DEFINITIONAL_REPRESENTATION('',(#3703),#3707); +#3703 = CIRCLE('',#3704,0.725); +#3704 = AXIS2_PLACEMENT_2D('',#3705,#3706); +#3705 = CARTESIAN_POINT('',(3.E-17,3.E-17)); +#3706 = DIRECTION('',(1.,0.)); +#3707 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#3708 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#3712)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#3709,#3710,#3711)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#3709 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#3710 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#3711 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#3712 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#3709, + 'distance_accuracy_value','confusion accuracy'); +#3713 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#3714,#3716); +#3714 = ( REPRESENTATION_RELATIONSHIP('','',#3680,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#3715) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#3715 = ITEM_DEFINED_TRANSFORMATION('','',#11,#251); +#3716 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #3717); +#3717 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('124','Dielectric_026','',#5, + #3675,$); +#3718 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#3677)); +#3719 = SHAPE_DEFINITION_REPRESENTATION(#3720,#3726); +#3720 = PRODUCT_DEFINITION_SHAPE('','',#3721); +#3721 = PRODUCT_DEFINITION('design','',#3722,#3725); +#3722 = PRODUCT_DEFINITION_FORMATION('','',#3723); +#3723 = PRODUCT('Dielectric_027','Dielectric_027','',(#3724)); +#3724 = PRODUCT_CONTEXT('',#2,'mechanical'); +#3725 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#3726 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#3727),#3754); +#3727 = SHELL_BASED_SURFACE_MODEL('',(#3728)); +#3728 = OPEN_SHELL('',(#3729)); +#3729 = ADVANCED_FACE('',(#3730),#3743,.T.); +#3730 = FACE_BOUND('',#3731,.T.); +#3731 = EDGE_LOOP('',(#3732)); +#3732 = ORIENTED_EDGE('',*,*,#3733,.T.); +#3733 = EDGE_CURVE('',#3734,#3734,#3736,.T.); +#3734 = VERTEX_POINT('',#3735); +#3735 = CARTESIAN_POINT('',(0.725,0.,0.)); +#3736 = SURFACE_CURVE('',#3737,(#3742),.PCURVE_S1.); +#3737 = CIRCLE('',#3738,0.725); +#3738 = AXIS2_PLACEMENT_3D('',#3739,#3740,#3741); +#3739 = CARTESIAN_POINT('',(0.,0.,0.)); +#3740 = DIRECTION('',(0.,0.,1.)); +#3741 = DIRECTION('',(1.,0.,0.)); +#3742 = PCURVE('',#3743,#3748); +#3743 = PLANE('',#3744); +#3744 = AXIS2_PLACEMENT_3D('',#3745,#3746,#3747); +#3745 = CARTESIAN_POINT('',(-3.E-17,-3.E-17,0.)); +#3746 = DIRECTION('',(0.,0.,1.)); +#3747 = DIRECTION('',(1.,0.,0.)); +#3748 = DEFINITIONAL_REPRESENTATION('',(#3749),#3753); +#3749 = CIRCLE('',#3750,0.725); +#3750 = AXIS2_PLACEMENT_2D('',#3751,#3752); +#3751 = CARTESIAN_POINT('',(3.E-17,3.E-17)); +#3752 = DIRECTION('',(1.,0.)); +#3753 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#3754 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#3758)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#3755,#3756,#3757)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#3755 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#3756 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#3757 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#3758 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#3755, + 'distance_accuracy_value','confusion accuracy'); +#3759 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#3760,#3762); +#3760 = ( REPRESENTATION_RELATIONSHIP('','',#3726,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#3761) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#3761 = ITEM_DEFINED_TRANSFORMATION('','',#11,#255); +#3762 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #3763); +#3763 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('125','Dielectric_027','',#5, + #3721,$); +#3764 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#3723)); +#3765 = SHAPE_DEFINITION_REPRESENTATION(#3766,#3772); +#3766 = PRODUCT_DEFINITION_SHAPE('','',#3767); +#3767 = PRODUCT_DEFINITION('design','',#3768,#3771); +#3768 = PRODUCT_DEFINITION_FORMATION('','',#3769); +#3769 = PRODUCT('Dielectric_028','Dielectric_028','',(#3770)); +#3770 = PRODUCT_CONTEXT('',#2,'mechanical'); +#3771 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#3772 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#3773),#3800); +#3773 = SHELL_BASED_SURFACE_MODEL('',(#3774)); +#3774 = OPEN_SHELL('',(#3775)); +#3775 = ADVANCED_FACE('',(#3776),#3789,.T.); +#3776 = FACE_BOUND('',#3777,.T.); +#3777 = EDGE_LOOP('',(#3778)); +#3778 = ORIENTED_EDGE('',*,*,#3779,.T.); +#3779 = EDGE_CURVE('',#3780,#3780,#3782,.T.); +#3780 = VERTEX_POINT('',#3781); +#3781 = CARTESIAN_POINT('',(0.725,0.,0.)); +#3782 = SURFACE_CURVE('',#3783,(#3788),.PCURVE_S1.); +#3783 = CIRCLE('',#3784,0.725); +#3784 = AXIS2_PLACEMENT_3D('',#3785,#3786,#3787); +#3785 = CARTESIAN_POINT('',(0.,0.,0.)); +#3786 = DIRECTION('',(0.,0.,1.)); +#3787 = DIRECTION('',(1.,0.,0.)); +#3788 = PCURVE('',#3789,#3794); +#3789 = PLANE('',#3790); +#3790 = AXIS2_PLACEMENT_3D('',#3791,#3792,#3793); +#3791 = CARTESIAN_POINT('',(-3.E-17,-3.E-17,0.)); +#3792 = DIRECTION('',(0.,0.,1.)); +#3793 = DIRECTION('',(1.,0.,0.)); +#3794 = DEFINITIONAL_REPRESENTATION('',(#3795),#3799); +#3795 = CIRCLE('',#3796,0.725); +#3796 = AXIS2_PLACEMENT_2D('',#3797,#3798); +#3797 = CARTESIAN_POINT('',(3.E-17,3.E-17)); +#3798 = DIRECTION('',(1.,0.)); +#3799 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#3800 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#3804)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#3801,#3802,#3803)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#3801 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#3802 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#3803 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#3804 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#3801, + 'distance_accuracy_value','confusion accuracy'); +#3805 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#3806,#3808); +#3806 = ( REPRESENTATION_RELATIONSHIP('','',#3772,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#3807) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#3807 = ITEM_DEFINED_TRANSFORMATION('','',#11,#259); +#3808 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #3809); +#3809 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('126','Dielectric_028','',#5, + #3767,$); +#3810 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#3769)); +#3811 = SHAPE_DEFINITION_REPRESENTATION(#3812,#3818); +#3812 = PRODUCT_DEFINITION_SHAPE('','',#3813); +#3813 = PRODUCT_DEFINITION('design','',#3814,#3817); +#3814 = PRODUCT_DEFINITION_FORMATION('','',#3815); +#3815 = PRODUCT('Dielectric_029','Dielectric_029','',(#3816)); +#3816 = PRODUCT_CONTEXT('',#2,'mechanical'); +#3817 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#3818 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#3819),#3846); +#3819 = SHELL_BASED_SURFACE_MODEL('',(#3820)); +#3820 = OPEN_SHELL('',(#3821)); +#3821 = ADVANCED_FACE('',(#3822),#3835,.T.); +#3822 = FACE_BOUND('',#3823,.T.); +#3823 = EDGE_LOOP('',(#3824)); +#3824 = ORIENTED_EDGE('',*,*,#3825,.T.); +#3825 = EDGE_CURVE('',#3826,#3826,#3828,.T.); +#3826 = VERTEX_POINT('',#3827); +#3827 = CARTESIAN_POINT('',(0.725,0.,0.)); +#3828 = SURFACE_CURVE('',#3829,(#3834),.PCURVE_S1.); +#3829 = CIRCLE('',#3830,0.725); +#3830 = AXIS2_PLACEMENT_3D('',#3831,#3832,#3833); +#3831 = CARTESIAN_POINT('',(0.,0.,0.)); +#3832 = DIRECTION('',(0.,0.,1.)); +#3833 = DIRECTION('',(1.,0.,0.)); +#3834 = PCURVE('',#3835,#3840); +#3835 = PLANE('',#3836); +#3836 = AXIS2_PLACEMENT_3D('',#3837,#3838,#3839); +#3837 = CARTESIAN_POINT('',(-3.E-17,-3.E-17,0.)); +#3838 = DIRECTION('',(0.,0.,1.)); +#3839 = DIRECTION('',(1.,0.,0.)); +#3840 = DEFINITIONAL_REPRESENTATION('',(#3841),#3845); +#3841 = CIRCLE('',#3842,0.725); +#3842 = AXIS2_PLACEMENT_2D('',#3843,#3844); +#3843 = CARTESIAN_POINT('',(3.E-17,3.E-17)); +#3844 = DIRECTION('',(1.,0.)); +#3845 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#3846 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#3850)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#3847,#3848,#3849)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#3847 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#3848 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#3849 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#3850 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#3847, + 'distance_accuracy_value','confusion accuracy'); +#3851 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#3852,#3854); +#3852 = ( REPRESENTATION_RELATIONSHIP('','',#3818,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#3853) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#3853 = ITEM_DEFINED_TRANSFORMATION('','',#11,#263); +#3854 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #3855); +#3855 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('127','Dielectric_029','',#5, + #3813,$); +#3856 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#3815)); +#3857 = SHAPE_DEFINITION_REPRESENTATION(#3858,#3864); +#3858 = PRODUCT_DEFINITION_SHAPE('','',#3859); +#3859 = PRODUCT_DEFINITION('design','',#3860,#3863); +#3860 = PRODUCT_DEFINITION_FORMATION('','',#3861); +#3861 = PRODUCT('OpenBoundary_0','OpenBoundary_0','',(#3862)); +#3862 = PRODUCT_CONTEXT('',#2,'mechanical'); +#3863 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#3864 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#3865),#3892); +#3865 = SHELL_BASED_SURFACE_MODEL('',(#3866)); +#3866 = OPEN_SHELL('',(#3867)); +#3867 = ADVANCED_FACE('',(#3868),#3881,.T.); +#3868 = FACE_BOUND('',#3869,.T.); +#3869 = EDGE_LOOP('',(#3870)); +#3870 = ORIENTED_EDGE('',*,*,#3871,.T.); +#3871 = EDGE_CURVE('',#3872,#3872,#3874,.T.); +#3872 = VERTEX_POINT('',#3873); +#3873 = CARTESIAN_POINT('',(50.,0.,0.)); +#3874 = SURFACE_CURVE('',#3875,(#3880),.PCURVE_S1.); +#3875 = CIRCLE('',#3876,50.); +#3876 = AXIS2_PLACEMENT_3D('',#3877,#3878,#3879); +#3877 = CARTESIAN_POINT('',(0.,0.,0.)); +#3878 = DIRECTION('',(0.,0.,1.)); +#3879 = DIRECTION('',(1.,0.,-0.)); +#3880 = PCURVE('',#3881,#3886); +#3881 = PLANE('',#3882); +#3882 = AXIS2_PLACEMENT_3D('',#3883,#3884,#3885); +#3883 = CARTESIAN_POINT('',(-3.5E-15,-2.04E-15,0.)); +#3884 = DIRECTION('',(0.,0.,1.)); +#3885 = DIRECTION('',(1.,0.,-0.)); +#3886 = DEFINITIONAL_REPRESENTATION('',(#3887),#3891); +#3887 = CIRCLE('',#3888,50.); +#3888 = AXIS2_PLACEMENT_2D('',#3889,#3890); +#3889 = CARTESIAN_POINT('',(3.5E-15,2.04E-15)); +#3890 = DIRECTION('',(1.,0.)); +#3891 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#3892 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#3896)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#3893,#3894,#3895)) REPRESENTATION_CONTEXT +('Context #1','3D Context with UNIT and UNCERTAINTY') ); +#3893 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#3894 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#3895 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#3896 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#3893, + 'distance_accuracy_value','confusion accuracy'); +#3897 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#3898,#3900); +#3898 = ( REPRESENTATION_RELATIONSHIP('','',#3864,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#3899) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#3899 = ITEM_DEFINED_TRANSFORMATION('','',#11,#267); +#3900 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item', + #3901); +#3901 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('128','OpenBoundary_0','',#5, + #3859,$); +#3902 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#3861)); +#3903 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #3904),#1297); +#3904 = STYLED_ITEM('color',(#3905),#1272); +#3905 = PRESENTATION_STYLE_ASSIGNMENT((#3906,#3912)); +#3906 = SURFACE_STYLE_USAGE(.BOTH.,#3907); +#3907 = SURFACE_SIDE_STYLE('',(#3908)); +#3908 = SURFACE_STYLE_FILL_AREA(#3909); +#3909 = FILL_AREA_STYLE('',(#3910)); +#3910 = FILL_AREA_STYLE_COLOUR('',#3911); +#3911 = COLOUR_RGB('',0.333333345507,0.666666687201,1.); +#3912 = CURVE_STYLE('',#3913,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#3913 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#3914 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, + 9.803921802644E-02); +#3915 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #3916),#3045); +#3916 = STYLED_ITEM('color',(#3917),#3020); +#3917 = PRESENTATION_STYLE_ASSIGNMENT((#3918,#3924)); +#3918 = SURFACE_STYLE_USAGE(.BOTH.,#3919); +#3919 = SURFACE_SIDE_STYLE('',(#3920)); +#3920 = SURFACE_STYLE_FILL_AREA(#3921); +#3921 = FILL_AREA_STYLE('',(#3922)); +#3922 = FILL_AREA_STYLE_COLOUR('',#3923); +#3923 = COLOUR_RGB('',0.333333345507,0.333333345507,1.); +#3924 = CURVE_STYLE('',#3925,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#3925 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#3926 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #3927),#2217); +#3927 = STYLED_ITEM('color',(#3928),#2192); +#3928 = PRESENTATION_STYLE_ASSIGNMENT((#3929,#3935)); +#3929 = SURFACE_STYLE_USAGE(.BOTH.,#3930); +#3930 = SURFACE_SIDE_STYLE('',(#3931)); +#3931 = SURFACE_STYLE_FILL_AREA(#3932); +#3932 = FILL_AREA_STYLE('',(#3933)); +#3933 = FILL_AREA_STYLE_COLOUR('',#3934); +#3934 = DRAUGHTING_PRE_DEFINED_COLOUR('red'); +#3935 = CURVE_STYLE('',#3936,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#3936 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#3937 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #3938),#2309); +#3938 = STYLED_ITEM('color',(#3939),#2284); +#3939 = PRESENTATION_STYLE_ASSIGNMENT((#3940,#3945)); +#3940 = SURFACE_STYLE_USAGE(.BOTH.,#3941); +#3941 = SURFACE_SIDE_STYLE('',(#3942)); +#3942 = SURFACE_STYLE_FILL_AREA(#3943); +#3943 = FILL_AREA_STYLE('',(#3944)); +#3944 = FILL_AREA_STYLE_COLOUR('',#3934); +#3945 = CURVE_STYLE('',#3946,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#3946 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#3947 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #3948),#1159); +#3948 = STYLED_ITEM('color',(#3949),#1134); +#3949 = PRESENTATION_STYLE_ASSIGNMENT((#3950,#3955)); +#3950 = SURFACE_STYLE_USAGE(.BOTH.,#3951); +#3951 = SURFACE_SIDE_STYLE('',(#3952)); +#3952 = SURFACE_STYLE_FILL_AREA(#3953); +#3953 = FILL_AREA_STYLE('',(#3954)); +#3954 = FILL_AREA_STYLE_COLOUR('',#3911); +#3955 = CURVE_STYLE('',#3956,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#3956 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#3957 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #3958),#3110); +#3958 = STYLED_ITEM('color',(#3959),#3066); +#3959 = PRESENTATION_STYLE_ASSIGNMENT((#3960,#3965)); +#3960 = SURFACE_STYLE_USAGE(.BOTH.,#3961); +#3961 = SURFACE_SIDE_STYLE('',(#3962)); +#3962 = SURFACE_STYLE_FILL_AREA(#3963); +#3963 = FILL_AREA_STYLE('',(#3964)); +#3964 = FILL_AREA_STYLE_COLOUR('',#3934); +#3965 = CURVE_STYLE('',#3966,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#3966 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#3967 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #3968),#1527); +#3968 = STYLED_ITEM('color',(#3969),#1502); +#3969 = PRESENTATION_STYLE_ASSIGNMENT((#3970,#3975)); +#3970 = SURFACE_STYLE_USAGE(.BOTH.,#3971); +#3971 = SURFACE_SIDE_STYLE('',(#3972)); +#3972 = SURFACE_STYLE_FILL_AREA(#3973); +#3973 = FILL_AREA_STYLE('',(#3974)); +#3974 = FILL_AREA_STYLE_COLOUR('',#3911); +#3975 = CURVE_STYLE('',#3976,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#3976 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#3977 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #3978),#2447); +#3978 = STYLED_ITEM('color',(#3979),#2422); +#3979 = PRESENTATION_STYLE_ASSIGNMENT((#3980,#3985)); +#3980 = SURFACE_STYLE_USAGE(.BOTH.,#3981); +#3981 = SURFACE_SIDE_STYLE('',(#3982)); +#3982 = SURFACE_STYLE_FILL_AREA(#3983); +#3983 = FILL_AREA_STYLE('',(#3984)); +#3984 = FILL_AREA_STYLE_COLOUR('',#3923); +#3985 = CURVE_STYLE('',#3986,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#3986 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#3987 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #3988),#3754); +#3988 = STYLED_ITEM('color',(#3989),#3729); +#3989 = PRESENTATION_STYLE_ASSIGNMENT((#3990,#3996)); +#3990 = SURFACE_STYLE_USAGE(.BOTH.,#3991); +#3991 = SURFACE_SIDE_STYLE('',(#3992)); +#3992 = SURFACE_STYLE_FILL_AREA(#3993); +#3993 = FILL_AREA_STYLE('',(#3994)); +#3994 = FILL_AREA_STYLE_COLOUR('',#3995); +#3995 = COLOUR_RGB('',0.666666687201,0.,1.); +#3996 = CURVE_STYLE('',#3997,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#3997 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#3998 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #3999),#3524); +#3999 = STYLED_ITEM('color',(#4000),#3499); +#4000 = PRESENTATION_STYLE_ASSIGNMENT((#4001,#4007)); +#4001 = SURFACE_STYLE_USAGE(.BOTH.,#4002); +#4002 = SURFACE_SIDE_STYLE('',(#4003)); +#4003 = SURFACE_STYLE_FILL_AREA(#4004); +#4004 = FILL_AREA_STYLE('',(#4005)); +#4005 = FILL_AREA_STYLE_COLOUR('',#4006); +#4006 = COLOUR_RGB('',1.,0.666666687201,1.); +#4007 = CURVE_STYLE('',#4008,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4008 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4009 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4010),#1895); +#4010 = STYLED_ITEM('color',(#4011),#1870); +#4011 = PRESENTATION_STYLE_ASSIGNMENT((#4012,#4018)); +#4012 = SURFACE_STYLE_USAGE(.BOTH.,#4013); +#4013 = SURFACE_SIDE_STYLE('',(#4014)); +#4014 = SURFACE_STYLE_FILL_AREA(#4015); +#4015 = FILL_AREA_STYLE('',(#4016)); +#4016 = FILL_AREA_STYLE_COLOUR('',#4017); +#4017 = COLOUR_RGB('',1.,0.666666687201,0.); +#4018 = CURVE_STYLE('',#4019,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4019 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4020 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4021),#2677); +#4021 = STYLED_ITEM('color',(#4022),#2652); +#4022 = PRESENTATION_STYLE_ASSIGNMENT((#4023,#4028)); +#4023 = SURFACE_STYLE_USAGE(.BOTH.,#4024); +#4024 = SURFACE_SIDE_STYLE('',(#4025)); +#4025 = SURFACE_STYLE_FILL_AREA(#4026); +#4026 = FILL_AREA_STYLE('',(#4027)); +#4027 = FILL_AREA_STYLE_COLOUR('',#3923); +#4028 = CURVE_STYLE('',#4029,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4029 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4030 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4031),#1343); +#4031 = STYLED_ITEM('color',(#4032),#1318); +#4032 = PRESENTATION_STYLE_ASSIGNMENT((#4033,#4038)); +#4033 = SURFACE_STYLE_USAGE(.BOTH.,#4034); +#4034 = SURFACE_SIDE_STYLE('',(#4035)); +#4035 = SURFACE_STYLE_FILL_AREA(#4036); +#4036 = FILL_AREA_STYLE('',(#4037)); +#4037 = FILL_AREA_STYLE_COLOUR('',#3911); +#4038 = CURVE_STYLE('',#4039,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4039 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4040 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4041),#2999); +#4041 = STYLED_ITEM('color',(#4042),#2974); +#4042 = PRESENTATION_STYLE_ASSIGNMENT((#4043,#4048)); +#4043 = SURFACE_STYLE_USAGE(.BOTH.,#4044); +#4044 = SURFACE_SIDE_STYLE('',(#4045)); +#4045 = SURFACE_STYLE_FILL_AREA(#4046); +#4046 = FILL_AREA_STYLE('',(#4047)); +#4047 = FILL_AREA_STYLE_COLOUR('',#3923); +#4048 = CURVE_STYLE('',#4049,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4049 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4050 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4051),#1481); +#4051 = STYLED_ITEM('color',(#4052),#1456); +#4052 = PRESENTATION_STYLE_ASSIGNMENT((#4053,#4058)); +#4053 = SURFACE_STYLE_USAGE(.BOTH.,#4054); +#4054 = SURFACE_SIDE_STYLE('',(#4055)); +#4055 = SURFACE_STYLE_FILL_AREA(#4056); +#4056 = FILL_AREA_STYLE('',(#4057)); +#4057 = FILL_AREA_STYLE_COLOUR('',#3911); +#4058 = CURVE_STYLE('',#4059,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4059 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4060 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4061),#3800); +#4061 = STYLED_ITEM('color',(#4062),#3775); +#4062 = PRESENTATION_STYLE_ASSIGNMENT((#4063,#4068)); +#4063 = SURFACE_STYLE_USAGE(.BOTH.,#4064); +#4064 = SURFACE_SIDE_STYLE('',(#4065)); +#4065 = SURFACE_STYLE_FILL_AREA(#4066); +#4066 = FILL_AREA_STYLE('',(#4067)); +#4067 = FILL_AREA_STYLE_COLOUR('',#3995); +#4068 = CURVE_STYLE('',#4069,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4069 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4070 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4071),#1113); +#4071 = STYLED_ITEM('color',(#4072),#1088); +#4072 = PRESENTATION_STYLE_ASSIGNMENT((#4073,#4078)); +#4073 = SURFACE_STYLE_USAGE(.BOTH.,#4074); +#4074 = SURFACE_SIDE_STYLE('',(#4075)); +#4075 = SURFACE_STYLE_FILL_AREA(#4076); +#4076 = FILL_AREA_STYLE('',(#4077)); +#4077 = FILL_AREA_STYLE_COLOUR('',#3911); +#4078 = CURVE_STYLE('',#4079,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4079 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4080 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4081),#2907); +#4081 = STYLED_ITEM('color',(#4082),#2882); +#4082 = PRESENTATION_STYLE_ASSIGNMENT((#4083,#4088)); +#4083 = SURFACE_STYLE_USAGE(.BOTH.,#4084); +#4084 = SURFACE_SIDE_STYLE('',(#4085)); +#4085 = SURFACE_STYLE_FILL_AREA(#4086); +#4086 = FILL_AREA_STYLE('',(#4087)); +#4087 = FILL_AREA_STYLE_COLOUR('',#3923); +#4088 = CURVE_STYLE('',#4089,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4089 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4090 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4091),#1389); +#4091 = STYLED_ITEM('color',(#4092),#1364); +#4092 = PRESENTATION_STYLE_ASSIGNMENT((#4093,#4098)); +#4093 = SURFACE_STYLE_USAGE(.BOTH.,#4094); +#4094 = SURFACE_SIDE_STYLE('',(#4095)); +#4095 = SURFACE_STYLE_FILL_AREA(#4096); +#4096 = FILL_AREA_STYLE('',(#4097)); +#4097 = FILL_AREA_STYLE_COLOUR('',#3911); +#4098 = CURVE_STYLE('',#4099,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4099 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4100 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4101),#2401); +#4101 = STYLED_ITEM('color',(#4102),#2376); +#4102 = PRESENTATION_STYLE_ASSIGNMENT((#4103,#4109)); +#4103 = SURFACE_STYLE_USAGE(.BOTH.,#4104); +#4104 = SURFACE_SIDE_STYLE('',(#4105)); +#4105 = SURFACE_STYLE_FILL_AREA(#4106); +#4106 = FILL_AREA_STYLE('',(#4107)); +#4107 = FILL_AREA_STYLE_COLOUR('',#4108); +#4108 = COLOUR_RGB('',0.333333345507,0.,0.); +#4109 = CURVE_STYLE('',#4110,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4110 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4111 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4112),#2953); +#4112 = STYLED_ITEM('color',(#4113),#2928); +#4113 = PRESENTATION_STYLE_ASSIGNMENT((#4114,#4119)); +#4114 = SURFACE_STYLE_USAGE(.BOTH.,#4115); +#4115 = SURFACE_SIDE_STYLE('',(#4116)); +#4116 = SURFACE_STYLE_FILL_AREA(#4117); +#4117 = FILL_AREA_STYLE('',(#4118)); +#4118 = FILL_AREA_STYLE_COLOUR('',#3923); +#4119 = CURVE_STYLE('',#4120,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4120 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4121 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4122),#2263); +#4122 = STYLED_ITEM('color',(#4123),#2238); +#4123 = PRESENTATION_STYLE_ASSIGNMENT((#4124,#4129)); +#4124 = SURFACE_STYLE_USAGE(.BOTH.,#4125); +#4125 = SURFACE_SIDE_STYLE('',(#4126)); +#4126 = SURFACE_STYLE_FILL_AREA(#4127); +#4127 = FILL_AREA_STYLE('',(#4128)); +#4128 = FILL_AREA_STYLE_COLOUR('',#3934); +#4129 = CURVE_STYLE('',#4130,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4130 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4131 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4132),#3202); +#4132 = STYLED_ITEM('color',(#4133),#3177); +#4133 = PRESENTATION_STYLE_ASSIGNMENT((#4134,#4139)); +#4134 = SURFACE_STYLE_USAGE(.BOTH.,#4135); +#4135 = SURFACE_SIDE_STYLE('',(#4136)); +#4136 = SURFACE_STYLE_FILL_AREA(#4137); +#4137 = FILL_AREA_STYLE('',(#4138)); +#4138 = FILL_AREA_STYLE_COLOUR('',#4006); +#4139 = CURVE_STYLE('',#4140,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4140 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4141 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4142),#3616); +#4142 = STYLED_ITEM('color',(#4143),#3591); +#4143 = PRESENTATION_STYLE_ASSIGNMENT((#4144,#4149)); +#4144 = SURFACE_STYLE_USAGE(.BOTH.,#4145); +#4145 = SURFACE_SIDE_STYLE('',(#4146)); +#4146 = SURFACE_STYLE_FILL_AREA(#4147); +#4147 = FILL_AREA_STYLE('',(#4148)); +#4148 = FILL_AREA_STYLE_COLOUR('',#4006); +#4149 = CURVE_STYLE('',#4150,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4150 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4151 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4152),#3248); +#4152 = STYLED_ITEM('color',(#4153),#3223); +#4153 = PRESENTATION_STYLE_ASSIGNMENT((#4154,#4159)); +#4154 = SURFACE_STYLE_USAGE(.BOTH.,#4155); +#4155 = SURFACE_SIDE_STYLE('',(#4156)); +#4156 = SURFACE_STYLE_FILL_AREA(#4157); +#4157 = FILL_AREA_STYLE('',(#4158)); +#4158 = FILL_AREA_STYLE_COLOUR('',#4006); +#4159 = CURVE_STYLE('',#4160,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4160 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4161 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4162),#3662); +#4162 = STYLED_ITEM('color',(#4163),#3637); +#4163 = PRESENTATION_STYLE_ASSIGNMENT((#4164,#4169)); +#4164 = SURFACE_STYLE_USAGE(.BOTH.,#4165); +#4165 = SURFACE_SIDE_STYLE('',(#4166)); +#4166 = SURFACE_STYLE_FILL_AREA(#4167); +#4167 = FILL_AREA_STYLE('',(#4168)); +#4168 = FILL_AREA_STYLE_COLOUR('',#3995); +#4169 = CURVE_STYLE('',#4170,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4170 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4171 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4172),#2585); +#4172 = STYLED_ITEM('color',(#4173),#2560); +#4173 = PRESENTATION_STYLE_ASSIGNMENT((#4174,#4179)); +#4174 = SURFACE_STYLE_USAGE(.BOTH.,#4175); +#4175 = SURFACE_SIDE_STYLE('',(#4176)); +#4176 = SURFACE_STYLE_FILL_AREA(#4177); +#4177 = FILL_AREA_STYLE('',(#4178)); +#4178 = FILL_AREA_STYLE_COLOUR('',#3923); +#4179 = CURVE_STYLE('',#4180,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4180 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4181 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4182),#1435); +#4182 = STYLED_ITEM('color',(#4183),#1410); +#4183 = PRESENTATION_STYLE_ASSIGNMENT((#4184,#4189)); +#4184 = SURFACE_STYLE_USAGE(.BOTH.,#4185); +#4185 = SURFACE_SIDE_STYLE('',(#4186)); +#4186 = SURFACE_STYLE_FILL_AREA(#4187); +#4187 = FILL_AREA_STYLE('',(#4188)); +#4188 = FILL_AREA_STYLE_COLOUR('',#3911); +#4189 = CURVE_STYLE('',#4190,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4190 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4191 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4192),#2355); +#4192 = STYLED_ITEM('color',(#4193),#2330); +#4193 = PRESENTATION_STYLE_ASSIGNMENT((#4194,#4199)); +#4194 = SURFACE_STYLE_USAGE(.BOTH.,#4195); +#4195 = SURFACE_SIDE_STYLE('',(#4196)); +#4196 = SURFACE_STYLE_FILL_AREA(#4197); +#4197 = FILL_AREA_STYLE('',(#4198)); +#4198 = FILL_AREA_STYLE_COLOUR('',#3934); +#4199 = CURVE_STYLE('',#4200,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4200 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4201 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4202),#3386); +#4202 = STYLED_ITEM('color',(#4203),#3361); +#4203 = PRESENTATION_STYLE_ASSIGNMENT((#4204,#4209)); +#4204 = SURFACE_STYLE_USAGE(.BOTH.,#4205); +#4205 = SURFACE_SIDE_STYLE('',(#4206)); +#4206 = SURFACE_STYLE_FILL_AREA(#4207); +#4207 = FILL_AREA_STYLE('',(#4208)); +#4208 = FILL_AREA_STYLE_COLOUR('',#4006); +#4209 = CURVE_STYLE('',#4210,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4210 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4211 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4212),#2815); +#4212 = STYLED_ITEM('color',(#4213),#2790); +#4213 = PRESENTATION_STYLE_ASSIGNMENT((#4214,#4219)); +#4214 = SURFACE_STYLE_USAGE(.BOTH.,#4215); +#4215 = SURFACE_SIDE_STYLE('',(#4216)); +#4216 = SURFACE_STYLE_FILL_AREA(#4217); +#4217 = FILL_AREA_STYLE('',(#4218)); +#4218 = FILL_AREA_STYLE_COLOUR('',#3923); +#4219 = CURVE_STYLE('',#4220,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4220 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4221 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4222),#3892); +#4222 = STYLED_ITEM('color',(#4223),#3867); +#4223 = PRESENTATION_STYLE_ASSIGNMENT((#4224,#4229)); +#4224 = SURFACE_STYLE_USAGE(.BOTH.,#4225); +#4225 = SURFACE_SIDE_STYLE('',(#4226)); +#4226 = SURFACE_STYLE_FILL_AREA(#4227); +#4227 = FILL_AREA_STYLE('',(#4228)); +#4228 = FILL_AREA_STYLE_COLOUR('',#3923); +#4229 = CURVE_STYLE('',#4230,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4230 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4231 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4232),#1205); +#4232 = STYLED_ITEM('color',(#4233),#1180); +#4233 = PRESENTATION_STYLE_ASSIGNMENT((#4234,#4239)); +#4234 = SURFACE_STYLE_USAGE(.BOTH.,#4235); +#4235 = SURFACE_SIDE_STYLE('',(#4236)); +#4236 = SURFACE_STYLE_FILL_AREA(#4237); +#4237 = FILL_AREA_STYLE('',(#4238)); +#4238 = FILL_AREA_STYLE_COLOUR('',#3911); +#4239 = CURVE_STYLE('',#4240,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4240 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4241 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4242),#1711); +#4242 = STYLED_ITEM('color',(#4243),#1686); +#4243 = PRESENTATION_STYLE_ASSIGNMENT((#4244,#4249)); +#4244 = SURFACE_STYLE_USAGE(.BOTH.,#4245); +#4245 = SURFACE_SIDE_STYLE('',(#4246)); +#4246 = SURFACE_STYLE_FILL_AREA(#4247); +#4247 = FILL_AREA_STYLE('',(#4248)); +#4248 = FILL_AREA_STYLE_COLOUR('',#4017); +#4249 = CURVE_STYLE('',#4250,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4250 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4251 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4252),#1251); +#4252 = STYLED_ITEM('color',(#4253),#1226); +#4253 = PRESENTATION_STYLE_ASSIGNMENT((#4254,#4259)); +#4254 = SURFACE_STYLE_USAGE(.BOTH.,#4255); +#4255 = SURFACE_SIDE_STYLE('',(#4256)); +#4256 = SURFACE_STYLE_FILL_AREA(#4257); +#4257 = FILL_AREA_STYLE('',(#4258)); +#4258 = FILL_AREA_STYLE_COLOUR('',#3911); +#4259 = CURVE_STYLE('',#4260,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4260 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4261 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4262),#3156); +#4262 = STYLED_ITEM('color',(#4263),#3131); +#4263 = PRESENTATION_STYLE_ASSIGNMENT((#4264,#4269)); +#4264 = SURFACE_STYLE_USAGE(.BOTH.,#4265); +#4265 = SURFACE_SIDE_STYLE('',(#4266)); +#4266 = SURFACE_STYLE_FILL_AREA(#4267); +#4267 = FILL_AREA_STYLE('',(#4268)); +#4268 = FILL_AREA_STYLE_COLOUR('',#4006); +#4269 = CURVE_STYLE('',#4270,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4270 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4271 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4272),#2079); +#4272 = STYLED_ITEM('color',(#4273),#2054); +#4273 = PRESENTATION_STYLE_ASSIGNMENT((#4274,#4279)); +#4274 = SURFACE_STYLE_USAGE(.BOTH.,#4275); +#4275 = SURFACE_SIDE_STYLE('',(#4276)); +#4276 = SURFACE_STYLE_FILL_AREA(#4277); +#4277 = FILL_AREA_STYLE('',(#4278)); +#4278 = FILL_AREA_STYLE_COLOUR('',#4017); +#4279 = CURVE_STYLE('',#4280,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4280 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4281 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4282),#2171); +#4282 = STYLED_ITEM('color',(#4283),#2146); +#4283 = PRESENTATION_STYLE_ASSIGNMENT((#4284,#4289)); +#4284 = SURFACE_STYLE_USAGE(.BOTH.,#4285); +#4285 = SURFACE_SIDE_STYLE('',(#4286)); +#4286 = SURFACE_STYLE_FILL_AREA(#4287); +#4287 = FILL_AREA_STYLE('',(#4288)); +#4288 = FILL_AREA_STYLE_COLOUR('',#3934); +#4289 = CURVE_STYLE('',#4290,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4290 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4291 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4292),#3294); +#4292 = STYLED_ITEM('color',(#4293),#3269); +#4293 = PRESENTATION_STYLE_ASSIGNMENT((#4294,#4299)); +#4294 = SURFACE_STYLE_USAGE(.BOTH.,#4295); +#4295 = SURFACE_SIDE_STYLE('',(#4296)); +#4296 = SURFACE_STYLE_FILL_AREA(#4297); +#4297 = FILL_AREA_STYLE('',(#4298)); +#4298 = FILL_AREA_STYLE_COLOUR('',#4006); +#4299 = CURVE_STYLE('',#4300,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4300 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4301 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4302),#1941); +#4302 = STYLED_ITEM('color',(#4303),#1916); +#4303 = PRESENTATION_STYLE_ASSIGNMENT((#4304,#4309)); +#4304 = SURFACE_STYLE_USAGE(.BOTH.,#4305); +#4305 = SURFACE_SIDE_STYLE('',(#4306)); +#4306 = SURFACE_STYLE_FILL_AREA(#4307); +#4307 = FILL_AREA_STYLE('',(#4308)); +#4308 = FILL_AREA_STYLE_COLOUR('',#4017); +#4309 = CURVE_STYLE('',#4310,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4310 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4311 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4312),#3708); +#4312 = STYLED_ITEM('color',(#4313),#3683); +#4313 = PRESENTATION_STYLE_ASSIGNMENT((#4314,#4319)); +#4314 = SURFACE_STYLE_USAGE(.BOTH.,#4315); +#4315 = SURFACE_SIDE_STYLE('',(#4316)); +#4316 = SURFACE_STYLE_FILL_AREA(#4317); +#4317 = FILL_AREA_STYLE('',(#4318)); +#4318 = FILL_AREA_STYLE_COLOUR('',#3995); +#4319 = CURVE_STYLE('',#4320,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4320 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4321 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4322),#1757); +#4322 = STYLED_ITEM('color',(#4323),#1732); +#4323 = PRESENTATION_STYLE_ASSIGNMENT((#4324,#4329)); +#4324 = SURFACE_STYLE_USAGE(.BOTH.,#4325); +#4325 = SURFACE_SIDE_STYLE('',(#4326)); +#4326 = SURFACE_STYLE_FILL_AREA(#4327); +#4327 = FILL_AREA_STYLE('',(#4328)); +#4328 = FILL_AREA_STYLE_COLOUR('',#4017); +#4329 = CURVE_STYLE('',#4330,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4330 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4331 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4332),#1619); +#4332 = STYLED_ITEM('color',(#4333),#1594); +#4333 = PRESENTATION_STYLE_ASSIGNMENT((#4334,#4339)); +#4334 = SURFACE_STYLE_USAGE(.BOTH.,#4335); +#4335 = SURFACE_SIDE_STYLE('',(#4336)); +#4336 = SURFACE_STYLE_FILL_AREA(#4337); +#4337 = FILL_AREA_STYLE('',(#4338)); +#4338 = FILL_AREA_STYLE_COLOUR('',#3911); +#4339 = CURVE_STYLE('',#4340,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4340 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4341 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4342),#2539); +#4342 = STYLED_ITEM('color',(#4343),#2514); +#4343 = PRESENTATION_STYLE_ASSIGNMENT((#4344,#4349)); +#4344 = SURFACE_STYLE_USAGE(.BOTH.,#4345); +#4345 = SURFACE_SIDE_STYLE('',(#4346)); +#4346 = SURFACE_STYLE_FILL_AREA(#4347); +#4347 = FILL_AREA_STYLE('',(#4348)); +#4348 = FILL_AREA_STYLE_COLOUR('',#3923); +#4349 = CURVE_STYLE('',#4350,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4350 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4351 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4352),#2723); +#4352 = STYLED_ITEM('color',(#4353),#2698); +#4353 = PRESENTATION_STYLE_ASSIGNMENT((#4354,#4359)); +#4354 = SURFACE_STYLE_USAGE(.BOTH.,#4355); +#4355 = SURFACE_SIDE_STYLE('',(#4356)); +#4356 = SURFACE_STYLE_FILL_AREA(#4357); +#4357 = FILL_AREA_STYLE('',(#4358)); +#4358 = FILL_AREA_STYLE_COLOUR('',#3923); +#4359 = CURVE_STYLE('',#4360,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4360 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4361 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4362),#2631); +#4362 = STYLED_ITEM('color',(#4363),#2606); +#4363 = PRESENTATION_STYLE_ASSIGNMENT((#4364,#4369)); +#4364 = SURFACE_STYLE_USAGE(.BOTH.,#4365); +#4365 = SURFACE_SIDE_STYLE('',(#4366)); +#4366 = SURFACE_STYLE_FILL_AREA(#4367); +#4367 = FILL_AREA_STYLE('',(#4368)); +#4368 = FILL_AREA_STYLE_COLOUR('',#3923); +#4369 = CURVE_STYLE('',#4370,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4370 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4371 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4372),#2033); +#4372 = STYLED_ITEM('color',(#4373),#2008); +#4373 = PRESENTATION_STYLE_ASSIGNMENT((#4374,#4379)); +#4374 = SURFACE_STYLE_USAGE(.BOTH.,#4375); +#4375 = SURFACE_SIDE_STYLE('',(#4376)); +#4376 = SURFACE_STYLE_FILL_AREA(#4377); +#4377 = FILL_AREA_STYLE('',(#4378)); +#4378 = FILL_AREA_STYLE_COLOUR('',#4017); +#4379 = CURVE_STYLE('',#4380,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4380 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4381 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4382),#3570); +#4382 = STYLED_ITEM('color',(#4383),#3545); +#4383 = PRESENTATION_STYLE_ASSIGNMENT((#4384,#4389)); +#4384 = SURFACE_STYLE_USAGE(.BOTH.,#4385); +#4385 = SURFACE_SIDE_STYLE('',(#4386)); +#4386 = SURFACE_STYLE_FILL_AREA(#4387); +#4387 = FILL_AREA_STYLE('',(#4388)); +#4388 = FILL_AREA_STYLE_COLOUR('',#4006); +#4389 = CURVE_STYLE('',#4390,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4390 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4391 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4392),#1021); +#4392 = STYLED_ITEM('color',(#4393),#996); +#4393 = PRESENTATION_STYLE_ASSIGNMENT((#4394,#4399)); +#4394 = SURFACE_STYLE_USAGE(.BOTH.,#4395); +#4395 = SURFACE_SIDE_STYLE('',(#4396)); +#4396 = SURFACE_STYLE_FILL_AREA(#4397); +#4397 = FILL_AREA_STYLE('',(#4398)); +#4398 = FILL_AREA_STYLE_COLOUR('',#3911); +#4399 = CURVE_STYLE('',#4400,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4400 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4401 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4402),#1987); +#4402 = STYLED_ITEM('color',(#4403),#1962); +#4403 = PRESENTATION_STYLE_ASSIGNMENT((#4404,#4409)); +#4404 = SURFACE_STYLE_USAGE(.BOTH.,#4405); +#4405 = SURFACE_SIDE_STYLE('',(#4406)); +#4406 = SURFACE_STYLE_FILL_AREA(#4407); +#4407 = FILL_AREA_STYLE('',(#4408)); +#4408 = FILL_AREA_STYLE_COLOUR('',#4017); +#4409 = CURVE_STYLE('',#4410,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4410 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4411 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4412),#3432); +#4412 = STYLED_ITEM('color',(#4413),#3407); +#4413 = PRESENTATION_STYLE_ASSIGNMENT((#4414,#4419)); +#4414 = SURFACE_STYLE_USAGE(.BOTH.,#4415); +#4415 = SURFACE_SIDE_STYLE('',(#4416)); +#4416 = SURFACE_STYLE_FILL_AREA(#4417); +#4417 = FILL_AREA_STYLE('',(#4418)); +#4418 = FILL_AREA_STYLE_COLOUR('',#4006); +#4419 = CURVE_STYLE('',#4420,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4420 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4421 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4422),#2125); +#4422 = STYLED_ITEM('color',(#4423),#2100); +#4423 = PRESENTATION_STYLE_ASSIGNMENT((#4424,#4429)); +#4424 = SURFACE_STYLE_USAGE(.BOTH.,#4425); +#4425 = SURFACE_SIDE_STYLE('',(#4426)); +#4426 = SURFACE_STYLE_FILL_AREA(#4427); +#4427 = FILL_AREA_STYLE('',(#4428)); +#4428 = FILL_AREA_STYLE_COLOUR('',#4017); +#4429 = CURVE_STYLE('',#4430,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4430 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4431 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4432),#3340); +#4432 = STYLED_ITEM('color',(#4433),#3315); +#4433 = PRESENTATION_STYLE_ASSIGNMENT((#4434,#4439)); +#4434 = SURFACE_STYLE_USAGE(.BOTH.,#4435); +#4435 = SURFACE_SIDE_STYLE('',(#4436)); +#4436 = SURFACE_STYLE_FILL_AREA(#4437); +#4437 = FILL_AREA_STYLE('',(#4438)); +#4438 = FILL_AREA_STYLE_COLOUR('',#4006); +#4439 = CURVE_STYLE('',#4440,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4440 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4441 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4442),#3846); +#4442 = STYLED_ITEM('color',(#4443),#3821); +#4443 = PRESENTATION_STYLE_ASSIGNMENT((#4444,#4449)); +#4444 = SURFACE_STYLE_USAGE(.BOTH.,#4445); +#4445 = SURFACE_SIDE_STYLE('',(#4446)); +#4446 = SURFACE_STYLE_FILL_AREA(#4447); +#4447 = FILL_AREA_STYLE('',(#4448)); +#4448 = FILL_AREA_STYLE_COLOUR('',#3995); +#4449 = CURVE_STYLE('',#4450,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4450 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4451 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4452),#1573); +#4452 = STYLED_ITEM('color',(#4453),#1548); +#4453 = PRESENTATION_STYLE_ASSIGNMENT((#4454,#4459)); +#4454 = SURFACE_STYLE_USAGE(.BOTH.,#4455); +#4455 = SURFACE_SIDE_STYLE('',(#4456)); +#4456 = SURFACE_STYLE_FILL_AREA(#4457); +#4457 = FILL_AREA_STYLE('',(#4458)); +#4458 = FILL_AREA_STYLE_COLOUR('',#3911); +#4459 = CURVE_STYLE('',#4460,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4460 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4461 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4462),#2861); +#4462 = STYLED_ITEM('color',(#4463),#2836); +#4463 = PRESENTATION_STYLE_ASSIGNMENT((#4464,#4469)); +#4464 = SURFACE_STYLE_USAGE(.BOTH.,#4465); +#4465 = SURFACE_SIDE_STYLE('',(#4466)); +#4466 = SURFACE_STYLE_FILL_AREA(#4467); +#4467 = FILL_AREA_STYLE('',(#4468)); +#4468 = FILL_AREA_STYLE_COLOUR('',#3923); +#4469 = CURVE_STYLE('',#4470,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4470 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4471 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4472),#2493); +#4472 = STYLED_ITEM('color',(#4473),#2468); +#4473 = PRESENTATION_STYLE_ASSIGNMENT((#4474,#4479)); +#4474 = SURFACE_STYLE_USAGE(.BOTH.,#4475); +#4475 = SURFACE_SIDE_STYLE('',(#4476)); +#4476 = SURFACE_STYLE_FILL_AREA(#4477); +#4477 = FILL_AREA_STYLE('',(#4478)); +#4478 = FILL_AREA_STYLE_COLOUR('',#3923); +#4479 = CURVE_STYLE('',#4480,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4480 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4481 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4482),#1849); +#4482 = STYLED_ITEM('color',(#4483),#1824); +#4483 = PRESENTATION_STYLE_ASSIGNMENT((#4484,#4489)); +#4484 = SURFACE_STYLE_USAGE(.BOTH.,#4485); +#4485 = SURFACE_SIDE_STYLE('',(#4486)); +#4486 = SURFACE_STYLE_FILL_AREA(#4487); +#4487 = FILL_AREA_STYLE('',(#4488)); +#4488 = FILL_AREA_STYLE_COLOUR('',#4017); +#4489 = CURVE_STYLE('',#4490,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4490 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4491 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4492),#2769); +#4492 = STYLED_ITEM('color',(#4493),#2744); +#4493 = PRESENTATION_STYLE_ASSIGNMENT((#4494,#4499)); +#4494 = SURFACE_STYLE_USAGE(.BOTH.,#4495); +#4495 = SURFACE_SIDE_STYLE('',(#4496)); +#4496 = SURFACE_STYLE_FILL_AREA(#4497); +#4497 = FILL_AREA_STYLE('',(#4498)); +#4498 = FILL_AREA_STYLE_COLOUR('',#3923); +#4499 = CURVE_STYLE('',#4500,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4500 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4501 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4502),#1665); +#4502 = STYLED_ITEM('color',(#4503),#1640); +#4503 = PRESENTATION_STYLE_ASSIGNMENT((#4504,#4509)); +#4504 = SURFACE_STYLE_USAGE(.BOTH.,#4505); +#4505 = SURFACE_SIDE_STYLE('',(#4506)); +#4506 = SURFACE_STYLE_FILL_AREA(#4507); +#4507 = FILL_AREA_STYLE('',(#4508)); +#4508 = FILL_AREA_STYLE_COLOUR('',#4017); +#4509 = CURVE_STYLE('',#4510,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4510 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4511 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4512,#4522),#975); +#4512 = STYLED_ITEM('color',(#4513),#287); +#4513 = PRESENTATION_STYLE_ASSIGNMENT((#4514,#4520)); +#4514 = SURFACE_STYLE_USAGE(.BOTH.,#4515); +#4515 = SURFACE_SIDE_STYLE('',(#4516)); +#4516 = SURFACE_STYLE_FILL_AREA(#4517); +#4517 = FILL_AREA_STYLE('',(#4518)); +#4518 = FILL_AREA_STYLE_COLOUR('',#4519); +#4519 = COLOUR_RGB('',0.800000010877,0.800000010877,0.800000010877); +#4520 = CURVE_STYLE('',#4521,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4521 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4522 = STYLED_ITEM('color',(#4523),#380); +#4523 = PRESENTATION_STYLE_ASSIGNMENT((#4524,#4529)); +#4524 = SURFACE_STYLE_USAGE(.BOTH.,#4525); +#4525 = SURFACE_SIDE_STYLE('',(#4526)); +#4526 = SURFACE_STYLE_FILL_AREA(#4527); +#4527 = FILL_AREA_STYLE('',(#4528)); +#4528 = FILL_AREA_STYLE_COLOUR('',#4519); +#4529 = CURVE_STYLE('',#4530,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4530 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4531 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4532),#1067); +#4532 = STYLED_ITEM('color',(#4533),#1042); +#4533 = PRESENTATION_STYLE_ASSIGNMENT((#4534,#4539)); +#4534 = SURFACE_STYLE_USAGE(.BOTH.,#4535); +#4535 = SURFACE_SIDE_STYLE('',(#4536)); +#4536 = SURFACE_STYLE_FILL_AREA(#4537); +#4537 = FILL_AREA_STYLE('',(#4538)); +#4538 = FILL_AREA_STYLE_COLOUR('',#3911); +#4539 = CURVE_STYLE('',#4540,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4540 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4541 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4542),#3478); +#4542 = STYLED_ITEM('color',(#4543),#3453); +#4543 = PRESENTATION_STYLE_ASSIGNMENT((#4544,#4549)); +#4544 = SURFACE_STYLE_USAGE(.BOTH.,#4545); +#4545 = SURFACE_SIDE_STYLE('',(#4546)); +#4546 = SURFACE_STYLE_FILL_AREA(#4547); +#4547 = FILL_AREA_STYLE('',(#4548)); +#4548 = FILL_AREA_STYLE_COLOUR('',#4006); +#4549 = CURVE_STYLE('',#4550,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4550 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#4551 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',( + #4552),#1803); +#4552 = STYLED_ITEM('color',(#4553),#1778); +#4553 = PRESENTATION_STYLE_ASSIGNMENT((#4554,#4559)); +#4554 = SURFACE_STYLE_USAGE(.BOTH.,#4555); +#4555 = SURFACE_SIDE_STYLE('',(#4556)); +#4556 = SURFACE_STYLE_FILL_AREA(#4557); +#4557 = FILL_AREA_STYLE('',(#4558)); +#4558 = FILL_AREA_STYLE_COLOUR('',#4017); +#4559 = CURVE_STYLE('',#4560,POSITIVE_LENGTH_MEASURE(0.1),#3914); +#4560 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +ENDSEC; +END-ISO-10303-21; From 78c625825c594103a1d44c0e596028a826708ab4 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Mon, 13 Oct 2025 07:38:41 +0200 Subject: [PATCH 08/23] Reverts order 1 to order 3. --- src/mesher.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mesher.py b/src/mesher.py index 4e02fe0..320903b 100644 --- a/src/mesher.py +++ b/src/mesher.py @@ -14,7 +14,7 @@ class Mesher(): "Mesh.MshFileVersion": 2.2, # Required for MFEM compatibility "Mesh.MeshSizeFromCurvature": 50, - "Mesh.ElementOrder": 1, + "Mesh.ElementOrder": 3, "Mesh.ScalingFactor": 1e-3, "Mesh.SurfaceFaces": 1, "Mesh.MeshSizeMax": 40, From cc1a97dd5988f2a27e6fdf6ef75a70397edfbc30 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Mon, 13 Oct 2025 11:07:33 +0200 Subject: [PATCH 09/23] Includes test to check that there are no duplicate nodes. --- test/test_mesher.py | 71 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 68 insertions(+), 3 deletions(-) diff --git a/test/test_mesher.py b/test/test_mesher.py index d6b26a2..ff722cd 100644 --- a/test/test_mesher.py +++ b/test/test_mesher.py @@ -2,6 +2,9 @@ import os import unittest import sys +import copy +from typing import Dict, List, Tuple, Optional + from pathlib import Path from src.mesher import Mesher from src.ShapesClassification import ShapesClassification @@ -47,6 +50,55 @@ def countEntitiesInPhysicalGroupWithName(self, name: str): def inputFileFromCaseName(self, caseName): return self.testdataPath + caseName + '/' + caseName + ".step" + + def find_duplicate_nodes(tol: Optional[float] = None) -> \ + Tuple[bool, Dict[Tuple[float, float, float], List[int]]]: + """ + Check if any two nodes in the *current* Gmsh model share the same coordinates. + + Parameters + ---------- + tol : float or None + - None -> exact (bit-for-bit) coordinate equality + - float -> near-duplicate check using a grid of size `tol` + + Returns + ------- + has_duplicates : bool + True if any duplicate (or near-duplicate) node groups are found. + groups : dict + Mapping from coordinate key -> list of node tags that share that location. + - For exact mode, the key is the exact (x, y, z) tuple. + - For tol mode, the key is the *rounded* (x, y, z) tuple (grid index). + """ + node_tags, node_coords, _ = gmsh.model.mesh.getNodes() + + def key_exact(i: int) -> Tuple[float, float, float]: + return (node_coords[3*i], node_coords[3*i+1], node_coords[3*i+2]) + + def key_tol(i: int, t: float) -> Tuple[int, int, int]: + x, y, z = node_coords[3*i], node_coords[3*i+1], node_coords[3*i+2] + return (round(x / t), round(y / t), round(z / t)) + + groups: Dict[Tuple[float, float, float], List[int]] = {} + groups_tol: Dict[Tuple[int, int, int], List[int]] = {} + + if tol is None: + # Exact mode + for idx, tag in enumerate(node_tags): + k = key_exact(idx) + groups.setdefault(k, []).append(tag) + # Keep only groups with more than one node + groups = {k: v for k, v in groups.items() if len(v) > 1} + return (len(groups) > 0, groups) + + else: + # Tolerance (grid rounding) mode + for idx, tag in enumerate(node_tags): + k = key_tol(idx, tol) + groups_tol.setdefault(k, []).append(tag) + groups_tol = {k: v for k, v in groups_tol.items() if len(v) > 1} + return (len(groups_tol) > 0, groups_tol) def test_get_number_from_entity_name(self): self.assertEqual( @@ -270,11 +322,21 @@ def test_conductor_and_outer_dielectric(self): def test_realistic_case_with_dielectrics_fdtd_cell(self): caseName = 'realistic_case_with_dielectrics_fdtd_cell' - Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) + meshing_options = copy.deepcopy(Mesher.DEFAULT_MESHING_OPTIONS) + meshing_options["Mesh.ElementOrder"] = 1 + + Mesher().meshFromStep( + self.inputFileFromCaseName(caseName), + caseName, + meshingOptions=meshing_options) + # For debugging. gmsh.write(caseName + '.vtk') gmsh.write(caseName + '.msh') + has_dups, _ = TestMesher.find_duplicate_nodes() + assert not has_dups + pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] @@ -302,8 +364,11 @@ def test_lansink2024_single_wire_multipolar(self): caseName = 'lansink2024_single_wire_multipolar' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - # gmsh.write(caseName + '.msh') - # gmsh.write(caseName + '.vtk') + gmsh.write(caseName + '.msh') + gmsh.write(caseName + '.vtk') + + has_dups, _ = TestMesher.find_duplicate_nodes() + assert not has_dups pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] From f9de401f04aad630ad0fa649fbce915ace5b0365 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Mon, 13 Oct 2025 11:15:58 +0200 Subject: [PATCH 10/23] Add duplicate node checks in mesh tests --- test/test_mesher.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/test/test_mesher.py b/test/test_mesher.py index ff722cd..4ffeca6 100644 --- a/test/test_mesher.py +++ b/test/test_mesher.py @@ -119,6 +119,9 @@ def test_mesh_from_step_with_partially_filled_coax(self): caseName = 'partially_filled_coax' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) + has_dups, _ = TestMesher.find_duplicate_nodes() + assert not has_dups + pGs = gmsh.model.getPhysicalGroups() self.assertEqual(len(pGs), 4) @@ -137,6 +140,9 @@ def test_mesh_from_step_with_empty_coax(self): # gmsh.write(caseName + '.msh') # gmsh.write(caseName + '.vtk') + has_dups, _ = TestMesher.find_duplicate_nodes() + assert not has_dups + pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] expectedNames = ['Conductor_0', 'Conductor_1', 'Vacuum_0'] @@ -150,6 +156,9 @@ def test_mesh_from_step_with_two_wires_coax(self): caseName = 'two_wires_coax' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) + has_dups, _ = TestMesher.find_duplicate_nodes() + assert not has_dups + pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] expectedNames = ['Conductor_0', @@ -166,6 +175,9 @@ def test_mesh_from_step_with_two_wires_open(self): Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) # gmsh.write(caseName + '.vtk') + has_dups, _ = TestMesher.find_duplicate_nodes() + assert not has_dups + pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] expectedNames = ['Conductor_0', 'Conductor_1', @@ -189,6 +201,9 @@ def test_mesh_dielectric_pair_open(self) -> None: Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) # gmsh.write(caseName + '.vtk') + has_dups, _ = TestMesher.find_duplicate_nodes() + assert not has_dups + self.assertPhysicalGroup(expectedNames, expectedEntities) def test_mesh_from_step_with_five_wires(self): @@ -203,6 +218,10 @@ def test_mesh_from_step_with_five_wires(self): caseName = 'five_wires' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) + + has_dups, _ = TestMesher.find_duplicate_nodes() + assert not has_dups + pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] self.assertEqual(sorted(pGNames), sorted(expectedNames)) @@ -217,6 +236,9 @@ def test_mesh_from_step_with_three_wires_ribbon(self): # gmsh.write(caseName + '.vtk') + has_dups, _ = TestMesher.find_duplicate_nodes() + assert not has_dups + pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] expectedNames = [ @@ -240,6 +262,9 @@ def test_mesh_from_step_with_nested_coax(self): caseName = 'nested_coax' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) + has_dups, _ = TestMesher.find_duplicate_nodes() + assert not has_dups + pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] expectedNames = ['Conductor_0', @@ -262,6 +287,9 @@ def test_mesh_from_step_with_agrawal1981(self): # gmsh.write(caseName + '.vtk') # gmsh.fltk.run() + has_dups, _ = TestMesher.find_duplicate_nodes() + assert not has_dups + pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] expectedNames = ['Conductor_0', 'Conductor_1', 'Conductor_2', 'Conductor_3', @@ -283,6 +311,9 @@ def test_unshielded_multiwire(self): # gmsh.write(caseName + '.vtk') + has_dups, _ = TestMesher.find_duplicate_nodes() + assert not has_dups + pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] expectedNames = ['Conductor_0', 'Conductor_1', 'Dielectric_0', @@ -304,6 +335,9 @@ def test_conductor_and_outer_dielectric(self): gmsh.write(caseName + '.vtk') gmsh.write(caseName + '.msh') + has_dups, _ = TestMesher.find_duplicate_nodes() + assert not has_dups + pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] expectedNames = ['Conductor_0', From 545c8163df723533a48348e25cbfc09b41af8e77 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Mon, 13 Oct 2025 12:11:11 +0200 Subject: [PATCH 11/23] Fixes problem with duplicated nodes --- src/mesher.py | 36 +++++++++++++++ test/test_mesher.py | 105 ++++++-------------------------------------- 2 files changed, 50 insertions(+), 91 deletions(-) diff --git a/src/mesher.py b/src/mesher.py index 320903b..47e40d3 100644 --- a/src/mesher.py +++ b/src/mesher.py @@ -28,6 +28,37 @@ class Mesher(): # "Geometry.Tolerance": 1e-3, } + @staticmethod + def findDuplicateNodes() -> \ + Tuple[bool, Dict[Tuple[float, float, float], List[int]]]: + """ + Check if any two nodes in the *current* Gmsh model share the same coordinates. + Uses exact (bit-for-bit) coordinate equality. + + Returns + ------- + has_duplicates : bool + True if any duplicate node groups are found. + groups : dict + Mapping from coordinate key -> list of node tags that share that location. + The key is the exact (x, y, z) tuple. + """ + node_tags, node_coords, _ = gmsh.model.mesh.getNodes() + + def key_exact(i: int) -> Tuple[float, float, float]: + return (node_coords[3*i], node_coords[3*i+1], node_coords[3*i+2]) + + groups: Dict[Tuple[float, float, float], List[int]] = {} + + # Exact mode only + for idx, tag in enumerate(node_tags): + k = key_exact(idx) + groups.setdefault(k, []).append(tag) + # Keep only groups with more than one node + groups = {k: v for k, v in groups.items() if len(v) > 1} + return (len(groups) > 0, groups) + + def runFromInput(self, inputFile, runGui=False): caseName = Path(inputFile).stem @@ -79,6 +110,11 @@ def meshFromStep(self, inputFile: str, caseName: str, meshingOptions=None) -> Di gmsh.option.setNumber(opt, val) gmsh.model.mesh.generate(2) + gmsh.model.mesh.removeDuplicateNodes() + + has_dups, _ = self.findDuplicateNodes() + assert not has_dups + return mappedComponents diff --git a/test/test_mesher.py b/test/test_mesher.py index 4ffeca6..adc3866 100644 --- a/test/test_mesher.py +++ b/test/test_mesher.py @@ -50,56 +50,7 @@ def countEntitiesInPhysicalGroupWithName(self, name: str): def inputFileFromCaseName(self, caseName): return self.testdataPath + caseName + '/' + caseName + ".step" - - def find_duplicate_nodes(tol: Optional[float] = None) -> \ - Tuple[bool, Dict[Tuple[float, float, float], List[int]]]: - """ - Check if any two nodes in the *current* Gmsh model share the same coordinates. - - Parameters - ---------- - tol : float or None - - None -> exact (bit-for-bit) coordinate equality - - float -> near-duplicate check using a grid of size `tol` - - Returns - ------- - has_duplicates : bool - True if any duplicate (or near-duplicate) node groups are found. - groups : dict - Mapping from coordinate key -> list of node tags that share that location. - - For exact mode, the key is the exact (x, y, z) tuple. - - For tol mode, the key is the *rounded* (x, y, z) tuple (grid index). - """ - node_tags, node_coords, _ = gmsh.model.mesh.getNodes() - - def key_exact(i: int) -> Tuple[float, float, float]: - return (node_coords[3*i], node_coords[3*i+1], node_coords[3*i+2]) - - def key_tol(i: int, t: float) -> Tuple[int, int, int]: - x, y, z = node_coords[3*i], node_coords[3*i+1], node_coords[3*i+2] - return (round(x / t), round(y / t), round(z / t)) - - groups: Dict[Tuple[float, float, float], List[int]] = {} - groups_tol: Dict[Tuple[int, int, int], List[int]] = {} - - if tol is None: - # Exact mode - for idx, tag in enumerate(node_tags): - k = key_exact(idx) - groups.setdefault(k, []).append(tag) - # Keep only groups with more than one node - groups = {k: v for k, v in groups.items() if len(v) > 1} - return (len(groups) > 0, groups) - - else: - # Tolerance (grid rounding) mode - for idx, tag in enumerate(node_tags): - k = key_tol(idx, tol) - groups_tol.setdefault(k, []).append(tag) - groups_tol = {k: v for k, v in groups_tol.items() if len(v) > 1} - return (len(groups_tol) > 0, groups_tol) - + def test_get_number_from_entity_name(self): self.assertEqual( ShapesClassification.getNumberFromName( @@ -117,10 +68,18 @@ def test_get_number_from_entity_name(self): def test_mesh_from_step_with_partially_filled_coax(self): caseName = 'partially_filled_coax' - Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - has_dups, _ = TestMesher.find_duplicate_nodes() - assert not has_dups + meshing_options = copy.deepcopy(Mesher.DEFAULT_MESHING_OPTIONS) + meshing_options["Mesh.ElementOrder"] = 3 + + Mesher().meshFromStep( + self.inputFileFromCaseName(caseName), + caseName, + meshing_options) + + # For debugging + gmsh.write(caseName + '.msh') + gmsh.write(caseName + '.vtk') pGs = gmsh.model.getPhysicalGroups() self.assertEqual(len(pGs), 4) @@ -137,11 +96,8 @@ def test_mesh_from_step_with_partially_filled_coax(self): def test_mesh_from_step_with_empty_coax(self): caseName = 'empty_coax' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - # gmsh.write(caseName + '.msh') - # gmsh.write(caseName + '.vtk') - - has_dups, _ = TestMesher.find_duplicate_nodes() - assert not has_dups + gmsh.write(caseName + '.msh') + gmsh.write(caseName + '.vtk') pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] @@ -156,9 +112,6 @@ def test_mesh_from_step_with_two_wires_coax(self): caseName = 'two_wires_coax' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - has_dups, _ = TestMesher.find_duplicate_nodes() - assert not has_dups - pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] expectedNames = ['Conductor_0', @@ -175,9 +128,6 @@ def test_mesh_from_step_with_two_wires_open(self): Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) # gmsh.write(caseName + '.vtk') - has_dups, _ = TestMesher.find_duplicate_nodes() - assert not has_dups - pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] expectedNames = ['Conductor_0', 'Conductor_1', @@ -201,9 +151,6 @@ def test_mesh_dielectric_pair_open(self) -> None: Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) # gmsh.write(caseName + '.vtk') - has_dups, _ = TestMesher.find_duplicate_nodes() - assert not has_dups - self.assertPhysicalGroup(expectedNames, expectedEntities) def test_mesh_from_step_with_five_wires(self): @@ -219,9 +166,6 @@ def test_mesh_from_step_with_five_wires(self): caseName = 'five_wires' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - has_dups, _ = TestMesher.find_duplicate_nodes() - assert not has_dups - pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] self.assertEqual(sorted(pGNames), sorted(expectedNames)) @@ -236,9 +180,6 @@ def test_mesh_from_step_with_three_wires_ribbon(self): # gmsh.write(caseName + '.vtk') - has_dups, _ = TestMesher.find_duplicate_nodes() - assert not has_dups - pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] expectedNames = [ @@ -262,9 +203,6 @@ def test_mesh_from_step_with_nested_coax(self): caseName = 'nested_coax' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - has_dups, _ = TestMesher.find_duplicate_nodes() - assert not has_dups - pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] expectedNames = ['Conductor_0', @@ -287,9 +225,6 @@ def test_mesh_from_step_with_agrawal1981(self): # gmsh.write(caseName + '.vtk') # gmsh.fltk.run() - has_dups, _ = TestMesher.find_duplicate_nodes() - assert not has_dups - pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] expectedNames = ['Conductor_0', 'Conductor_1', 'Conductor_2', 'Conductor_3', @@ -311,9 +246,6 @@ def test_unshielded_multiwire(self): # gmsh.write(caseName + '.vtk') - has_dups, _ = TestMesher.find_duplicate_nodes() - assert not has_dups - pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] expectedNames = ['Conductor_0', 'Conductor_1', 'Dielectric_0', @@ -335,9 +267,6 @@ def test_conductor_and_outer_dielectric(self): gmsh.write(caseName + '.vtk') gmsh.write(caseName + '.msh') - has_dups, _ = TestMesher.find_duplicate_nodes() - assert not has_dups - pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] expectedNames = ['Conductor_0', @@ -368,9 +297,6 @@ def test_realistic_case_with_dielectrics_fdtd_cell(self): gmsh.write(caseName + '.vtk') gmsh.write(caseName + '.msh') - has_dups, _ = TestMesher.find_duplicate_nodes() - assert not has_dups - pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] @@ -401,9 +327,6 @@ def test_lansink2024_single_wire_multipolar(self): gmsh.write(caseName + '.msh') gmsh.write(caseName + '.vtk') - has_dups, _ = TestMesher.find_duplicate_nodes() - assert not has_dups - pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] expectedNames = ['Conductor_0', From bde2f5b09b64581cb57660bb7b8db9d9968822c5 Mon Sep 17 00:00:00 2001 From: adrianarce-elemwave Date: Tue, 14 Oct 2025 13:03:46 +0200 Subject: [PATCH 12/23] Minor | Added complex nested cas and updated doc --- README.md | 7 + test/test_mesher.py | 23 +- .../UnshieldedNested/UnshieldedNested.FCStd | Bin 0 -> 11971 bytes .../UnshieldedNested/UnshieldedNested.json | 22 ++ .../UnshieldedNested/UnshieldedNested.step | 230 ++++++++++++++++++ 5 files changed, 281 insertions(+), 1 deletion(-) create mode 100644 testData/UnshieldedNested/UnshieldedNested.FCStd create mode 100644 testData/UnshieldedNested/UnshieldedNested.json create mode 100644 testData/UnshieldedNested/UnshieldedNested.step diff --git a/README.md b/README.md index 2b4b8fd..e2da77e 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,13 @@ Install requirements with ## Usage +Step2gmsh requires two diferent files: +- A json file where material properties are described for each geometry +- A step file with all the geometry info + +Both files must have the same label and share folder path. +An example of those files can be found in [Five wires case](testData/five_wires/) + Launch from command line as ```shell diff --git a/test/test_mesher.py b/test/test_mesher.py index c371d0d..34d7cd1 100644 --- a/test/test_mesher.py +++ b/test/test_mesher.py @@ -268,13 +268,34 @@ def test_lansink2024_single_wire_multipolar(self): 'OpenBoundary_0', 'Vacuum_0', 'Vacuum_1'] expectedEntities = [1, 1, 1, - 1, 1, 1] self.assertEqual(sorted(pGNames), sorted(expectedNames)) for idx, name in enumerate(expectedNames): self.assertEqual(self.countEntitiesInPhysicalGroupWithName(name), expectedEntities[idx], name) + def test_unshielded_nesting(self): + caseName = 'UnshieldedNested' + Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) + + #gmsh.write(caseName + '.msh') + #gmsh.write(caseName + '.vtk') + + pGs = gmsh.model.getPhysicalGroups() + pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] + expectedNames = ['Conductor_0', + 'Conductor_1', + 'Conductor_2', + 'OpenBoundary_0', + 'Vacuum_0', 'Vacuum_1'] + expectedEntities = [2, 1, 1, + 1, + 2, 1] + self.assertEqual(sorted(pGNames), sorted(expectedNames)) + + for idx, name in enumerate(expectedNames): + self.assertEqual(self.countEntitiesInPhysicalGroupWithName(name), expectedEntities[idx], name) + if __name__ == '__main__': unittest.main() \ No newline at end of file diff --git a/testData/UnshieldedNested/UnshieldedNested.FCStd b/testData/UnshieldedNested/UnshieldedNested.FCStd new file mode 100644 index 0000000000000000000000000000000000000000..faae23a86493b927ec797a81ee9d64e7a5f7c1df GIT binary patch literal 11971 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 h(=f1)QxOmRHv Date: Wed, 15 Oct 2025 08:02:20 +0200 Subject: [PATCH 13/23] Changes near region size to 1.15 --- src/ShapesClassification.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ShapesClassification.py b/src/ShapesClassification.py index baca977..a96522a 100644 --- a/src/ShapesClassification.py +++ b/src/ShapesClassification.py @@ -127,7 +127,7 @@ def _buildClosedVacuumDomain(self) -> Tuple[int, int]: return dict([['Vacuum_0', dom]]) def _buildDefaultVacuumDomain(self): - NEAR_REGION_BOUNDING_BOX_SCALING_FACTOR = 1.25 + NEAR_REGION_BOUNDING_BOX_SCALING_FACTOR = 1.15 FAR_REGION_DISK_SCALING_FACTOR = 4.0 nonVacuumSurfaces = [] for _, surf in self.pecs.items(): From 1dcf29b106c81307e18a5ae1540d0c79a20bc626 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Wed, 15 Oct 2025 08:44:41 +0200 Subject: [PATCH 14/23] [WIP] Possibility of defining open boundary --- src/Graph.py | 1 - src/ShapesClassification.py | 124 +- src/mesher.py | 40 +- test/test_mesher.py | 32 +- ...electricShieldedPair.20250930-134420.FCBak | Bin 9334 -> 0 bytes .../DielectricShieldedPair.json | 6 +- .../DielectricUnshieldedPair.json | 6 +- ...ectricUnshieldedPairDefinedBoundary.FCStd} | Bin ...electricUnshieldedPairDefinedBoundary.json | 34 + ...electricUnshieldedPairDefinedBoundary.step | 352 ++++++ .../partially_filled_coax.json | 3 +- ...stic_case_with_dielectrics_fdtd_cell.FCStd | Bin 118388 -> 118603 bytes ...istic_case_with_dielectrics_fdtd_cell.json | 65 +- ...istic_case_with_dielectrics_fdtd_cell.step | 1042 +++++++++-------- .../three_wires_ribbon.20250709-095732.FCBak | Bin 15650 -> 0 bytes .../two_wires_open.20250709-095732.FCBak | Bin 5861 -> 0 bytes 16 files changed, 1077 insertions(+), 628 deletions(-) delete mode 100644 testData/DielectricShieldedPair/DielectricShieldedPair.20250930-134420.FCBak rename testData/{FusedConductor/FusedConductor.20250930-153234.FCBak => DielectricUnshieldedPairDefinedBoundary/DielectricUnshieldedPairDefinedBoundary.FCStd} (100%) create mode 100644 testData/DielectricUnshieldedPairDefinedBoundary/DielectricUnshieldedPairDefinedBoundary.json create mode 100644 testData/DielectricUnshieldedPairDefinedBoundary/DielectricUnshieldedPairDefinedBoundary.step delete mode 100644 testData/three_wires_ribbon/three_wires_ribbon.20250709-095732.FCBak delete mode 100644 testData/two_wires_open/two_wires_open.20250709-095732.FCBak diff --git a/src/Graph.py b/src/Graph.py index 2806609..c370356 100644 --- a/src/Graph.py +++ b/src/Graph.py @@ -59,7 +59,6 @@ def getParentNodes(self) -> List: def getChildNodes(self) -> List: return [edge[-1] for edge in self._edges] - #Necesita una revisión pero por ahora hace lo que necesito def prune_to_longest_paths(self): connections = self.get_connections() roots = [n for n in self._nodes if n not in self.getChildNodes()] diff --git a/src/ShapesClassification.py b/src/ShapesClassification.py index a96522a..02bf791 100644 --- a/src/ShapesClassification.py +++ b/src/ShapesClassification.py @@ -29,8 +29,8 @@ def __init__(self, shapes, jsonFile:str): self.crossSectionData = jsonData['CrossSection'] self.pecs = self.get_pecs(shapes) self.dielectrics = self.get_dielectrics(shapes) + self.open = self.get_open_boundaries(shapes) self.vacuum = dict() - self.open = dict() self.nestedGraph = self.__getNestedGraph() self.isOpenCase = self.isOpenProblem() @@ -62,6 +62,19 @@ def get_dielectrics(self, entity_tags) -> Dict[str, Dict[str,any]]: return dielectrics + def get_open_boundaries(self, entity_tags) -> Dict[str, List[Tuple[int,int]]]: + openBoundaryNames = self.__getGeometryNamesByMaterialType('OpenBoundary') + open_boundaries = dict() + for s in entity_tags: + name = gmsh.model.get_entity_name(*s).split('/')[-1] + if s[0] != 2 or name not in openBoundaryNames: + continue + open_boundaries[name] = [s] + + assert len(open_boundaries) <= 1 + + return open_boundaries + def __getGeometryNamesByMaterialType(self, materialType:str) -> List[str]: names = [ geometry['name'] @@ -70,11 +83,16 @@ def __getGeometryNamesByMaterialType(self, materialType:str) -> List[str]: ] return names - def isOpenProblem(self) -> None: + def isOpenBoundaryDefined(self) -> bool: + return len(self.open) > 0 + + def isOpenProblem(self) -> bool: roots = self.nestedGraph.roots - if len(roots) > 1: #Más de un componente pec/pec pec/dielectric dielectric/dielectric etc da al exterior + if len(self.open) == 1: return True - if roots[0] in self.dielectrics.keys(): #El único root es un dielectrico + if len(roots) > 1: + return True + if roots[0] in self.dielectrics.keys(): return True return False @@ -105,7 +123,7 @@ def ensureDielectricsDoNotOverlap(self): def buildVacuumDomain(self): if self.isOpenCase: - self.vacuum = self._buildDefaultVacuumDomain() + self.vacuum = self._buildOpenVacuumDomain() else: self.vacuum = self._buildClosedVacuumDomain() return self.vacuum @@ -126,7 +144,7 @@ def _buildClosedVacuumDomain(self) -> Tuple[int, int]: gmsh.model.occ.synchronize() return dict([['Vacuum_0', dom]]) - def _buildDefaultVacuumDomain(self): + def _buildOpenVacuumDomain(self): NEAR_REGION_BOUNDING_BOX_SCALING_FACTOR = 1.15 FAR_REGION_DISK_SCALING_FACTOR = 4.0 nonVacuumSurfaces = [] @@ -134,53 +152,63 @@ def _buildDefaultVacuumDomain(self): nonVacuumSurfaces.extend(surf) for _, surf in self.dielectrics.items(): nonVacuumSurfaces.extend(surf) - - boundingBox = BoundingBox.getBoundingBoxFromGroup(nonVacuumSurfaces) - - bbMaxLength = np.max(boundingBox.getLengths()) - nearVacuumBoxSize = bbMaxLength*NEAR_REGION_BOUNDING_BOX_SCALING_FACTOR - nVOrigin = tuple( - np.subtract(boundingBox.getCenter(), - (nearVacuumBoxSize/2.0, nearVacuumBoxSize/2.0, 0.0))) - nearVacuum = [ - (2, gmsh.model.occ.addRectangle(*nVOrigin, *(nearVacuumBoxSize,)*2)) - ] - - farVacuumDiameter = FAR_REGION_DISK_SCALING_FACTOR * boundingBox.getDiagonal() - farVacuum = [(2, gmsh.model.occ.addDisk( - *boundingBox.getCenter(), - farVacuumDiameter, farVacuumDiameter))] - - gmsh.model.occ.synchronize() - self.open = dict([['OpenBoundary_0', gmsh.model.getBoundary(farVacuum)]]) - - farVacuum = gmsh.model.occ.cut( - farVacuum, nearVacuum, removeObject=True, removeTool=False)[0] - - - nearVacuum = gmsh.model.occ.cut( - nearVacuum, nonVacuumSurfaces, removeObject=True, removeTool=False)[0] - - gmsh.model.occ.synchronize() + if self.isOpenBoundaryDefined(): + name, vacuum = next(iter(self.open.items())) + + self.open = dict([[name, gmsh.model.getBoundary(vacuum)]]) + + vacuum = gmsh.model.occ.cut(vacuum, nonVacuumSurfaces, + removeObject=True, removeTool=False)[0] + gmsh.model.occ.synchronize() + + return dict([['Vacuum_0', vacuum]]) + else: + boundingBox = BoundingBox.getBoundingBoxFromGroup(nonVacuumSurfaces) + + bbMaxLength = np.max(boundingBox.getLengths()) + nearVacuumBoxSize = bbMaxLength*NEAR_REGION_BOUNDING_BOX_SCALING_FACTOR + nVOrigin = tuple( + np.subtract(boundingBox.getCenter(), + (nearVacuumBoxSize/2.0, nearVacuumBoxSize/2.0, 0.0))) + nearVacuum = [ + (2, gmsh.model.occ.addRectangle(*nVOrigin, *(nearVacuumBoxSize,)*2)) + ] + + farVacuumDiameter = FAR_REGION_DISK_SCALING_FACTOR * boundingBox.getDiagonal() + farVacuum = [(2, gmsh.model.occ.addDisk( + *boundingBox.getCenter(), + farVacuumDiameter, farVacuumDiameter))] + + gmsh.model.occ.synchronize() + self.open = dict([['OpenBoundary_0', gmsh.model.getBoundary(farVacuum)]]) + + farVacuum = gmsh.model.occ.cut( + farVacuum, nearVacuum, removeObject=True, removeTool=False)[0] + nearVacuum = gmsh.model.occ.cut( + nearVacuum, nonVacuumSurfaces, removeObject=True, removeTool=False)[0] - # -- Set mesh size for near vacuum region - bb = BoundingBox( - gmsh.model.getBoundingBox(2, nearVacuum[0][1])) - minSide = np.min(np.array([bb.getLengths()[0], bb.getLengths()[1]])) + gmsh.model.occ.synchronize() + + # -- Set mesh size for near vacuum region + bb = BoundingBox( + gmsh.model.getBoundingBox(2, nearVacuum[0][1])) + minSide = np.min(np.array([bb.getLengths()[0], bb.getLengths()[1]])) + + innerRegion = gmsh.model.getBoundary(nearVacuum, recursive=True) + gmsh.model.mesh.setSize(innerRegion, minSide / 20) + + gmsh.model.occ.synchronize() - innerRegion = gmsh.model.getBoundary(nearVacuum, recursive=True) - gmsh.model.mesh.setSize(innerRegion, minSide / 20) + return dict([['Vacuum_0', nearVacuum], ['Vacuum_1', farVacuum]]) - gmsh.model.occ.synchronize() - return dict([['Vacuum_0', nearVacuum], ['Vacuum_1', farVacuum]]) def __getNestedGraph(self): gmsh.model.occ.synchronize() graph = Graph() elements:Dict = {} - elements = {**self.pecs, **self.dielectrics} + elements = {**self.pecs, **self.dielectrics, **self.open} for key in elements: graph.add_node(key) for i, keyA in enumerate(elements): @@ -192,7 +220,7 @@ def __getNestedGraph(self): removeObject=False, removeTool=False ) - if len(inter[1][0]) == 0: #comprueba las intersecciones en las que interfiere el objeto + if len(inter[1][0]) == 0: continue else: if inter[1][0] == elements[keyA]: @@ -203,7 +231,7 @@ def __getNestedGraph(self): graph._reorderData() return graph - def getComponentsMappedByLevel(self) -> Dict[str,str]: + def getMappedComponents(self) -> Dict[str,str]: sortedNodes = self.nestedGraph.getNodesByLevels() mappedElements = [] conductors = [] @@ -215,4 +243,10 @@ def getComponentsMappedByLevel(self) -> Dict[str,str]: dielectrics.append((node, 'Dielectric_{}'.format(len(dielectrics)))) mappedElements.extend(conductors) mappedElements.extend(dielectrics) + + for domain in self.allShapes.vacuum.keys(): + mappedElements[domain] = domain + for openBoundary in self.allShapes.open.keys(): + mappedElements[openBoundary] = 'OpenBoundary_0' + return {element[0]:element[1] for element in mappedElements} \ No newline at end of file diff --git a/src/mesher.py b/src/mesher.py index 47e40d3..5f9d8e0 100644 --- a/src/mesher.py +++ b/src/mesher.py @@ -86,26 +86,14 @@ def meshFromStep(self, inputFile: str, caseName: str, meshingOptions=None) -> Di allShapes.ensureDielectricsDoNotOverlap() allShapes.removeConductorsFromDielectrics() vacuumDomain = allShapes.buildVacuumDomain() - # -- Boundaries - pecBoundaries = self.extractBoundaries(allShapes.pecs) - mappedComponents = allShapes.getComponentsMappedByLevel() - - for domain in vacuumDomain.keys(): - mappedComponents[domain] = domain - for openRegion in allShapes.open.keys(): - mappedComponents[openRegion] = openRegion - components = { - **pecBoundaries, - **allShapes.dielectrics, - **allShapes.open, - **vacuumDomain, - } - - self.buildPhysicalModel( - components, - mappedComponents - ) - + allShapes.pecs = self.extractBoundaries(allShapes.pecs) + + # --- Mapping + mappedComponents = allShapes.getMappedComponents() + self.buildPhysicalModel(mappedComponents) + + + # --- Meshing for [opt, val] in meshingOptions.items(): gmsh.option.setNumber(opt, val) @@ -125,8 +113,16 @@ def exportGeometryAreas(self, caseName:str, mappedElements:Dict[str,str]): exporter.exportToJson(caseName) - def buildPhysicalModel(self, components:Dict[str,List[Tuple[int,int]]], labeMapping:Dict[str,str]): - self._createPhysicalGroups(components, labeMapping) + def buildPhysicalModel(self, components:Dict[str,List[Tuple[int,int]]], labelMapping:Dict[str,str]): + + components = { + **self.allShapes.pecs, + **self.allShapes.dielectrics, + **self.allShapes.open, + **self.allShapes.vacuum, + } + + self._createPhysicalGroups(components, labelMapping) allEnts = gmsh.model.get_entities() entsInPG = [] diff --git a/test/test_mesher.py b/test/test_mesher.py index adc3866..ef0612b 100644 --- a/test/test_mesher.py +++ b/test/test_mesher.py @@ -50,7 +50,7 @@ def countEntitiesInPhysicalGroupWithName(self, name: str): def inputFileFromCaseName(self, caseName): return self.testdataPath + caseName + '/' + caseName + ".step" - + def test_get_number_from_entity_name(self): self.assertEqual( ShapesClassification.getNumberFromName( @@ -73,7 +73,7 @@ def test_mesh_from_step_with_partially_filled_coax(self): meshing_options["Mesh.ElementOrder"] = 3 Mesher().meshFromStep( - self.inputFileFromCaseName(caseName), + self.inputFileFromCaseName(caseName), caseName, meshing_options) @@ -153,6 +153,27 @@ def test_mesh_dielectric_pair_open(self) -> None: self.assertPhysicalGroup(expectedNames, expectedEntities) + def test_mesh_dielectric_pair_open_defined_boundary(self) -> None: + caseName = 'DielectricUnshieldedPairDefinedBoundary' + + meshing_options = copy.deepcopy(Mesher.DEFAULT_MESHING_OPTIONS) + meshing_options["Mesh.ElementOrder"] = 1 + + Mesher().meshFromStep( + self.inputFileFromCaseName(caseName), + caseName, + meshingOptions=meshing_options) + + gmsh.write(caseName + '.vtk') + + expectedNames = [ + 'Conductor_0', 'Conductor_1', + 'Dielectric_0', 'Dielectric_1', + 'OpenBoundary_0', 'Vacuum_0'] + expectedEntities = [1, 1, 1, 1, 1, 1] + + self.assertPhysicalGroup(expectedNames, expectedEntities) + def test_mesh_from_step_with_five_wires(self): expectedNames = [ 'Conductor_0', 'Conductor_1', @@ -289,7 +310,7 @@ def test_realistic_case_with_dielectrics_fdtd_cell(self): meshing_options["Mesh.ElementOrder"] = 1 Mesher().meshFromStep( - self.inputFileFromCaseName(caseName), + self.inputFileFromCaseName(caseName), caseName, meshingOptions=meshing_options) @@ -313,13 +334,12 @@ def test_realistic_case_with_dielectrics_fdtd_cell(self): 'Dielectric_15', 'Dielectric_16', 'Dielectric_17', 'Dielectric_18', 'Dielectric_19', 'Dielectric_20', 'Dielectric_21', 'Dielectric_22', 'Dielectric_23', 'Dielectric_24', 'Dielectric_25', 'Dielectric_26', 'Dielectric_27', 'Dielectric_28', 'Dielectric_29', - 'Dielectric_30', 'Dielectric_31', # There is one more dielectric because it is separated by the external dielectric. + # There is one more dielectric because it is separated by the external dielectric. + 'Dielectric_30', 'Dielectric_31', 'OpenBoundary_0', 'Vacuum_0', 'Vacuum_1'] self.assertEqual(sorted(pGNames), sorted(expectedNames)) - - def test_lansink2024_single_wire_multipolar(self): caseName = 'lansink2024_single_wire_multipolar' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) diff --git a/testData/DielectricShieldedPair/DielectricShieldedPair.20250930-134420.FCBak b/testData/DielectricShieldedPair/DielectricShieldedPair.20250930-134420.FCBak deleted file mode 100644 index 489768915d29707a5941035f9eaef15b81086fe0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9334 zcmchc1yEeiw(bXa2^O5-?h*(df(3VX3GQye0}1X75Zv7%!QI`1JA~k#0B^{>|Cc~+ z>Yj6|-s`D7y=SU_Yk%`q?=`)8%Su2%VgLXDSipNrK8<|B#vN)z03az3004D>SJnoO zmPS?%3@(-y-?V0x*En&Twy4?a6EcSK$rdXTe0Cw!@+Qh0+vGcuM9X7eEf-rtiSbV+ zCqCb%#B=Rmoe8THpbV(s<-MYh_$r0s~rL;9sP$M!Us(IyqZf}zkUa<@Gm zae6!{)9ksx{X>+m83xGlvU=@BUQ(Z|DD)LLzJH51YCjhhmX5YIJg@poAG6k~?`d!5 z1fE+$mI?CjMvP#=2efJP$!r9W2#Df5BUpq6*vTVn&KfTTUSDE$PGA{D#<$*5Q>5Cb z1+%lc0wD_@xL3d^?^uzGEtR@9}i)uOZrCFtiU-tLCCKzwTTcb zw-8dE3KwA(k`!j*N0bLSOo^olXTmDVez0JscI>;fAy{l#QBkg^2T(V!GzisBuV*Td zk=t0jqPdn)#R7-qN;-l`bmG=EnT1!`YxDzB^wvyCUSmj*i=%Zq$fZ*_T9hI)kyIJ) z?l0%`CMkZzr8`8dCN5?o{fs>&X*ulMwS6;J`Gic2*L4eP$G>#ki4_T5r$mtkJf$$7 z2~wJBgNuu?XS%_m#U4g~$4kwG{%pZ*1<@%oPU_|~kb6lzw9+l}RyOx7UiDX}!gCwP zc{4_o9^$PD)$_y8LxDTSOC};g^X$V!Vq-on^t_})Wxj}%qy-L~-9TuIc_LI8+04+r zH(4b?n>n5}a02PILLw_r{CWua*q`=GwzV;-=V6HU+Y4-lcUj@O}Ul6uR6VAQx9E#wH=l@+6E9 z`gmG+fT=s%7ROn+8UymgT3_5G)o=Eqnp<5W;|hI&{0=W%cz33AF?|=8Cn z`l;Bc8eRG<=S5OO8jYc^^wwfs?YP^wGEVM;I89pQW7ZHvtYXa-E;FUqrh)XIm@=@t zrrF-X?Q1#_MZToK35|eoG$i%|ss+RWwUPu))my-xdNIAX6wa*iRYo9x1vWM&xbi{- zw^%y2bEb08J4I}Gj4U;~w@}3Lre?92I1GKMoPLL(dw_!=SLndinBPQ6%!=Kj-#*gb z+)BO#nqY!h$gv7OZ&rjQ?e+FW?M`{QF^)I=ZqB6`DPDwWwh+~PNLoEjB>@e^+Q)(G zRbLhagrdBKx;HGR$A$}Z(4*BisYdJ zD*DwEg^auv!`U=6Soq^K7xLE2RbAV?J7w(xzLXi7(j^X4&DviP!|d`OQ5e0t4FN*} zqE2DqG5h#v+E$KG#?eJE(nrm{V%sbqElS1_!Vse=_GXBAUTE*CC9cq)Ca)&mTDL(2 z8`BLgq``vMJW1@MKs@j9#XcwP=yk-(@n)FBkFhdl{V|H+XkY(Xeb%q*38;C9UBfS- zGHVUiF}r0lZOgcXsWiLVFj*H z6LaXDx61 z=(k!MVj=;5{5<9*)H>O^y<^KHt(G4Y!*Mi(N~Zt!w_QtjDH3(Vl=Dx~_CG9s+?>Bz zyIhTjJ7h#(*15%@^)gtSz)_DgjqbSV9xD4Py^YvqP~d=Oz~l2m$%R)6w=^yke>yiy zt+oCo0(N3BanOWjky=%k+b((95bvKl zc_p?lbq~Ypg5%FMltOwVALh^>0>3w$+3(}?fzm7^HKdhf_|-e;`Te7Ul0pMqs0N_? zRDFJvplqGbeoe_UoDn)d?I_5_dAwu9qt+xDq{7hoHAS&OfrEZEXlJW6J9bU#&waP$ z>AHO!Y+20$pF}9Bm6?2ma0D_pBH@GJu6weC^ut+XwqC0BG}$41tIE*pz>Hxu65lt?DoBG)e7{2W^n!Km~)0-Y;BH1G31)q*~Zb9rDd zRljjnOs@_-UdX_K%y;LT?53c}b(}(+=Vf2|%;53QaE!FE)(f7gWZBh|z=cd278%dg zu_#BE14AYyr~U7{fj+Y-Ng)E7jw+n|UNI>VGZuMP2xSqo5(%@MWKu0<>n`JcF^}Gv zfo8wKqJ5UcURD-+B}=E20YgdS`8+GyXtn&f4qwfU{tPM=vffNq+K@g&#rvz!M9U?H z^ntE&-wo)W&d;=Sq)p-IX61+U8){OlvEalfg3+$A@Z-n#wn=muQqa~`OB$P=oF6RY zNp=~O6bzP}BrK}XGtt;P=SezI*?TQAQ?Pn!;zakplgzd>@qZFcC);|^P9~F zowHCxGbe`h8cJ@4T+SXw5!?%TZ>J$)w11i|85x;aXjb{%FsGwupw4GOnI+oOdh zU6c$i2Z92&7i|u3XDE*f3wam zkwQ#_Q3$ccyUTJHJ<38|tk! zG^8j(ua#54n^{nG{4reC%-~qQW_(G%)X+_5yBDGt=Q57ivaaJ1$6nkv1e`*#VRLqt zG9TD%r?D`KqjPVfe%{~Hk_{tT+?8v!8OAM52Ej|0aYzkMyq`qAD_RpsK1Dl@s++Ov|8 zDfMvU=Cg^K{R8dlRQ;sB#-J&8#Z!&iK?Sk?Do0lb_uR0O17Nbog|_vJ_cm*B?)7&^ zDJ?{n$hUR16V@^eIis^{!3~-WyNiyZB_plZvL|7Kcu5`joDEO;1``n~mX*oE$$cswwXKUA7$dDcycu)GN255xVHunQpv; zkbO{6M4ja$z<>b&4v+uLTvo1vRzj# zQNG797)HJ$jfY3(@FvgrsfbuB#r(!Mcwj@ zF2*8eX6)Q6x`W9aUbTdavSJ!s`>S;wFb!sq-bF$hH?B{U%T~`6?+WnHw+b0fU09HB zc8`2x{^i@?Z@$$?lt<+_hX2jCs`#J2y}440*sCy%-)EkFqxJRpJ&aq&JN-b$0&As+ z0&T5=k})KnuP@K=9mHDfsc(@n2*pt6uxCarSC@s3BLfXh7;_J2(l3z*qlJ>TUpJwX z$_&Kfx%f4`AM09{nx2+_F85yH$K1MQHqb8bE$%A;jw+%8>`+osBxbJt&%-Ns8~CbW z0v|mKSh*{F+fB`sfF7~6r#!Hk12i27n`Qjq>SJO&P+k;mQt~6c;h?1UW)j@8>W(KCSJjbsuV+!y9duUui62l%8$T)kDaj5@y!u@h> zAzC8bmkA@_;zDJ9BLp!ArLc}|xv0wo+;$4-h1koy6}{EwR4k-K@y{j+3$ozPDQk(| zjbp7!;aW%08}Am-D9s;?py1NjMZ!KbGMn{Z)gO+%oCh_DXt z1&mLXb(0|v{grUJpESZoZP~vC`t$$+HlaLR7|t_FGsJand7Wc8oH-(i_-%<>QW2j7#^> zG723vLI_$mvUb`7VXlUPP^1znR>ljo?z;ykh1{$X2^d&tBEgCOXoRGtlLGMbiLtOuSD#m20@O2 zWQ;NCi>mSDC@KDPDiQCTu46Gf*vdC|-?ee@B+G(ZQDN=J$1x;S#z?Pr7ioFr>wlct zZb!mUU_SLaDK?n3hC9(3-SBF@;+Sa6y#Au|*46%Md~_7=Ses?)lUa0)O*`?)+3+i7 z5omRo-3)btP!VMmGR?Va|Gnss5r$M`r1S5>g$mN4`YRUk2?RaGF|*c?XCf9m0W{J9 zKSUxfGM-D5p_U2y* zzGuo)j1R8K(aJH}jO#7p5FMyVfdWhhs}{7|Q_FnZ=fqnOJ8JnXS(BfWg&D4j zyPd2!#?GJ>jsx%)#;mZa)K>`#jK7Y(=1(iEu5=5~zA70yXv&OuPavkE7rM}CnBu}8JQ9k9cO{Vt|X6GGWd`tuK$TIrl znmK-*_;}Z=SZp@dcVe<6*gfF?mXeUwwh6tB7BC(}PUSwKP()Y4;l9k~e3~I=+Nv=T zWv5g6BJ8~DUHPEW^61f`RUH)s}nVuDejYMX&!^Eh8HBq_e>WvRH z)I1McE)QF3wLhgHMGfbcnxg$NTun64AT@QWk9HAbEjGp>8RZmRML4HdG48akR`mwD zh2oY2eV4BCu#7?&mS9najy=s%c{le=WbLv8I(2fRQ9DmHnHkSD1AG%#fnZAj9?vfO z5+W%(59|W0nnjlGd;TQg4i=dt4Q(~2yqxv}nupl;k-^J$q)CVq)IfavJ&LXqyo23V zju1o3a#r#cuOn;WL(7&Q$gCxiju#{Ntq9Pl2Mrk^zAk?LMvpsSLu=)8)Xr*zW+e#~0|E4*`iFjJ zu5SpbZk^l_F?pB_t$F@%+KQisJ!It$K97aCc1pN91jymaenXa)<}X%XHa`NtD9lUg zRzVG9k}};ddDiU9N5zNOu&Nq!=u%sEno7(GTwSF#_1*-Qu-S{g#CT`r|Gf(Vli}#; zh5gc~k>g^4Wyh-Xr4HRvC`0vyTT77d>Z{X?;UxB3d+FKPI)$buJjlQr)Qu^EZa(wm zWDDeVr?&arGi&huA&7;Y<>p&~=eQ#qtPZK*S}q;~%4138gs^x0H$C=<3RdP%nFz+7z-mNw$n2?Fhe4O4N^IDC#N?bX|Oq`FE6hwtAd$nXJ^Hk zWDe||o=(jO^dXq2h(bkPH|@JSK(pz3!?bblezwSur81cuTP@eqFd?7aFU5~P@W%E$ zwI=^kc;S^)p)kuDAs&y(f|lg9=B#<-zHiIBIO#1l&L#2ft&Z|IM>?!bSqPcQGjVS+ zuqenxn@BQMbi63Y(syJtJwf{(NB(qR6_8ihk>mn#05#u@u^zN_I8uoS#*q8(Hw2qt zC1hWW2m=A8;8}1H6sqtxPuYC@cv`P{1R;WbCjxxe$TeH*Lp8zdpn5P3+k{JWr7U_d z8wg9%0ySH`iqj%!1xf(*z8g>xv{dr&^}Zgi>+luu&s4lM1x1QsS}|jg9U^}Y0bhrY z1D}UdkrgTd9ALy`z|ZjjRm-fB>dQQa(vD(?Rp(9kHLO!Tn`9qO}v}#Y{#aRt>yXlv4Y!8y^{?{3UenJsnOM8j5E`{R;$?&voI63OdPemHhA*+c3#VK ztDiTP?H%Y!jj_ZfQh(*ezLITop<(xllkR2PbiFd^9DN_p4Q^jSm+W{5i%96xO3IXI zbMXQZ)SJI-CuOpqj9+90^)8UcODZTXkkH{R%TE%r$6O#OWU#|q))Cg8VDo@05Uzi~ z_n{`(UcLY1C#ri0J0S1&%P3rRVB zQ<_&0`&_u~i5}*u`=Cq#} zfh!HzMNMXUu>`f{?iMt3!H#XsCS;!e0-M$F3$i*%)hl=JC-kH0dC0A3(iDJa@28tAy%D@lb-r{We3ZSPbr&v{_GXgyp4P)ZN!<3VSxZ7u@uTw{DpIkS}dnVR~&B z%* z!c?mrPCKpgnDJ!Zn$eJptIO0)NW=$?!wl>xp>1X9ah=VX#^Byu>zsaR2mCp&$1Qhu}ZT`E~`w$PcGXL*l z@9V2aVt-P9s%w zlK)+YS^p!sKdC?E{x1&yq#nxsPaJ0Zk0k%3{%y%WslQ1E1IGaT{lPV8hW%_+KKI@4 z)rG9YL-O(d)PHdRK$VXI=n44$uv_&wz~haYUjaTK{R;5gw$0-Jk2frS1?T`JkpEKf ztDt;LKd#+>(HEdw`XBwjRq~GmJT78?1z>#gE5L6h?c)HC%eh|xjM4rm?jFPUgMUx6 zzhDHszbDc%qi2DrsPpk4N0>O`x z+++B6)eqr=KU6b6hJTlRpPl|`RX$|+f5`rWew-|R(dr=jk?ud}zYEU*(GTrr`PYR{ z|0(PKK{?GRwAM{Jg=fzqvEiQ~0e6M1^c*Y< zEbSScEzI|t%Z`9k?hvXSl_%n=vR@iyBAGR<=`DwlJMQ*z&9i}P1ANF0^*=&M z?y6sR9^`OI{1kmo+WV$XdyRnH_@_z2e!;=Um$3W66^POw%WJQdy4(9mk*($zGlb4U zorD+nW<+6O_4j9wM_0X{~j&;f*zdE-ZgDGmQQt7MpYyneyEGtYq~Cw}x2lQB#=} zpFXif`kRIPe2~5Gy$aG&O^xiIi!kdg={<9dx)T9UjLnU>^W^C-n^Rua>-}@33lV2w zhwU}9Eom6C{EAWi8QS|%9w{#-T}!VCRSv1HRK?&^4Nvc*rg!@j?Gqb@a)P$t1&w`A zel84CDE~k%nsgydeOA-PG!UXW1=o37O)aVHpgpSO;32>DBZ=qkoJy^BndQK1uHRve zp_sA0wHD9kV8ULOEt+R#(qu^rtK79QevNvLnd8}Yt`{#64#b8m@iwvh41{LbYXgd-E!RJf^a(6EfU zk;qcvAJ(p;QZjw7GdexrY2?+3M{iT zHjlcoG?h(#f!}HEMWr4oZF6ncM+2`>EMnbgb5g{xlr>0qcTNde%CpDb#4eO$ZGY8i z{IRgAT{Xj&x!CAODOQP*6~$n*Xu(64uO^Hh0b!e z`%QwTR&>r|6ebY&J5t|%c}=B5`O#d6>k){#Y|r|VHKS&>qbN+52?czLTbML_ zEI48pXh<>`w7ac5~ue?t*`}z!JF9dUIaX_5EmPG+&KO{F*!tgWG9Ef}{;ltHA@W~wiL`3w_-ZX1+^pvuFBa?f_Lm%H;5f$i2?v77w@BT9 zRxbc~_kj_Z zx1`{%huh`$#vaw~@6iR1{)oq*6b;5?3GGxEY%N}yUp`zz9n)|W3j-t{tN9Qx;*NHVtEclP)(q2{XQ)n5I?dgTe@=%>9L&)K zB_?^o+^ex}%sJC1_*%|W*0gHd79yNU+vW6k=6@VyO<2&9_2te)KghP7!nHqPPu%$) zI?5hfQHL_EW@yI+d~G`50KTS7^VryNVQt6HbmGaR!%+wit zJ06vBZD5e4;CVlxeB7FaL6wBxi`tFgf2TB{2kPlpwBxZkdh)k4kB?FPErxn3W(GeMzhGhv<`dF@&!|5?JcT*0+~se@Hk_ub*U@-MoEFeW{i0%cKutd@l+h3{8-G+F7x#EM4-DY z6Q{uQ5>FMx<)5BM0mkv6`D5~@<~g5=;boqR?;@Xyi~kl={e8Q**6-h!y6x)th!^6L zGqbLPYVSqgy*9X)cAOOyVk`F#;Cm)RY>kZ*ku-yX2OVqzR1(qaB6>5?g{NzBj#ef* zQCqo7`Z*MsfoY*OJoV9$xI2C@Vqp<0BZFIjnx=`C22iVd1gNF{sf;dE3K&*w#o@=V z7a71q6)m4%K?Rs3WoR0n!tBnZMQ1$qHIcd98PrMF`uu`>s( zvPuaX6CSmkV0#e>lf+ctn?{~jP!!jemY2jEqeE#}<~JBPgWbL*mP#lU*y=S;Yw_rQjgRdlg^gd9>jupI!NfpRTr4 zBJ*cAdvDQLs!tkQoc==AndS{=Nk~wSTk@XLcNqq-I3r)LPD^*A(3x^yqoTBVX;LMX zOpDzI(W6;=s3RP`g~Y+DWV;1C^rhFX(D`+N3~HxYi=jT&%P+p+yhP^yhULfKn@#dZ z=XA2|b)>AWM<1 zXa8PYl}IN;-sQ~us4<>plwt_ibB=CFv_%=Hu;l+vi0_B{9r4{pYF6anTIAr5$U$XE z-xjV^jJx$oiX2aE+p9_YtE6Ro_M%|1o?5h0@YV45^?HFnG1DQegnLl@Q#k7r>Il-s{-CA{nRIAbt!KB%?F*OrW~2v*GE_~NT?As@9r+*X+>5u4*W zot>&Lky35)4rkvw>lb`;nZ9cbbAlp&mLTTHVfY#x-POg^rEJ~#2U3!^IyVEa3cnt& z%8z2DW26uOO90Vm&+MK0&m&V(D-n>yAig-G$E*v!+StpjaC zew;QlQYf5ej0G4J9S0Fbm+j?be8(~|n_W;o=-srp%st3j<1nQ?6d(Z zJ~&KdSi>$QD`5h0mUHI!QZgZ~WRDnQA3Ps9%wArk8emj*41fE=HHH*Td5273OOIYF z?5rz`gW@-($9^%`BLSI+AI5V|`^==VRUz{?>-3j$lhflxTGJyQHE`o zE=-SR7K2kaIS=EQ*w>xd^t)j}rUL$1dcoGl@`cI`d`v{-n)uh}fof~W zFWjnsAv3YcEk}Ich^yzF`S?X<$YG9D!amHO)6X+Z%m_zFGG-@cp65uD1V=oIB0mh; zG=E@yP|Zs{lTQ=FIZ44YX7HJMk`2MV?t~ajVtsinTieWWLyR$^Bf>W}f_KJ(B~l-{ zpu_#Z^n}}VX6rD`IS1fKE`glyC*vQAXFu_WcFeR^In%A<-u0ZV$!+bKnrwtSAUJo@ ze7#!Tp0tx36i-tqe_3@nkLO+?v{bWm!8%x=vp#JbpWTJc;xEgbs3CW6Pndu050@Y> zLm0gO@>lGOhB4}U_d0iWNj1$cDEniaJ!_`@S}C4fI8%g$iuhKsy;}v5rS_NVFJOB7+uXuh>moc{_u>Mfv=Lv(^bElcgXWVU) zF5~!{Yui~mb&N6r9&QBf&ZSTEi zUr%PC22N`u3SC~7s(fZQqlhhFvjZgd597fGyH;uR&fIJ%p54^6q!hs3PB(mr2(lil z>?+WT*f5P9h*Wm>u5eFfQV1U?R~P#tX^JB2&EUgtX=!l#vCh>RZ}{p@EeRXUL3InShf=HW?>*%19f=GT{k@hMP@Tc9?_EsPou_N zb->k2G@RP=EGdM^WBD^{x7T9j;@kmiX^eCAZmz1SvyT#4@O+{_Gm4wHMAQG$TReT>jWfsCvdf%?RtnQvdk(&tjRUQ-dXxtbPm|~pHwyo=)X|u-d9QyUTsn(#xqNW9qljd6oBn-YA*HA%rQNHX@sckgl zZK=yw_3nikI`qrB`~A^d)xpgA5-p+YhL)Wu%@BqWb@t@LRVY?1_qwNU$@5sm?|IKT zoO};7hh^Ewh3+y5Uwv|Dac;u2jcy~#sKAvMmtv94f zh8?A82=}?_zI~{sZ)Ng0NUJkn35*rCwF<&hvutD{kN-)t zWMf2KQAd(=_+;JlUT(?bxJ(wxsP6exOLnX9uHKwRpPZjKOXqAM``B`4eN`>*_t+g7 z<*5}_eZezRo4RMF!J@tzH%c|wvEhOY5y++-V@o;p4z=8}#l3BDsh?gR%|^;6+XT5A z(spnyv*^7waGCAdH&5pOT0yIj^R;63*EOqgHhfyZ=OQy5;jcU8*yHm(Tus&7i2}U!OL=onGE5xH+wQN_(+UX(_{qs)mwik@&5$Wf--KIJ0pjFiukl4}G^ zY5C%?5gQoF)fxMqQ3lj`tk4#U_1eN1r`HF{f5e(FFsKtMRgLN1h3BY*)E9VLm9MIg5v-k8n z3u7_|korDaAxeDNV29oq{t|QSiU?03hhX1c12SVT*83fMdel?Dor2(ATmQ{bawQ|n zpZKT>6|Z8cC`0BaaVg8o#6i}IsPStE%)-7dLRPil`Yw7Wc$L78YzlGKhr?g{}O-?j0)?+_-%wr!sSiBQuXg~Fq#he@B@CSI@!Q3$bDU% zeIsCyx7Sc~EqGniDnD+<3IA52_*tL|8b{G=Tou(+ozVA*Sar=35#e1lHvEI*sU#Wc z9s7)esm6KpM0E($erhfY>L~K0s#9??&x^CM5OPai;U-#r$LZjLTn-^%nrd2ITcfq0 zkP@tlTkA)6XGx9QS_l+5lt6P5>`~10`K9wnZ)*2n=aWy#5A40Jc?}_nM!mf>VMvC;XXzqMx=>r~}n+Bv1WuHF1P8ld!lM zj^d7nu)`nU65>|8d3aB!44=StE^# zUVo?X&z)8*j@+v!qsV@{6c+76jB;sM_W@1&dII4$%K%i0%WNB<0O5&oUqQoNJ2K05 z*Oo$2wlLJ`t;t_ih<%ebdi3<%LxWZFW1U<5)PuM4I0OcP`K9W?A_>$s#BUghP-%`k z(Q?@>o2V7?*``Qg7FX3sd?j)$r|`jk@Ew(n)hIzFuz)_TUnosvPMf z&CR*(z%*N!??Zm1zeJ0SE`6@VV4Iwrq5HOhcfB&D*N|)C(gc?J+1LvEr8kDpTK{yu zZl6nWqd4}!l&Uv^0Ei4CayFJ2zIHz6*R_hu_>L@;62~ruF8qw|U4^ct5+B#CYf~Mz z_jh0af)rsI)%VkAg|a){X5+o0T3N7O5i5c$dOy54k_Bo#xgpl&^C4ax#Zvf&^BK_| z?-d%>ia#D%s_u97CcTzyRR4V7ZG6(E7t`wXr4(bwN$t42>a4yIpEN+9BmOAr_;;^t zkvi5D5Mfudr1DkNyFEMWI-i~v=NO$B8*Ot7$;M8MJIC5E~+(^rG?MeUXo{qnD&c1i1o zsO$rk)bCkl*HW`tBDH5Ydk<~01$jH~-ROun>J2OVyKvA&zB7Gi%4`Ud-W3GLbh5}S zur$M8ettE;7sZ6lRkuef2%aEkfxhgqrK^s1x2ZEARC|8>BmI>=lhAoN)xaxv&=1_{ zUTS$;h=|v%K2z|Vf?XFarEcE>>&08L&m_9&Mog8Cz$;4Vz2cuAk82!@D5yWY@!?jo z8SfYL65$l) zFRBQyKC@rU*yb_}oPU3>`(9Vz?L*D4;MSbB(z6Vh3?^KUh$xW>VE=S}p*yiD zMYTg7kFhUq^S#{5SGh)YDtzAW0jv^ zQ{;#)&Q3sRYVXU2zKvq8gvEGTe|ue%4YyGxPEQlx>SV@ERqgaw4c#P6Z$9{R^GWZ6 zZ11^~Z!A%s3AuJwXF83EWK8Zc-0Blu_|aeq_z&ZRfJrVj=q|UPyH{bmZ#~m}z&z3- z;-VSPp+lADp##j}1KOc==d$SppUR)IEpE=BI~`jKKtAqOKIwo$fWRc z;h8%WfFc-OzON+{-KDb#9w1debIyybYmRw&(|+%3BI58?mH>-_}v;mLol?xXt`wjej$r78q?8zJJnjbq4}82KPAVOhlKFg5dXmq0%*pzIA0# z{Hy6rzUjcCj$p0cyH@IKagyr>u{-lUsMrZU)6e^pP}y}0toH|M`yD@;d=bqL=@F! z%O0?2$-5UUeokQ~LJ3>J6zB14*Q{we7WQ;p<5Xmp zc(Z_SQ|c94ceF#`-L6D^dP1mbom}hCw`rU{@Tc>tAJegK7E*U#dx-eEFZUl-OrDAu zs#5k9T8|tA#4i*%@A#^SvydIF4!^8EWH+;|yVM(%s>m+U*xQjEzhMi@u=ZY0mp|MQ zY0|0H>#R!j#na;cf|gRNhYe|Y$srDYeLdg!jAj2rHW=<|IgJS!(BUVTVR=N%s50S9 zcWE_I|01LKqNM+`59Q>e~9Ri7p} zmdLTSX8`ap#TZAq&>mIT9`Z^YLpVb?O1d9C1kb8`w}Uyyw(f=}X@({%@&F52xRn&D z>NHO*T;`+Ib z_jOuBN!_}Yq8+#Hp}a{ow?^^014db^c0bm#2eLNO?(KaZ2*v201gEK;$kFEP(GAQ6 z>xeAs$ffz5@z4>hH<0Ko%gLdh_2zayUoQ?P$QLoDX;RmL$(QNX-ACfPJLdPhJ4g?! zvK&}KfLQ-PWhz$s%Q>A_D3Zr8j%!KW4LW*wfV2B>KqvN3CXCI3s!b_qz`lNHBYQ*S z1+ETt=3NlD;)Z)Pxxl1i{C84eJo3`#_iWww4dh2vZVsN5bi&QUK@hAV1-5_E-Ur`o z(LLD?=rau9ivfhY0~P+O&#{!-hGFjVU2+5+KgGF@+v!`L$|j;ph`LnGx?`b^Vg90u z;j(^K;IjV3<#Pbb5kQ5<79T$S-Se7$^VeEYtL{*nl1QwsLVl;LXoUtTg8JikZm(eyBW&mT14^?wE{c;(a}L7V?-8;>j8 z?e!+z>rVtZuS{A1@l`-mdG8NAzJnFpl0H&zW0-mpqk}(MifhThnPwOXB7{O*c?E4xJW4@-@X5Ur- zV7d&@68q;HB}y)#pA${O^3oyg)n#B)m4A=G&0?Eb@gA4=a?vuDkuE^KJrH+YdDl zLYnkqx~>CU{@cNYpcRClB@$wbjmn=tQ9h}4&nn>3ySaY%Gu-kY1SAcWI#mD4Qwf<|W~3yz;o6gI0&ce9L0t6?|`h(`0X$k&ANEEAgM zF-U!Jw1@qP4{kcDFhI6-Aeh*$K524V_L38UV7b_9VXvyYYmxkFChfcJp*mRT{y%W;3wi(|qaBy`?J_lUpMX*ej~dVGeMkYSQOck=CG4K!i(>tsaAc0Y0X-JOGAsOZa#3guQ)a}{ey62>`}pF zLek=KmgG7g%@f0uVWTCELl=^+ofx(_WiyhER}SU45}e>c?g4-AusuL*zJTyx2~~z- zNon)JHvtSov1zO3`!8?F7SW-?KYAEIq`{Ma{ZWs~Po{)d&_E2y2j#J*dWVNH?1_GQ z)(Kc%;-^rN_cV(Q2JxduRya1GajGzcePU*gLIvWLV=@7(l^%?d!K(yVDx`?z;d2>7 z(?z#)=g@Aoety}(R#|3Qz07v{GTt4mb|z`n%kPRM3%)7zw`*zdzUJb%#sq9r#Qk#} z-O@V${#(ODH^K+Y7JSG*r0O<=BVjjIJiHfiDz%+gp3Wv~3^P9Y&Fw*t`69PIWUK5r z>BvA9rVj{TP8B|6NgR&H@u%w^tq#^)l)HGA8=Ybi9tUzj2K~%-DlKYsa08#WMTt?N z?dTNGZrYx7X2%*9B|!a`p0DiCBQAvytZE~_rw&r5FSV}oz*RWa@+B)S&w>ipM(vq-!~Rr^-CpC^H_ zML#nwpNgyku4r`!X?171l@Ra@GT_>vrWL$KqNOl+C!bN(P&nA7FpHN?nbY2l%La0* zQWy<>DE&CR`>6CyE5D*j7$2Pg%7Y6CcguA0>AY1Tx)25rT*!e39{dQ}URSW=?uQeY zejHZaA$P$OW%Uz^z@QYCXWoO4cP!2?x4j-@eEr{$bSAPS7zpGM|A{b7&D~%A^Snsi zz9)O|HQ6fxEuD_P$zkdldSjw* zxsVmBR#HG~sJ9{zHw#(SslAgUJ`6@|j_KQLZwS zQSeX$)?@bV8h1F#H@l!{yCo`ECmGfEqeRM@{Hi_u=e&9<@5((^2iO1QRiu)KGAu^e z;{WAUJbE@(P#V+tcAZjof0FS!LoTEHH2uJA2u-;|?+G~XKAAqAgXMapwBK78m&UJO zF0CSasAIVKw)tJ2Po63`S$r<(d9PU{qN%S3UpY=x**-6?t+=-xRQOT1q}O(I{+T|a z{!YB;%VwWIj|z9c9FXhy>1D>HJ#Cv^p=Y5nRp)?{ru7HXQli~IZ(h)$rSoQfhz>YCApC_O zluFq^`0FCQnR4L!ny}g!dcTg0I#W@4?^Z>1UHAmY^$6b3i%2^jIlk}_dcf7`1R(H1 zBSRx!zcj(cp?piw;VmJ)6%ZZ9Bn5%@AmT<=d=JSVF4dXF4Q%omMOWAyG%K6ys~j)$ z7I}WQGWj+_=ZgI9y|oER)H{8NjI3uv%tOqX_QH~#<08#|QC+$|etUdb8Pe+HX)r6o zTtrM7Nz4_k63tPJw!g!Fg5bm{&xIg(CAfn4uok$+xW-e1;t-|bKB?TeDphmG)ZSxi z(p_{=I1|zN)N{P-Z+=xj{Ix4s3?Jj`KU2e+aczxx)(qg;L9G8!f6Z*9(Um<6pNiyJk6~85}1P%EK z;>RHKhFeYjG+Qm*R6ZZ1-c%TW57Cf<1pM*-kDwM}kn@x)`E2v3pP&Z>vs)*j3igRe z=F3oBJhTDyzY-*n!5&hFu<>mW_v~{AC^FYd9B8mc2NrbU5G z94vuK>921#xFL`j*CD+Ch`B(izggp|f?i81qev!WPePv*dR|a@#5F-#WWW#M!qs)m z2v}=1Gn+UBf{vA2s!H504=#Xd2vKQ9L#^5Db!J~iBMY|+WQ`f$Smbm+m59aDycd|V zbmqf@VIP0niGE=yDTr*I=<8{<_0dno$*={~0-9MW?Iqj@ac4vJG-{TrBhwAtBD=zh zIs|4O;>?T0iNqP=(s04UXQUC&^Ukzkk$%S zIafoKr#gY*M{)fDu8?;H6lIYB*`o5!T_ZF7K`CaWA@x5&MOh$jU~K|u0};MvHRr)Q zx4dWFC49U$Wm`Lmx5JFViu4yD)}q*Kq_e!|JoUz>^;*Opkm#UP2q#hpsG0|bYW9#C z*Z(c?Ezu`6Gf*59F6>`WrdYy3iqBCY#m^uQplvN>{Dk`#QwT_kBBRVPX{v9KM}--z z@F_|2^pESgWJ8rBhsAtC}&w0RO=K}EhG%Ktu9&AfYi2bywgVFpkd#9RpXpVw7C zhvSFGIyH`&Vw4V_!@SwG&BX2@EmtS16MSED!6mV5!zK5 z_I3cr)6(fU#Vb0C?pBBMWZiP=pvzb0O;WT)Oy-4N>1lr==cVqsHdRCnw!r!nCV0S+ zHfeA<_~)Tax~{`636J784_)_Q#&8A1rFgAwAZ}yLD~NWghcubqwpy zFtaF-ml;QLB1xM5JJ&6Es#_FfBLo4$rG#0M+Ejrb?y_cI4v}WwNgqRie!=}SOwyKD zt(TuXs&WuGtZa_;MZ2r?*!XoqY2GI}QKN^C3BAW}n@6eI2^^1MM4|LFnRPGjhW5`crZ+7!0c4-(C zGddI&_)BR2VP-7OU6T%CC1`(xN}7Qx$cpq%$IHe&f!-Ti{)b3hO9zGkn>oxAJxv9K z261iDr%iZ&9d9MZ^OA)w>6GWQAx%RO`|iq}&6L=q?I;c6ls1t~{t8*Hheg3xhsL8) z2W^ff*8knqDAXd|lED{Q%kK09jj)tiBq+qKq|n`VhIvA9%ie2mnLE}7~2X;Jr9TQKRg5FuiOSQRh)X} zpr$eUU;*TmF`X;$HO$kWp(~*KRS$Zc=*sfZ6{0zyS;Uq@Ha;Q_Snlbn6B=6E;08kU zivqeyP`o*jSk3v6M+G13wfHkcya^&a%8UB+V*L6smU`{vPlAKSyc2R6c)uV)-8sJ? zc*W{~)mv$|H7Y4>=b|_+JZMbtYpz(}S$3IVj+=7)V=7HNT;hCt2OPaD zjmffVq#N(^!kJ^wVfenWz3a0Oo}aDZ>vSY+-gSi1dfSP}^~aRu%eP3*C-LX(eD@@`4|wfdQrxS_<&;JYg; zH#A0%SDxS1xRd)K>2_oJ#2C{uSbK4`h6)$H&nlf{(Okc%&|HdQS2ddlOWPKj&K1+s z;5p4|P^YRlTZ;`76I^Jj&loIZ(V-eefWDExmJ#b_Vntq!|IF8Uvpc;`w-Lsd)v?Lr z?Iv;SvS(FsNN;JTeZ}s9R8O0ypE(ltW+yj?eASaAighWwjR#>R9&aUH(@lxeP& zdiY50%sK=A-p#oA{_^;Zud?804Ci-=41S1gZkicKLu`82fg7Y z(L%c8+wK&K`eD-49u;BsjOeG0i1zs2X=SO8%pZmH~tq#@3W@ddbvlvPM{^@fZ%zx3Yn!Au^zSgi9o7V|w8iaBY`Dp5B%vPuILwYcG0``XqDGU!lJU)c9ZZbfjS|R6Ue823{6m=GAbrR=vfQq1d=6&0K5@`6 zMGgvyRAk_shc0@@^6m_}$fQtHL!4a#8mIRqUxs0KM}M2*UJeM)7`McmXUv}RC#cXW z;9XW}RqW0%b?K!Ctd&8Iz091LrEVt6bWd}{RQJ}M$rO$8R0T|-w;x0Pd2P|>T>~5M zLXP&Ur?`ae@JI|1YDb1AnQxd`SxF@iXPEh&qtcJ0eXK2M?1-LjA5wYS4 z)lh-p;~@kA+_k}yNF(?1crd!@UWn>K4d<@;J?HMDr@afsy2ZyA(|XcbD1Z5cgpI(Q zHOa6M=LVzDl_(njgCH5Q4A80Xd@nLQDT)w#RP2DE?H^X@*vBvm=^>^ZVh(_ipvguVGu@psR=W7KHS zM?b;W)x4{V6h*^WEu|Cx!#@L_*7lxx_tm4TEPR8s^N(MI^0WCA_gnL&zrIamr13Tv zhKFG>stIl;=(}H0tY6+^Y!RJ#x%{?r?(6&ya_GC|!M)Fh8|@dZ@ek~$e_{vM484Rm z+J;3K@?gaQci`TqBRw5PZ}Xg+*v=9hDy2V$Y;aZ5l_haL39(vGG!#pCu#?QSe$x(i z^pR^V z!=aW$-zr2*bQR(#JWb<(%nIZy_hs^P0PoQhWQ6D!ht_#3!S07%H6@VcuSO4+Q_;u zB>7eAY7toJKc!Cu2UH?>tJT#XghZ-d=YUk7MhVL#?m3>{)4~DTO%m@ej?d5uw3v!` zvt9puq4Y2iqdFP^Ch|Siqk}VsAU(boh7}16Iz;xi0%G`?E5D`%0c1DSf7U24%m09m zwGRzTS=Ubo5zmmC3&$gYrj-LJB9eF!zj~gd?*+0M19HXy>Tl*JcMp`Pl!jVO5d-ph zetq0ZC}%z>`(I2UAdj}EM6mSAnZ(iJT`~c!{3Q9(=!#;YX5@lqYX)q@Ngn9QkC}ce zsM(HUrL99bUt_}-AI}}dMY&JI$6UoCT(b-5U>c4K%b6Z>j_-IPbJtd!@ZG+N8tNt| zO}fzD_MYk(2l}~7IJAt;qRZlK@$_Mc={xwI$qfES@ za?1t*2GyD6#{7lNkvO}NJX+r4zK<*tw9xXUbnav0S=Y1gV01a6H+A9TW46P%_`!W!61m~o>_u4Q>kh^Z#( zF+K!TaKcF$R}_*lJNP)DvqEz^sAj?u#h5q zTTJ!N_{B@gb~`&iMASfVn+^RK2a|q$wq*;%3s^Ly$WH5dFWG!QrUyyJw)<0!sUfjpCC0%2_Q8*b+iB;;`(HjA3o`r zcLOp(+AKJCM4b{u5oT)qqvX#iydYm8>?=U{TUf+dDAh&GS;)uPx4WG`wbSF5e=aSv zLwjnp!iiS9iP-tw|2F6Tq)jr$ASdv1x~HJ0i&_&$MYSh;!NpGeUW%)olkuh8MdPqtXQHO|7Z*ts3SGv6=} zyv{y#cIQ6uFGw%||FU=hm#VXvan=vcY{Z$JaoKi>cKsS9wbWNr^qo-!SEPZxf4w~{ zit+^Ewr;MH)V

xQX;WfpPZIdrvH$u4lDH)zUcJLO_bC+IzGv4U-J>=))d)C6MbT zHsFGVxjwjCDyHmY=2>&wLR4(>DzCI&39i{)Ol*SH*j*}C_zw`1@CJewl5Pi9Y#VhJGS*Cqw$2gy&c=Y}iBSNyMuMtJl|GKKyTdkb9mOQ;i*jk?qP z>MBdMxTL2(#*(6*V%>gx3t17nVZ>!~0-ucL?e7*xTx>;gyS02~vTlOg90pnv5Pse4 z3|;P*>ibD#8*J;|RAN|tx%GW1zv7e6ggKy&eP0(bnQWQyDR|^Pf>`V0uN#`k#9Yj9 zrOkQV*|NhoRSA$GOSdg4vIhdZ2qiEEJ0U-YUt9j5w}rgc0n)&m1%d|-^X^`QE0T|V z=53Vi)EJ42bhI=1M8?S&CU5Q(RAqA$~_HypOrQT!Nn7 zy573auZb!_g=~Lx-11Gfo(^GR^RSw871)+boOc1A5Dy}2a@zdnN*VVuDp;D{P~ZBE zGT70Jr*J`KRPhdG_)gkfB|=I5AV1P_L?bDk&Q;Dg7bV4vj_deEb>#K&iXYB5d)w|2 zX5x`7<}BLtx-Xsw{Sx174m5>~h<3wozLQfcyg0%MUAE%fTzMq)lE#uY`744}r&~JN zBox6{F)WQv;+ZQA6VVLv>{_S%T2~;8NmCMI@1GW20XWarRAHzaK`$Uwvx6@MtZ4$3 zjxSGkrggqxzTiq^K83xN0z(WuUoM70{J`_-&wV$vfcx9r;7G(W~+%H2Pt)U$5RGMolql>SY?|Q}xmi+0q4$ zO!zmRwNej>J#8lHQMMjVTWl+O`-$C9C$({W0lL^eFbuyhN1g&IQ2v<;_DPi;)>#E< znO$c}_z17KZGx_W4>X$aC%dFVq!-Q4i zO<5gy#&jO1UqrzpJSK6KfVRD*AAk!R?DOj=ZlY=niLA%eSsnb?r7f@H%dlq z>n%yReZ#qH4}|KN*k^-A@~8yWU4wHfzG^7`HqfRl!w$aFeAc+uxQzn}81V?GNY-ka zjRRo-L+kdftS!U`!W!`n6M^V+3uu-c?xX*n4B^Ccf(d}4U_u%F3K(fv41IIqj*etA zfiLI;j@6z7j<5io=NA$>{*FDL_6KW_Y8SOCJJbZ>WI@FE;C@Zb)1-mo2-;f%MLRxU2L;6V@FD>) z=OJ<|^CWVFB7y~=65+qK2>J)SM3iQ>=x%R`vV+RKtR?bG`*mC%$`FYtz5T0V{o@xw zL;ixqupVk+u&6U({@VMg{@UOCy#Oe$f?%C-|6+<3Rk1B4vgW1KDX2a-fy)CoD^IME ze3=5Bsg7CI08JV=*e|ctIb??6Eo|Zq`PQC>>dlXI#k>h=fmE-6tS$y2^Z#i!^rQ?T zLu`3vJ?fwMW$3_O>YXZaDnQHhxAK%{TiA?pP}9EKAe!iHrC^&Dt|eau-41k{pRda# zSfX&6L!&5qL4F5Aaxb6(e)I`5DE>_|0w`{9z(fI5F}lA4DXKRw(lPVHz-a;ll0Lj+ z+kc9zNc-h3^^1RO`Ar38UFh1>>)RYM_ZTV1k3ful-AL{0Kr~RX%E#9{_TA!`8Nt2V8&Prt5^%gJh1;8)H<^6ngZ-9!ecmD_y&3BAFkia zuV{$*Ax$jam13D$X6$$Z#40bGOa6f(4SDA01Bde);M_C+2j@P2km}b2_qcN?5QVV5 z{0~cO?(5er48cS}Ruq=eP17IpJ2KBsd!X3TkXe8T7a)TK5FP{ghmB@6A@a2zAQS3; zb|kQWwjReESzkjpE^KI{coL6yGm=gmTT&L+D{*}Q+qTBG8!PU)d_UCR+L&!*03@O#n zp7)Pm(S)J2hzt7_rLmfuNgM*6UuC2?U0`M8;HO;cBhHgOlArQ_e0dzTT#f8>N(%5{ z(y#`$`Yq$i$M*0vra9ArqxZvgOYtyt3LfFX%g86 zf$B`jUm8mtIGeZw{+kKD)fCE;&JybwhN@wz1qO-rt4+G}{B_{SfYVD&qD}IRimgzg zKF-6cmxcxu_6ajF{vNXesMqlSsAS$E=%c?NA*=)L7>I7WluTsTVcft4w{BzhJ1QSb zhw8~Xpp@N+a95=gVz@x^)}cnAvcWfwSFM2znXPPeNFF_jL+I{IS7ysd5_Y2Z;u4$` zAD9iaX*4eej;tjUe{Nu~vwGAm0C`u{N`o(SgE14-U+CvmhUcK}cs=O(zf8i+ajD$( z1}L=!P|X$y?J;xF*7w&Bn)(w^*%0BKEZXYxZ3q%0Dw#`MAr{x`KFB8`!-f?!&O%nL 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 z zdqtP^I^_@bl13?AH9usl-;XL5e7l>?TB%b$G%|KwT0+cut)!YnjsOGyc5>*WFJF)C zG129ow~NmOlc5+rO3wGPykx@^@)fb>dFJD**b-5cM}~-1@JjS5gYqJXb-qUlUt{$3n;Uw2fm+QcNsl^pY(8A>1RMX_q&?hPO*W|*% z|A~GsuzY_PEFS2vUgW;?FX9NEe6NllM4h=L4!5^MHXzMhg_JJnsO9L^RqeKw>~9iF zm*n`~-bwupGrM(U&vKr2vDWC@eic*p9!;&hO9mQL9zu@j-sMg6p`&`fj?K;~BbV#A zi5Jv_-g$SpNE3ZXAW+bj#O&xzja*GPKAaceTj5ehoX2Y8anoq>ODJ3Td9wsZuQLeK zeZ!inx?o>DUpC96d*yI=?mk_TeeMIAMye~HRB!8rOZi^%ah02qJ2*L4{g0MapwZQf0B1WVkM+{X<1y2{3^Vzpfk#B*mxk-@XuPA@U4x94 z8MKG^RQlS&w?b8T!&j`FzHI8okohmt37H3Tzql>b3$X_R$|NvsX0mYin6 zW|**hW8e(VoqslhsK;+DV7V@e0IGrTkmktDG$n5gUPj#>0r1} zQ7mUS6&#e|gdNCXhg$Sd%s3J>SPd|_P8xx+!dD_0yGMo_rrCo=C55833k{b z{fI)Nhx-b*DBudz2F9h>=d=W#E~C;*c8a&fi&R3@y1u_ygroO92y?&VE>-o?SM|l= z_wC8Lhy4WluRd8?+h9;rQB=8T8bH;G4q&Z=RcjXx<0h69wcNuIius&0-S|tWzAe&r z`~q-;-WPD``r)sPkQu5Z<{|dSeW%EY^yYOO8)*_)H}O-$ZKmo<#$`$C9vQHLfAC{R z-_Jv9K`k1z*JjS(jF|ciFt&>5snX6C>qHe(EmW-kpelHR>X|)jxBD!rIPG<7@$~AW zqR1c8t1_C}L~8evy#a9FXjxgV2SBRn&M zigg+Lv{-K^7yLZ!0k7dti`9VArTc_}q~h&Cu|}LsEnU{u8no{$ z2|mTN^F#`EiiR7jMeN!%(SL0Ni2~VJ&^7?Uigkt-aQs`XUB8<^@|h;E!p74}UU{`r z#B8G4ty{9BGe)zL;GIye&QpfsbR;{iu~74q?ivYo*HqA5#TaOl+k07Tmd7Xy4nDhhtvz5{nZSIu{kb=sufz1~vBNvv-d~aD zMyo`MXvD0y2YLsbNcJSvIIbvt%TH8=2BIyf>5+?Z-xkMA}kq;i4h% zSTrGV*GL!U3V=yJG4H4#jqx-NK?+*3~AgI9K)4Q%q1=W4btlAW~4(RBVVL`8SL8&#s*R zwY;7!*HgOn9tZ`{mbE();8Pv16@ioW;?^sK>pcVtOt_6Wk@9;7g#!qeN0G9=-ni0W zStguHHvIpa7H9-cuU)@n7N=liv?)q8BRD{fqS#JFRyEKtxf6EmS80((%q&nRY}TI1 zZ5^*1Ix2qogcTH}vii9UC0`v1`I8k0QUAvZ>U(GOzBBM2KXWh?fRj0*i=30cP}Riq z!}W?$rTSKqQ3C4##dDSm5u}U1h8DVo!#>u&v3*hd7M`~PqifiPkP>ygfS|y|p^AM# zWA~j2rf1+p6=MuVV+6_=m#|1Hg`c2B5Nu+cEmy|%Hp26PJ&$j}{qOmf&q9ZnmzTi* z39y)=QqNa5_U^LrQ{vfqvIn=UDP1yq0+6Mamp-KhLe4LI>(+>m1($L>&2py>SL3N7 zEk`(#2udGaFZWR-?rWk<_ygF~$xj&trn=!DoTLTjjCYvchuYoidz{|#ZUI)Z^|lBh zhl=DK(HEQpEtWR;8XdDalE;|_Fz_xWO8iC^QF-tbS)*_faRQ=1pVxLNes&0W3`h*m zNww;3t*cF1;;^02t(fL?88yYJ-tlzpf9V#Y<^ujN9(%T8&*NJamR)Bj*U3JRRpNns zx@Nt7kjfqPveYESM!FEIa`=ma^`e3Ze&meik5~3LhYE~`G%LLc^>b5wRj}8$ZEO8P zFPTuYxv8-{O2aoaOPDi@SW`g#D$UPS;SY_j)t~wd>kOn;+x}E=8xXK-MMiwAW<-#)ZlMb&TTgH4UBF`#jPYAQp1QQ@-Bj2=z2F0>_zfD+VIf89EV3}hHGcEIUf}05 zEKnVRL;G(pzz4kmQ*cPuFx=VPJdii*v&gua@U7fZOARMeq@%9X&dVN8PZ*av#JFUh z+CP`-5$FZT#zV*oF$N!*adBiS*>lUfM)%B1hvKtL2RJUXF&vL@9||s|dYT1EJQM(} zfCLfGLo?{WkOsMN3lS*QmXVTg(oh+rbfid^>* z@C(Lk7`+iuaK~yl_mLG2n@z7l41$%yOm9Xmo$bQv4Hf~Nzm+V!Z;MQ{08fa(p2ZVJ zw8n2L|CU_hypywTxW9ZZdjAvc4VQ>}ZBf{HySamp#0Q-EZrD%t4&WjT$NoIDww5oy zU83y5^3h!X+h!-`VS?yowC();TYGs+L)lBrMFk1z;ZbVtBu9&Nt6G(vXLJ*i|~@)2YI9O z55TWg*2YyvGx5&b)bYCM=H-ws9RyLDNFC&b=+0Is!XMA4z!yLaYe|XhcEhwu&IAiQ z6<6Z&lX0pm(5DXpO1B(gn2gRl>ll61v};!+>m5WFDHUv0I{`lZ0K5iWwJ`BoFs*)m zrPiBxUPF!2{iK;Q1gxx?<5YLn|4{_Kk0Qg|GTZi zxYhVgQBb1T<7-;3)>7BZ(VK~BphIhj!k=aAA{G#sI^EM(M#`m#Fq38+Cz3zisHd}h#59V+X4)*# zoV4fTGOouw4h{blXhvy*8FgO*8%Tm0Uxox$`|FS2IT#9pv7fCnCy#J2%k%wEtkEyX z#5vPC&>G<$0F>qh*#Cv=@p;s^Rjw?G$4C0|qDV4TgdrC0x#PV@pjSa)&mf(whK3XP zu;!O99B0xbRFMV7Zkt4LY5SBzEe_7+;*R2 zSKI}rRjF<&MIZo4MXHB_Mky%BjK9;dUHUOS_60$EcS8&yRw>}|&Xz?V`5r+tNfkj= z(wj4q-v}2rlQd?RK9Y!ilVfje!EleJZTJLjQ9`%^jxLOZq^xsS&Tdh9;Q_-?3;ky# zalzQspLhoN49CxN`g|YEe=4y!O3frADKLY>^k|Y!`4#m+J=Kd($S?a=mzRqItaVL3 zKWw}1r2Z?X`I*#S zkIwb(15rLf;KPox>kTCK?Kwvezhl8SrOl23(fV?bOB*_nsscvK;(=6k8Ib=}VfmW70Fws(7xi5(wl6U-MXh^_j09K#^aHbn{s$efY$V_z?1@(E)E?WtF z@Tc|3S0wxxv;SlyZM8L$xOq{#;-ZGRB?l-VB;qxoFt(-Kxw3oD>!dz`RvpvK8JZDS zpI#+ZJk|Bjj8F3_7NtKIP#BB)uZ8Xc8z32hQS?@C3g3O)Tw%E~WBDMBhZ;+DX^T2M z_?V>5IzIL8C24oaF`Ga0OwbE=b#-XuR7@F&!2Fd;tFoj8m9+QeJiOKMdM>18jE~>S z4fwO&jtZA&N6(n_M|O_+aDTp{G4@FMVk5Av+NoBPw$#XVveIk?N~IMM`=Bp=l{4^z zMR8A0ODP!gn;Jz4Y_9x6*&J`Kj{r60mbr4?w~W^|c#=`uA6|67ZVeX1m`M{xild3j zzO&y90ET&p3{(ptD(>Ngq(Q79VkCYL~m24cU5@MmkZ?neOKxl@S? zMxo9^N~&Iaj>L9tWFs0LRw@DbJ#l{7N=Hq zVUUIfpk`DV2b@64c?zk07NIg>^|vLx1s!_pZeFi~(i{z^KCO=^RPqO3Z+;=1ZBD+l z0o$9}``MjLyX|8de4NjYN|mKA1V?c&Iel=Q4I9 zq&F5nh;mbsLRJON>I3igx=w?f+qagAYKfi@x~_7Qh->(1SS+=|$!Nore}DB`cjIEt zFH#tH`VUdat0HaGiac?z|MaQ=q8NgK%e2pIT_je%0%Ntg1?2RS8ic z?~QmaZQe~Tvxqt#6EuvFh<>z4BZynS%As0Q4OUT0J8qWJ7E$;RIEmmGa_t6ZEQekt zR@(bn#~hvlfk7hTYFsFnTe%DZ6%e?=puZ6zTysL23IS=Nhkf_K8Am7Iz0yD5{fmjx zJLeZEj5YlUX`DBy`k&u@<{#hv9I3!^8G`o@6LIk?S7z>$Jcvzc?-~W)eMrqi0@Xdq z>czr7n+#!3rqBI@>z4N8(S4{Wj-tur)6~8KxbC&6UP!1@D#=L)6}5!>mYqC`4W#x# z2Vd>KW4)@UaLE0Q=oc8GUZ~|h4#a&o8_e9NnlwH(4l<{I9b4HEvbwHM=;@S(?N|1o z*3rufhG?}zy%5}O_kQ!Gc2pppEPXNdLs6SH$#xACfaCGLz^K*_uL$&0N0L1MtkCZi z0g?VsDfXE&aFMgCbRDBt35#B_nb8-AU8JF*^7Z%NJGVzM5FxG-x&u3#yti z5cyU+WRvgVSycoBZMA_`YN&eaH!7l&1cD^v1#psiTPkL) z5FZS=ur&@{b|0i|NQ@DXRnx!~C=;GT>t>w8JKIKW6Q$fCUjNT3%5`c>{l`ARsDI2! zN+YlON++06RF^he9$8L=`pa5X8479%mi&iwKCXg3cM)L&smksFr*b1*&%rlrJ=Set z)^D^MXihTo->eY=iHa+(ef~>K3q(kXXBggIA&ys|f17~kM*YMgLk2F+ zR!RuisC8>ZM*+qiV%*ZeMg{gX@rgan2NR-Di0R+b__*k&DUKr$CpZL8Cf>c9MHulq)le)y#U2J5Mhg`gE`-w-iL6!QDR2Ba$k zH_Y9;sCy#e$wM#DJqr$^fq;$Lu9z(WfeLqmX-8cI(W@{i3LuLk@ZFh_F!`TEMJso% z3fsBJp88T}k@Y@77UfAQYm7Rr9}Ri*=8pc`-^dQ%6BUM#?HEulH}x0Fm(?^cpH*E> ze`xaBejzKV<67!c?Jd^oTy@N{MdDw`DmCv&&rOn>7+y*kGgF$|6N$%T#VzuKEEKXs z&z^Oc0>$lwQ^mv{CPjG(StCB<%3zqW^%SOd)%x%bSgFy1&wlEjE~Y%tVwzTR$QkjO zrpnvkccB4jt9Kl5RNl(Ky#FVV7$q~+`}sUEiWl)^>G{x}dQ*Rz z)TNukZH6y^mr5E_YODUy@Fnp49!)wW#aG}C_L4IbyAhXVj`pF(XvV$l=d~GB)65r` zy(KcG?-kioVwIKBsgl}RuE8skr{@fAHCDqz}^LWUB*~HYR zcTwD4s-GWt{|};T8`Dh)d2ys4MOc(?5}$bgvEfsCvi3ghcP1jR4K$tDG*+^$yXn00 z_?4N!KE;M18TI2sQkQr*9z8~MgW#IhsW8n4)cz8n_G1|jgj#WP;Yv4TrJGkXOkpBW zUh@&xu6M`E45r~lO>N%cICPAJd=xypDK***Q(*ep<7$h6v{%VveK*liyIR%&ayms0 z@(xm8#zJHkFX3v!m)F{n&h~@$1tj}(jTEj^gX+Jk1!~kKctP2yRGl}tP(Psi-4B?c zey{@i!En1URJA1^V(wQOzZ3hW^GvIJK5{u-yO?n3ZKty4Yc@@-#Y?G9>F%E#!{C*% z=6&DYlc1*-Ar3i^xb&4O_OmQ2ZQ4oA#-!Jfwxk>H){rR@bYX-33RJ$+ngs(3$fvPt zMeiu6su%ZlmReOil0P54IU)O#BoNuh(tHS!De6#%qZ1zmqWlUeKtJ7X%UgT_N>+h!`+81KEv7o~E8CtM!`ZqW9vQJQ zV9R8^(Acesx~QBn#?$trCO*_7=Qb)#@te;SaSVGDFq=w8!z^&@5Z2yA4u+WjDn;lk z&<_?nrrHFX3i8;qEi^*Dj?Fv+p}=tv3QWSr9PO=LoUu$Ux`*wptbKS@`1qNV1dF$b z$47=TkOi_MIj{)uj#nOkjy#17H>Hfd+lb4D1Ok_)DW+mY6&(lsQ%W=VDzM z$y*ARbWLBJ%6{xX_CrjGl6c?nS#G4AGGe6Pj`Qf<%?mvKufnr&14r0ZQXl(5QY3f$+S zf)ZA_GuFvG7RVUgKf9+v(vkyOxQ4t*H;hWt0t^gRvadMJ^ST7lNZ=tq#-*z%di(=3 zCo5P-UPs=O=+UL&>{;2=FgPqJ;?`?rkUG6-5h?0LQ1q(M9A`Bp-CPDYOb+S;OYosW zith}=C2KF7?E~|v#);>{`j{eYckJ;xR3&Oc==j{N6C25@J`zH9w@7yb|-${`|8a0)F79l~=L?ciD zGqdOxNL$nVofh|sW9)LJX*1h63>u+$6=NHjIGXEgwl~OH3=0aekm^q)qxNX3w?myp zATx^nEUfe_3Yot`Kxb5c?qB}YZ`B|00!qYlZ<=T{&wN3uC9%i zk_s)F*+;#oe65M5n*RhIQFK<~ebZi(9uF}7{26dJYW}C7WxyS9ZvcXpkVw6m8;DVA z!MUT_a?6&9X6JC!D0*@|KhYuk6D5s9;fCVrwxt4XTOhawwO25?>Kt}Kyefd^#vH|_ ze1snqt>}3`qr|@y_%TO{9wJ=r(F16w!C>MS{*IXY=0^G+UZm^V2t*r$NxoGC|5I_Sqs^inilb)tRVklVh&G7`EBN~z@8e13rjd{2Iq=zXD9@3_E$ zKxiMBL46QD<3SJ4-AVhFBb}kq6;RklQb_!NxV}Ty^!k-p8Kecma1DTP?NRNxWy=O| zRe0O}!1d;jYz^h87{RwctzzFkweC!>4M&#bE2Ai>AUTU`l)0Q6HMGRG=FLN~wI5AZ z|G8BDbRb@JDID+v$tB;T+uB+n&n`l6QC37J)D;m#0Pxf!3d9v%U$4GF#wzTMg-L?x zGKPiKTF2%4)<#Q|o^M`w|;&_qrL8d^`=Zli^$hGwVIbuO{$FUz+!tUk52m9;my{MU!n9dBo>&KZw zLBOUBx})7_hIO-7I=orYmZCKcmaaO90WpIZkN_gIzRsGXR4r8zKq>YZmImz@L0L5s zF+)3ZK?0Cs|EpT7c@%Qauhw5#z(2Y`auz=D{)8d#&*Km8?}b(0r@6;vWU|=WsvBGH zOW`}16>lvje%XI+rJp(yAYL3e6J3*EtLc^R?)0+qI{$hG+R)8jPRug6YR?n%4>?Zq zsLRA~t)zoY$%ry@H_jr)k7+IneFgmP0$I~qFR2cPBBWvc@>aHPmf$6Kw!`C0@RCe8 zc``fE+~k_a{pJ3>hq-_0A*FU>*;MudJHmlbt^(FwG3VMz`3~%s_J#~9)m;oeV~#=* zOTf6;y9{f5?FQsO2(V^}#i#i?;RI=K3Opg&xJTTIMkI(+E%;^kE4S}`r&lr+B2qme zv;vB_fjBbr@R34_9u3_846Pf@rn^wJ{<{mD69(+s9Y4)j{uQrUy><`F34{T=lHNWr zr#f{2p=vEXbpSyVuy|4O?8UDpfRqC6TBZ(h_$;F$K)@Pl5)E-dLFjF2)A+-XuS&q9 zrV2E_vSdLXyP6*Jqd68bZMUo%Z{$dxI{A^c8K z^(&K`m_M8(u}jiDpS83Ia9ISQpY8&%tBZE%>SCKiS#(@B{=p#DYo|cRQy?0QX-&J_MFA04Jn)goW${HX*&zcT@QXvZsMoEc0-GA59k$+B5CZ}lb_j`F>rCty zC~Eyz7O-u`Bo9LMAMJ(vlxzLBVS#Lw<)P4j$1FI%j#=_}63*FMqrYVqI=K<(?lF>w z_`9lk7A$N0SkiEMYBP14F#pAKJluPNt_R3hh?{XHQD%0{(=Vg~!8PI=LV7h_BHhV? z^$A+Av;=HMFDpSlpc45HXu*1TtN|@p*V}%qMG#Loda^mqW}5&B`~GIRI>@Yjgk{#G zE)&jXDM;P3{cjU+z9DCCg82C-&-Vf30sqRaMB!$f=O_q3b2R`h0O@AGG%GD@mIJh4 zfi$qHY;9mVy0JK_;f!?AEe+$yG`ec7$r@w`RB8Y!c7+XVP8qA)b|zZ$MV?n`ikU=wMEW zHOgMHYj()s*iT@5jAUm+J}d0yN+VIva?t@g5t{8DcZREb3!;FA)Y!+Q#+$hTDBKp) zP|iB}JtG-^g|OL4P~}++q`H84WeMgLIyA4+@&&FiD3eh8p6&r%Ag59z6a}OK=Yih$ z1vQT8tJPmI?H~v1M#k^`3QYlR5$sp6&KhesWkj0^2?Nksz!%V2FH#J>A();ZcE3dn zIxEl#2Pw22OYqT#8RyW>qRLN%lYKs_|8Okm@ap^yFbf4NPv;ecYFCVDCGNXV1v*dV zigREAOTv?YB^E4TsY&HA0RooKd_P8l9H66LGUNAJ22>8j4<`Z3g~SEfi{cI-RS}p{ zwSwSvzb#HbJs6m*N~KS&pcYW`NQKYmEocFkxT~g=huUC=SIIlCPwy>6C;=M)^UCDk zd6f$0RZUVrD%PH0}?u%tOG zZiBQAeK_W<-D4c_S;Qpub(h+s0uP6n#5JcCs*;vJQLaWSmj;<7m8wq?-{B#JEA8>J9QU z^M%{d2<8ei0Pu%XYUUQ~uCncfXCY_jdgnuq$|2j=e*+`Lk|P^Aw|0# z@YYpmR%t-9N*bC~T3}YK_G1esAEY#agR3IwFbHa^D4&}IejGvxKrh$(!X_}{N-7A5 z>j(1I=h2CFfVgsqBYk7WE}pYv1Ok>Z(QCsw>GilL;7Sk9dFU0v^d_7r6L@?`fmHSh zF)>&Hil>PGo>l(64mIb)ddjcZdS0%%h5RT(ieAIq03ADKQ1pJpFoFvLLACi;C$SPE8b1$s2?+p z(TzvOofaLSMY-7yyS$uqL9dhYyaytypsjMxslh@(sZdT$Lw0qqK`L_^c6mun2j~^l zRv{V?aY_UJqE}JoX@Fj_7-sGylvuKe=ZVuh+Ip2)) zt|XKQ&coOhm{ww{Fj(^ih~@Y&qFdfg3Lc)ODplW@gH+{mPWp?`nunP-)qG@J5D$=$ zocW~&pw0L{#GLJEBysm*VKTT5j)nD3)Yf`Ipk38_Kz&sNh^=(mid;ZsIe-sTjWdQ6 z!N0UC=1GS&8_)zIQ2xpQ^1#^Die`glBXlOL)m1!1zifjWE~n-Ju2=fDGKMeFUJXV) z^1P#iF_I!#l#RqmTV<5smcYMdCh2?R+Dj4PI>TqPatkSS38^+|a;tQlfRE_Yt8sJF zulDZt4pl9R9Viz4=|Xkd`i_#dpG|w=dQE%z?eo=GA3U|n*sY7rHsX6J*of!wyx2&M zXXNrh_U$Lu?YmBj=tu_fr~;EonkX`D2~#hn=WRw5yD#~uWV;IGQ5Yj!KgQ`c&$&LV zt|#8RbCcnPLP@N^&k*xj9r-@_A8t2t#FWD^%&hv`DG3AZBoSX%V4 z2p882IzG;nL$jw&pt-~)cfSnFI#1vK;IBVT!5H(FlOTm9OE8$K^SW8068o%~w z<%gYiSLkg{{n^;+hJrrci2|9tu~eO0&0D52m@X~ytP7cq2(8lhoXheqZ`X(%kqW^$IC8UNB==ZsUKGmEMCa*{EBS4Trd+_ z5J4d8bq+!51S=w1su#(w)MHk@#dBjQp53%+KVJL{uIa87=Mpq^7jUthV*V~zC-&G^ zs_9m1_O7nQ+pm}A)9LOUd6Em<6(K17QP%EDuDSE|fQlk6q4UN2QL`;<4(&L0OAS1E zE*TmB2XN9)A1D%jZWJf;A1TUfh);Fks+~-^Hh2lgP{38wfm#wyHP(zU`m+ssV79E( z>=xo>M)3=hs0!luu028z*D+3PRj;}8+>7%T$b-Qp_<0AJj-kZL_Y~>0E!odLz7W_- zRJnhz!J*tKY>u;Bp}F<`lVSE|<*pLc?9}l)6)y?-&FnK1`o?Mfg%tKjRAWB3#!J5q zkubexUB~c*2wp{c3G)q#x_qckA%$((7V8DMrk%gsdN=Kl*BH+o#=m)^9|v@<-(IX= zpmexhv9Jwp^GZaKT&xf|Ln+V>)`UlGr04{JG9P@;6*_w4lB{Ljx?gPkRHQ?NkFb0m zYq_x2yyq^7pKg#s^5^2Gq9PqSN{&RtNT0~r2!Xk*B#mg=(Q^{UZ$&Ve*`n)XMzpG+ zN(M^F-a>y}QpHn(g~~PW?6p{se%X`TR{a{OM1gT*`l5SyWd*6*j9YE7zh@OYtOV>t*Vtcd zQC8~&)oSw|%Y`RtdDl|D)ef_YEUIIed=G4=3$^{l_=kwG)dJJ}lrp}kRG98nmYJ`?%%nU&vl9r}>n|Een&{MaINqWcD% z=*l9T+~!?r(yX6B#_8XYyeNw( z9xEl}+*VWfjo8b;sYi@k1Kg0A?Ox|SIm)5a1vg}UXpJW2)Zp|vPyJPUd-D6Ar>D<) zAm~g{#eX|Be3lR6*18M9G5fdrB5*mPPu?DLf$zX#dC!Ry1tnwDI`Mb8dcqu!=fJK1 zB#)K;h+w#V%eZ0o##9V@EC)E$m$rrLwEI!~_`WC5js&D4V`#O3c0?e<>Mg|%7RP&3 z6leGG?y{XrPz(4+I^z9B9Di3U5Rie9e5*J0oao~d(x~C4)AaaV%89HE`q2`lG{@{v zw9i}S+fUd>Kv3@seg4h)UqL-GomTJiz=0M>n8z`|mZ`%dj=x6#mR0sT=ZVJA?CBu3 z9~d{?V|Q=VJOH^l5XAKIVdvx^>x|lMDy@3yTL zC^1bhUXX#%Zm7F`SoadX2^Wg$Q7h6eN6rpz9iZb;H+8U^Vm=GL5Dp_b^|<9oM82|? ztrj%;&FjTQ;58H!azr?-hi@=5uw_*cierf=UV*{R(J2u-mF2O`s1nH(|6 z2eLX~PfDOB<`TaMcf^?mDP6ENx{@M?xt3wh0LK#sYArC5$4^e2fR7APx*HI>Bg&)$V1dH z39D2y6#TtFp=dg><;bm(9)KwY+YytP9_dArYZsm{E_!1uV{#yU7?kXntqfW;HpC#~ z-!>t2CF)>AnZY(wL3say)B_q;M};yKF8<_~6*%H(BNXu8AP|hRfa83Wzq@MF*U9E{ z6?xuYzT7FOkk8Sz|9@~lx{L?AA7wRL%3{{kvt>`+V7fC^uuNjXP!bEieoYK^=4WIS zI{5XU(-$R^c;w~u7(ntl7}-6l`&HXWqutM7I6s&-KgK_w>2WXGD?+M=&5}8Y96Z=l z0jY6)fZxynenTp*t$GW2Ex!^!e;bz^JbM75&rnpy1{0Rk{ra&1CH4}{?pvJW*L~i6 zPy=wAiH73O<%BMH+%thU<$88AAG0D$_#lWE`K?@(RgD;Abj7>VyxzwenhtE_Ah^g| zcTXAs-1~V_4_DUd%<7MK$EqZSJ8;A35{$81SiM{L-=B9u`gkMn_*!Z|%jkul< zGmySa>-Dgo3UW)>KGydpP3?%2IV?DQ>aJ`YlaSq`0V+q79C{7#>f0Le1h^#{-nAW@0{B0A)wxD?=ebh+hz0P%)- zU4T)=cRTn9IFKu&fP&DFFXzL*ArnTC0uNo0;~eVfu59>L`9O?gfLuQZp6l?+bFM%pI3Um(G4cQo}(*4fZkxqt<8zLcE<8MDHJG}-6 z`U#f|l+r!8gs8w4utle5f-Ohgqcy!Iad9lz!GYrA4)vW62{!7sXprAIb^yGNNWtM{ zv>b3gdM3F0Dr^C9+7j$m{6F$|!msBE5*|Rf^8Y#_Q`Jwt!f>DD<