From 5271a244762a1013afed01d76a4c20ba07ece068 Mon Sep 17 00:00:00 2001 From: jriegel Date: Sun, 9 Nov 2014 22:29:43 +0100 Subject: [PATCH] [Assembly] fixing the commands and some import --- data/tests/Step/as1-ac-214_small.stp | 1519 +++++++++++++++++++++ src/Mod/Assembly/Gui/Command.cpp | 61 +- src/Mod/Assembly/Gui/Workbench.cpp | 26 +- src/Mod/Import/App/AppImportPy.cpp | 252 +++- src/Mod/Import/App/AppImportPy.cpp.orig | 283 ++-- src/Mod/Import/App/ImportOCAFAssembly.cpp | 337 +---- src/Mod/Import/App/ImportOCAFAssembly.h | 49 +- 7 files changed, 2031 insertions(+), 496 deletions(-) create mode 100644 data/tests/Step/as1-ac-214_small.stp diff --git a/data/tests/Step/as1-ac-214_small.stp b/data/tests/Step/as1-ac-214_small.stp new file mode 100644 index 000000000..85b358f64 --- /dev/null +++ b/data/tests/Step/as1-ac-214_small.stp @@ -0,0 +1,1519 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('CATIA V5 STEP Exchange'),'2;1'); + +FILE_NAME('C:\\Users\\jriegel\\SW-Entwicklung\\FreeCAD\\temp\\data\\tests\\Step\\as1-ac-214_small.stp','2014-11-09T11:25:11+00:00',('none'),('none'),'CATIA Version 5 Release 19 SP 3 (IN-10)','CATIA V5 STEP AP203','none'); + +FILE_SCHEMA(('CONFIG_CONTROL_DESIGN')); + +ENDSEC; +/* file written by CATIA V5R19 */ +DATA; +#5=PRODUCT('AS1-AC-214','AS1-AC-214','',(#2)) ; +#56=PRODUCT('L-BRACKET','L-BRACKET','',(#2)) ; +#817=PRODUCT('NUT-BOLT ASSEMBLY','NUT-BOLT ASSEMBLY','',(#2)) ; +#825=PRODUCT('BOLT','BOLT','',(#2)) ; +#1058=PRODUCT('NUT','NUT','',(#2)) ; +#1=APPLICATION_CONTEXT('configuration controlled 3D design of mechanical parts and assemblies') ; +#17=PRODUCT_DEFINITION('None',' ',#6,#3) ; +#819=PRODUCT_DEFINITION('None',' ',#818,#3) ; +#19=SECURITY_CLASSIFICATION(' ',' ',#18) ; +#18=SECURITY_CLASSIFICATION_LEVEL('unclassified') ; +#63=CARTESIAN_POINT('Axis2P3D Location',(146.885775404,5.,0.)) ; +#68=CARTESIAN_POINT('Line Origine',(146.885775404,5.,5.)) ; +#72=CARTESIAN_POINT('Vertex',(30.0000000004,5.,5.)) ; +#74=CARTESIAN_POINT('Vertex',(20.0000000004,5.,5.)) ; +#78=CARTESIAN_POINT('Control Point',(30.,5.,-5.)) ; +#79=CARTESIAN_POINT('Control Point',(30.,4.2146018366,-5.)) ; +#80=CARTESIAN_POINT('Control Point',(30.,3.42920367321,-4.84578743123)) ; +#81=CARTESIAN_POINT('Control Point',(30.0000000001,2.68423158173,-4.53720988735)) ; +#82=CARTESIAN_POINT('Control Point',(30.0000000001,1.35542134095,-3.64457865905)) ; +#83=CARTESIAN_POINT('Control Point',(30.0000000002,0.462790112647,-2.31576841827)) ; +#84=CARTESIAN_POINT('Control Point',(30.0000000002,0.154212568767,-1.57079632679)) ; +#85=CARTESIAN_POINT('Control Point',(30.0000000002,-0.154212568767,1.98447071066E-015)) ; +#86=CARTESIAN_POINT('Control Point',(30.0000000003,0.154212568767,1.57079632679)) ; +#87=CARTESIAN_POINT('Control Point',(30.0000000003,0.462790112647,2.31576841827)) ; +#88=CARTESIAN_POINT('Control Point',(30.0000000003,1.35542134095,3.64457865905)) ; +#89=CARTESIAN_POINT('Control Point',(30.0000000004,2.68423158173,4.53720988735)) ; +#90=CARTESIAN_POINT('Control Point',(30.0000000004,3.42920367321,4.84578743123)) ; +#91=CARTESIAN_POINT('Control Point',(30.0000000004,4.2146018366,5.)) ; +#92=CARTESIAN_POINT('Control Point',(30.0000000004,5.,5.)) ; +#93=CARTESIAN_POINT('Vertex',(30.0000000004,5.,-5.)) ; +#96=CARTESIAN_POINT('Line Origine',(146.885775404,5.,-5.)) ; +#100=CARTESIAN_POINT('Vertex',(20.,5.,-5.)) ; +#104=CARTESIAN_POINT('Control Point',(20.0000000004,5.,5.)) ; +#105=CARTESIAN_POINT('Control Point',(20.0000000004,4.2146018366,5.)) ; +#106=CARTESIAN_POINT('Control Point',(20.0000000004,3.42920367321,4.84578743123)) ; +#107=CARTESIAN_POINT('Control Point',(20.0000000004,2.68423158173,4.53720988735)) ; +#108=CARTESIAN_POINT('Control Point',(20.0000000003,1.35542134095,3.64457865905)) ; +#109=CARTESIAN_POINT('Control Point',(20.0000000003,0.462790112647,2.31576841827)) ; +#110=CARTESIAN_POINT('Control Point',(20.0000000003,0.154212568767,1.57079632679)) ; +#111=CARTESIAN_POINT('Control Point',(20.0000000002,-0.154212568767,-1.13398326323E-015)) ; +#112=CARTESIAN_POINT('Control Point',(20.0000000002,0.154212568767,-1.57079632679)) ; +#113=CARTESIAN_POINT('Control Point',(20.0000000002,0.462790112647,-2.31576841827)) ; +#114=CARTESIAN_POINT('Control Point',(20.0000000001,1.35542134095,-3.64457865905)) ; +#115=CARTESIAN_POINT('Control Point',(20.0000000001,2.68423158173,-4.53720988735)) ; +#116=CARTESIAN_POINT('Control Point',(20.,3.42920367321,-4.84578743123)) ; +#117=CARTESIAN_POINT('Control Point',(20.,4.2146018366,-5.)) ; +#118=CARTESIAN_POINT('Control Point',(20.,5.,-5.)) ; +#127=CARTESIAN_POINT('Axis2P3D Location',(146.885775404,5.,0.)) ; +#132=CARTESIAN_POINT('Axis2P3D Location',(20.0000000004,5.,0.)) ; +#137=CARTESIAN_POINT('Axis2P3D Location',(30.0000000004,5.,0.)) ; +#149=CARTESIAN_POINT('Axis2P3D Location',(30.,25.,-50.)) ; +#154=CARTESIAN_POINT('Line Origine',(30.,0.,50.)) ; +#158=CARTESIAN_POINT('Vertex',(30.,25.,50.)) ; +#160=CARTESIAN_POINT('Vertex',(30.,-25.,50.)) ; +#163=CARTESIAN_POINT('Line Origine',(30.,-25.,0.)) ; +#167=CARTESIAN_POINT('Vertex',(30.,-25.,-50.)) ; +#170=CARTESIAN_POINT('Line Origine',(30.,0.,-50.)) ; +#174=CARTESIAN_POINT('Vertex',(30.,25.,-50.)) ; +#177=CARTESIAN_POINT('Line Origine',(30.,25.,0.)) ; +#189=CARTESIAN_POINT('Control Point',(30.,-13.1698729806,15.4903810564)) ; +#190=CARTESIAN_POINT('Control Point',(30.,-12.8960161287,15.016047075)) ; +#191=CARTESIAN_POINT('Control Point',(30.,-12.6871093474,14.5042147651)) ; +#192=CARTESIAN_POINT('Control Point',(30.,-12.5500072729,13.9666921033)) ; +#193=CARTESIAN_POINT('Control Point',(30.,-12.4264790799,12.8679642662)) ; +#194=CARTESIAN_POINT('Control Point',(30.,-12.6028538506,11.7764747485)) ; +#195=CARTESIAN_POINT('Control Point',(30.,-12.7657199312,11.2461897012)) ; +#196=CARTESIAN_POINT('Control Point',(30.,-13.2324186028,10.2438651882)) ; +#197=CARTESIAN_POINT('Control Point',(30.,-13.9513789308,9.40389287983)) ; +#198=CARTESIAN_POINT('Control Point',(30.,-14.366562681,9.0359933905)) ; +#199=CARTESIAN_POINT('Control Point',(30.,-15.2869440429,8.42332689458)) ; +#200=CARTESIAN_POINT('Control Point',(30.,-16.3381404003,8.08062635872)) ; +#201=CARTESIAN_POINT('Control Point',(30.,-16.8841695996,7.98275046179)) ; +#202=CARTESIAN_POINT('Control Point',(30.,-17.9889534405,7.93899264059)) ; +#203=CARTESIAN_POINT('Control Point',(30.,-19.06483247,8.1938293503)) ; +#204=CARTESIAN_POINT('Control Point',(30.,-19.5819528563,8.39461305141)) ; +#205=CARTESIAN_POINT('Control Point',(30.,-20.4202785222,8.86148802385)) ; +#206=CARTESIAN_POINT('Control Point',(30.,-21.1229012492,9.50902773031)) ; +#207=CARTESIAN_POINT('Control Point',(30.,-21.3919903062,9.81270158389)) ; +#208=CARTESIAN_POINT('Control Point',(30.,-21.6286380923,10.1413919975)) ; +#209=CARTESIAN_POINT('Control Point',(30.,-21.8301270194,10.4903810564)) ; +#210=CARTESIAN_POINT('Vertex',(30.0000000004,-13.1698729811,15.4903810568)) ; +#212=CARTESIAN_POINT('Vertex',(30.0000000004,-21.8301270189,10.4903810568)) ; +#216=CARTESIAN_POINT('Control Point',(30.,-21.8301270194,10.4903810564)) ; +#217=CARTESIAN_POINT('Control Point',(30.,-22.103983871,10.9647150374)) ; +#218=CARTESIAN_POINT('Control Point',(30.,-22.3128906521,11.4765473467)) ; +#219=CARTESIAN_POINT('Control Point',(30.,-22.4499927272,12.0140700109)) ; +#220=CARTESIAN_POINT('Control Point',(30.,-22.57352092,13.112797848)) ; +#221=CARTESIAN_POINT('Control Point',(30.,-22.3971461491,14.2042873658)) ; +#222=CARTESIAN_POINT('Control Point',(30.,-22.2342800694,14.7345724105)) ; +#223=CARTESIAN_POINT('Control Point',(30.,-21.767581398,15.7368969234)) ; +#224=CARTESIAN_POINT('Control Point',(30.,-21.0486210703,16.5768692318)) ; +#225=CARTESIAN_POINT('Control Point',(30.,-20.6334373176,16.9447687251)) ; +#226=CARTESIAN_POINT('Control Point',(30.,-19.7130559573,17.5574352198)) ; +#227=CARTESIAN_POINT('Control Point',(30.,-18.6618596017,17.9001357554)) ; +#228=CARTESIAN_POINT('Control Point',(30.,-18.1158303983,17.9980116512)) ; +#229=CARTESIAN_POINT('Control Point',(30.,-17.0110465561,18.0417694721)) ; +#230=CARTESIAN_POINT('Control Point',(30.,-15.9351675255,17.7869327615)) ; +#231=CARTESIAN_POINT('Control Point',(30.,-15.4180471478,17.5861490638)) ; +#232=CARTESIAN_POINT('Control Point',(30.,-14.5797214775,17.1192740895)) ; +#233=CARTESIAN_POINT('Control Point',(30.,-13.8770987475,16.4717343795)) ; +#234=CARTESIAN_POINT('Control Point',(30.,-13.6080096965,16.1680605327)) ; +#235=CARTESIAN_POINT('Control Point',(30.,-13.3713619088,15.8393701173)) ; +#236=CARTESIAN_POINT('Control Point',(30.,-13.1698729806,15.4903810564)) ; +#243=CARTESIAN_POINT('Control Point',(30.,-21.8301270194,-10.4903810564)) ; +#244=CARTESIAN_POINT('Control Point',(30.,-21.5562701677,-10.0160470753)) ; +#245=CARTESIAN_POINT('Control Point',(30.,-21.2174637758,-9.57921234104)) ; +#246=CARTESIAN_POINT('Control Point',(30.,-20.8205065314,-9.19171712959)) ; +#247=CARTESIAN_POINT('Control Point',(30.,-19.9307444093,-8.53537465804)) ; +#248=CARTESIAN_POINT('Control Point',(30.,-18.8972993738,-8.14237493132)) ; +#249=CARTESIAN_POINT('Control Point',(30.,-18.3566260127,-8.01827857092)) ; +#250=CARTESIAN_POINT('Control Point',(30.,-17.2552381873,-7.92128922002)) ; +#251=CARTESIAN_POINT('Control Point',(30.,-16.1683206673,-8.12394097344)) ; +#252=CARTESIAN_POINT('Control Point',(30.,-15.6421184809,-8.29955090444)) ; +#253=CARTESIAN_POINT('Control Point',(30.,-14.651343053,-8.79029129626)) ; +#254=CARTESIAN_POINT('Control Point',(30.,-13.8289575062,-9.52930377634)) ; +#255=CARTESIAN_POINT('Control Point',(30.,-13.4711798922,-9.95324098914)) ; +#256=CARTESIAN_POINT('Control Point',(30.,-12.8808925865,-10.8881329516)) ; +#257=CARTESIAN_POINT('Control Point',(30.,-12.5636481364,-11.9472898787)) ; +#258=CARTESIAN_POINT('Control Point',(30.,-12.4789717295,-12.4955211137)) ; +#259=CARTESIAN_POINT('Control Point',(30.,-12.4641344825,-13.4549699256)) ; +#260=CARTESIAN_POINT('Control Point',(30.,-12.6736089554,-14.3872289119)) ; +#261=CARTESIAN_POINT('Control Point',(30.,-12.8020536981,-14.7721037957)) ; +#262=CARTESIAN_POINT('Control Point',(30.,-12.9683840533,-15.1413919973)) ; +#263=CARTESIAN_POINT('Control Point',(30.,-13.1698729806,-15.4903810564)) ; +#264=CARTESIAN_POINT('Vertex',(30.0000000004,-21.8301270189,-10.4903810568)) ; +#266=CARTESIAN_POINT('Vertex',(30.0000000004,-13.1698729811,-15.4903810568)) ; +#270=CARTESIAN_POINT('Control Point',(30.,-13.1698729806,-15.4903810564)) ; +#271=CARTESIAN_POINT('Control Point',(30.,-13.4437298331,-15.9647150391)) ; +#272=CARTESIAN_POINT('Control Point',(30.,-13.7825362263,-16.4015497746)) ; +#273=CARTESIAN_POINT('Control Point',(30.,-14.1794934657,-16.7890449812)) ; +#274=CARTESIAN_POINT('Control Point',(30.,-15.069255591,-17.4453874557)) ; +#275=CARTESIAN_POINT('Control Point',(30.,-16.1027006308,-17.8383871833)) ; +#276=CARTESIAN_POINT('Control Point',(30.,-16.6433739825,-17.9624835415)) ; +#277=CARTESIAN_POINT('Control Point',(30.,-17.7447618126,-18.0594728935)) ; +#278=CARTESIAN_POINT('Control Point',(30.,-18.8316793374,-17.8568211386)) ; +#279=CARTESIAN_POINT('Control Point',(30.,-19.3578815148,-17.6812112106)) ; +#280=CARTESIAN_POINT('Control Point',(30.,-20.3486569466,-17.1904708175)) ; +#281=CARTESIAN_POINT('Control Point',(30.,-21.1710424963,-16.4514583344)) ; +#282=CARTESIAN_POINT('Control Point',(30.,-21.528820106,-16.0275211265)) ; +#283=CARTESIAN_POINT('Control Point',(30.,-22.1191074132,-15.0926291625)) ; +#284=CARTESIAN_POINT('Control Point',(30.,-22.4363518638,-14.0334722334)) ; +#285=CARTESIAN_POINT('Control Point',(30.,-22.5210282705,-13.485241)) ; +#286=CARTESIAN_POINT('Control Point',(30.,-22.5358655175,-12.5257921888)) ; +#287=CARTESIAN_POINT('Control Point',(30.,-22.3263910451,-11.5935332031)) ; +#288=CARTESIAN_POINT('Control Point',(30.,-22.197946301,-11.2086583152)) ; +#289=CARTESIAN_POINT('Control Point',(30.,-22.0316159461,-10.8393701146)) ; +#290=CARTESIAN_POINT('Control Point',(30.,-21.8301270194,-10.4903810564)) ; +#301=CARTESIAN_POINT('Axis2P3D Location',(20.,-25.,-50.)) ; +#306=CARTESIAN_POINT('Line Origine',(20.,-5.,50.)) ; +#310=CARTESIAN_POINT('Vertex',(20.,-25.,50.)) ; +#312=CARTESIAN_POINT('Vertex',(20.,15.,50.)) ; +#315=CARTESIAN_POINT('Line Origine',(20.,15.,0.)) ; +#319=CARTESIAN_POINT('Vertex',(20.,15.,-50.)) ; +#322=CARTESIAN_POINT('Line Origine',(20.,-5.,-50.)) ; +#326=CARTESIAN_POINT('Vertex',(20.,-25.,-50.)) ; +#329=CARTESIAN_POINT('Line Origine',(20.,-25.,0.)) ; +#341=CARTESIAN_POINT('Control Point',(20.,-21.8301270194,10.4903810564)) ; +#342=CARTESIAN_POINT('Control Point',(20.,-21.5562701677,10.0160470753)) ; +#343=CARTESIAN_POINT('Control Point',(20.,-21.2174637758,9.57921234103)) ; +#344=CARTESIAN_POINT('Control Point',(20.,-20.8205065314,9.1917171296)) ; +#345=CARTESIAN_POINT('Control Point',(20.,-19.9307444093,8.53537465804)) ; +#346=CARTESIAN_POINT('Control Point',(20.,-18.8972993738,8.14237493132)) ; +#347=CARTESIAN_POINT('Control Point',(20.,-18.3566260127,8.01827857092)) ; +#348=CARTESIAN_POINT('Control Point',(20.,-17.2552381874,7.92128922002)) ; +#349=CARTESIAN_POINT('Control Point',(20.,-16.1683206673,8.12394097343)) ; +#350=CARTESIAN_POINT('Control Point',(20.,-15.6421184809,8.29955090444)) ; +#351=CARTESIAN_POINT('Control Point',(20.,-14.651343053,8.79029129627)) ; +#352=CARTESIAN_POINT('Control Point',(20.,-13.8289575061,9.52930377635)) ; +#353=CARTESIAN_POINT('Control Point',(20.,-13.4711798922,9.95324098912)) ; +#354=CARTESIAN_POINT('Control Point',(20.,-12.8808925865,10.8881329516)) ; +#355=CARTESIAN_POINT('Control Point',(20.,-12.5636481364,11.9472898788)) ; +#356=CARTESIAN_POINT('Control Point',(20.,-12.4789717295,12.4955211137)) ; +#357=CARTESIAN_POINT('Control Point',(20.,-12.4641344825,13.4549699256)) ; +#358=CARTESIAN_POINT('Control Point',(20.,-12.6736089554,14.3872289119)) ; +#359=CARTESIAN_POINT('Control Point',(20.,-12.8020536981,14.7721037957)) ; +#360=CARTESIAN_POINT('Control Point',(20.,-12.9683840533,15.1413919973)) ; +#361=CARTESIAN_POINT('Control Point',(20.,-13.1698729806,15.4903810564)) ; +#362=CARTESIAN_POINT('Vertex',(20.0000000004,-21.8301270189,10.4903810568)) ; +#364=CARTESIAN_POINT('Vertex',(20.,-13.1698729811,15.4903810568)) ; +#368=CARTESIAN_POINT('Control Point',(20.,-13.1698729806,15.4903810564)) ; +#369=CARTESIAN_POINT('Control Point',(20.,-13.4437298332,15.9647150391)) ; +#370=CARTESIAN_POINT('Control Point',(20.,-13.7825362264,16.4015497747)) ; +#371=CARTESIAN_POINT('Control Point',(20.,-14.1794934656,16.7890449811)) ; +#372=CARTESIAN_POINT('Control Point',(20.,-15.069255591,17.4453874556)) ; +#373=CARTESIAN_POINT('Control Point',(20.,-16.1027006308,17.8383871833)) ; +#374=CARTESIAN_POINT('Control Point',(20.,-16.6433739825,17.9624835415)) ; +#375=CARTESIAN_POINT('Control Point',(20.,-17.7447618126,18.0594728935)) ; +#376=CARTESIAN_POINT('Control Point',(20.,-18.8316793374,17.8568211386)) ; +#377=CARTESIAN_POINT('Control Point',(20.,-19.3578815148,17.6812112106)) ; +#378=CARTESIAN_POINT('Control Point',(20.,-20.3486569467,17.1904708175)) ; +#379=CARTESIAN_POINT('Control Point',(20.,-21.1710424963,16.4514583344)) ; +#380=CARTESIAN_POINT('Control Point',(20.,-21.528820106,16.0275211265)) ; +#381=CARTESIAN_POINT('Control Point',(20.,-22.1191074132,15.0926291625)) ; +#382=CARTESIAN_POINT('Control Point',(20.,-22.4363518638,14.0334722334)) ; +#383=CARTESIAN_POINT('Control Point',(20.,-22.5210282705,13.485241)) ; +#384=CARTESIAN_POINT('Control Point',(20.,-22.5358655175,12.5257921888)) ; +#385=CARTESIAN_POINT('Control Point',(20.,-22.3263910451,11.5935332031)) ; +#386=CARTESIAN_POINT('Control Point',(20.,-22.197946301,11.2086583152)) ; +#387=CARTESIAN_POINT('Control Point',(20.,-22.0316159461,10.8393701146)) ; +#388=CARTESIAN_POINT('Control Point',(20.,-21.8301270194,10.4903810564)) ; +#395=CARTESIAN_POINT('Control Point',(20.,-13.1698729806,-15.4903810564)) ; +#396=CARTESIAN_POINT('Control Point',(20.,-12.8960161287,-15.016047075)) ; +#397=CARTESIAN_POINT('Control Point',(20.,-12.6871093474,-14.5042147651)) ; +#398=CARTESIAN_POINT('Control Point',(20.,-12.5500072729,-13.9666921032)) ; +#399=CARTESIAN_POINT('Control Point',(20.,-12.4264790799,-12.8679642662)) ; +#400=CARTESIAN_POINT('Control Point',(20.,-12.6028538506,-11.7764747485)) ; +#401=CARTESIAN_POINT('Control Point',(20.,-12.7657199312,-11.2461897011)) ; +#402=CARTESIAN_POINT('Control Point',(20.,-13.2324186028,-10.2438651882)) ; +#403=CARTESIAN_POINT('Control Point',(20.,-13.9513789308,-9.40389287982)) ; +#404=CARTESIAN_POINT('Control Point',(20.,-14.366562681,-9.0359933905)) ; +#405=CARTESIAN_POINT('Control Point',(20.,-15.2869440429,-8.42332689458)) ; +#406=CARTESIAN_POINT('Control Point',(20.,-16.3381404003,-8.08062635872)) ; +#407=CARTESIAN_POINT('Control Point',(20.,-16.8841695996,-7.98275046179)) ; +#408=CARTESIAN_POINT('Control Point',(20.,-17.9889534405,-7.93899264059)) ; +#409=CARTESIAN_POINT('Control Point',(20.,-19.06483247,-8.1938293503)) ; +#410=CARTESIAN_POINT('Control Point',(20.,-19.5819528563,-8.39461305141)) ; +#411=CARTESIAN_POINT('Control Point',(20.,-20.4202785222,-8.86148802385)) ; +#412=CARTESIAN_POINT('Control Point',(20.,-21.1229012492,-9.50902773031)) ; +#413=CARTESIAN_POINT('Control Point',(20.,-21.3919903062,-9.81270158389)) ; +#414=CARTESIAN_POINT('Control Point',(20.,-21.6286380923,-10.1413919975)) ; +#415=CARTESIAN_POINT('Control Point',(20.,-21.8301270194,-10.4903810564)) ; +#416=CARTESIAN_POINT('Vertex',(20.0000000004,-13.1698729811,-15.4903810568)) ; +#418=CARTESIAN_POINT('Vertex',(20.,-21.8301270189,-10.4903810568)) ; +#422=CARTESIAN_POINT('Control Point',(20.,-21.8301270194,-10.4903810564)) ; +#423=CARTESIAN_POINT('Control Point',(20.,-22.103983871,-10.9647150374)) ; +#424=CARTESIAN_POINT('Control Point',(20.,-22.3128906521,-11.4765473467)) ; +#425=CARTESIAN_POINT('Control Point',(20.,-22.4499927272,-12.0140700109)) ; +#426=CARTESIAN_POINT('Control Point',(20.,-22.57352092,-13.112797848)) ; +#427=CARTESIAN_POINT('Control Point',(20.,-22.3971461491,-14.2042873658)) ; +#428=CARTESIAN_POINT('Control Point',(20.,-22.2342800694,-14.7345724104)) ; +#429=CARTESIAN_POINT('Control Point',(20.,-21.767581398,-15.7368969234)) ; +#430=CARTESIAN_POINT('Control Point',(20.,-21.0486210703,-16.5768692318)) ; +#431=CARTESIAN_POINT('Control Point',(20.,-20.6334373176,-16.9447687252)) ; +#432=CARTESIAN_POINT('Control Point',(20.,-19.7130559572,-17.5574352198)) ; +#433=CARTESIAN_POINT('Control Point',(20.,-18.6618596017,-17.9001357554)) ; +#434=CARTESIAN_POINT('Control Point',(20.,-18.1158303983,-17.9980116512)) ; +#435=CARTESIAN_POINT('Control Point',(20.,-17.0110465561,-18.0417694721)) ; +#436=CARTESIAN_POINT('Control Point',(20.,-15.9351675255,-17.7869327615)) ; +#437=CARTESIAN_POINT('Control Point',(20.,-15.4180471478,-17.5861490637)) ; +#438=CARTESIAN_POINT('Control Point',(20.,-14.5797214775,-17.1192740895)) ; +#439=CARTESIAN_POINT('Control Point',(20.,-13.8770987475,-16.4717343795)) ; +#440=CARTESIAN_POINT('Control Point',(20.,-13.6080096965,-16.1680605327)) ; +#441=CARTESIAN_POINT('Control Point',(20.,-13.3713619088,-15.8393701173)) ; +#442=CARTESIAN_POINT('Control Point',(20.,-13.1698729806,-15.4903810564)) ; +#453=CARTESIAN_POINT('Axis2P3D Location',(20.,-25.,50.)) ; +#458=CARTESIAN_POINT('Line Origine',(25.,-25.,50.)) ; +#463=CARTESIAN_POINT('Line Origine',(0.,25.,50.)) ; +#467=CARTESIAN_POINT('Vertex',(-30.,25.,50.)) ; +#470=CARTESIAN_POINT('Line Origine',(-30.,20.,50.)) ; +#474=CARTESIAN_POINT('Vertex',(-30.,15.,50.)) ; +#477=CARTESIAN_POINT('Line Origine',(-5.,15.,50.)) ; +#491=CARTESIAN_POINT('Axis2P3D Location',(30.,-25.,-50.)) ; +#496=CARTESIAN_POINT('Line Origine',(25.,-25.,-50.)) ; +#508=CARTESIAN_POINT('Axis2P3D Location',(6.66666666667,5.,-50.)) ; +#513=CARTESIAN_POINT('Line Origine',(-4.99999999938,15.,-50.)) ; +#517=CARTESIAN_POINT('Vertex',(-30.,15.,-50.)) ; +#520=CARTESIAN_POINT('Line Origine',(-29.9999999994,20.,-50.)) ; +#524=CARTESIAN_POINT('Vertex',(-30.,25.,-50.)) ; +#527=CARTESIAN_POINT('Line Origine',(6.20900664217E-010,25.,-50.)) ; +#541=CARTESIAN_POINT('Axis2P3D Location',(-30.,25.,-50.)) ; +#546=CARTESIAN_POINT('Line Origine',(-30.,25.,0.)) ; +#558=CARTESIAN_POINT('Control Point',(-10.,25.,5.)) ; +#559=CARTESIAN_POINT('Control Point',(-10.5477137052,25.,5.)) ; +#560=CARTESIAN_POINT('Control Point',(-11.09542688,25.,4.9250024243)) ; +#561=CARTESIAN_POINT('Control Point',(-11.6294861924,25.,4.77497497429)) ; +#562=CARTESIAN_POINT('Control Point',(-12.642776511,25.,4.33258960796)) ; +#563=CARTESIAN_POINT('Control Point',(-13.4998467783,25.,3.63409981446)) ; +#564=CARTESIAN_POINT('Control Point',(-13.8776540543,25.,3.2279111336)) ; +#565=CARTESIAN_POINT('Control Point',(-14.5123432122,25.,2.32257596885)) ; +#566=CARTESIAN_POINT('Control Point',(-14.8803004065,25.,1.27995190258)) ; +#567=CARTESIAN_POINT('Control Point',(-14.9913188347,25.,0.736442489121)) ; +#568=CARTESIAN_POINT('Control Point',(-15.0617129038,25.,-0.366964399168)) ; +#569=CARTESIAN_POINT('Control Point',(-14.8329020956,25.,-1.44867741682)) ; +#570=CARTESIAN_POINT('Control Point',(-14.6446505074,25.,-1.97049052935)) ; +#571=CARTESIAN_POINT('Control Point',(-14.1301539728,25.,-2.94914030862)) ; +#572=CARTESIAN_POINT('Control Point',(-13.3715193963,25.,-3.75346052241)) ; +#573=CARTESIAN_POINT('Control Point',(-12.9390754118,25.,-4.10090806785)) ; +#574=CARTESIAN_POINT('Control Point',(-12.1155869935,25.,-4.59348190386)) ; +#575=CARTESIAN_POINT('Control Point',(-11.2034897956,25.,-4.87820118104)) ; +#576=CARTESIAN_POINT('Control Point',(-10.8059559954,25.,-4.95940221226)) ; +#577=CARTESIAN_POINT('Control Point',(-10.4029778542,25.,-5.)) ; +#578=CARTESIAN_POINT('Control Point',(-10.,25.,-5.)) ; +#579=CARTESIAN_POINT('Vertex',(-10.,25.0000000004,5.)) ; +#581=CARTESIAN_POINT('Vertex',(-10.,25.0000000004,-5.)) ; +#585=CARTESIAN_POINT('Control Point',(-10.,25.,-5.)) ; +#586=CARTESIAN_POINT('Control Point',(-9.45228629483,25.,-5.)) ; +#587=CARTESIAN_POINT('Control Point',(-8.90457311998,25.,-4.92500242429)) ; +#588=CARTESIAN_POINT('Control Point',(-8.37051380756,25.,-4.77497497429)) ; +#589=CARTESIAN_POINT('Control Point',(-7.35722348901,25.,-4.33258960796)) ; +#590=CARTESIAN_POINT('Control Point',(-6.5001532217,25.,-3.63409981447)) ; +#591=CARTESIAN_POINT('Control Point',(-6.12234594572,25.,-3.22791113359)) ; +#592=CARTESIAN_POINT('Control Point',(-5.48765678784,25.,-2.32257596885)) ; +#593=CARTESIAN_POINT('Control Point',(-5.11969959348,25.,-1.27995190257)) ; +#594=CARTESIAN_POINT('Control Point',(-5.00868116525,25.,-0.736442489123)) ; +#595=CARTESIAN_POINT('Control Point',(-4.93828709623,25.,0.366964399184)) ; +#596=CARTESIAN_POINT('Control Point',(-5.16709790445,25.,1.44867741685)) ; +#597=CARTESIAN_POINT('Control Point',(-5.3553494926,25.,1.97049052932)) ; +#598=CARTESIAN_POINT('Control Point',(-5.86984602717,25.,2.94914030863)) ; +#599=CARTESIAN_POINT('Control Point',(-6.6284806037,25.,3.75346052244)) ; +#600=CARTESIAN_POINT('Control Point',(-7.06092458818,25.,4.10090806783)) ; +#601=CARTESIAN_POINT('Control Point',(-7.88441300652,25.,4.59348190386)) ; +#602=CARTESIAN_POINT('Control Point',(-8.79651020437,25.,4.87820118104)) ; +#603=CARTESIAN_POINT('Control Point',(-9.19404400457,25.,4.95940221226)) ; +#604=CARTESIAN_POINT('Control Point',(-9.59702214582,25.,5.)) ; +#605=CARTESIAN_POINT('Control Point',(-10.,25.,5.)) ; +#612=CARTESIAN_POINT('Axis2P3D Location',(146.885775404,-17.5,12.9903810568)) ; +#617=CARTESIAN_POINT('Line Origine',(146.885775404,-21.8301270189,10.4903810568)) ; +#622=CARTESIAN_POINT('Line Origine',(146.885775404,-13.1698729811,15.4903810568)) ; +#634=CARTESIAN_POINT('Axis2P3D Location',(146.885775404,-17.5,12.9903810568)) ; +#646=CARTESIAN_POINT('Axis2P3D Location',(146.885775404,-17.5,-12.9903810568)) ; +#651=CARTESIAN_POINT('Line Origine',(146.885775404,-13.1698729811,-15.4903810568)) ; +#656=CARTESIAN_POINT('Line Origine',(146.885775404,-21.8301270189,-10.4903810568)) ; +#668=CARTESIAN_POINT('Axis2P3D Location',(146.885775404,-17.5,-12.9903810568)) ; +#680=CARTESIAN_POINT('Axis2P3D Location',(20.,15.,-50.)) ; +#685=CARTESIAN_POINT('Line Origine',(-30.,15.,0.)) ; +#697=CARTESIAN_POINT('Control Point',(-10.,15.,-5.)) ; +#698=CARTESIAN_POINT('Control Point',(-10.5477137052,15.,-5.)) ; +#699=CARTESIAN_POINT('Control Point',(-11.0954268801,15.,-4.92500242428)) ; +#700=CARTESIAN_POINT('Control Point',(-11.6294861924,15.,-4.77497497432)) ; +#701=CARTESIAN_POINT('Control Point',(-12.642776511,15.,-4.33258960797)) ; +#702=CARTESIAN_POINT('Control Point',(-13.4998467783,15.,-3.63409981443)) ; +#703=CARTESIAN_POINT('Control Point',(-13.8776540542,15.,-3.22791113364)) ; +#704=CARTESIAN_POINT('Control Point',(-14.5123432122,15.,-2.32257596888)) ; +#705=CARTESIAN_POINT('Control Point',(-14.8803004065,15.,-1.27995190258)) ; +#706=CARTESIAN_POINT('Control Point',(-14.9913188347,15.,-0.736442489115)) ; +#707=CARTESIAN_POINT('Control Point',(-15.0617129038,15.,0.366964399197)) ; +#708=CARTESIAN_POINT('Control Point',(-14.8329020955,15.,1.44867741687)) ; +#709=CARTESIAN_POINT('Control Point',(-14.6446505074,15.,1.97049052931)) ; +#710=CARTESIAN_POINT('Control Point',(-14.1301539728,15.,2.94914030861)) ; +#711=CARTESIAN_POINT('Control Point',(-13.3715193963,15.,3.75346052243)) ; +#712=CARTESIAN_POINT('Control Point',(-12.9390754118,15.,4.10090806784)) ; +#713=CARTESIAN_POINT('Control Point',(-12.1155869935,15.,4.59348190386)) ; +#714=CARTESIAN_POINT('Control Point',(-11.2034897956,15.,4.87820118104)) ; +#715=CARTESIAN_POINT('Control Point',(-10.8059559954,15.,4.95940221226)) ; +#716=CARTESIAN_POINT('Control Point',(-10.4029778542,15.,5.)) ; +#717=CARTESIAN_POINT('Control Point',(-10.,15.,5.)) ; +#718=CARTESIAN_POINT('Vertex',(-10.,15.0000000004,-5.)) ; +#720=CARTESIAN_POINT('Vertex',(-10.,15.,5.)) ; +#724=CARTESIAN_POINT('Control Point',(-10.,15.,5.)) ; +#725=CARTESIAN_POINT('Control Point',(-9.45228629483,15.,5.)) ; +#726=CARTESIAN_POINT('Control Point',(-8.90457311998,15.,4.9250024243)) ; +#727=CARTESIAN_POINT('Control Point',(-8.37051380755,15.,4.77497497429)) ; +#728=CARTESIAN_POINT('Control Point',(-7.35722348899,15.,4.33258960795)) ; +#729=CARTESIAN_POINT('Control Point',(-6.50015322168,15.,3.63409981445)) ; +#730=CARTESIAN_POINT('Control Point',(-6.12234594573,15.,3.22791113361)) ; +#731=CARTESIAN_POINT('Control Point',(-5.48765678784,15.,2.32257596886)) ; +#732=CARTESIAN_POINT('Control Point',(-5.11969959348,15.,1.27995190258)) ; +#733=CARTESIAN_POINT('Control Point',(-5.00868116525,15.,0.736442489116)) ; +#734=CARTESIAN_POINT('Control Point',(-4.93828709623,15.,-0.366964399172)) ; +#735=CARTESIAN_POINT('Control Point',(-5.16709790445,15.,-1.44867741682)) ; +#736=CARTESIAN_POINT('Control Point',(-5.35534949262,15.,-1.97049052936)) ; +#737=CARTESIAN_POINT('Control Point',(-5.86984602718,15.,-2.94914030863)) ; +#738=CARTESIAN_POINT('Control Point',(-6.62848060368,15.,-3.75346052242)) ; +#739=CARTESIAN_POINT('Control Point',(-7.06092458819,15.,-4.10090806784)) ; +#740=CARTESIAN_POINT('Control Point',(-7.88441300653,15.,-4.59348190386)) ; +#741=CARTESIAN_POINT('Control Point',(-8.79651020436,15.,-4.87820118104)) ; +#742=CARTESIAN_POINT('Control Point',(-9.19404400458,15.,-4.95940221226)) ; +#743=CARTESIAN_POINT('Control Point',(-9.59702214582,15.,-5.)) ; +#744=CARTESIAN_POINT('Control Point',(-10.,15.,-5.)) ; +#751=CARTESIAN_POINT('Axis2P3D Location',(-30.,15.,-50.)) ; +#763=CARTESIAN_POINT('Axis2P3D Location',(-10.,141.885775404,0.)) ; +#768=CARTESIAN_POINT('Line Origine',(-10.,141.885775404,-5.)) ; +#773=CARTESIAN_POINT('Line Origine',(-10.,141.885775404,5.)) ; +#785=CARTESIAN_POINT('Axis2P3D Location',(-10.,141.885775404,0.)) ; +#807=CARTESIAN_POINT('NONE',(0.,0.,0.)) ; +#808=CARTESIAN_POINT('NONE',(150.,75.,50.)) ; +#832=CARTESIAN_POINT('Axis2P3D Location',(1.5,1.006602E-014,1.746751E-014)) ; +#837=CARTESIAN_POINT('Axis2P3D Location',(1.5,1.13982876296E-014,1.61352423704E-014)) ; +#841=CARTESIAN_POINT('Vertex',(1.5,7.5,0.)) ; +#843=CARTESIAN_POINT('Vertex',(1.5,-7.5,-4.24912383924E-015)) ; +#846=CARTESIAN_POINT('Axis2P3D Location',(1.5,8.73375237045E-015,1.87997776296E-014)) ; +#855=CARTESIAN_POINT('Axis2P3D Location',(1.5,1.09541984197E-014,1.65793315803E-014)) ; +#859=CARTESIAN_POINT('Vertex',(1.5,5.,0.)) ; +#861=CARTESIAN_POINT('Vertex',(1.5,-5.,6.12303176911E-016)) ; +#864=CARTESIAN_POINT('Axis2P3D Location',(1.5,9.1778415803E-015,1.83556884197E-014)) ; +#874=CARTESIAN_POINT('Axis2P3D Location',(1.5,0.,0.)) ; +#879=CARTESIAN_POINT('Line Origine',(1.5,5.,-1.22460635382E-015)) ; +#883=CARTESIAN_POINT('Vertex',(38.5,5.,0.)) ; +#886=CARTESIAN_POINT('Axis2P3D Location',(38.5,0.,0.)) ; +#890=CARTESIAN_POINT('Vertex',(38.5,-5.,6.12303176911E-016)) ; +#893=CARTESIAN_POINT('Line Origine',(1.5,-5.,6.12303176911E-016)) ; +#905=CARTESIAN_POINT('Axis2P3D Location',(1.5,0.,0.)) ; +#910=CARTESIAN_POINT('Axis2P3D Location',(38.5,0.,0.)) ; +#922=CARTESIAN_POINT('Axis2P3D Location',(38.5,5.,0.)) ; +#932=CARTESIAN_POINT('Axis2P3D Location',(1.5,0.,0.)) ; +#937=CARTESIAN_POINT('Line Origine',(1.5,7.5,0.)) ; +#941=CARTESIAN_POINT('Vertex',(0.5,7.5,0.)) ; +#944=CARTESIAN_POINT('Line Origine',(1.5,-7.5,-4.24912383924E-015)) ; +#948=CARTESIAN_POINT('Vertex',(0.5,-7.5,-4.24912383924E-015)) ; +#951=CARTESIAN_POINT('Axis2P3D Location',(0.5,0.,0.)) ; +#963=CARTESIAN_POINT('Axis2P3D Location',(1.5,0.,0.)) ; +#968=CARTESIAN_POINT('Axis2P3D Location',(0.5,0.,0.)) ; +#980=CARTESIAN_POINT('Axis2P3D Location',(-1.5,7.5,0.)) ; +#985=CARTESIAN_POINT('Axis2P3D Location',(-1.5,0.,-2.53269627493E-015)) ; +#989=CARTESIAN_POINT('Vertex',(-1.5,5.5,7.7538984584E-008)) ; +#991=CARTESIAN_POINT('Vertex',(-1.5,-5.5,-9.61987094331E-008)) ; +#994=CARTESIAN_POINT('Axis2P3D Location',(-1.5,8.881784197E-016,-4.30211422042E-016)) ; +#1004=CARTESIAN_POINT('Axis2P3D Location',(0.5,8.881784197E-016,-3.33066907388E-015)) ; +#1009=CARTESIAN_POINT('Axis2P3D Location',(0.5,5.5,2.74629163854E-009)) ; +#1014=CARTESIAN_POINT('Axis2P3D Location',(0.5,-5.5,-9.6198709526E-008)) ; +#1026=CARTESIAN_POINT('Axis2P3D Location',(0.5,4.4408920985E-016,-1.55431223448E-015)) ; +#1048=CARTESIAN_POINT('NONE',(0.,0.,0.)) ; +#1049=CARTESIAN_POINT('NONE',(252.527291545,67.3529469863,18.9365794127)) ; +#1065=CARTESIAN_POINT('Axis2P3D Location',(-1.5,-7.5,-10.)) ; +#1070=CARTESIAN_POINT('Line Origine',(-1.5,0.,-10.)) ; +#1074=CARTESIAN_POINT('Vertex',(-1.5,-7.5,-10.)) ; +#1076=CARTESIAN_POINT('Vertex',(-1.5,7.5,-10.)) ; +#1079=CARTESIAN_POINT('Line Origine',(-1.5,-7.5,0.)) ; +#1083=CARTESIAN_POINT('Vertex',(-1.5,-7.5,10.)) ; +#1086=CARTESIAN_POINT('Line Origine',(-1.5,0.,10.)) ; +#1090=CARTESIAN_POINT('Vertex',(-1.5,7.5,10.)) ; +#1093=CARTESIAN_POINT('Line Origine',(-1.5,7.5,0.)) ; +#1104=CARTESIAN_POINT('Axis2P3D Location',(-1.5,8.881784197E-016,0.)) ; +#1108=CARTESIAN_POINT('Vertex',(-1.50000000059,8.34347776911E-016,-5.)) ; +#1110=CARTESIAN_POINT('Vertex',(-1.5,2.6645352591E-015,5.)) ; +#1113=CARTESIAN_POINT('Axis2P3D Location',(-1.5,-8.881784197E-016,0.)) ; +#1123=CARTESIAN_POINT('Axis2P3D Location',(1.5,-7.5,-10.)) ; +#1128=CARTESIAN_POINT('Line Origine',(-0.5,-7.5,-10.)) ; +#1132=CARTESIAN_POINT('Vertex',(0.5,-7.5,-10.)) ; +#1135=CARTESIAN_POINT('Line Origine',(-0.5,7.5,-10.)) ; +#1139=CARTESIAN_POINT('Vertex',(0.5,7.5,-10.)) ; +#1142=CARTESIAN_POINT('Line Origine',(0.5,-8.881784197E-016,-10.)) ; +#1154=CARTESIAN_POINT('Axis2P3D Location',(1.5,-7.5,10.)) ; +#1159=CARTESIAN_POINT('Line Origine',(-0.5,-7.5,10.)) ; +#1163=CARTESIAN_POINT('Vertex',(0.5,-7.5,10.)) ; +#1166=CARTESIAN_POINT('Line Origine',(0.5,-7.5,-1.7763568394E-015)) ; +#1178=CARTESIAN_POINT('Axis2P3D Location',(1.5,7.5,10.)) ; +#1183=CARTESIAN_POINT('Line Origine',(-0.5,7.5,10.)) ; +#1187=CARTESIAN_POINT('Vertex',(0.5,7.5,10.)) ; +#1190=CARTESIAN_POINT('Line Origine',(0.5,-1.7763568394E-015,10.)) ; +#1202=CARTESIAN_POINT('Axis2P3D Location',(1.5,7.5,-10.)) ; +#1207=CARTESIAN_POINT('Line Origine',(0.5,7.5,1.7763568394E-015)) ; +#1219=CARTESIAN_POINT('Axis2P3D Location',(0.5,0.,9.)) ; +#1225=CARTESIAN_POINT('Control Point',(1.5,6.5,9.)) ; +#1226=CARTESIAN_POINT('Control Point',(1.5,6.60172877653,9.10172877653)) ; +#1227=CARTESIAN_POINT('Control Point',(1.48706407003,6.70294375782,9.20396816251)) ; +#1228=CARTESIAN_POINT('Control Point',(1.46135276871,6.80390140682,9.30389465826)) ; +#1229=CARTESIAN_POINT('Control Point',(1.38209084822,7.00229313499,9.50228479367)) ; +#1230=CARTESIAN_POINT('Control Point',(1.24254361508,7.18462387437,9.68463244784)) ; +#1231=CARTESIAN_POINT('Control Point',(1.15662240902,7.26921826151,9.76921898666)) ; +#1232=CARTESIAN_POINT('Control Point',(0.987345401215,7.39073963531,9.89073916732)) ; +#1233=CARTESIAN_POINT('Control Point',(0.774983165596,7.46765962756,9.96765992959)) ; +#1234=CARTESIAN_POINT('Control Point',(0.685696192879,7.48922399455,9.98922399452)) ; +#1235=CARTESIAN_POINT('Control Point',(0.592848286934,7.5,10.)) ; +#1236=CARTESIAN_POINT('Control Point',(0.5,7.5,10.)) ; +#1237=CARTESIAN_POINT('Vertex',(1.5,6.5,9.)) ; +#1241=CARTESIAN_POINT('Control Point',(1.5,-6.5,9.)) ; +#1242=CARTESIAN_POINT('Control Point',(1.5,-6.60172877653,9.10172877653)) ; +#1243=CARTESIAN_POINT('Control Point',(1.48706407003,-6.70294375782,9.20396816251)) ; +#1244=CARTESIAN_POINT('Control Point',(1.46135276871,-6.80390140682,9.30389465826)) ; +#1245=CARTESIAN_POINT('Control Point',(1.38209084822,-7.00229313499,9.50228479367)) ; +#1246=CARTESIAN_POINT('Control Point',(1.24254361508,-7.18462387437,9.68463244784)) ; +#1247=CARTESIAN_POINT('Control Point',(1.15662240902,-7.26921826151,9.76921898666)) ; +#1248=CARTESIAN_POINT('Control Point',(0.987345401215,-7.39073963531,9.89073916732)) ; +#1249=CARTESIAN_POINT('Control Point',(0.774983165597,-7.46765962756,9.96765992959)) ; +#1250=CARTESIAN_POINT('Control Point',(0.685696192878,-7.48922399455,9.98922399452)) ; +#1251=CARTESIAN_POINT('Control Point',(0.592848286933,-7.5,10.)) ; +#1252=CARTESIAN_POINT('Control Point',(0.5,-7.5,10.)) ; +#1253=CARTESIAN_POINT('Vertex',(1.5,-6.5,9.)) ; +#1256=CARTESIAN_POINT('Line Origine',(1.5,0.,9.)) ; +#1268=CARTESIAN_POINT('Axis2P3D Location',(0.5,6.5,0.)) ; +#1274=CARTESIAN_POINT('Control Point',(1.5,6.5,-9.)) ; +#1275=CARTESIAN_POINT('Control Point',(1.5,6.60172877653,-9.10172877653)) ; +#1276=CARTESIAN_POINT('Control Point',(1.48706407003,6.70396816251,-9.20294375782)) ; +#1277=CARTESIAN_POINT('Control Point',(1.46135276871,6.80389465826,-9.30390140682)) ; +#1278=CARTESIAN_POINT('Control Point',(1.38209084822,7.00228479367,-9.50229313499)) ; +#1279=CARTESIAN_POINT('Control Point',(1.24254361508,7.18463244784,-9.68462387437)) ; +#1280=CARTESIAN_POINT('Control Point',(1.15662240902,7.26921898666,-9.76921826151)) ; +#1281=CARTESIAN_POINT('Control Point',(0.987345401215,7.39073916732,-9.89073963531)) ; +#1282=CARTESIAN_POINT('Control Point',(0.774983165598,7.46765992959,-9.96765962756)) ; +#1283=CARTESIAN_POINT('Control Point',(0.685696192875,7.48922399452,-9.98922399455)) ; +#1284=CARTESIAN_POINT('Control Point',(0.592848286932,7.5,-10.)) ; +#1285=CARTESIAN_POINT('Control Point',(0.5,7.5,-10.)) ; +#1286=CARTESIAN_POINT('Vertex',(1.5,6.5,-9.)) ; +#1289=CARTESIAN_POINT('Line Origine',(1.5,6.5,0.)) ; +#1301=CARTESIAN_POINT('Axis2P3D Location',(0.5,0.,-9.)) ; +#1307=CARTESIAN_POINT('Control Point',(1.5,-6.5,-9.)) ; +#1308=CARTESIAN_POINT('Control Point',(1.5,-6.60172877653,-9.10172877653)) ; +#1309=CARTESIAN_POINT('Control Point',(1.48706407003,-6.70294375782,-9.20396816251)) ; +#1310=CARTESIAN_POINT('Control Point',(1.46135276871,-6.80390140682,-9.30389465826)) ; +#1311=CARTESIAN_POINT('Control Point',(1.38209084822,-7.00229313499,-9.50228479367)) ; +#1312=CARTESIAN_POINT('Control Point',(1.24254361508,-7.18462387437,-9.68463244784)) ; +#1313=CARTESIAN_POINT('Control Point',(1.15662240902,-7.26921826151,-9.76921898666)) ; +#1314=CARTESIAN_POINT('Control Point',(0.987345401215,-7.39073963531,-9.89073916732)) ; +#1315=CARTESIAN_POINT('Control Point',(0.774983165596,-7.46765962756,-9.96765992959)) ; +#1316=CARTESIAN_POINT('Control Point',(0.685696192877,-7.48922399455,-9.98922399452)) ; +#1317=CARTESIAN_POINT('Control Point',(0.592848286933,-7.5,-10.)) ; +#1318=CARTESIAN_POINT('Control Point',(0.5,-7.5,-10.)) ; +#1319=CARTESIAN_POINT('Vertex',(1.5,-6.5,-9.)) ; +#1322=CARTESIAN_POINT('Line Origine',(1.5,0.,-9.)) ; +#1334=CARTESIAN_POINT('Axis2P3D Location',(0.5,-6.5,0.)) ; +#1339=CARTESIAN_POINT('Line Origine',(1.5,-6.5,0.)) ; +#1351=CARTESIAN_POINT('Axis2P3D Location',(-23.679356624,2.220446E-016,0.)) ; +#1356=CARTESIAN_POINT('Axis2P3D Location',(0.5,2.220446E-016,0.)) ; +#1360=CARTESIAN_POINT('Vertex',(0.5,2.220446E-016,5.)) ; +#1362=CARTESIAN_POINT('Vertex',(0.5,8.34347776911E-016,-5.)) ; +#1365=CARTESIAN_POINT('Line Origine',(-23.6793566234,2.220446E-016,5.)) ; +#1370=CARTESIAN_POINT('Line Origine',(-23.6793566234,8.34347776911E-016,-5.)) ; +#1382=CARTESIAN_POINT('Axis2P3D Location',(-23.679356624,2.220446E-016,0.)) ; +#1387=CARTESIAN_POINT('Axis2P3D Location',(0.5,2.220446E-016,0.)) ; +#1399=CARTESIAN_POINT('Axis2P3D Location',(1.5,0.,0.)) ; +#1410=CARTESIAN_POINT('Axis2P3D Location',(1.5,4.7878367937E-015,-4.55191440096E-015)) ; +#1414=CARTESIAN_POINT('Vertex',(1.5,6.48547187913E-008,6.)) ; +#1416=CARTESIAN_POINT('Vertex',(1.5,-2.50929248776E-008,-6.)) ; +#1419=CARTESIAN_POINT('Axis2P3D Location',(1.5,-9.32587340685E-015,8.43769498715E-015)) ; +#1429=CARTESIAN_POINT('Axis2P3D Location',(0.5,0.,-4.4408920985E-016)) ; +#1434=CARTESIAN_POINT('Axis2P3D Location',(0.5,0.,6.)) ; +#1439=CARTESIAN_POINT('Axis2P3D Location',(0.5,7.66053886991E-015,-6.)) ; +#1451=CARTESIAN_POINT('Axis2P3D Location',(0.5,-1.11022302463E-015,-4.4408920985E-016)) ; +#1473=CARTESIAN_POINT('NONE',(0.,0.,0.)) ; +#1474=CARTESIAN_POINT('NONE',(252.527291545,100.352946986,18.9365794127)) ; +#1486=CARTESIAN_POINT('NONE',(0.,0.,0.)) ; +#1487=CARTESIAN_POINT('NONE',(-97.5272915445,56.0634205873,98.8529469863)) ; +#1501=CARTESIAN_POINT('NONE',(0.,0.,0.)) ; +#1502=CARTESIAN_POINT('NONE',(-120.027291545,43.0730395305,98.8529469863)) ; +#64=DIRECTION('Axis2P3D Direction',(1.,1.224606E-016,-0.)) ; +#65=DIRECTION('Axis2P3D XDirection',(0.,0.,1.)) ; +#69=DIRECTION('Vector Direction',(1.,1.22460619423E-016,0.)) ; +#97=DIRECTION('Vector Direction',(1.,1.22460619423E-016,0.)) ; +#128=DIRECTION('Axis2P3D Direction',(1.,1.224606E-016,-0.)) ; +#129=DIRECTION('Axis2P3D XDirection',(1.49970981812E-032,-1.22464679915E-016,-1.)) ; +#133=DIRECTION('Axis2P3D Direction',(1.,1.224606E-016,-0.)) ; +#138=DIRECTION('Axis2P3D Direction',(1.,1.224606E-016,-0.)) ; +#150=DIRECTION('Axis2P3D Direction',(1.,0.,0.)) ; +#151=DIRECTION('Axis2P3D XDirection',(0.,0.,-1.)) ; +#155=DIRECTION('Vector Direction',(0.,-1.,0.)) ; +#164=DIRECTION('Vector Direction',(0.,0.,1.)) ; +#171=DIRECTION('Vector Direction',(0.,-1.,0.)) ; +#178=DIRECTION('Vector Direction',(0.,0.,1.)) ; +#302=DIRECTION('Axis2P3D Direction',(-1.,0.,0.)) ; +#303=DIRECTION('Axis2P3D XDirection',(0.,0.,1.)) ; +#307=DIRECTION('Vector Direction',(0.,1.,0.)) ; +#316=DIRECTION('Vector Direction',(0.,0.,1.)) ; +#323=DIRECTION('Vector Direction',(0.,1.,0.)) ; +#330=DIRECTION('Vector Direction',(0.,0.,1.)) ; +#454=DIRECTION('Axis2P3D Direction',(0.,0.,-1.)) ; +#455=DIRECTION('Axis2P3D XDirection',(-1.,0.,0.)) ; +#459=DIRECTION('Vector Direction',(-1.,0.,0.)) ; +#464=DIRECTION('Vector Direction',(1.,0.,0.)) ; +#471=DIRECTION('Vector Direction',(0.,1.,0.)) ; +#478=DIRECTION('Vector Direction',(-1.,0.,0.)) ; +#492=DIRECTION('Axis2P3D Direction',(0.,-1.,0.)) ; +#493=DIRECTION('Axis2P3D XDirection',(0.,0.,-1.)) ; +#497=DIRECTION('Vector Direction',(-1.,0.,0.)) ; +#509=DIRECTION('Axis2P3D Direction',(0.,0.,1.)) ; +#510=DIRECTION('Axis2P3D XDirection',(1.,0.,0.)) ; +#514=DIRECTION('Vector Direction',(-1.,0.,0.)) ; +#521=DIRECTION('Vector Direction',(0.,1.,0.)) ; +#528=DIRECTION('Vector Direction',(1.,0.,0.)) ; +#542=DIRECTION('Axis2P3D Direction',(0.,1.,0.)) ; +#543=DIRECTION('Axis2P3D XDirection',(0.,0.,1.)) ; +#547=DIRECTION('Vector Direction',(0.,0.,1.)) ; +#613=DIRECTION('Axis2P3D Direction',(1.,3.06151588734E-017,-5.30270106505E-017)) ; +#614=DIRECTION('Axis2P3D XDirection',(0.,-0.866025403784,-0.5)) ; +#618=DIRECTION('Vector Direction',(1.,3.06151548557E-017,-5.3027093827E-017)) ; +#623=DIRECTION('Vector Direction',(1.,3.06151548557E-017,-5.3027093827E-017)) ; +#635=DIRECTION('Axis2P3D Direction',(1.,3.06151588734E-017,-5.30270106505E-017)) ; +#636=DIRECTION('Axis2P3D XDirection',(-7.49855126393E-033,0.866025403784,0.5)) ; +#647=DIRECTION('Axis2P3D Direction',(1.,3.06151588734E-017,5.30270106505E-017)) ; +#648=DIRECTION('Axis2P3D XDirection',(0.,0.866025403784,-0.5)) ; +#652=DIRECTION('Vector Direction',(1.,3.06151548557E-017,5.3027093827E-017)) ; +#657=DIRECTION('Vector Direction',(1.,3.06151548557E-017,5.3027093827E-017)) ; +#669=DIRECTION('Axis2P3D Direction',(1.,3.06151588734E-017,5.30270106505E-017)) ; +#670=DIRECTION('Axis2P3D XDirection',(-7.49855126393E-033,-0.866025403784,0.5)) ; +#681=DIRECTION('Axis2P3D Direction',(0.,-1.,0.)) ; +#682=DIRECTION('Axis2P3D XDirection',(0.,0.,-1.)) ; +#686=DIRECTION('Vector Direction',(0.,0.,1.)) ; +#752=DIRECTION('Axis2P3D Direction',(-1.,0.,0.)) ; +#753=DIRECTION('Axis2P3D XDirection',(0.,0.,1.)) ; +#764=DIRECTION('Axis2P3D Direction',(0.,1.,0.)) ; +#765=DIRECTION('Axis2P3D XDirection',(0.,0.,-1.)) ; +#769=DIRECTION('Vector Direction',(0.,1.,0.)) ; +#774=DIRECTION('Vector Direction',(0.,1.,0.)) ; +#786=DIRECTION('Axis2P3D Direction',(0.,1.,0.)) ; +#787=DIRECTION('Axis2P3D XDirection',(-1.22464679915E-016,0.,1.)) ; +#809=DIRECTION('NONE',(1.,0.,0.)) ; +#810=DIRECTION('NONE',(0.,0.,1.)) ; +#811=DIRECTION('NONE',(-2.220446E-016,2.220446E-016,-1.)) ; +#812=DIRECTION('NONE',(-2.220446E-016,-1.,-2.220446E-016)) ; +#833=DIRECTION('Axis2P3D Direction',(-1.,0.,0.)) ; +#834=DIRECTION('Axis2P3D XDirection',(0.,0.,1.)) ; +#838=DIRECTION('Axis2P3D Direction',(-1.,0.,0.)) ; +#847=DIRECTION('Axis2P3D Direction',(-1.,0.,0.)) ; +#856=DIRECTION('Axis2P3D Direction',(-1.,0.,0.)) ; +#865=DIRECTION('Axis2P3D Direction',(-1.,0.,0.)) ; +#875=DIRECTION('Axis2P3D Direction',(1.,0.,0.)) ; +#876=DIRECTION('Axis2P3D XDirection',(0.,-1.,1.22464679915E-016)) ; +#880=DIRECTION('Vector Direction',(1.,0.,0.)) ; +#887=DIRECTION('Axis2P3D Direction',(1.,0.,0.)) ; +#894=DIRECTION('Vector Direction',(1.,0.,0.)) ; +#906=DIRECTION('Axis2P3D Direction',(1.,0.,0.)) ; +#907=DIRECTION('Axis2P3D XDirection',(0.,1.,0.)) ; +#911=DIRECTION('Axis2P3D Direction',(1.,0.,0.)) ; +#923=DIRECTION('Axis2P3D Direction',(-1.,0.,0.)) ; +#924=DIRECTION('Axis2P3D XDirection',(0.,0.,1.)) ; +#933=DIRECTION('Axis2P3D Direction',(-1.,0.,0.)) ; +#934=DIRECTION('Axis2P3D XDirection',(0.,1.,0.)) ; +#938=DIRECTION('Vector Direction',(-1.,0.,0.)) ; +#945=DIRECTION('Vector Direction',(-1.,0.,0.)) ; +#952=DIRECTION('Axis2P3D Direction',(-1.,0.,0.)) ; +#964=DIRECTION('Axis2P3D Direction',(-1.,0.,0.)) ; +#965=DIRECTION('Axis2P3D XDirection',(0.,-1.,-5.66553889765E-016)) ; +#969=DIRECTION('Axis2P3D Direction',(-1.,0.,0.)) ; +#981=DIRECTION('Axis2P3D Direction',(-1.,0.,0.)) ; +#982=DIRECTION('Axis2P3D XDirection',(0.,0.,1.)) ; +#986=DIRECTION('Axis2P3D Direction',(-1.,0.,0.)) ; +#995=DIRECTION('Axis2P3D Direction',(-1.,0.,0.)) ; +#1005=DIRECTION('Axis2P3D Direction',(-1.,-0.,0.)) ; +#1006=DIRECTION('Axis2P3D XDirection',(0.,-0.916336428703,-0.400409227456)) ; +#1010=DIRECTION('Axis2P3D Direction',(0.,-4.99326358039E-010,1.)) ; +#1015=DIRECTION('Axis2P3D Direction',(-0.,1.74906738537E-008,-1.)) ; +#1027=DIRECTION('Axis2P3D Direction',(-1.,0.,0.)) ; +#1028=DIRECTION('Axis2P3D XDirection',(0.,0.909870182947,0.414893058733)) ; +#1050=DIRECTION('NONE',(1.,0.,0.)) ; +#1051=DIRECTION('NONE',(0.,0.,1.)) ; +#1052=DIRECTION('NONE',(0.,1.,1.224606E-016)) ; +#1053=DIRECTION('NONE',(-1.,0.,0.)) ; +#1066=DIRECTION('Axis2P3D Direction',(1.,0.,0.)) ; +#1067=DIRECTION('Axis2P3D XDirection',(0.,0.,-1.)) ; +#1071=DIRECTION('Vector Direction',(0.,1.,0.)) ; +#1080=DIRECTION('Vector Direction',(0.,0.,-1.)) ; +#1087=DIRECTION('Vector Direction',(0.,-1.,0.)) ; +#1094=DIRECTION('Vector Direction',(0.,0.,1.)) ; +#1105=DIRECTION('Axis2P3D Direction',(1.,0.,0.)) ; +#1114=DIRECTION('Axis2P3D Direction',(1.,0.,0.)) ; +#1124=DIRECTION('Axis2P3D Direction',(0.,0.,-1.)) ; +#1125=DIRECTION('Axis2P3D XDirection',(-1.,0.,0.)) ; +#1129=DIRECTION('Vector Direction',(-1.,0.,0.)) ; +#1136=DIRECTION('Vector Direction',(-1.,0.,0.)) ; +#1143=DIRECTION('Vector Direction',(0.,1.,0.)) ; +#1155=DIRECTION('Axis2P3D Direction',(0.,-1.,0.)) ; +#1156=DIRECTION('Axis2P3D XDirection',(0.,0.,-1.)) ; +#1160=DIRECTION('Vector Direction',(-1.,0.,0.)) ; +#1167=DIRECTION('Vector Direction',(0.,0.,-1.)) ; +#1179=DIRECTION('Axis2P3D Direction',(0.,0.,1.)) ; +#1180=DIRECTION('Axis2P3D XDirection',(1.,0.,0.)) ; +#1184=DIRECTION('Vector Direction',(-1.,0.,0.)) ; +#1191=DIRECTION('Vector Direction',(0.,1.,0.)) ; +#1203=DIRECTION('Axis2P3D Direction',(0.,1.,0.)) ; +#1204=DIRECTION('Axis2P3D XDirection',(0.,0.,1.)) ; +#1208=DIRECTION('Vector Direction',(0.,0.,1.)) ; +#1220=DIRECTION('Axis2P3D Direction',(-0.,1.,0.)) ; +#1221=DIRECTION('Axis2P3D XDirection',(-1.83697019872E-016,-0.,1.)) ; +#1257=DIRECTION('Vector Direction',(0.,1.,0.)) ; +#1269=DIRECTION('Axis2P3D Direction',(0.,0.,1.)) ; +#1270=DIRECTION('Axis2P3D XDirection',(1.,0.,0.)) ; +#1290=DIRECTION('Vector Direction',(0.,0.,1.)) ; +#1302=DIRECTION('Axis2P3D Direction',(-0.,1.,0.)) ; +#1303=DIRECTION('Axis2P3D XDirection',(1.,0.,0.)) ; +#1323=DIRECTION('Vector Direction',(0.,1.,0.)) ; +#1335=DIRECTION('Axis2P3D Direction',(0.,0.,-1.)) ; +#1336=DIRECTION('Axis2P3D XDirection',(1.,0.,0.)) ; +#1340=DIRECTION('Vector Direction',(0.,0.,-1.)) ; +#1352=DIRECTION('Axis2P3D Direction',(-1.,0.,0.)) ; +#1353=DIRECTION('Axis2P3D XDirection',(0.,0.,1.)) ; +#1357=DIRECTION('Axis2P3D Direction',(-1.,0.,0.)) ; +#1366=DIRECTION('Vector Direction',(-1.,0.,0.)) ; +#1371=DIRECTION('Vector Direction',(-1.,0.,0.)) ; +#1383=DIRECTION('Axis2P3D Direction',(-1.,0.,0.)) ; +#1384=DIRECTION('Axis2P3D XDirection',(0.,1.22464679915E-016,-1.)) ; +#1388=DIRECTION('Axis2P3D Direction',(-1.,0.,0.)) ; +#1400=DIRECTION('Axis2P3D Direction',(-1.,0.,0.)) ; +#1401=DIRECTION('Axis2P3D XDirection',(0.,0.,1.)) ; +#1411=DIRECTION('Axis2P3D Direction',(-1.,0.,0.)) ; +#1420=DIRECTION('Axis2P3D Direction',(-1.,0.,0.)) ; +#1430=DIRECTION('Axis2P3D Direction',(-1.,-0.,0.)) ; +#1431=DIRECTION('Axis2P3D XDirection',(0.,-0.327595417415,0.944818100212)) ; +#1435=DIRECTION('Axis2P3D Direction',(0.,-1.,0.)) ; +#1440=DIRECTION('Axis2P3D Direction',(0.,1.,1.27675647832E-015)) ; +#1452=DIRECTION('Axis2P3D Direction',(-1.,0.,-0.)) ; +#1453=DIRECTION('Axis2P3D XDirection',(0.,0.371212471839,-0.928547952855)) ; +#1475=DIRECTION('NONE',(1.,0.,0.)) ; +#1476=DIRECTION('NONE',(0.,0.,1.)) ; +#1477=DIRECTION('NONE',(0.,1.,1.224606E-016)) ; +#1478=DIRECTION('NONE',(-1.,0.,0.)) ; +#1488=DIRECTION('NONE',(1.,0.,0.)) ; +#1489=DIRECTION('NONE',(0.,0.,1.)) ; +#1490=DIRECTION('NONE',(1.,-2.220446E-016,-4.93038065763E-032)) ; +#1491=DIRECTION('NONE',(2.220446E-016,1.,0.)) ; +#1503=DIRECTION('NONE',(1.,0.,0.)) ; +#1504=DIRECTION('NONE',(0.,0.,1.)) ; +#1505=DIRECTION('NONE',(1.,-2.220446E-016,-4.93038065763E-032)) ; +#1506=DIRECTION('NONE',(2.220446E-016,1.,0.)) ; +#66=AXIS2_PLACEMENT_3D('Cylinder Axis2P3D',#63,#64,#65) ; +#130=AXIS2_PLACEMENT_3D('Cylinder Axis2P3D',#127,#128,#129) ; +#134=AXIS2_PLACEMENT_3D('Circle Axis2P3D',#132,#133,$) ; +#139=AXIS2_PLACEMENT_3D('Circle Axis2P3D',#137,#138,$) ; +#152=AXIS2_PLACEMENT_3D('Plane Axis2P3D',#149,#150,#151) ; +#304=AXIS2_PLACEMENT_3D('Plane Axis2P3D',#301,#302,#303) ; +#456=AXIS2_PLACEMENT_3D('Plane Axis2P3D',#453,#454,#455) ; +#494=AXIS2_PLACEMENT_3D('Plane Axis2P3D',#491,#492,#493) ; +#511=AXIS2_PLACEMENT_3D('Plane Axis2P3D',#508,#509,#510) ; +#544=AXIS2_PLACEMENT_3D('Plane Axis2P3D',#541,#542,#543) ; +#615=AXIS2_PLACEMENT_3D('Cylinder Axis2P3D',#612,#613,#614) ; +#637=AXIS2_PLACEMENT_3D('Cylinder Axis2P3D',#634,#635,#636) ; +#649=AXIS2_PLACEMENT_3D('Cylinder Axis2P3D',#646,#647,#648) ; +#671=AXIS2_PLACEMENT_3D('Cylinder Axis2P3D',#668,#669,#670) ; +#683=AXIS2_PLACEMENT_3D('Plane Axis2P3D',#680,#681,#682) ; +#754=AXIS2_PLACEMENT_3D('Plane Axis2P3D',#751,#752,#753) ; +#766=AXIS2_PLACEMENT_3D('Cylinder Axis2P3D',#763,#764,#765) ; +#788=AXIS2_PLACEMENT_3D('Cylinder Axis2P3D',#785,#786,#787) ; +#805=AXIS2_PLACEMENT_3D(' ',#808,#812,#811) ; +#806=AXIS2_PLACEMENT_3D(' ',#807,#810,#809) ; +#835=AXIS2_PLACEMENT_3D('Plane Axis2P3D',#832,#833,#834) ; +#839=AXIS2_PLACEMENT_3D('Circle Axis2P3D',#837,#838,$) ; +#848=AXIS2_PLACEMENT_3D('Circle Axis2P3D',#846,#847,$) ; +#857=AXIS2_PLACEMENT_3D('Circle Axis2P3D',#855,#856,$) ; +#866=AXIS2_PLACEMENT_3D('Circle Axis2P3D',#864,#865,$) ; +#877=AXIS2_PLACEMENT_3D('Cylinder Axis2P3D',#874,#875,#876) ; +#888=AXIS2_PLACEMENT_3D('Circle Axis2P3D',#886,#887,$) ; +#908=AXIS2_PLACEMENT_3D('Cylinder Axis2P3D',#905,#906,#907) ; +#912=AXIS2_PLACEMENT_3D('Circle Axis2P3D',#910,#911,$) ; +#925=AXIS2_PLACEMENT_3D('Plane Axis2P3D',#922,#923,#924) ; +#935=AXIS2_PLACEMENT_3D('Cylinder Axis2P3D',#932,#933,#934) ; +#953=AXIS2_PLACEMENT_3D('Circle Axis2P3D',#951,#952,$) ; +#966=AXIS2_PLACEMENT_3D('Cylinder Axis2P3D',#963,#964,#965) ; +#970=AXIS2_PLACEMENT_3D('Circle Axis2P3D',#968,#969,$) ; +#983=AXIS2_PLACEMENT_3D('Plane Axis2P3D',#980,#981,#982) ; +#987=AXIS2_PLACEMENT_3D('Circle Axis2P3D',#985,#986,$) ; +#996=AXIS2_PLACEMENT_3D('Circle Axis2P3D',#994,#995,$) ; +#1007=AXIS2_PLACEMENT_3D('Torus Axis2P3D',#1004,#1005,#1006) ; +#1011=AXIS2_PLACEMENT_3D('Circle Axis2P3D',#1009,#1010,$) ; +#1016=AXIS2_PLACEMENT_3D('Circle Axis2P3D',#1014,#1015,$) ; +#1029=AXIS2_PLACEMENT_3D('Torus Axis2P3D',#1026,#1027,#1028) ; +#1046=AXIS2_PLACEMENT_3D(' ',#1049,#1053,#1052) ; +#1047=AXIS2_PLACEMENT_3D(' ',#1048,#1051,#1050) ; +#1068=AXIS2_PLACEMENT_3D('Plane Axis2P3D',#1065,#1066,#1067) ; +#1106=AXIS2_PLACEMENT_3D('Circle Axis2P3D',#1104,#1105,$) ; +#1115=AXIS2_PLACEMENT_3D('Circle Axis2P3D',#1113,#1114,$) ; +#1126=AXIS2_PLACEMENT_3D('Plane Axis2P3D',#1123,#1124,#1125) ; +#1157=AXIS2_PLACEMENT_3D('Plane Axis2P3D',#1154,#1155,#1156) ; +#1181=AXIS2_PLACEMENT_3D('Plane Axis2P3D',#1178,#1179,#1180) ; +#1205=AXIS2_PLACEMENT_3D('Plane Axis2P3D',#1202,#1203,#1204) ; +#1222=AXIS2_PLACEMENT_3D('Cylinder Axis2P3D',#1219,#1220,#1221) ; +#1271=AXIS2_PLACEMENT_3D('Cylinder Axis2P3D',#1268,#1269,#1270) ; +#1304=AXIS2_PLACEMENT_3D('Cylinder Axis2P3D',#1301,#1302,#1303) ; +#1337=AXIS2_PLACEMENT_3D('Cylinder Axis2P3D',#1334,#1335,#1336) ; +#1354=AXIS2_PLACEMENT_3D('Cylinder Axis2P3D',#1351,#1352,#1353) ; +#1358=AXIS2_PLACEMENT_3D('Circle Axis2P3D',#1356,#1357,$) ; +#1385=AXIS2_PLACEMENT_3D('Cylinder Axis2P3D',#1382,#1383,#1384) ; +#1389=AXIS2_PLACEMENT_3D('Circle Axis2P3D',#1387,#1388,$) ; +#1402=AXIS2_PLACEMENT_3D('Plane Axis2P3D',#1399,#1400,#1401) ; +#1412=AXIS2_PLACEMENT_3D('Circle Axis2P3D',#1410,#1411,$) ; +#1421=AXIS2_PLACEMENT_3D('Circle Axis2P3D',#1419,#1420,$) ; +#1432=AXIS2_PLACEMENT_3D('Torus Axis2P3D',#1429,#1430,#1431) ; +#1436=AXIS2_PLACEMENT_3D('Circle Axis2P3D',#1434,#1435,$) ; +#1441=AXIS2_PLACEMENT_3D('Circle Axis2P3D',#1439,#1440,$) ; +#1454=AXIS2_PLACEMENT_3D('Torus Axis2P3D',#1451,#1452,#1453) ; +#1471=AXIS2_PLACEMENT_3D(' ',#1474,#1478,#1477) ; +#1472=AXIS2_PLACEMENT_3D(' ',#1473,#1476,#1475) ; +#1484=AXIS2_PLACEMENT_3D(' ',#1487,#1491,#1490) ; +#1485=AXIS2_PLACEMENT_3D(' ',#1486,#1489,#1488) ; +#1499=AXIS2_PLACEMENT_3D(' ',#1502,#1506,#1505) ; +#1500=AXIS2_PLACEMENT_3D(' ',#1501,#1504,#1503) ; +#45=PRODUCT_DEFINITION_SHAPE(' ',' ',#17) ; +#61=PRODUCT_DEFINITION_SHAPE(' ',' ',#58) ; +#801=PRODUCT_DEFINITION_SHAPE(' ',' ',#800) ; +#820=PRODUCT_DEFINITION_SHAPE(' ',' ',#819) ; +#830=PRODUCT_DEFINITION_SHAPE(' ',' ',#827) ; +#1042=PRODUCT_DEFINITION_SHAPE(' ',' ',#1041) ; +#1063=PRODUCT_DEFINITION_SHAPE(' ',' ',#1060) ; +#1467=PRODUCT_DEFINITION_SHAPE(' ',' ',#1466) ; +#1480=PRODUCT_DEFINITION_SHAPE(' ',' ',#1479) ; +#1495=PRODUCT_DEFINITION_SHAPE(' ',' ',#1494) ; +#34=APPROVAL_PERSON_ORGANIZATION(#28,#24,#22) ; +#28=PERSON_AND_ORGANIZATION(#25,#26) ; +#25=PERSON(' ',' ',' ',$,$,$) ; +#26=ORGANIZATION(' ',' ',' ') ; +#24=APPROVAL(#23,' ') ; +#23=APPROVAL_STATUS('not_yet_approved') ; +#22=APPROVAL_ROLE('APPROVER') ; +#13=DATE_AND_TIME(#11,#12) ; +#12=LOCAL_TIME(12,25,11.,#10) ; +#10=COORDINATED_UNIVERSAL_TIME_OFFSET(0,0,.AHEAD.) ; +#121=ORIENTED_EDGE('',*,*,#76,.F.) ; +#122=ORIENTED_EDGE('',*,*,#95,.F.) ; +#123=ORIENTED_EDGE('',*,*,#102,.F.) ; +#124=ORIENTED_EDGE('',*,*,#119,.F.) ; +#143=ORIENTED_EDGE('',*,*,#76,.T.) ; +#144=ORIENTED_EDGE('',*,*,#136,.F.) ; +#145=ORIENTED_EDGE('',*,*,#102,.T.) ; +#146=ORIENTED_EDGE('',*,*,#141,.F.) ; +#183=ORIENTED_EDGE('',*,*,#162,.T.) ; +#184=ORIENTED_EDGE('',*,*,#169,.F.) ; +#185=ORIENTED_EDGE('',*,*,#176,.F.) ; +#186=ORIENTED_EDGE('',*,*,#181,.T.) ; +#239=ORIENTED_EDGE('',*,*,#214,.T.) ; +#240=ORIENTED_EDGE('',*,*,#237,.T.) ; +#293=ORIENTED_EDGE('',*,*,#268,.T.) ; +#294=ORIENTED_EDGE('',*,*,#291,.T.) ; +#297=ORIENTED_EDGE('',*,*,#95,.T.) ; +#298=ORIENTED_EDGE('',*,*,#141,.T.) ; +#335=ORIENTED_EDGE('',*,*,#314,.T.) ; +#336=ORIENTED_EDGE('',*,*,#321,.F.) ; +#337=ORIENTED_EDGE('',*,*,#328,.F.) ; +#338=ORIENTED_EDGE('',*,*,#333,.T.) ; +#391=ORIENTED_EDGE('',*,*,#366,.T.) ; +#392=ORIENTED_EDGE('',*,*,#389,.T.) ; +#445=ORIENTED_EDGE('',*,*,#420,.T.) ; +#446=ORIENTED_EDGE('',*,*,#443,.T.) ; +#449=ORIENTED_EDGE('',*,*,#119,.T.) ; +#450=ORIENTED_EDGE('',*,*,#136,.T.) ; +#483=ORIENTED_EDGE('',*,*,#314,.F.) ; +#484=ORIENTED_EDGE('',*,*,#462,.F.) ; +#485=ORIENTED_EDGE('',*,*,#162,.F.) ; +#486=ORIENTED_EDGE('',*,*,#469,.F.) ; +#487=ORIENTED_EDGE('',*,*,#476,.F.) ; +#488=ORIENTED_EDGE('',*,*,#481,.F.) ; +#502=ORIENTED_EDGE('',*,*,#462,.T.) ; +#503=ORIENTED_EDGE('',*,*,#333,.F.) ; +#504=ORIENTED_EDGE('',*,*,#500,.F.) ; +#505=ORIENTED_EDGE('',*,*,#169,.T.) ; +#533=ORIENTED_EDGE('',*,*,#500,.T.) ; +#534=ORIENTED_EDGE('',*,*,#328,.T.) ; +#535=ORIENTED_EDGE('',*,*,#519,.T.) ; +#536=ORIENTED_EDGE('',*,*,#526,.T.) ; +#537=ORIENTED_EDGE('',*,*,#531,.T.) ; +#538=ORIENTED_EDGE('',*,*,#176,.T.) ; +#552=ORIENTED_EDGE('',*,*,#469,.T.) ; +#553=ORIENTED_EDGE('',*,*,#181,.F.) ; +#554=ORIENTED_EDGE('',*,*,#531,.F.) ; +#555=ORIENTED_EDGE('',*,*,#550,.T.) ; +#608=ORIENTED_EDGE('',*,*,#583,.T.) ; +#609=ORIENTED_EDGE('',*,*,#606,.T.) ; +#628=ORIENTED_EDGE('',*,*,#621,.F.) ; +#629=ORIENTED_EDGE('',*,*,#214,.F.) ; +#630=ORIENTED_EDGE('',*,*,#626,.F.) ; +#631=ORIENTED_EDGE('',*,*,#366,.F.) ; +#640=ORIENTED_EDGE('',*,*,#621,.T.) ; +#641=ORIENTED_EDGE('',*,*,#389,.F.) ; +#642=ORIENTED_EDGE('',*,*,#626,.T.) ; +#643=ORIENTED_EDGE('',*,*,#237,.F.) ; +#662=ORIENTED_EDGE('',*,*,#655,.F.) ; +#663=ORIENTED_EDGE('',*,*,#268,.F.) ; +#664=ORIENTED_EDGE('',*,*,#660,.F.) ; +#665=ORIENTED_EDGE('',*,*,#420,.F.) ; +#674=ORIENTED_EDGE('',*,*,#655,.T.) ; +#675=ORIENTED_EDGE('',*,*,#443,.F.) ; +#676=ORIENTED_EDGE('',*,*,#660,.T.) ; +#677=ORIENTED_EDGE('',*,*,#291,.F.) ; +#691=ORIENTED_EDGE('',*,*,#481,.T.) ; +#692=ORIENTED_EDGE('',*,*,#689,.F.) ; +#693=ORIENTED_EDGE('',*,*,#519,.F.) ; +#694=ORIENTED_EDGE('',*,*,#321,.T.) ; +#747=ORIENTED_EDGE('',*,*,#722,.T.) ; +#748=ORIENTED_EDGE('',*,*,#745,.T.) ; +#757=ORIENTED_EDGE('',*,*,#476,.T.) ; +#758=ORIENTED_EDGE('',*,*,#550,.F.) ; +#759=ORIENTED_EDGE('',*,*,#526,.F.) ; +#760=ORIENTED_EDGE('',*,*,#689,.T.) ; +#779=ORIENTED_EDGE('',*,*,#772,.F.) ; +#780=ORIENTED_EDGE('',*,*,#583,.F.) ; +#781=ORIENTED_EDGE('',*,*,#777,.F.) ; +#782=ORIENTED_EDGE('',*,*,#722,.F.) ; +#791=ORIENTED_EDGE('',*,*,#772,.T.) ; +#792=ORIENTED_EDGE('',*,*,#745,.F.) ; +#793=ORIENTED_EDGE('',*,*,#777,.T.) ; +#794=ORIENTED_EDGE('',*,*,#606,.F.) ; +#852=ORIENTED_EDGE('',*,*,#845,.F.) ; +#853=ORIENTED_EDGE('',*,*,#850,.F.) ; +#870=ORIENTED_EDGE('',*,*,#863,.T.) ; +#871=ORIENTED_EDGE('',*,*,#868,.T.) ; +#899=ORIENTED_EDGE('',*,*,#885,.T.) ; +#900=ORIENTED_EDGE('',*,*,#892,.T.) ; +#901=ORIENTED_EDGE('',*,*,#897,.T.) ; +#902=ORIENTED_EDGE('',*,*,#863,.F.) ; +#916=ORIENTED_EDGE('',*,*,#885,.F.) ; +#917=ORIENTED_EDGE('',*,*,#868,.F.) ; +#918=ORIENTED_EDGE('',*,*,#897,.F.) ; +#919=ORIENTED_EDGE('',*,*,#914,.T.) ; +#928=ORIENTED_EDGE('',*,*,#892,.F.) ; +#929=ORIENTED_EDGE('',*,*,#914,.F.) ; +#957=ORIENTED_EDGE('',*,*,#943,.F.) ; +#958=ORIENTED_EDGE('',*,*,#845,.T.) ; +#959=ORIENTED_EDGE('',*,*,#950,.F.) ; +#960=ORIENTED_EDGE('',*,*,#955,.T.) ; +#974=ORIENTED_EDGE('',*,*,#950,.T.) ; +#975=ORIENTED_EDGE('',*,*,#850,.T.) ; +#976=ORIENTED_EDGE('',*,*,#943,.T.) ; +#977=ORIENTED_EDGE('',*,*,#972,.T.) ; +#1000=ORIENTED_EDGE('',*,*,#993,.F.) ; +#1001=ORIENTED_EDGE('',*,*,#998,.F.) ; +#1020=ORIENTED_EDGE('',*,*,#1013,.T.) ; +#1021=ORIENTED_EDGE('',*,*,#993,.T.) ; +#1022=ORIENTED_EDGE('',*,*,#1018,.F.) ; +#1023=ORIENTED_EDGE('',*,*,#972,.F.) ; +#1032=ORIENTED_EDGE('',*,*,#1018,.T.) ; +#1033=ORIENTED_EDGE('',*,*,#998,.T.) ; +#1034=ORIENTED_EDGE('',*,*,#1013,.F.) ; +#1035=ORIENTED_EDGE('',*,*,#955,.F.) ; +#1099=ORIENTED_EDGE('',*,*,#1078,.F.) ; +#1100=ORIENTED_EDGE('',*,*,#1085,.F.) ; +#1101=ORIENTED_EDGE('',*,*,#1092,.F.) ; +#1102=ORIENTED_EDGE('',*,*,#1097,.F.) ; +#1119=ORIENTED_EDGE('',*,*,#1112,.T.) ; +#1120=ORIENTED_EDGE('',*,*,#1117,.T.) ; +#1148=ORIENTED_EDGE('',*,*,#1134,.T.) ; +#1149=ORIENTED_EDGE('',*,*,#1078,.T.) ; +#1150=ORIENTED_EDGE('',*,*,#1141,.F.) ; +#1151=ORIENTED_EDGE('',*,*,#1146,.T.) ; +#1172=ORIENTED_EDGE('',*,*,#1165,.T.) ; +#1173=ORIENTED_EDGE('',*,*,#1085,.T.) ; +#1174=ORIENTED_EDGE('',*,*,#1134,.F.) ; +#1175=ORIENTED_EDGE('',*,*,#1170,.T.) ; +#1196=ORIENTED_EDGE('',*,*,#1189,.T.) ; +#1197=ORIENTED_EDGE('',*,*,#1092,.T.) ; +#1198=ORIENTED_EDGE('',*,*,#1165,.F.) ; +#1199=ORIENTED_EDGE('',*,*,#1194,.T.) ; +#1213=ORIENTED_EDGE('',*,*,#1141,.T.) ; +#1214=ORIENTED_EDGE('',*,*,#1097,.T.) ; +#1215=ORIENTED_EDGE('',*,*,#1189,.F.) ; +#1216=ORIENTED_EDGE('',*,*,#1211,.T.) ; +#1262=ORIENTED_EDGE('',*,*,#1239,.T.) ; +#1263=ORIENTED_EDGE('',*,*,#1194,.F.) ; +#1264=ORIENTED_EDGE('',*,*,#1255,.T.) ; +#1265=ORIENTED_EDGE('',*,*,#1260,.T.) ; +#1295=ORIENTED_EDGE('',*,*,#1288,.T.) ; +#1296=ORIENTED_EDGE('',*,*,#1211,.F.) ; +#1297=ORIENTED_EDGE('',*,*,#1239,.F.) ; +#1298=ORIENTED_EDGE('',*,*,#1293,.T.) ; +#1328=ORIENTED_EDGE('',*,*,#1321,.T.) ; +#1329=ORIENTED_EDGE('',*,*,#1146,.F.) ; +#1330=ORIENTED_EDGE('',*,*,#1288,.F.) ; +#1331=ORIENTED_EDGE('',*,*,#1326,.T.) ; +#1345=ORIENTED_EDGE('',*,*,#1255,.F.) ; +#1346=ORIENTED_EDGE('',*,*,#1170,.F.) ; +#1347=ORIENTED_EDGE('',*,*,#1321,.F.) ; +#1348=ORIENTED_EDGE('',*,*,#1343,.T.) ; +#1376=ORIENTED_EDGE('',*,*,#1364,.F.) ; +#1377=ORIENTED_EDGE('',*,*,#1369,.F.) ; +#1378=ORIENTED_EDGE('',*,*,#1112,.F.) ; +#1379=ORIENTED_EDGE('',*,*,#1374,.F.) ; +#1393=ORIENTED_EDGE('',*,*,#1391,.F.) ; +#1394=ORIENTED_EDGE('',*,*,#1374,.T.) ; +#1395=ORIENTED_EDGE('',*,*,#1117,.F.) ; +#1396=ORIENTED_EDGE('',*,*,#1369,.T.) ; +#1405=ORIENTED_EDGE('',*,*,#1260,.F.) ; +#1406=ORIENTED_EDGE('',*,*,#1343,.F.) ; +#1407=ORIENTED_EDGE('',*,*,#1326,.F.) ; +#1408=ORIENTED_EDGE('',*,*,#1293,.F.) ; +#1425=ORIENTED_EDGE('',*,*,#1418,.T.) ; +#1426=ORIENTED_EDGE('',*,*,#1423,.T.) ; +#1445=ORIENTED_EDGE('',*,*,#1438,.T.) ; +#1446=ORIENTED_EDGE('',*,*,#1364,.T.) ; +#1447=ORIENTED_EDGE('',*,*,#1443,.F.) ; +#1448=ORIENTED_EDGE('',*,*,#1418,.F.) ; +#1457=ORIENTED_EDGE('',*,*,#1443,.T.) ; +#1458=ORIENTED_EDGE('',*,*,#1391,.T.) ; +#1459=ORIENTED_EDGE('',*,*,#1438,.F.) ; +#1460=ORIENTED_EDGE('',*,*,#1423,.F.) ; +#241=FACE_BOUND('',#238,.T.) ; +#295=FACE_BOUND('',#292,.T.) ; +#299=FACE_BOUND('',#296,.T.) ; +#393=FACE_BOUND('',#390,.T.) ; +#447=FACE_BOUND('',#444,.T.) ; +#451=FACE_BOUND('',#448,.T.) ; +#610=FACE_BOUND('',#607,.T.) ; +#749=FACE_BOUND('',#746,.T.) ; +#872=FACE_BOUND('',#869,.T.) ; +#1121=FACE_BOUND('',#1118,.T.) ; +#1427=FACE_BOUND('',#1424,.T.) ; +#62=CLOSED_SHELL('Closed Shell',(#126,#148,#300,#452,#490,#507,#540,#611,#633,#645,#667,#679,#750,#762,#784,#796)) ; +#831=CLOSED_SHELL('Closed Shell',(#873,#904,#921,#931,#962,#979,#1003,#1025,#1037)) ; +#1064=CLOSED_SHELL('Closed Shell',(#1122,#1153,#1177,#1201,#1218,#1267,#1300,#1333,#1350,#1381,#1398,#1428,#1450,#1462)) ; +#804=ITEM_DEFINED_TRANSFORMATION(' ',' ',#806,#805) ; +#1045=ITEM_DEFINED_TRANSFORMATION(' ',' ',#1047,#1046) ; +#1470=ITEM_DEFINED_TRANSFORMATION(' ',' ',#1472,#1471) ; +#1483=ITEM_DEFINED_TRANSFORMATION(' ',' ',#1485,#1484) ; +#1498=ITEM_DEFINED_TRANSFORMATION(' ',' ',#1500,#1499) ; +#70=VECTOR('Line Direction',#69,1.) ; +#98=VECTOR('Line Direction',#97,1.) ; +#156=VECTOR('Line Direction',#155,1.) ; +#165=VECTOR('Line Direction',#164,1.) ; +#172=VECTOR('Line Direction',#171,1.) ; +#179=VECTOR('Line Direction',#178,1.) ; +#308=VECTOR('Line Direction',#307,1.) ; +#317=VECTOR('Line Direction',#316,1.) ; +#324=VECTOR('Line Direction',#323,1.) ; +#331=VECTOR('Line Direction',#330,1.) ; +#460=VECTOR('Line Direction',#459,1.) ; +#465=VECTOR('Line Direction',#464,1.) ; +#472=VECTOR('Line Direction',#471,1.) ; +#479=VECTOR('Line Direction',#478,1.) ; +#498=VECTOR('Line Direction',#497,1.) ; +#515=VECTOR('Line Direction',#514,1.) ; +#522=VECTOR('Line Direction',#521,1.) ; +#529=VECTOR('Line Direction',#528,1.) ; +#548=VECTOR('Line Direction',#547,1.) ; +#619=VECTOR('Line Direction',#618,1.) ; +#624=VECTOR('Line Direction',#623,1.) ; +#653=VECTOR('Line Direction',#652,1.) ; +#658=VECTOR('Line Direction',#657,1.) ; +#687=VECTOR('Line Direction',#686,1.) ; +#770=VECTOR('Line Direction',#769,1.) ; +#775=VECTOR('Line Direction',#774,1.) ; +#881=VECTOR('Line Direction',#880,1.) ; +#895=VECTOR('Line Direction',#894,1.) ; +#939=VECTOR('Line Direction',#938,1.) ; +#946=VECTOR('Line Direction',#945,1.) ; +#1072=VECTOR('Line Direction',#1071,1.) ; +#1081=VECTOR('Line Direction',#1080,1.) ; +#1088=VECTOR('Line Direction',#1087,1.) ; +#1095=VECTOR('Line Direction',#1094,1.) ; +#1130=VECTOR('Line Direction',#1129,1.) ; +#1137=VECTOR('Line Direction',#1136,1.) ; +#1144=VECTOR('Line Direction',#1143,1.) ; +#1161=VECTOR('Line Direction',#1160,1.) ; +#1168=VECTOR('Line Direction',#1167,1.) ; +#1185=VECTOR('Line Direction',#1184,1.) ; +#1192=VECTOR('Line Direction',#1191,1.) ; +#1209=VECTOR('Line Direction',#1208,1.) ; +#1258=VECTOR('Line Direction',#1257,1.) ; +#1291=VECTOR('Line Direction',#1290,1.) ; +#1324=VECTOR('Line Direction',#1323,1.) ; +#1341=VECTOR('Line Direction',#1340,1.) ; +#1367=VECTOR('Line Direction',#1366,1.) ; +#1372=VECTOR('Line Direction',#1371,1.) ; +#798=ADVANCED_BREP_SHAPE_REPRESENTATION('NONE',(#797),#53) ; +#1039=ADVANCED_BREP_SHAPE_REPRESENTATION('NONE',(#1038),#822) ; +#1464=ADVANCED_BREP_SHAPE_REPRESENTATION('NONE',(#1463),#1055) ; +#44=SHAPE_REPRESENTATION(' ',(#805,#1484,#1499),#51) ; +#54=SHAPE_REPRESENTATION(' ',(#806),#53) ; +#815=SHAPE_REPRESENTATION(' ',(#1046,#1471,#1485,#1500),#814) ; +#823=SHAPE_REPRESENTATION(' ',(#1047),#822) ; +#1056=SHAPE_REPRESENTATION(' ',(#1472),#1055) ; +#126=ADVANCED_FACE('52D',(#125),#67,.F.) ; +#148=ADVANCED_FACE('52D',(#147),#131,.F.) ; +#300=ADVANCED_FACE('52D',(#187,#241,#295,#299),#153,.T.) ; +#452=ADVANCED_FACE('52D',(#339,#393,#447,#451),#305,.T.) ; +#490=ADVANCED_FACE('52D',(#489),#457,.F.) ; +#507=ADVANCED_FACE('52D',(#506),#495,.T.) ; +#540=ADVANCED_FACE('52D',(#539),#512,.F.) ; +#611=ADVANCED_FACE('52D',(#556,#610),#545,.T.) ; +#633=ADVANCED_FACE('52D',(#632),#616,.F.) ; +#645=ADVANCED_FACE('52D',(#644),#638,.F.) ; +#667=ADVANCED_FACE('52D',(#666),#650,.F.) ; +#679=ADVANCED_FACE('52D',(#678),#672,.F.) ; +#750=ADVANCED_FACE('52D',(#695,#749),#684,.T.) ; +#762=ADVANCED_FACE('52D',(#761),#755,.T.) ; +#784=ADVANCED_FACE('52D',(#783),#767,.F.) ; +#796=ADVANCED_FACE('52D',(#795),#789,.F.) ; +#873=ADVANCED_FACE('870',(#854,#872),#836,.F.) ; +#904=ADVANCED_FACE('870',(#903),#878,.T.) ; +#921=ADVANCED_FACE('870',(#920),#909,.T.) ; +#931=ADVANCED_FACE('870',(#930),#926,.F.) ; +#962=ADVANCED_FACE('870',(#961),#936,.T.) ; +#979=ADVANCED_FACE('870',(#978),#967,.T.) ; +#1003=ADVANCED_FACE('870',(#1002),#984,.T.) ; +#1025=ADVANCED_FACE('870',(#1024),#1008,.T.) ; +#1037=ADVANCED_FACE('870',(#1036),#1030,.T.) ; +#1122=ADVANCED_FACE('79A',(#1103,#1121),#1069,.F.) ; +#1153=ADVANCED_FACE('79A',(#1152),#1127,.T.) ; +#1177=ADVANCED_FACE('79A',(#1176),#1158,.T.) ; +#1201=ADVANCED_FACE('79A',(#1200),#1182,.T.) ; +#1218=ADVANCED_FACE('79A',(#1217),#1206,.T.) ; +#1267=ADVANCED_FACE('79A',(#1266),#1223,.T.) ; +#1300=ADVANCED_FACE('79A',(#1299),#1272,.T.) ; +#1333=ADVANCED_FACE('79A',(#1332),#1305,.T.) ; +#1350=ADVANCED_FACE('79A',(#1349),#1338,.T.) ; +#1381=ADVANCED_FACE('79A',(#1380),#1355,.F.) ; +#1398=ADVANCED_FACE('79A',(#1397),#1386,.F.) ; +#1428=ADVANCED_FACE('79A',(#1409,#1427),#1403,.F.) ; +#1450=ADVANCED_FACE('79A',(#1449),#1433,.T.) ; +#1462=ADVANCED_FACE('79A',(#1461),#1455,.T.) ; +#4=APPLICATION_PROTOCOL_DEFINITION('international standard','config_control_design',1994,#1) ; +#35=APPROVAL_DATE_TIME(#13,#24) ; +#77=B_SPLINE_CURVE_WITH_KNOTS('',5,(#78,#79,#80,#81,#82,#83,#84,#85,#86,#87,#88,#89,#90,#91,#92),.UNSPECIFIED.,.F.,.U.,(6,3,3,3,6),(-7.85398163397,-3.92699081699,4.4408920985E-016,3.92699081699,7.85398163397),.UNSPECIFIED.) ; +#103=B_SPLINE_CURVE_WITH_KNOTS('',5,(#104,#105,#106,#107,#108,#109,#110,#111,#112,#113,#114,#115,#116,#117,#118),.UNSPECIFIED.,.F.,.U.,(6,3,3,3,6),(-7.85398163397,-3.92699081699,4.4408920985E-016,3.92699081699,7.85398163397),.UNSPECIFIED.) ; +#188=B_SPLINE_CURVE_WITH_KNOTS('',5,(#189,#190,#191,#192,#193,#194,#195,#196,#197,#198,#199,#200,#201,#202,#203,#204,#205,#206,#207,#208,#209),.UNSPECIFIED.,.F.,.U.,(6,3,3,3,3,3,6),(0.,3.87292074105,7.74584148254,11.6187622392,15.491683003,19.3646037458,22.2140874796),.UNSPECIFIED.) ; +#215=B_SPLINE_CURVE_WITH_KNOTS('',5,(#216,#217,#218,#219,#220,#221,#222,#223,#224,#225,#226,#227,#228,#229,#230,#231,#232,#233,#234,#235,#236),.UNSPECIFIED.,.F.,.U.,(6,3,3,3,3,3,6),(0.,3.87292073664,7.74584148307,11.618762234,15.4916829903,19.3646037494,22.2140874992),.UNSPECIFIED.) ; +#242=B_SPLINE_CURVE_WITH_KNOTS('',5,(#243,#244,#245,#246,#247,#248,#249,#250,#251,#252,#253,#254,#255,#256,#257,#258,#259,#260,#261,#262,#263),.UNSPECIFIED.,.F.,.U.,(6,3,3,3,3,3,6),(0.,3.87292073819,7.74584148132,11.6187622256,15.4916829835,19.3646037405,22.2140874761),.UNSPECIFIED.) ; +#269=B_SPLINE_CURVE_WITH_KNOTS('',5,(#270,#271,#272,#273,#274,#275,#276,#277,#278,#279,#280,#281,#282,#283,#284,#285,#286,#287,#288,#289,#290),.UNSPECIFIED.,.F.,.U.,(6,3,3,3,3,3,6),(0.,3.87292075057,7.74584151084,11.6187622719,15.4916830411,19.3646038008,22.2140875287),.UNSPECIFIED.) ; +#340=B_SPLINE_CURVE_WITH_KNOTS('',5,(#341,#342,#343,#344,#345,#346,#347,#348,#349,#350,#351,#352,#353,#354,#355,#356,#357,#358,#359,#360,#361),.UNSPECIFIED.,.F.,.U.,(6,3,3,3,3,3,6),(0.,3.87292073822,7.74584148135,11.6187622256,15.4916829836,19.3646037407,22.2140874763),.UNSPECIFIED.) ; +#367=B_SPLINE_CURVE_WITH_KNOTS('',5,(#368,#369,#370,#371,#372,#373,#374,#375,#376,#377,#378,#379,#380,#381,#382,#383,#384,#385,#386,#387,#388),.UNSPECIFIED.,.F.,.U.,(6,3,3,3,3,3,6),(0.,3.87292075092,7.74584151105,11.6187622721,15.4916830414,19.3646038011,22.2140875291),.UNSPECIFIED.) ; +#394=B_SPLINE_CURVE_WITH_KNOTS('',5,(#395,#396,#397,#398,#399,#400,#401,#402,#403,#404,#405,#406,#407,#408,#409,#410,#411,#412,#413,#414,#415),.UNSPECIFIED.,.F.,.U.,(6,3,3,3,3,3,6),(0.,3.87292074096,7.74584148236,11.618762239,15.4916830028,19.3646037456,22.2140874794),.UNSPECIFIED.) ; +#421=B_SPLINE_CURVE_WITH_KNOTS('',5,(#422,#423,#424,#425,#426,#427,#428,#429,#430,#431,#432,#433,#434,#435,#436,#437,#438,#439,#440,#441,#442),.UNSPECIFIED.,.F.,.U.,(6,3,3,3,3,3,6),(0.,3.87292073663,7.74584148308,11.618762234,15.4916829903,19.3646037495,22.2140874992),.UNSPECIFIED.) ; +#557=B_SPLINE_CURVE_WITH_KNOTS('',5,(#558,#559,#560,#561,#562,#563,#564,#565,#566,#567,#568,#569,#570,#571,#572,#573,#574,#575,#576,#577,#578),.UNSPECIFIED.,.F.,.U.,(6,3,3,3,3,3,6),(0.,3.87292075072,7.74584150645,11.6187622749,15.4916830251,19.3646037577,22.2140874912),.UNSPECIFIED.) ; +#584=B_SPLINE_CURVE_WITH_KNOTS('',5,(#585,#586,#587,#588,#589,#590,#591,#592,#593,#594,#595,#596,#597,#598,#599,#600,#601,#602,#603,#604,#605),.UNSPECIFIED.,.F.,.U.,(6,3,3,3,3,3,6),(0.,3.87292075073,7.74584150644,11.6187622749,15.4916830252,19.3646037579,22.2140874915),.UNSPECIFIED.) ; +#696=B_SPLINE_CURVE_WITH_KNOTS('',5,(#697,#698,#699,#700,#701,#702,#703,#704,#705,#706,#707,#708,#709,#710,#711,#712,#713,#714,#715,#716,#717),.UNSPECIFIED.,.F.,.U.,(6,3,3,3,3,3,6),(0.,3.87292075098,7.74584150689,11.6187622753,15.4916830257,19.3646037583,22.2140874919),.UNSPECIFIED.) ; +#723=B_SPLINE_CURVE_WITH_KNOTS('',5,(#724,#725,#726,#727,#728,#729,#730,#731,#732,#733,#734,#735,#736,#737,#738,#739,#740,#741,#742,#743,#744),.UNSPECIFIED.,.F.,.U.,(6,3,3,3,3,3,6),(0.,3.87292075071,7.74584150651,11.6187622749,15.4916830252,19.3646037577,22.2140874913),.UNSPECIFIED.) ; +#1224=B_SPLINE_CURVE_WITH_KNOTS('',5,(#1225,#1226,#1227,#1228,#1229,#1230,#1231,#1232,#1233,#1234,#1235,#1236),.UNSPECIFIED.,.F.,.U.,(6,3,3,6),(0.,1.01728776527,2.03457553053,2.69111206366),.UNSPECIFIED.) ; +#1240=B_SPLINE_CURVE_WITH_KNOTS('',5,(#1241,#1242,#1243,#1244,#1245,#1246,#1247,#1248,#1249,#1250,#1251,#1252),.UNSPECIFIED.,.F.,.U.,(6,3,3,6),(0.,1.01728776527,2.03457553053,2.69111206365),.UNSPECIFIED.) ; +#1273=B_SPLINE_CURVE_WITH_KNOTS('',5,(#1274,#1275,#1276,#1277,#1278,#1279,#1280,#1281,#1282,#1283,#1284,#1285),.UNSPECIFIED.,.F.,.U.,(6,3,3,6),(0.,1.01728776527,2.03457553053,2.69111206365),.UNSPECIFIED.) ; +#1306=B_SPLINE_CURVE_WITH_KNOTS('',5,(#1307,#1308,#1309,#1310,#1311,#1312,#1313,#1314,#1315,#1316,#1317,#1318),.UNSPECIFIED.,.F.,.U.,(6,3,3,6),(0.,1.01728776527,2.03457553054,2.69111206366),.UNSPECIFIED.) ; +#797=MANIFOLD_SOLID_BREP('52D',#62) ; +#1038=MANIFOLD_SOLID_BREP('870',#831) ; +#1463=MANIFOLD_SOLID_BREP('79A',#1064) ; +#11=CALENDAR_DATE(2014,9,11) ; +#33=CC_DESIGN_APPROVAL(#24,(#19,#6,#17)) ; +#21=CC_DESIGN_DATE_AND_TIME_ASSIGNMENT(#13,#20,(#19)) ; +#32=CC_DESIGN_DATE_AND_TIME_ASSIGNMENT(#13,#31,(#17)) ; +#20=DATE_TIME_ROLE('classification_date') ; +#31=DATE_TIME_ROLE('creation_date') ; +#30=CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT(#28,#29,(#19)) ; +#36=CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT(#28,#37,(#6)) ; +#38=CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT(#28,#39,(#6,#17)) ; +#40=CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT(#28,#41,(#5)) ; +#29=PERSON_AND_ORGANIZATION_ROLE('classification_officer') ; +#37=PERSON_AND_ORGANIZATION_ROLE('design_supplier') ; +#39=PERSON_AND_ORGANIZATION_ROLE('creator') ; +#41=PERSON_AND_ORGANIZATION_ROLE('design_owner') ; +#42=CC_DESIGN_SECURITY_CLASSIFICATION(#19,(#6,#800,#1041,#1466,#1479,#1494)) ; +#60=DOCUMENT('1','L-BRACKET.CATPart','CATPart document',#59) ; +#829=DOCUMENT('2','BOLT.CATPart','CATPart document',#828) ; +#1062=DOCUMENT('3','NUT.CATPart','CATPart document',#1061) ; +#59=DOCUMENT_TYPE('') ; +#828=DOCUMENT_TYPE('') ; +#1061=DOCUMENT_TYPE('') ; +#135=CIRCLE('generated circle',#134,5.) ; +#140=CIRCLE('generated circle',#139,5.) ; +#840=CIRCLE('generated circle',#839,7.5) ; +#849=CIRCLE('generated circle',#848,7.5) ; +#858=CIRCLE('generated circle',#857,5.) ; +#867=CIRCLE('generated circle',#866,5.) ; +#889=CIRCLE('generated circle',#888,5.) ; +#913=CIRCLE('generated circle',#912,5.) ; +#954=CIRCLE('generated circle',#953,7.5) ; +#971=CIRCLE('generated circle',#970,7.5) ; +#988=CIRCLE('generated circle',#987,5.5) ; +#997=CIRCLE('generated circle',#996,5.5) ; +#1012=CIRCLE('generated circle',#1011,2.) ; +#1017=CIRCLE('generated circle',#1016,2.) ; +#1107=CIRCLE('generated circle',#1106,5.) ; +#1116=CIRCLE('generated circle',#1115,5.) ; +#1359=CIRCLE('generated circle',#1358,5.) ; +#1390=CIRCLE('generated circle',#1389,5.) ; +#1413=CIRCLE('generated circle',#1412,6.) ; +#1422=CIRCLE('generated circle',#1421,6.) ; +#1437=CIRCLE('generated circle',#1436,1.) ; +#1442=CIRCLE('generated circle',#1441,1.) ; +#802=CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#803,#801) ; +#1043=CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1044,#1042) ; +#1468=CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1469,#1467) ; +#1481=CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1482,#1480) ; +#1496=CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#1497,#1495) ; +#799=SHAPE_REPRESENTATION_RELATIONSHIP(' ',' ',#54,#798) ; +#1040=SHAPE_REPRESENTATION_RELATIONSHIP(' ',' ',#823,#1039) ; +#1465=SHAPE_REPRESENTATION_RELATIONSHIP(' ',' ',#1056,#1464) ; +#67=CYLINDRICAL_SURFACE('generated cylinder',#66,5.) ; +#131=CYLINDRICAL_SURFACE('generated cylinder',#130,5.) ; +#616=CYLINDRICAL_SURFACE('generated cylinder',#615,5.) ; +#638=CYLINDRICAL_SURFACE('generated cylinder',#637,5.) ; +#650=CYLINDRICAL_SURFACE('generated cylinder',#649,5.) ; +#672=CYLINDRICAL_SURFACE('generated cylinder',#671,5.) ; +#767=CYLINDRICAL_SURFACE('generated cylinder',#766,5.) ; +#789=CYLINDRICAL_SURFACE('generated cylinder',#788,5.) ; +#878=CYLINDRICAL_SURFACE('generated cylinder',#877,5.) ; +#909=CYLINDRICAL_SURFACE('generated cylinder',#908,5.) ; +#936=CYLINDRICAL_SURFACE('generated cylinder',#935,7.5) ; +#967=CYLINDRICAL_SURFACE('generated cylinder',#966,7.5) ; +#1223=CYLINDRICAL_SURFACE('generated cylinder',#1222,1.) ; +#1272=CYLINDRICAL_SURFACE('generated cylinder',#1271,1.) ; +#1305=CYLINDRICAL_SURFACE('generated cylinder',#1304,1.) ; +#1338=CYLINDRICAL_SURFACE('generated cylinder',#1337,1.) ; +#1355=CYLINDRICAL_SURFACE('generated cylinder',#1354,5.) ; +#1386=CYLINDRICAL_SURFACE('generated cylinder',#1385,5.) ; +#1008=TOROIDAL_SURFACE('homeo Torus',#1007,5.5,2.) ; +#1030=TOROIDAL_SURFACE('homeo Torus',#1029,5.5,2.) ; +#1433=TOROIDAL_SURFACE('homeo Torus',#1432,6.,1.) ; +#1455=TOROIDAL_SURFACE('homeo Torus',#1454,6.,1.) ; +#3=DESIGN_CONTEXT(' ',#1,'design') ; +#76=EDGE_CURVE('',#73,#75,#71,.F.) ; +#95=EDGE_CURVE('',#94,#73,#77,.T.) ; +#102=EDGE_CURVE('',#101,#94,#99,.T.) ; +#119=EDGE_CURVE('',#75,#101,#103,.T.) ; +#136=EDGE_CURVE('',#101,#75,#135,.T.) ; +#141=EDGE_CURVE('',#73,#94,#140,.F.) ; +#162=EDGE_CURVE('',#159,#161,#157,.T.) ; +#169=EDGE_CURVE('',#168,#161,#166,.T.) ; +#176=EDGE_CURVE('',#175,#168,#173,.T.) ; +#181=EDGE_CURVE('',#175,#159,#180,.T.) ; +#214=EDGE_CURVE('',#211,#213,#188,.T.) ; +#237=EDGE_CURVE('',#213,#211,#215,.T.) ; +#268=EDGE_CURVE('',#265,#267,#242,.T.) ; +#291=EDGE_CURVE('',#267,#265,#269,.T.) ; +#314=EDGE_CURVE('',#311,#313,#309,.T.) ; +#321=EDGE_CURVE('',#320,#313,#318,.T.) ; +#328=EDGE_CURVE('',#327,#320,#325,.T.) ; +#333=EDGE_CURVE('',#327,#311,#332,.T.) ; +#366=EDGE_CURVE('',#363,#365,#340,.T.) ; +#389=EDGE_CURVE('',#365,#363,#367,.T.) ; +#420=EDGE_CURVE('',#417,#419,#394,.T.) ; +#443=EDGE_CURVE('',#419,#417,#421,.T.) ; +#462=EDGE_CURVE('',#161,#311,#461,.T.) ; +#469=EDGE_CURVE('',#468,#159,#466,.T.) ; +#476=EDGE_CURVE('',#475,#468,#473,.T.) ; +#481=EDGE_CURVE('',#313,#475,#480,.T.) ; +#500=EDGE_CURVE('',#168,#327,#499,.T.) ; +#519=EDGE_CURVE('',#320,#518,#516,.T.) ; +#526=EDGE_CURVE('',#518,#525,#523,.T.) ; +#531=EDGE_CURVE('',#525,#175,#530,.T.) ; +#550=EDGE_CURVE('',#525,#468,#549,.T.) ; +#583=EDGE_CURVE('',#580,#582,#557,.T.) ; +#606=EDGE_CURVE('',#582,#580,#584,.T.) ; +#621=EDGE_CURVE('',#213,#363,#620,.F.) ; +#626=EDGE_CURVE('',#365,#211,#625,.T.) ; +#655=EDGE_CURVE('',#267,#417,#654,.F.) ; +#660=EDGE_CURVE('',#419,#265,#659,.T.) ; +#689=EDGE_CURVE('',#518,#475,#688,.T.) ; +#722=EDGE_CURVE('',#719,#721,#696,.T.) ; +#745=EDGE_CURVE('',#721,#719,#723,.T.) ; +#772=EDGE_CURVE('',#582,#719,#771,.F.) ; +#777=EDGE_CURVE('',#721,#580,#776,.T.) ; +#845=EDGE_CURVE('',#842,#844,#840,.T.) ; +#850=EDGE_CURVE('',#844,#842,#849,.T.) ; +#863=EDGE_CURVE('',#860,#862,#858,.T.) ; +#868=EDGE_CURVE('',#862,#860,#867,.T.) ; +#885=EDGE_CURVE('',#860,#884,#882,.T.) ; +#892=EDGE_CURVE('',#884,#891,#889,.F.) ; +#897=EDGE_CURVE('',#891,#862,#896,.F.) ; +#914=EDGE_CURVE('',#891,#884,#913,.F.) ; +#943=EDGE_CURVE('',#842,#942,#940,.T.) ; +#950=EDGE_CURVE('',#949,#844,#947,.F.) ; +#955=EDGE_CURVE('',#949,#942,#954,.F.) ; +#972=EDGE_CURVE('',#942,#949,#971,.F.) ; +#993=EDGE_CURVE('',#990,#992,#988,.F.) ; +#998=EDGE_CURVE('',#992,#990,#997,.F.) ; +#1013=EDGE_CURVE('',#942,#990,#1012,.T.) ; +#1018=EDGE_CURVE('',#949,#992,#1017,.T.) ; +#1078=EDGE_CURVE('',#1075,#1077,#1073,.T.) ; +#1085=EDGE_CURVE('',#1084,#1075,#1082,.T.) ; +#1092=EDGE_CURVE('',#1091,#1084,#1089,.T.) ; +#1097=EDGE_CURVE('',#1077,#1091,#1096,.T.) ; +#1112=EDGE_CURVE('',#1109,#1111,#1107,.T.) ; +#1117=EDGE_CURVE('',#1111,#1109,#1116,.T.) ; +#1134=EDGE_CURVE('',#1133,#1075,#1131,.T.) ; +#1141=EDGE_CURVE('',#1140,#1077,#1138,.T.) ; +#1146=EDGE_CURVE('',#1140,#1133,#1145,.F.) ; +#1165=EDGE_CURVE('',#1164,#1084,#1162,.T.) ; +#1170=EDGE_CURVE('',#1133,#1164,#1169,.F.) ; +#1189=EDGE_CURVE('',#1188,#1091,#1186,.T.) ; +#1194=EDGE_CURVE('',#1164,#1188,#1193,.T.) ; +#1211=EDGE_CURVE('',#1188,#1140,#1210,.F.) ; +#1239=EDGE_CURVE('',#1238,#1188,#1224,.T.) ; +#1255=EDGE_CURVE('',#1164,#1254,#1240,.F.) ; +#1260=EDGE_CURVE('',#1254,#1238,#1259,.T.) ; +#1288=EDGE_CURVE('',#1287,#1140,#1273,.T.) ; +#1293=EDGE_CURVE('',#1238,#1287,#1292,.F.) ; +#1321=EDGE_CURVE('',#1320,#1133,#1306,.T.) ; +#1326=EDGE_CURVE('',#1287,#1320,#1325,.F.) ; +#1343=EDGE_CURVE('',#1320,#1254,#1342,.F.) ; +#1364=EDGE_CURVE('',#1361,#1363,#1359,.T.) ; +#1369=EDGE_CURVE('',#1111,#1361,#1368,.F.) ; +#1374=EDGE_CURVE('',#1363,#1109,#1373,.T.) ; +#1391=EDGE_CURVE('',#1363,#1361,#1390,.T.) ; +#1418=EDGE_CURVE('',#1415,#1417,#1413,.T.) ; +#1423=EDGE_CURVE('',#1417,#1415,#1422,.T.) ; +#1438=EDGE_CURVE('',#1415,#1361,#1437,.F.) ; +#1443=EDGE_CURVE('',#1417,#1363,#1442,.F.) ; +#120=EDGE_LOOP('',(#121,#122,#123,#124)) ; +#142=EDGE_LOOP('',(#143,#144,#145,#146)) ; +#182=EDGE_LOOP('',(#183,#184,#185,#186)) ; +#238=EDGE_LOOP('',(#239,#240)) ; +#292=EDGE_LOOP('',(#293,#294)) ; +#296=EDGE_LOOP('',(#297,#298)) ; +#334=EDGE_LOOP('',(#335,#336,#337,#338)) ; +#390=EDGE_LOOP('',(#391,#392)) ; +#444=EDGE_LOOP('',(#445,#446)) ; +#448=EDGE_LOOP('',(#449,#450)) ; +#482=EDGE_LOOP('',(#483,#484,#485,#486,#487,#488)) ; +#501=EDGE_LOOP('',(#502,#503,#504,#505)) ; +#532=EDGE_LOOP('',(#533,#534,#535,#536,#537,#538)) ; +#551=EDGE_LOOP('',(#552,#553,#554,#555)) ; +#607=EDGE_LOOP('',(#608,#609)) ; +#627=EDGE_LOOP('',(#628,#629,#630,#631)) ; +#639=EDGE_LOOP('',(#640,#641,#642,#643)) ; +#661=EDGE_LOOP('',(#662,#663,#664,#665)) ; +#673=EDGE_LOOP('',(#674,#675,#676,#677)) ; +#690=EDGE_LOOP('',(#691,#692,#693,#694)) ; +#746=EDGE_LOOP('',(#747,#748)) ; +#756=EDGE_LOOP('',(#757,#758,#759,#760)) ; +#778=EDGE_LOOP('',(#779,#780,#781,#782)) ; +#790=EDGE_LOOP('',(#791,#792,#793,#794)) ; +#851=EDGE_LOOP('',(#852,#853)) ; +#869=EDGE_LOOP('',(#870,#871)) ; +#898=EDGE_LOOP('',(#899,#900,#901,#902)) ; +#915=EDGE_LOOP('',(#916,#917,#918,#919)) ; +#927=EDGE_LOOP('',(#928,#929)) ; +#956=EDGE_LOOP('',(#957,#958,#959,#960)) ; +#973=EDGE_LOOP('',(#974,#975,#976,#977)) ; +#999=EDGE_LOOP('',(#1000,#1001)) ; +#1019=EDGE_LOOP('',(#1020,#1021,#1022,#1023)) ; +#1031=EDGE_LOOP('',(#1032,#1033,#1034,#1035)) ; +#1098=EDGE_LOOP('',(#1099,#1100,#1101,#1102)) ; +#1118=EDGE_LOOP('',(#1119,#1120)) ; +#1147=EDGE_LOOP('',(#1148,#1149,#1150,#1151)) ; +#1171=EDGE_LOOP('',(#1172,#1173,#1174,#1175)) ; +#1195=EDGE_LOOP('',(#1196,#1197,#1198,#1199)) ; +#1212=EDGE_LOOP('',(#1213,#1214,#1215,#1216)) ; +#1261=EDGE_LOOP('',(#1262,#1263,#1264,#1265)) ; +#1294=EDGE_LOOP('',(#1295,#1296,#1297,#1298)) ; +#1327=EDGE_LOOP('',(#1328,#1329,#1330,#1331)) ; +#1344=EDGE_LOOP('',(#1345,#1346,#1347,#1348)) ; +#1375=EDGE_LOOP('',(#1376,#1377,#1378,#1379)) ; +#1392=EDGE_LOOP('',(#1393,#1394,#1395,#1396)) ; +#1404=EDGE_LOOP('',(#1405,#1406,#1407,#1408)) ; +#1424=EDGE_LOOP('',(#1425,#1426)) ; +#1444=EDGE_LOOP('',(#1445,#1446,#1447,#1448)) ; +#1456=EDGE_LOOP('',(#1457,#1458,#1459,#1460)) ; +#125=FACE_OUTER_BOUND('',#120,.T.) ; +#147=FACE_OUTER_BOUND('',#142,.T.) ; +#187=FACE_OUTER_BOUND('',#182,.T.) ; +#339=FACE_OUTER_BOUND('',#334,.T.) ; +#489=FACE_OUTER_BOUND('',#482,.T.) ; +#506=FACE_OUTER_BOUND('',#501,.T.) ; +#539=FACE_OUTER_BOUND('',#532,.T.) ; +#556=FACE_OUTER_BOUND('',#551,.T.) ; +#632=FACE_OUTER_BOUND('',#627,.T.) ; +#644=FACE_OUTER_BOUND('',#639,.T.) ; +#666=FACE_OUTER_BOUND('',#661,.T.) ; +#678=FACE_OUTER_BOUND('',#673,.T.) ; +#695=FACE_OUTER_BOUND('',#690,.T.) ; +#761=FACE_OUTER_BOUND('',#756,.T.) ; +#783=FACE_OUTER_BOUND('',#778,.T.) ; +#795=FACE_OUTER_BOUND('',#790,.T.) ; +#854=FACE_OUTER_BOUND('',#851,.T.) ; +#903=FACE_OUTER_BOUND('',#898,.T.) ; +#920=FACE_OUTER_BOUND('',#915,.T.) ; +#930=FACE_OUTER_BOUND('',#927,.T.) ; +#961=FACE_OUTER_BOUND('',#956,.T.) ; +#978=FACE_OUTER_BOUND('',#973,.T.) ; +#1002=FACE_OUTER_BOUND('',#999,.T.) ; +#1024=FACE_OUTER_BOUND('',#1019,.T.) ; +#1036=FACE_OUTER_BOUND('',#1031,.T.) ; +#1103=FACE_OUTER_BOUND('',#1098,.T.) ; +#1152=FACE_OUTER_BOUND('',#1147,.T.) ; +#1176=FACE_OUTER_BOUND('',#1171,.T.) ; +#1200=FACE_OUTER_BOUND('',#1195,.T.) ; +#1217=FACE_OUTER_BOUND('',#1212,.T.) ; +#1266=FACE_OUTER_BOUND('',#1261,.T.) ; +#1299=FACE_OUTER_BOUND('',#1294,.T.) ; +#1332=FACE_OUTER_BOUND('',#1327,.T.) ; +#1349=FACE_OUTER_BOUND('',#1344,.T.) ; +#1380=FACE_OUTER_BOUND('',#1375,.T.) ; +#1397=FACE_OUTER_BOUND('',#1392,.T.) ; +#1409=FACE_OUTER_BOUND('',#1404,.T.) ; +#1449=FACE_OUTER_BOUND('',#1444,.T.) ; +#1461=FACE_OUTER_BOUND('',#1456,.T.) ; +#50=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.005),#46,'distance_accuracy_value','CONFUSED CURVE UNCERTAINTY') ; +#52=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.005),#46,'distance_accuracy_value','CONFUSED CURVE UNCERTAINTY') ; +#813=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.005),#46,'distance_accuracy_value','CONFUSED CURVE UNCERTAINTY') ; +#821=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.005),#46,'distance_accuracy_value','CONFUSED CURVE UNCERTAINTY') ; +#1054=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.005),#46,'distance_accuracy_value','CONFUSED CURVE UNCERTAINTY') ; +#1492=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.005),#46,'distance_accuracy_value','CONFUSED CURVE UNCERTAINTY') ; +#71=LINE('Line',#68,#70) ; +#99=LINE('Line',#96,#98) ; +#157=LINE('Line',#154,#156) ; +#166=LINE('Line',#163,#165) ; +#173=LINE('Line',#170,#172) ; +#180=LINE('Line',#177,#179) ; +#309=LINE('Line',#306,#308) ; +#318=LINE('Line',#315,#317) ; +#325=LINE('Line',#322,#324) ; +#332=LINE('Line',#329,#331) ; +#461=LINE('Line',#458,#460) ; +#466=LINE('Line',#463,#465) ; +#473=LINE('Line',#470,#472) ; +#480=LINE('Line',#477,#479) ; +#499=LINE('Line',#496,#498) ; +#516=LINE('Line',#513,#515) ; +#523=LINE('Line',#520,#522) ; +#530=LINE('Line',#527,#529) ; +#549=LINE('Line',#546,#548) ; +#620=LINE('Line',#617,#619) ; +#625=LINE('Line',#622,#624) ; +#654=LINE('Line',#651,#653) ; +#659=LINE('Line',#656,#658) ; +#688=LINE('Line',#685,#687) ; +#771=LINE('Line',#768,#770) ; +#776=LINE('Line',#773,#775) ; +#882=LINE('Line',#879,#881) ; +#896=LINE('Line',#893,#895) ; +#940=LINE('Line',#937,#939) ; +#947=LINE('Line',#944,#946) ; +#1073=LINE('Line',#1070,#1072) ; +#1082=LINE('Line',#1079,#1081) ; +#1089=LINE('Line',#1086,#1088) ; +#1096=LINE('Line',#1093,#1095) ; +#1131=LINE('Line',#1128,#1130) ; +#1138=LINE('Line',#1135,#1137) ; +#1145=LINE('Line',#1142,#1144) ; +#1162=LINE('Line',#1159,#1161) ; +#1169=LINE('Line',#1166,#1168) ; +#1186=LINE('Line',#1183,#1185) ; +#1193=LINE('Line',#1190,#1192) ; +#1210=LINE('Line',#1207,#1209) ; +#1259=LINE('Line',#1256,#1258) ; +#1292=LINE('Line',#1289,#1291) ; +#1325=LINE('Line',#1322,#1324) ; +#1342=LINE('Line',#1339,#1341) ; +#1368=LINE('Line',#1365,#1367) ; +#1373=LINE('Line',#1370,#1372) ; +#2=MECHANICAL_CONTEXT(' ',#1,'mechanical') ; +#800=NEXT_ASSEMBLY_USAGE_OCCURRENCE('NAUO2','NAUO2','L-BRACKET_1',#17,#58,' ') ; +#1041=NEXT_ASSEMBLY_USAGE_OCCURRENCE('NAUO3','NAUO3','BOLT_1',#819,#827,' ') ; +#1466=NEXT_ASSEMBLY_USAGE_OCCURRENCE('NAUO4','NAUO4','NUT_1',#819,#1060,' ') ; +#1479=NEXT_ASSEMBLY_USAGE_OCCURRENCE('NAUO5','NAUO5','NUT-BOLT ASSEMBLY_1',#17,#819,' ') ; +#1494=NEXT_ASSEMBLY_USAGE_OCCURRENCE('NAUO6','NAUO6','NUT-BOLT ASSEMBLY_2',#17,#819,' ') ; +#27=PERSONAL_ADDRESS(' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',(#25),' ') ; +#153=PLANE('Plane',#152) ; +#305=PLANE('Plane',#304) ; +#457=PLANE('Plane',#456) ; +#495=PLANE('Plane',#494) ; +#512=PLANE('Plane',#511) ; +#545=PLANE('Plane',#544) ; +#684=PLANE('Plane',#683) ; +#755=PLANE('Plane',#754) ; +#836=PLANE('Plane',#835) ; +#926=PLANE('Plane',#925) ; +#984=PLANE('Plane',#983) ; +#1069=PLANE('Plane',#1068) ; +#1127=PLANE('Plane',#1126) ; +#1158=PLANE('Plane',#1157) ; +#1182=PLANE('Plane',#1181) ; +#1206=PLANE('Plane',#1205) ; +#1403=PLANE('Plane',#1402) ; +#48=PLANE_ANGLE_MEASURE_WITH_UNIT(PLANE_ANGLE_MEASURE(0.0174532925199),#47) ; +#7=PRODUCT_CATEGORY('part',$) ; +#14=PRODUCT_CATEGORY('part',$) ; +#9=PRODUCT_CATEGORY_RELATIONSHIP(' ',' ',#7,#8) ; +#16=PRODUCT_CATEGORY_RELATIONSHIP(' ',' ',#14,#15) ; +#6=PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE('None',' ',#5,.BOUGHT.) ; +#57=PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE('None',' ',#56,.BOUGHT.) ; +#818=PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE('None',' ',#817,.BOUGHT.) ; +#826=PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE('None',' ',#825,.BOUGHT.) ; +#1059=PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE('None',' ',#1058,.BOUGHT.) ; +#58=PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS('None',' ',#57,#3,(#60)) ; +#827=PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS('None',' ',#826,#3,(#829)) ; +#1060=PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS('None',' ',#1059,#3,(#1062)) ; +#8=PRODUCT_RELATED_PRODUCT_CATEGORY('detail',$,(#56,#825,#1058)) ; +#15=PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#5,#817)) ; +#43=SHAPE_DEFINITION_REPRESENTATION(#45,#44) ; +#55=SHAPE_DEFINITION_REPRESENTATION(#61,#54) ; +#816=SHAPE_DEFINITION_REPRESENTATION(#820,#815) ; +#824=SHAPE_DEFINITION_REPRESENTATION(#830,#823) ; +#1057=SHAPE_DEFINITION_REPRESENTATION(#1063,#1056) ; +#73=VERTEX_POINT('',#72) ; +#75=VERTEX_POINT('',#74) ; +#94=VERTEX_POINT('',#93) ; +#101=VERTEX_POINT('',#100) ; +#159=VERTEX_POINT('',#158) ; +#161=VERTEX_POINT('',#160) ; +#168=VERTEX_POINT('',#167) ; +#175=VERTEX_POINT('',#174) ; +#211=VERTEX_POINT('',#210) ; +#213=VERTEX_POINT('',#212) ; +#265=VERTEX_POINT('',#264) ; +#267=VERTEX_POINT('',#266) ; +#311=VERTEX_POINT('',#310) ; +#313=VERTEX_POINT('',#312) ; +#320=VERTEX_POINT('',#319) ; +#327=VERTEX_POINT('',#326) ; +#363=VERTEX_POINT('',#362) ; +#365=VERTEX_POINT('',#364) ; +#417=VERTEX_POINT('',#416) ; +#419=VERTEX_POINT('',#418) ; +#468=VERTEX_POINT('',#467) ; +#475=VERTEX_POINT('',#474) ; +#518=VERTEX_POINT('',#517) ; +#525=VERTEX_POINT('',#524) ; +#580=VERTEX_POINT('',#579) ; +#582=VERTEX_POINT('',#581) ; +#719=VERTEX_POINT('',#718) ; +#721=VERTEX_POINT('',#720) ; +#842=VERTEX_POINT('',#841) ; +#844=VERTEX_POINT('',#843) ; +#860=VERTEX_POINT('',#859) ; +#862=VERTEX_POINT('',#861) ; +#884=VERTEX_POINT('',#883) ; +#891=VERTEX_POINT('',#890) ; +#942=VERTEX_POINT('',#941) ; +#949=VERTEX_POINT('',#948) ; +#990=VERTEX_POINT('',#989) ; +#992=VERTEX_POINT('',#991) ; +#1075=VERTEX_POINT('',#1074) ; +#1077=VERTEX_POINT('',#1076) ; +#1084=VERTEX_POINT('',#1083) ; +#1091=VERTEX_POINT('',#1090) ; +#1109=VERTEX_POINT('',#1108) ; +#1111=VERTEX_POINT('',#1110) ; +#1133=VERTEX_POINT('',#1132) ; +#1140=VERTEX_POINT('',#1139) ; +#1164=VERTEX_POINT('',#1163) ; +#1188=VERTEX_POINT('',#1187) ; +#1238=VERTEX_POINT('',#1237) ; +#1254=VERTEX_POINT('',#1253) ; +#1287=VERTEX_POINT('',#1286) ; +#1320=VERTEX_POINT('',#1319) ; +#1361=VERTEX_POINT('',#1360) ; +#1363=VERTEX_POINT('',#1362) ; +#1415=VERTEX_POINT('',#1414) ; +#1417=VERTEX_POINT('',#1416) ; +#46=(LENGTH_UNIT()NAMED_UNIT(*)SI_UNIT(.MILLI.,.METRE.)) ; +#47=(NAMED_UNIT(*)PLANE_ANGLE_UNIT()SI_UNIT($,.RADIAN.)) ; +#49=(NAMED_UNIT(*)SI_UNIT($,.STERADIAN.)SOLID_ANGLE_UNIT()) ; +#51=(GEOMETRIC_REPRESENTATION_CONTEXT(3)GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#50))GLOBAL_UNIT_ASSIGNED_CONTEXT((#46,#47,#49))REPRESENTATION_CONTEXT(' ',' ')) ; +#53=(GEOMETRIC_REPRESENTATION_CONTEXT(3)GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#52))GLOBAL_UNIT_ASSIGNED_CONTEXT((#46,#47,#49))REPRESENTATION_CONTEXT(' ',' ')) ; +#814=(GEOMETRIC_REPRESENTATION_CONTEXT(3)GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#813))GLOBAL_UNIT_ASSIGNED_CONTEXT((#46,#47,#49))REPRESENTATION_CONTEXT(' ',' ')) ; +#822=(GEOMETRIC_REPRESENTATION_CONTEXT(3)GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#821))GLOBAL_UNIT_ASSIGNED_CONTEXT((#46,#47,#49))REPRESENTATION_CONTEXT(' ',' ')) ; +#1055=(GEOMETRIC_REPRESENTATION_CONTEXT(3)GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1054))GLOBAL_UNIT_ASSIGNED_CONTEXT((#46,#47,#49))REPRESENTATION_CONTEXT(' ',' ')) ; +#1493=(GEOMETRIC_REPRESENTATION_CONTEXT(3)GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1492))GLOBAL_UNIT_ASSIGNED_CONTEXT((#46,#47,#49))REPRESENTATION_CONTEXT(' ',' ')) ; +#803=(REPRESENTATION_RELATIONSHIP(' ',' ',#54,#44)REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#804)SHAPE_REPRESENTATION_RELATIONSHIP()) ; +#1044=(REPRESENTATION_RELATIONSHIP(' ',' ',#823,#815)REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1045)SHAPE_REPRESENTATION_RELATIONSHIP()) ; +#1469=(REPRESENTATION_RELATIONSHIP(' ',' ',#1056,#815)REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1470)SHAPE_REPRESENTATION_RELATIONSHIP()) ; +#1482=(REPRESENTATION_RELATIONSHIP(' ',' ',#815,#44)REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1483)SHAPE_REPRESENTATION_RELATIONSHIP()) ; +#1497=(REPRESENTATION_RELATIONSHIP(' ',' ',#815,#44)REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#1498)SHAPE_REPRESENTATION_RELATIONSHIP()) ; +ENDSEC; +END-ISO-10303-21; diff --git a/src/Mod/Assembly/Gui/Command.cpp b/src/Mod/Assembly/Gui/Command.cpp index 11ad23737..f979ba6e8 100644 --- a/src/Mod/Assembly/Gui/Command.cpp +++ b/src/Mod/Assembly/Gui/Command.cpp @@ -76,34 +76,23 @@ void CmdAssemblyAddNewPart::activated(int iMsg) } openCommand("Insert Part"); + // need the help of the Part module to set up a Part + addModule(App,"PartDesign"); + addModule(Gui,"PartDesignGui"); + addModule(Gui,"AssemblyGui"); + std::string PartName = getUniqueObjectName("Part"); - doCommand(Doc,"App.activeDocument().addObject('Assembly::ItemPart','%s')",PartName.c_str()); - if(dest){ - std::string fatherName = dest->getNameInDocument(); - doCommand(Doc,"App.activeDocument().%s.Items = App.activeDocument().%s.Items + [App.activeDocument().%s] ",fatherName.c_str(),fatherName.c_str(),PartName.c_str()); - } - Command::addModule(App,"PartDesign"); - Command::addModule(Gui,"PartDesignGui"); + std::string ProductName = dest->getNameInDocument(); + std::string RefName = getUniqueObjectName((PartName + "-1").c_str()); - - std::string BodyName = getUniqueObjectName("Body"); - // add the standard planes - std::string Plane1Name = BodyName + "_PlaneXY"; - std::string Plane2Name = BodyName + "_PlaneYZ"; - std::string Plane3Name = BodyName + "_PlaneXZ"; - doCommand(Doc,"App.activeDocument().addObject('App::Plane','%s')",Plane1Name.c_str()); - doCommand(Doc,"App.activeDocument().ActiveObject.Label = 'XY-Plane'"); - doCommand(Doc,"App.activeDocument().addObject('App::Plane','%s')",Plane2Name.c_str()); - doCommand(Doc,"App.activeDocument().ActiveObject.Placement = App.Placement(App.Vector(),App.Rotation(App.Vector(0,1,0),90))"); - doCommand(Doc,"App.activeDocument().ActiveObject.Label = 'YZ-Plane'"); - doCommand(Doc,"App.activeDocument().addObject('App::Plane','%s')",Plane3Name.c_str()); - doCommand(Doc,"App.activeDocument().ActiveObject.Placement = App.Placement(App.Vector(),App.Rotation(App.Vector(1,0,0),90))"); - doCommand(Doc,"App.activeDocument().ActiveObject.Label = 'XZ-Plane'"); - // add to anotation set of the Part object - doCommand(Doc,"App.activeDocument().%s.Annotation = [App.activeDocument().%s,App.activeDocument().%s,App.activeDocument().%s] ",PartName.c_str(),Plane1Name.c_str(),Plane2Name.c_str(),Plane3Name.c_str()); - // add the main body - doCommand(Doc,"App.activeDocument().addObject('PartDesign::Body','%s')",BodyName.c_str()); - doCommand(Doc,"App.activeDocument().%s.Model = App.activeDocument().%s ",PartName.c_str(),BodyName.c_str()); + doCommand(Doc,"App.activeDocument().addObject('App::Part','%s')",PartName.c_str()); + doCommand(Doc,"App.activeDocument().addObject('Assembly::ProductRef','%s')",RefName.c_str()); + doCommand(Doc,"App.activeDocument().%s.Items = App.activeDocument().%s.Items + [App.activeDocument().%s]",ProductName.c_str(),ProductName.c_str(),RefName.c_str()); + doCommand(Doc,"App.activeDocument().%s.Item = App.activeDocument().%s",RefName.c_str(),PartName.c_str()); + doCommand(Doc,"AssemblyGui.setActiveAssembly(App.activeDocument().%s)",ProductName.c_str()); + + // create a PartDesign Part for now, can be later any kind of Part or an empty one + doCommand(Gui::Command::Doc,"PartDesignGui.setUpPart(App.activeDocument().%s)",PartName.c_str()); this->updateActive(); } @@ -135,15 +124,23 @@ void CmdAssemblyAddNewComponent::activated(int iMsg) dest = dynamic_cast(Sel.front()); }else if(ActiveAsmObject && ActiveAsmObject->getTypeId().isDerivedFrom(Assembly::Product::getClassTypeId())) { dest = dynamic_cast(ActiveAsmObject); + }else { + + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("No active or selected assembly"), + QObject::tr("You need a active or selected assembly to insert a component in.")); + return; } openCommand("Insert Component"); - std::string CompName = getUniqueObjectName("Assembly"); - doCommand(Doc,"App.activeDocument().addObject('Assembly::Product','%s')",CompName.c_str()); - if(dest){ - std::string fatherName = dest->getNameInDocument(); - doCommand(Doc,"App.activeDocument().%s.Items = App.activeDocument().%s.Items + [App.activeDocument().%s] ",fatherName.c_str(),fatherName.c_str(),CompName.c_str()); - } + std::string NewProdName = getUniqueObjectName("Product"); + std::string ProductName = dest->getNameInDocument(); + std::string RefName = getUniqueObjectName((NewProdName + "-1").c_str()); + + doCommand(Doc,"App.activeDocument().addObject('Assembly::Product','%s')",NewProdName.c_str()); + doCommand(Doc,"App.activeDocument().addObject('Assembly::ProductRef','%s')",RefName.c_str()); + doCommand(Doc,"App.activeDocument().%s.Items = App.activeDocument().%s.Items + [App.activeDocument().%s]",ProductName.c_str(),ProductName.c_str(),RefName.c_str()); + doCommand(Doc,"App.activeDocument().%s.Item = App.activeDocument().%s",RefName.c_str(),NewProdName.c_str()); + } //=========================================================================== diff --git a/src/Mod/Assembly/Gui/Workbench.cpp b/src/Mod/Assembly/Gui/Workbench.cpp index 7315e5171..a60040762 100644 --- a/src/Mod/Assembly/Gui/Workbench.cpp +++ b/src/Mod/Assembly/Gui/Workbench.cpp @@ -46,22 +46,30 @@ using namespace AssemblyGui; void switchToDocument(const App::Document* doc) { - if(doc->countObjects() == 0){ // -> set up a empty document - std::string PartName = doc->getUniqueObjectName("Part"); + if( doc->Tip.getValue() && doc->Tip.getValue()->getTypeId() == App::Part::getClassTypeId() ) + { // in case of a Part document + std::string PartName = doc->Tip.getValue()->getNameInDocument(); std::string ProductName = doc->getUniqueObjectName("Product"); std::string RefName = doc->getUniqueObjectName((PartName + "-1").c_str()); Gui::Command::doCommand(Gui::Command::Doc,"App.activeDocument().Tip = App.activeDocument().addObject('Assembly::Product','%s')",ProductName.c_str()); Gui::Command::doCommand(Gui::Command::Doc,"App.activeDocument().addObject('Assembly::ProductRef','%s')",RefName.c_str()); Gui::Command::doCommand(Gui::Command::Doc,"App.activeDocument().%s.Items = App.activeDocument().%s",ProductName.c_str(),RefName.c_str()); - Gui::Command::doCommand(Gui::Command::Doc,"App.activeDocument().addObject('App::Part','%s')",PartName.c_str()); Gui::Command::doCommand(Gui::Command::Doc,"App.activeDocument().%s.Item = App.activeDocument().%s",RefName.c_str(),PartName.c_str()); Gui::Command::addModule(Gui::Command::Gui,"AssemblyGui"); Gui::Command::doCommand(Gui::Command::Doc,"AssemblyGui.setActiveAssembly(App.activeDocument().%s)",ProductName.c_str()); - // create a PartDesign Part for now, can be later any kind of Part or an empty one - Gui::Command::addModule(Gui::Command::Doc,"PartDesignGui"); - Gui::Command::doCommand(Gui::Command::Doc,"PartDesignGui.setUpPart(App.activeDocument().%s)",PartName.c_str()); + //// create a PartDesign Part for now, can be later any kind of Part or an empty one + //Gui::Command::addModule(Gui::Command::Doc,"PartDesignGui"); + //Gui::Command::doCommand(Gui::Command::Doc,"PartDesignGui.setUpPart(App.activeDocument().%s)",PartName.c_str()); + + } else if(doc->countObjects() == 0){ // -> set up a empty document + std::string ProductName = doc->getUniqueObjectName("Product"); + + Gui::Command::doCommand(Gui::Command::Doc,"App.activeDocument().Tip = App.activeDocument().addObject('Assembly::Product','%s')",ProductName.c_str()); + Gui::Command::addModule(Gui::Command::Gui,"AssemblyGui"); + Gui::Command::doCommand(Gui::Command::Doc,"AssemblyGui.setActiveAssembly(App.activeDocument().%s)",ProductName.c_str()); } + } @@ -157,16 +165,16 @@ void Workbench::activated() addTaskWatcher(Watcher); Gui::Control().showTaskView(); - //App::Document *doc = App::GetApplication().getActiveDocument(); + App::Document *doc = App::GetApplication().getActiveDocument(); //if(!doc){ // // create a new document // std::string uniqueName = App::GetApplication().getUniqueDocumentName("Assembly1"); // Gui::Command::doCommand(Gui::Command::Doc,"App.newDocument('%s')",uniqueName.c_str()); // doc = App::GetApplication().getActiveDocument(); - // switchToDocument(doc); - //} + if(doc) + switchToDocument(doc); // show a warning about the Alpha state of FreeCAD Assembly diff --git a/src/Mod/Import/App/AppImportPy.cpp b/src/Mod/Import/App/AppImportPy.cpp index 045c6a723..1ff0e3ed7 100644 --- a/src/Mod/Import/App/AppImportPy.cpp +++ b/src/Mod/Import/App/AppImportPy.cpp @@ -76,10 +76,17 @@ public: add_varargs_method("insert",&Module::importer, "insert(string,string) -- Insert the file into the given document." ); + add_varargs_method("openAssembly",&Module::importAssembly, + "openAssembly(string) -- Open the assembly file and create a new document." + ); add_varargs_method("export",&Module::exporter, "export(list,string) -- Export a list of objects into a single file." ); initialize("This module is the Import module."); // register with Python + + if(TargetObjectPy) + target = static_cast(TargetObjectPy)->getDocumentObjectPtr(); + } virtual ~Module() {} @@ -301,16 +308,25 @@ private: "importAssembly(FileName,Target) -- Import a Assembly file and creates a Assembly structure."}, }; -PyObject * importAssembly(PyObject *self, PyObject *args) +static PyObject * importAssembly(PyObject *self, PyObject *args) { char* Name; - PyObject* TargetObject=0; - if (!PyArg_ParseTuple(args, "s|O",&Name,&TargetObject)) + PyObject* TargetObjectPy=0; + if (!PyArg_ParseTuple(args, "et|O!","utf-8",&Name,&(App::DocumentObjectPy::Type),&TargetObjectPy)) return 0; + std::string Utf8Name = std::string(Name); + PyMem_Free(Name); + std::string name8bit = Part::encodeFilename(Utf8Name); PY_TRY { //Base::Console().Log("Insert in Part with %s",Name); - Base::FileInfo file(Name); + Base::FileInfo file(name8bit); + + App::DocumentObject* target = nullptr; + + if(TargetObjectPy) + target = static_cast(TargetObjectPy)->getDocumentObjectPtr(); + App::Document *pcDoc = 0; @@ -330,7 +346,7 @@ PyObject * importAssembly(PyObject *self, PyObject *args) aReader.SetColorMode(true); aReader.SetNameMode(true); aReader.SetLayerMode(true); - if (aReader.ReadFile((Standard_CString)Name) != IFSelect_RetDone) { + if (aReader.ReadFile((Standard_CString)(name8bit.c_str())) != IFSelect_RetDone) { PyErr_SetString(PyExc_Exception, "cannot read STEP file"); return 0; } @@ -359,7 +375,7 @@ PyObject * importAssembly(PyObject *self, PyObject *args) aReader.SetColorMode(true); aReader.SetNameMode(true); aReader.SetLayerMode(true); - if (aReader.ReadFile((Standard_CString)Name) != IFSelect_RetDone) { + if (aReader.ReadFile((Standard_CString)(name8bit.c_str())) != IFSelect_RetDone) { PyErr_SetString(PyExc_Exception, "cannot read IGES file"); return 0; } @@ -385,8 +401,8 @@ PyObject * importAssembly(PyObject *self, PyObject *args) return 0; } - Import::ImportOCAFAssembly ocaf(hDoc, pcDoc, file.fileNamePure()); - ocaf.loadShapes(); + Import::ImportOCAFAssembly ocaf(hDoc, pcDoc, file.fileNamePure(),target); + ocaf.loadAssembly(); pcDoc->recompute(); } @@ -400,6 +416,226 @@ PyObject * importAssembly(PyObject *self, PyObject *args) Py_Return; } + + +static PyObject * importer(PyObject *self, PyObject *args) +{ + char* Name; + char* DocName=0; + if (!PyArg_ParseTuple(args, "et|s","utf-8",&Name,&DocName)) + return NULL; + std::string Utf8Name = std::string(Name); + PyMem_Free(Name); + std::string name8bit = Part::encodeFilename(Utf8Name); + + PY_TRY { + //Base::Console().Log("Insert in Part with %s",Name); + Base::FileInfo file(Utf8Name.c_str()); + + App::Document *pcDoc = 0; + if (DocName) { + pcDoc = App::GetApplication().getDocument(DocName); + } + if (!pcDoc) { + pcDoc = App::GetApplication().newDocument("Unnamed"); + } + + Handle(XCAFApp_Application) hApp = XCAFApp_Application::GetApplication(); + Handle(TDocStd_Document) hDoc; + hApp->NewDocument(TCollection_ExtendedString("MDTV-CAF"), hDoc); + + if (file.hasExtension("stp") || file.hasExtension("step")) { + try { + STEPCAFControl_Reader aReader; + aReader.SetColorMode(true); + aReader.SetNameMode(true); + aReader.SetLayerMode(true); + if (aReader.ReadFile((Standard_CString)(name8bit.c_str())) != IFSelect_RetDone) { + PyErr_SetString(Base::BaseExceptionFreeCADError, "cannot read STEP file"); + return 0; + } + + Handle_Message_ProgressIndicator pi = new Part::ProgressIndicator(100); + aReader.Reader().WS()->MapReader()->SetProgress(pi); + pi->NewScope(100, "Reading STEP file..."); + pi->Show(); + aReader.Transfer(hDoc); + pi->EndScope(); + } + catch (OSD_Exception) { + Handle_Standard_Failure e = Standard_Failure::Caught(); + Base::Console().Error("%s\n", e->GetMessageString()); + Base::Console().Message("Try to load STEP file without colors...\n"); + + Part::ImportStepParts(pcDoc,Utf8Name.c_str()); + pcDoc->recompute(); + } + } + else if (file.hasExtension("igs") || file.hasExtension("iges")) { + Base::Reference hGrp = App::GetApplication().GetUserParameter() + .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/Part")->GetGroup("IGES"); + + try { + IGESControl_Controller::Init(); + IGESCAFControl_Reader aReader; + // http://www.opencascade.org/org/forum/thread_20603/?forum=3 + aReader.SetReadVisible(hGrp->GetBool("SkipBlankEntities", true) + ? Standard_True : Standard_False); + aReader.SetColorMode(true); + aReader.SetNameMode(true); + aReader.SetLayerMode(true); + if (aReader.ReadFile((Standard_CString)(name8bit.c_str())) != IFSelect_RetDone) { + PyErr_SetString(Base::BaseExceptionFreeCADError, "cannot read IGES file"); + return 0; + } + + Handle_Message_ProgressIndicator pi = new Part::ProgressIndicator(100); + aReader.WS()->MapReader()->SetProgress(pi); + pi->NewScope(100, "Reading IGES file..."); + pi->Show(); + aReader.Transfer(hDoc); + pi->EndScope(); + } + catch (OSD_Exception) { + Handle_Standard_Failure e = Standard_Failure::Caught(); + Base::Console().Error("%s\n", e->GetMessageString()); + Base::Console().Message("Try to load IGES file without colors...\n"); + + Part::ImportIgesParts(pcDoc,Utf8Name.c_str()); + pcDoc->recompute(); + } + } + else { + PyErr_SetString(Base::BaseExceptionFreeCADError, "no supported file format"); + return 0; + } + +#if 1 + Import::ImportOCAF ocaf(hDoc, pcDoc, file.fileNamePure()); + ocaf.loadShapes(); +#else + Import::ImportXCAF xcaf(hDoc, pcDoc, file.fileNamePure()); + xcaf.loadShapes(); +#endif + pcDoc->recompute(); + + } + catch (Standard_Failure) { + Handle_Standard_Failure e = Standard_Failure::Caught(); + PyErr_SetString(Base::BaseExceptionFreeCADError, e->GetMessageString()); + return 0; + } + PY_CATCH + + Py_Return; +} + +static PyObject * open(PyObject *self, PyObject *args) +{ + return importer(self, args); +} + +static PyObject * exporter(PyObject *self, PyObject *args) +{ + PyObject* object; + char* Name; + if (!PyArg_ParseTuple(args, "Oet",&object,"utf-8",&Name)) + return NULL; + std::string Utf8Name = std::string(Name); + PyMem_Free(Name); + std::string name8bit = Part::encodeFilename(Utf8Name); + + PY_TRY { + Handle(XCAFApp_Application) hApp = XCAFApp_Application::GetApplication(); + Handle(TDocStd_Document) hDoc; + hApp->NewDocument(TCollection_ExtendedString("MDTV-CAF"), hDoc); + Import::ExportOCAF ocaf(hDoc); + + Py::Sequence list(object); + for (Py::Sequence::iterator it = list.begin(); it != list.end(); ++it) { + PyObject* item = (*it).ptr(); + if (PyObject_TypeCheck(item, &(App::DocumentObjectPy::Type))) { + App::DocumentObject* obj = static_cast(item)->getDocumentObjectPtr(); + if (obj->getTypeId().isDerivedFrom(Part::Feature::getClassTypeId())) { + Part::Feature* part = static_cast(obj); + std::vector colors; + ocaf.saveShape(part, colors); + } + else { + Base::Console().Message("'%s' is not a shape, export will be ignored.\n", obj->Label.getValue()); + } + } + else if (PyTuple_Check(item) && PyTuple_Size(item) == 2) { + Py::Tuple tuple(*it); + Py::Object item0 = tuple.getItem(0); + Py::Object item1 = tuple.getItem(1); + if (PyObject_TypeCheck(item0.ptr(), &(App::DocumentObjectPy::Type))) { + App::DocumentObject* obj = static_cast(item0.ptr())->getDocumentObjectPtr(); + if (obj->getTypeId().isDerivedFrom(Part::Feature::getClassTypeId())) { + Part::Feature* part = static_cast(obj); + App::PropertyColorList colors; + colors.setPyObject(item1.ptr()); + ocaf.saveShape(part, colors.getValues()); + } + else { + Base::Console().Message("'%s' is not a shape, export will be ignored.\n", obj->Label.getValue()); + } + } + } + } + + Base::FileInfo file(Utf8Name.c_str()); + if (file.hasExtension("stp") || file.hasExtension("step")) { + //Interface_Static::SetCVal("write.step.schema", "AP214IS"); + STEPCAFControl_Writer writer; + writer.Transfer(hDoc, STEPControl_AsIs); + + // edit STEP header +#if OCC_VERSION_HEX >= 0x060500 + APIHeaderSection_MakeHeader makeHeader(writer.ChangeWriter().Model()); +#else + APIHeaderSection_MakeHeader makeHeader(writer.Writer().Model()); +#endif + Base::Reference hGrp = App::GetApplication().GetUserParameter() + .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/Part")->GetGroup("STEP"); + + makeHeader.SetName(new TCollection_HAsciiString((const Standard_CString)Utf8Name.c_str())); + makeHeader.SetAuthorValue (1, new TCollection_HAsciiString(hGrp->GetASCII("Author", "Author").c_str())); + makeHeader.SetOrganizationValue (1, new TCollection_HAsciiString(hGrp->GetASCII("Company").c_str())); + makeHeader.SetOriginatingSystem(new TCollection_HAsciiString(App::GetApplication().getExecutableName())); + makeHeader.SetDescriptionValue(1, new TCollection_HAsciiString("FreeCAD Model")); + IFSelect_ReturnStatus ret = writer.Write(name8bit.c_str()); + if (ret == IFSelect_RetError || ret == IFSelect_RetFail || ret == IFSelect_RetStop) { + PyErr_Format(PyExc_IOError, "Cannot open file '%s'", Utf8Name.c_str()); + return 0; + } + } + else if (file.hasExtension("igs") || file.hasExtension("iges")) { + IGESControl_Controller::Init(); + IGESCAFControl_Writer writer; + IGESData_GlobalSection header = writer.Model()->GlobalSection(); + header.SetAuthorName(new TCollection_HAsciiString(Interface_Static::CVal("write.iges.header.author"))); + header.SetCompanyName(new TCollection_HAsciiString(Interface_Static::CVal("write.iges.header.company"))); + header.SetSendName(new TCollection_HAsciiString(Interface_Static::CVal("write.iges.header.product"))); + writer.Model()->SetGlobalSection(header); + writer.Transfer(hDoc); + Standard_Boolean ret = writer.Write(name8bit.c_str()); + if (!ret) { + PyErr_Format(PyExc_IOError, "Cannot open file '%s'", Utf8Name.c_str()); + return 0; + } + } + } + catch (Standard_Failure) { + Handle_Standard_Failure e = Standard_Failure::Caught(); + PyErr_SetString(Base::BaseExceptionFreeCADError, e->GetMessageString()); + return 0; + } + PY_CATCH + + Py_Return; +} + PyObject* initModule() { return (new Module)->module().ptr(); diff --git a/src/Mod/Import/App/AppImportPy.cpp.orig b/src/Mod/Import/App/AppImportPy.cpp.orig index 8fc65d1de..4b03b350e 100644 --- a/src/Mod/Import/App/AppImportPy.cpp.orig +++ b/src/Mod/Import/App/AppImportPy.cpp.orig @@ -64,115 +64,10 @@ #include #include - -<<<<<<< ba8252ee7a68c3a6f954372590d46fea1c4238da namespace Import { class Module : public Py::ExtensionModule -======= -static PyObject * importAssembly(PyObject *self, PyObject *args) -{ - char* Name; - PyObject* TargetObject=0; - if (!PyArg_ParseTuple(args, "s|O",&Name,&TargetObject)) - return 0; - - PY_TRY { - //Base::Console().Log("Insert in Part with %s",Name); - Base::FileInfo file(Name); - - App::Document *pcDoc = 0; - - pcDoc = App::GetApplication().getActiveDocument(); - - if (!pcDoc) - pcDoc = App::GetApplication().newDocument("ImportedAssembly"); - - - Handle(XCAFApp_Application) hApp = XCAFApp_Application::GetApplication(); - Handle(TDocStd_Document) hDoc; - hApp->NewDocument(TCollection_ExtendedString("MDTV-CAF"), hDoc); - - if (file.hasExtension("stp") || file.hasExtension("step")) { - try { - STEPCAFControl_Reader aReader; - aReader.SetColorMode(true); - aReader.SetNameMode(true); - aReader.SetLayerMode(true); - if (aReader.ReadFile((Standard_CString)Name) != IFSelect_RetDone) { - PyErr_SetString(PyExc_Exception, "cannot read STEP file"); - return 0; - } - - Handle_Message_ProgressIndicator pi = new Part::ProgressIndicator(100); - aReader.Reader().WS()->MapReader()->SetProgress(pi); - pi->NewScope(100, "Reading STEP file..."); - pi->Show(); - aReader.Transfer(hDoc); - pi->EndScope(); - } - catch (OSD_Exception) { - Handle_Standard_Failure e = Standard_Failure::Caught(); - Base::Console().Error("%s\n", e->GetMessageString()); - Base::Console().Message("Try to load STEP file without colors...\n"); - - Part::ImportStepParts(pcDoc,Name); - pcDoc->recompute(); - } - } - else if (file.hasExtension("igs") || file.hasExtension("iges")) { - try { - IGESControl_Controller::Init(); - Interface_Static::SetIVal("read.surfacecurve.mode",3); - IGESCAFControl_Reader aReader; - aReader.SetColorMode(true); - aReader.SetNameMode(true); - aReader.SetLayerMode(true); - if (aReader.ReadFile((Standard_CString)Name) != IFSelect_RetDone) { - PyErr_SetString(PyExc_Exception, "cannot read IGES file"); - return 0; - } - - Handle_Message_ProgressIndicator pi = new Part::ProgressIndicator(100); - aReader.WS()->MapReader()->SetProgress(pi); - pi->NewScope(100, "Reading IGES file..."); - pi->Show(); - aReader.Transfer(hDoc); - pi->EndScope(); - } - catch (OSD_Exception) { - Handle_Standard_Failure e = Standard_Failure::Caught(); - Base::Console().Error("%s\n", e->GetMessageString()); - Base::Console().Message("Try to load IGES file without colors...\n"); - - Part::ImportIgesParts(pcDoc,Name); - pcDoc->recompute(); - } - } - else { - PyErr_SetString(PyExc_Exception, "no supported file format"); - return 0; - } - - Import::ImportOCAFAssembly ocaf(hDoc, pcDoc, file.fileNamePure()); - ocaf.loadShapes(); - pcDoc->recompute(); - - } - catch (Standard_Failure) { - Handle_Standard_Failure e = Standard_Failure::Caught(); - PyErr_SetString(PyExc_Exception, e->GetMessageString()); - return 0; - } - PY_CATCH - - Py_Return; -} - - - -static PyObject * importer(PyObject *self, PyObject *args) ->>>>>>> Open new track for importing Assembly structures with OCSF reader. { +<<<<<<< 1b2c7a1da1451e3e0f5b8968455de0323c77c7f7 public: Module() : Py::ExtensionModule("Import") { @@ -189,18 +84,51 @@ public: } virtual ~Module() {} +======= + char* Name; + PyObject* TargetObjectPy=0; + if (!PyArg_ParseTuple(args, "et|O!","utf-8",&Name,&(App::DocumentObjectPy::Type),&TargetObjectPy)) + return 0; + std::string Utf8Name = std::string(Name); + PyMem_Free(Name); + std::string name8bit = Part::encodeFilename(Utf8Name); + + PY_TRY { + //Base::Console().Log("Insert in Part with %s",Name); + Base::FileInfo file(name8bit); + + App::DocumentObject* target = nullptr; + + if(TargetObjectPy) + target = static_cast(TargetObjectPy)->getDocumentObjectPtr(); + +>>>>>>> [Assembly] fixing the commands and some import private: Py::Object importer(const Py::Tuple& args) + { char* Name; char* DocName=0; if (!PyArg_ParseTuple(args.ptr(), "et|s","utf-8",&Name,&DocName)) throw Py::Exception(); +<<<<<<< 1b2c7a1da1451e3e0f5b8968455de0323c77c7f7 std::string Utf8Name = std::string(Name); PyMem_Free(Name); std::string name8bit = Part::encodeFilename(Utf8Name); +======= + if (file.hasExtension("stp") || file.hasExtension("step")) { + try { + STEPCAFControl_Reader aReader; + aReader.SetColorMode(true); + aReader.SetNameMode(true); + aReader.SetLayerMode(true); + if (aReader.ReadFile((Standard_CString)(name8bit.c_str())) != IFSelect_RetDone) { + PyErr_SetString(PyExc_Exception, "cannot read STEP file"); + return 0; + } +>>>>>>> [Assembly] fixing the commands and some import try { //Base::Console().Log("Insert in Part with %s",Name); @@ -210,6 +138,7 @@ private: if (DocName) { pcDoc = App::GetApplication().getDocument(DocName); } +<<<<<<< 1b2c7a1da1451e3e0f5b8968455de0323c77c7f7 if (!pcDoc) { pcDoc = App::GetApplication().newDocument("Unnamed"); } @@ -234,6 +163,20 @@ private: pi->Show(); aReader.Transfer(hDoc); pi->EndScope(); +======= + } + else if (file.hasExtension("igs") || file.hasExtension("iges")) { + try { + IGESControl_Controller::Init(); + Interface_Static::SetIVal("read.surfacecurve.mode",3); + IGESCAFControl_Reader aReader; + aReader.SetColorMode(true); + aReader.SetNameMode(true); + aReader.SetLayerMode(true); + if (aReader.ReadFile((Standard_CString)(name8bit.c_str())) != IFSelect_RetDone) { + PyErr_SetString(PyExc_Exception, "cannot read IGES file"); + return 0; +>>>>>>> [Assembly] fixing the commands and some import } catch (OSD_Exception) { Handle_Standard_Failure e = Standard_Failure::Caught(); @@ -298,7 +241,19 @@ private: throw Py::RuntimeError(e.what()); } +<<<<<<< 1b2c7a1da1451e3e0f5b8968455de0323c77c7f7 return Py::None(); +======= + Import::ImportOCAFAssembly ocaf(hDoc, pcDoc, file.fileNamePure(),target); + ocaf.loadAssembly(); + pcDoc->recompute(); + + } + catch (Standard_Failure) { + Handle_Standard_Failure e = Standard_Failure::Caught(); + PyErr_SetString(PyExc_Exception, e->GetMessageString()); + return 0; +>>>>>>> [Assembly] fixing the commands and some import } Py::Object exporter(const Py::Tuple& args) { @@ -402,26 +357,112 @@ private: return Py::None(); } + {"importAssembly" ,importAssembly ,METH_VARARGS, + "importAssembly(FileName,Target) -- Import a Assembly file and creates a Assembly structure."}, }; +PyObject * importAssembly(PyObject *self, PyObject *args) +{ + char* Name; + PyObject* TargetObject=0; + if (!PyArg_ParseTuple(args, "s|O",&Name,&TargetObject)) + return 0; + + PY_TRY { + //Base::Console().Log("Insert in Part with %s",Name); + Base::FileInfo file(Name); + + App::Document *pcDoc = 0; + + pcDoc = App::GetApplication().getActiveDocument(); + + if (!pcDoc) + pcDoc = App::GetApplication().newDocument("ImportedAssembly"); + + + Handle(XCAFApp_Application) hApp = XCAFApp_Application::GetApplication(); + Handle(TDocStd_Document) hDoc; + hApp->NewDocument(TCollection_ExtendedString("MDTV-CAF"), hDoc); + + if (file.hasExtension("stp") || file.hasExtension("step")) { + try { + STEPCAFControl_Reader aReader; + aReader.SetColorMode(true); + aReader.SetNameMode(true); + aReader.SetLayerMode(true); + if (aReader.ReadFile((Standard_CString)Name) != IFSelect_RetDone) { + PyErr_SetString(PyExc_Exception, "cannot read STEP file"); + return 0; + } + + Handle_Message_ProgressIndicator pi = new Part::ProgressIndicator(100); + aReader.Reader().WS()->MapReader()->SetProgress(pi); + pi->NewScope(100, "Reading STEP file..."); + pi->Show(); + aReader.Transfer(hDoc); + pi->EndScope(); + } + catch (OSD_Exception) { + Handle_Standard_Failure e = Standard_Failure::Caught(); + Base::Console().Error("%s\n", e->GetMessageString()); + Base::Console().Message("Try to load STEP file without colors...\n"); + + Part::ImportStepParts(pcDoc,Name); + pcDoc->recompute(); + } + } + else if (file.hasExtension("igs") || file.hasExtension("iges")) { + try { + IGESControl_Controller::Init(); + Interface_Static::SetIVal("read.surfacecurve.mode",3); + IGESCAFControl_Reader aReader; + aReader.SetColorMode(true); + aReader.SetNameMode(true); + aReader.SetLayerMode(true); + if (aReader.ReadFile((Standard_CString)Name) != IFSelect_RetDone) { + PyErr_SetString(PyExc_Exception, "cannot read IGES file"); + return 0; + } + + Handle_Message_ProgressIndicator pi = new Part::ProgressIndicator(100); + aReader.WS()->MapReader()->SetProgress(pi); + pi->NewScope(100, "Reading IGES file..."); + pi->Show(); + aReader.Transfer(hDoc); + pi->EndScope(); + } + catch (OSD_Exception) { + Handle_Standard_Failure e = Standard_Failure::Caught(); + Base::Console().Error("%s\n", e->GetMessageString()); + Base::Console().Message("Try to load IGES file without colors...\n"); + + Part::ImportIgesParts(pcDoc,Name); + pcDoc->recompute(); + } + } + else { + PyErr_SetString(PyExc_Exception, "no supported file format"); + return 0; + } + + Import::ImportOCAFAssembly ocaf(hDoc, pcDoc, file.fileNamePure()); + ocaf.loadShapes(); + pcDoc->recompute(); + + } + catch (Standard_Failure) { + Handle_Standard_Failure e = Standard_Failure::Caught(); + PyErr_SetString(PyExc_Exception, e->GetMessageString()); + return 0; + } + PY_CATCH + + Py_Return; +} + PyObject* initModule() { return (new Module)->module().ptr(); } -<<<<<<< ba8252ee7a68c3a6f954372590d46fea1c4238da } // namespace Import -======= -/* registration table */ -struct PyMethodDef Import_Import_methods[] = { - {"open" ,open ,METH_VARARGS, - "open(string) -- Open the file and create a new document."}, - {"insert" ,importer ,METH_VARARGS, - "insert(string,string) -- Insert the file into the given document."}, - {"export" ,exporter ,METH_VARARGS, - "export(list,string) -- Export a list of objects into a single file."}, - {"importAssembly" ,importAssembly ,METH_VARARGS, - "importAssembly(FileName,Target) -- Import a Assembly file and creates a Assembly structure."}, - {NULL, NULL} /* end of table marker */ -}; ->>>>>>> Open new track for importing Assembly structures with OCSF reader. diff --git a/src/Mod/Import/App/ImportOCAFAssembly.cpp b/src/Mod/Import/App/ImportOCAFAssembly.cpp index 9a30a5ad6..0619a9aa4 100644 --- a/src/Mod/Import/App/ImportOCAFAssembly.cpp +++ b/src/Mod/Import/App/ImportOCAFAssembly.cpp @@ -79,8 +79,11 @@ using namespace Import; -ImportOCAFAssembly::ImportOCAFAssembly(Handle_TDocStd_Document h, App::Document* d, const std::string& name) - : pDoc(h), doc(d), default_name(name) +ImportOCAFAssembly::ImportOCAFAssembly(Handle_TDocStd_Document h, App::Document* d, const std::string& name, App::DocumentObject *target) + : pDoc(h), + doc(d), + default_name(name), + targetObj(target) { aShapeTool = XCAFDoc_DocumentTool::ShapeTool (pDoc->Main()); aColorTool = XCAFDoc_DocumentTool::ColorTool(pDoc->Main()); @@ -96,6 +99,47 @@ void ImportOCAFAssembly::loadShapes() loadShapes(pDoc->Main(), TopLoc_Location(), default_name, "", false,0); } + +void ImportOCAFAssembly::loadAssembly() +{ + myRefShapes.clear(); + loadShapes(pDoc->Main(), TopLoc_Location(), default_name, "", false,0); +} + + +std::string ImportOCAFAssembly::getName(const TDF_Label& label) +{ + Handle(TDataStd_Name) name; + std::string part_name; + if (label.FindAttribute(TDataStd_Name::GetID(),name)) { + TCollection_ExtendedString extstr = name->Get(); + char* str = new char[extstr.LengthOfCString()+1]; + extstr.ToUTF8CString(str); + part_name = str; + delete [] str; + return part_name; + + //if (part_name.empty()) { + // return ""; + //} + //else { + // bool ws=true; + // for (std::string::iterator it = part_name.begin(); it != part_name.end(); ++it) { + // if (*it != ' ') { + // ws = false; + // break; + // } + // } + // if (ws) + // part_name = defaultname; + //} + } + + return ""; + +} + + void ImportOCAFAssembly::loadShapes(const TDF_Label& label, const TopLoc_Location& loc, const std::string& defaultname, const std::string& assembly, bool isRef, int dep) { int hash = 0; @@ -146,7 +190,7 @@ void ImportOCAFAssembly::loadShapes(const TDF_Label& label, const TopLoc_Locatio std::stringstream str; - Base::Console().Message("H:%-9d \tN:%-30s \tT:%d \tA:%d \tS:%d \tC:%d \tSS:%d \tF:%d \tR:%d \tC:%d \tSS:%d\tTrf:%s-- %d \n", + Base::Console().Log("H:%-9d \tN:%-30s \tTop:%d, Asm:%d, Shape:%d, Compound:%d, Simple:%d, Free:%d, Ref:%d, Component:%d, SubShape:%d\tTrf:%s-- Dep:%d \n", hash, part_name.c_str(), aShapeTool->IsTopLevel(label), @@ -199,18 +243,22 @@ void ImportOCAFAssembly::loadShapes(const TDF_Label& label, const TopLoc_Locatio void ImportOCAFAssembly::createShape(const TDF_Label& label, const TopLoc_Location& loc, const std::string& name) { + Base::Console().Log("-create Shape\n"); const TopoDS_Shape& aShape = aShapeTool->GetShape(label); if (!aShape.IsNull() && aShape.ShapeType() == TopAbs_COMPOUND) { TopExp_Explorer xp; int ctSolids = 0, ctShells = 0; for (xp.Init(aShape, TopAbs_SOLID); xp.More(); xp.Next(), ctSolids++) + { createShape(xp.Current(), loc, name); + } for (xp.Init(aShape, TopAbs_SHELL, TopAbs_SOLID); xp.More(); xp.Next(), ctShells++) + { createShape(xp.Current(), loc, name); + } if (ctSolids > 0 || ctShells > 0) return; } - createShape(aShape, loc, name); } @@ -274,285 +322,4 @@ void ImportOCAFAssembly::createShape(const TopoDS_Shape& aShape, const TopLoc_Lo } } -// ---------------------------------------------------------------------------- -ExportOCAFAssembly::ExportOCAFAssembly(Handle_TDocStd_Document h) - : pDoc(h) -{ - aShapeTool = XCAFDoc_DocumentTool::ShapeTool(pDoc->Main()); - aColorTool = XCAFDoc_DocumentTool::ColorTool(pDoc->Main()); - rootLabel = TDF_TagSource::NewChild(pDoc->Main()); -} - -void ExportOCAFAssembly::saveShape(Part::Feature* part, const std::vector& colors) -{ - const TopoDS_Shape& shape = part->Shape.getValue(); - if (shape.IsNull()) - return; - - // Add shape and name - //TDF_Label shapeLabel = hShapeTool->AddShape(shape, Standard_False); - TDF_Label shapeLabel= TDF_TagSource::NewChild(rootLabel); -#if OCC_VERSION_HEX >= 0x060500 - TDataXtd_Shape::Set(shapeLabel, shape); -#else - TDataStd_Shape::Set(shapeLabel, shape); -#endif - TDataStd_Name::Set(shapeLabel, TCollection_ExtendedString(part->Label.getValue(), 1)); - - // Add color information - Quantity_Color col; - - std::set face_index; - TopTools_IndexedMapOfShape faces; - TopExp_Explorer xp(shape,TopAbs_FACE); - while (xp.More()) { - face_index.insert(faces.Add(xp.Current())); - xp.Next(); - } - - // define color per face? - if (colors.size() == face_index.size()) { - xp.Init(shape,TopAbs_FACE); - while (xp.More()) { - int index = faces.FindIndex(xp.Current()); - if (face_index.find(index) != face_index.end()) { - face_index.erase(index); - TDF_Label faceLabel= TDF_TagSource::NewChild(shapeLabel); -#if OCC_VERSION_HEX >= 0x060500 - TDataXtd_Shape::Set(faceLabel, xp.Current()); -#else - TDataStd_Shape::Set(faceLabel, xp.Current()); -#endif - const App::Color& color = colors[index-1]; - Quantity_Parameter mat[3]; - mat[0] = color.r; - mat[1] = color.g; - mat[2] = color.b; - col.SetValues(mat[0],mat[1],mat[2],Quantity_TOC_RGB); - aColorTool->SetColor(faceLabel, col, XCAFDoc_ColorSurf); - } - xp.Next(); - } - } - else if (!colors.empty()) { - App::Color color = colors.front(); - Quantity_Parameter mat[3]; - mat[0] = color.r; - mat[1] = color.g; - mat[2] = color.b; - col.SetValues(mat[0],mat[1],mat[2],Quantity_TOC_RGB); - aColorTool->SetColor(shapeLabel, col, XCAFDoc_ColorGen); - } -} - -// ---------------------------------------------------------------------------- - -ImportXCAFAssembly::ImportXCAFAssembly(Handle_TDocStd_Document h, App::Document* d, const std::string& name) - : hdoc(h), doc(d), default_name(name) -{ - aShapeTool = XCAFDoc_DocumentTool::ShapeTool (hdoc->Main()); - hColors = XCAFDoc_DocumentTool::ColorTool(hdoc->Main()); -} - -ImportXCAFAssembly::~ImportXCAFAssembly() -{ -} - -void ImportXCAFAssembly::loadShapes() -{ - // collect sequence of labels to display - TDF_LabelSequence shapeLabels, colorLabels; - aShapeTool->GetFreeShapes (shapeLabels); - hColors->GetColors(colorLabels); - - // set presentations and show - for (Standard_Integer i=1; i <= shapeLabels.Length(); i++ ) { - // get the shapes and attributes - const TDF_Label& label = shapeLabels.Value(i); - loadShapes(label); - } - std::map::iterator it; - // go through solids - for (it = mySolids.begin(); it != mySolids.end(); ++it) { - createShape(it->second, true, true); - } - // go through shells - for (it = myShells.begin(); it != myShells.end(); ++it) { - createShape(it->second, true, true); - } - // go through compounds - for (it = myCompds.begin(); it != myCompds.end(); ++it) { - createShape(it->second, true, true); - } - // do the rest - if (!myShapes.empty()) { - BRep_Builder builder; - TopoDS_Compound comp; - builder.MakeCompound(comp); - for (it = myShapes.begin(); it != myShapes.end(); ++it) { - builder.Add(comp, it->second); - } - createShape(comp, true, false); - } -} - -void ImportXCAFAssembly::createShape(const TopoDS_Shape& shape, bool perface, bool setname) const -{ - Part::Feature* part; - part = static_cast(doc->addObject("Part::Feature", default_name.c_str())); - part->Shape.setValue(shape); - std::map::const_iterator jt; - jt = myColorMap.find(shape.HashCode(INT_MAX)); - - App::Color partColor(0.8f,0.8f,0.8f); -#if 0//TODO - Gui::ViewProvider* vp = Gui::Application::Instance->getViewProvider(part); - if (vp && vp->isDerivedFrom(PartGui::ViewProviderPart::getClassTypeId())) { - if (jt != myColorMap.end()) { - App::Color color; - color.r = jt->second.Red(); - color.g = jt->second.Green(); - color.b = jt->second.Blue(); - static_cast(vp)->ShapeColor.setValue(color); - } - - partColor = static_cast(vp)->ShapeColor.getValue(); - } -#endif - - // set label name if defined - if (setname && !myNameMap.empty()) { - std::map::const_iterator jt; - jt = myNameMap.find(shape.HashCode(INT_MAX)); - if (jt != myNameMap.end()) { - part->Label.setValue(jt->second); - } - } - - // check for colors per face - if (perface && !myColorMap.empty()) { - TopTools_IndexedMapOfShape faces; - TopExp_Explorer xp(shape,TopAbs_FACE); - while (xp.More()) { - faces.Add(xp.Current()); - xp.Next(); - } - - bool found_face_color = false; - std::vector faceColors; - faceColors.resize(faces.Extent(), partColor); - xp.Init(shape,TopAbs_FACE); - while (xp.More()) { - jt = myColorMap.find(xp.Current().HashCode(INT_MAX)); - if (jt != myColorMap.end()) { - int index = faces.FindIndex(xp.Current()); - App::Color color; - color.r = (float)jt->second.Red(); - color.g = (float)jt->second.Green(); - color.b = (float)jt->second.Blue(); - faceColors[index-1] = color; - found_face_color = true; - } - xp.Next(); - } - - if (found_face_color) { -#if 0//TODO - Gui::ViewProvider* vp = Gui::Application::Instance->getViewProvider(part); - if (vp && vp->isDerivedFrom(PartGui::ViewProviderPartExt::getClassTypeId())) { - static_cast(vp)->DiffuseColor.setValues(faceColors); - } -#endif - } - } -} - -void ImportXCAFAssembly::loadShapes(const TDF_Label& label) -{ - TopoDS_Shape aShape; - if (aShapeTool->GetShape(label,aShape)) { - //if (aShapeTool->IsReference(label)) { - // TDF_Label reflabel; - // if (aShapeTool->GetReferredShape(label, reflabel)) { - // loadShapes(reflabel); - // } - //} - if (aShapeTool->IsTopLevel(label)) { - int ctSolids = 0, ctShells = 0, ctComps = 0; - // add the shapes - TopExp_Explorer xp; - for (xp.Init(aShape, TopAbs_SOLID); xp.More(); xp.Next(), ctSolids++) - this->mySolids[xp.Current().HashCode(INT_MAX)] = (xp.Current()); - for (xp.Init(aShape, TopAbs_SHELL, TopAbs_SOLID); xp.More(); xp.Next(), ctShells++) - this->myShells[xp.Current().HashCode(INT_MAX)] = (xp.Current()); - // if no solids and no shells were found then go for compounds - if (ctSolids == 0 && ctShells == 0) { - for (xp.Init(aShape, TopAbs_COMPOUND); xp.More(); xp.Next(), ctComps++) - this->myCompds[xp.Current().HashCode(INT_MAX)] = (xp.Current()); - } - if (ctComps == 0) { - for (xp.Init(aShape, TopAbs_FACE, TopAbs_SHELL); xp.More(); xp.Next()) - this->myShapes[xp.Current().HashCode(INT_MAX)] = (xp.Current()); - for (xp.Init(aShape, TopAbs_WIRE, TopAbs_FACE); xp.More(); xp.Next()) - this->myShapes[xp.Current().HashCode(INT_MAX)] = (xp.Current()); - for (xp.Init(aShape, TopAbs_EDGE, TopAbs_WIRE); xp.More(); xp.Next()) - this->myShapes[xp.Current().HashCode(INT_MAX)] = (xp.Current()); - for (xp.Init(aShape, TopAbs_VERTEX, TopAbs_EDGE); xp.More(); xp.Next()) - this->myShapes[xp.Current().HashCode(INT_MAX)] = (xp.Current()); - } - } - - // getting color - Quantity_Color col; - if (hColors->GetColor(label, XCAFDoc_ColorGen, col) || - hColors->GetColor(label, XCAFDoc_ColorSurf, col) || - hColors->GetColor(label, XCAFDoc_ColorCurv, col)) { - // add defined color - myColorMap[aShape.HashCode(INT_MAX)] = col; - } - else { - // http://www.opencascade.org/org/forum/thread_17107/ - TopoDS_Iterator it; - for (it.Initialize(aShape);it.More(); it.Next()) { - if (hColors->GetColor(it.Value(), XCAFDoc_ColorGen, col) || - hColors->GetColor(it.Value(), XCAFDoc_ColorSurf, col) || - hColors->GetColor(it.Value(), XCAFDoc_ColorCurv, col)) { - // add defined color - myColorMap[it.Value().HashCode(INT_MAX)] = col; - } - } - } - - // getting names - Handle(TDataStd_Name) name; - if (label.FindAttribute(TDataStd_Name::GetID(),name)) { - TCollection_ExtendedString extstr = name->Get(); - char* str = new char[extstr.LengthOfCString()+1]; - extstr.ToUTF8CString(str); - std::string label(str); - if (!label.empty()) - myNameMap[aShape.HashCode(INT_MAX)] = label; - delete [] str; - } - -#if 0 - // http://www.opencascade.org/org/forum/thread_15174/ - if (aShapeTool->IsAssembly(label)) { - TDF_LabelSequence shapeLabels; - aShapeTool->GetComponents(label, shapeLabels); - Standard_Integer nbShapes = shapeLabels.Length(); - for (Standard_Integer i = 1; i <= nbShapes; i++) { - loadShapes(shapeLabels.Value(i)); - } - } -#endif - - if (label.HasChild()) { - TDF_ChildIterator it; - for (it.Initialize(label); it.More(); it.Next()) { - loadShapes(it.Value()); - } - } - } -} diff --git a/src/Mod/Import/App/ImportOCAFAssembly.h b/src/Mod/Import/App/ImportOCAFAssembly.h index 4abd33c33..c89d48670 100644 --- a/src/Mod/Import/App/ImportOCAFAssembly.h +++ b/src/Mod/Import/App/ImportOCAFAssembly.h @@ -52,9 +52,15 @@ namespace Import { class ImportExport ImportOCAFAssembly { public: - ImportOCAFAssembly(Handle_TDocStd_Document h, App::Document* d, const std::string& name); + ImportOCAFAssembly(Handle_TDocStd_Document h, App::Document* d, const std::string& name, App::DocumentObject *target); virtual ~ImportOCAFAssembly(); void loadShapes(); + void loadAssembly(); + +protected: + std::string getName(const TDF_Label& label); + App::DocumentObject *targetObj; + private: void loadShapes(const TDF_Label& label, const TopLoc_Location&, const std::string& partname, const std::string& assembly, bool isRef, int dep); @@ -72,46 +78,7 @@ private: static const int HashUpper = INT_MAX; }; -class ImportExport ExportOCAFAssembly -{ -public: - ExportOCAFAssembly(Handle_TDocStd_Document h); - void saveShape(Part::Feature* part, const std::vector&); -private: - Handle_TDocStd_Document pDoc; - Handle_XCAFDoc_ShapeTool aShapeTool; - Handle_XCAFDoc_ColorTool aColorTool; - TDF_Label rootLabel; -}; - - -class ImportXCAFAssembly -{ -public: - ImportXCAFAssembly(Handle_TDocStd_Document h, App::Document* d, const std::string& name); - virtual ~ImportXCAFAssembly(); - void loadShapes(); - -private: - void createShape(const TopoDS_Shape& shape, bool perface=false, bool setname=false) const; - void loadShapes(const TDF_Label& label); - virtual void applyColors(Part::Feature*, const std::vector&){} - -private: - Handle_TDocStd_Document hdoc; - App::Document* doc; - Handle_XCAFDoc_ShapeTool aShapeTool; - Handle_XCAFDoc_ColorTool hColors; - std::string default_name; - std::map mySolids; - std::map myShells; - std::map myCompds; - std::map myShapes; - std::map myColorMap; - std::map myNameMap; -}; - -} +} // namespace Import { #endif //IMPORT_ImportOCAFAssembly_H