Merge pull request #135 from blobfish/rebaseMaster

PartDesignNext rebased on master
This commit is contained in:
wwmayer 2016-04-13 10:57:57 +02:00
commit 081b86c212
648 changed files with 94745 additions and 7414 deletions

View File

@ -62,7 +62,7 @@ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGXX)
include(cMake/ConfigureChecks.cmake)
configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
add_definitions(-DHAVE_CONFIG_H)
set(CMAKE_CXX_FLAGS "-Wall -Wno-deprecated -Wno-write-strings ${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS "-Wall -Wno-deprecated -Wno-write-strings -std=c++11 ${CMAKE_CXX_FLAGS}")
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
# get linker errors as soon as possible and not at runtime e.g. for modules
if(UNIX)

3
FCMasterMerge.kdev4 Normal file
View File

@ -0,0 +1,3 @@
[Project]
Manager=KDevCMakeManager
Name=FCMasterMerge

Binary file not shown.

View File

@ -0,0 +1,403 @@
<?xml version="1.0" ?>
<PLMXML xmlns="http://www.plmxml.org/Schemas/PLMXMLSchema"
schemaVersion="4" date="2005-01-13" time="18:02:23" author="Vis Mockup 5.1.0">
<ProductDef id="id1">
<UserData id="id12" type="__TCC-VIS_MONIKER_INFO">
<UserValue value="C:\Program Files\UGS\JT2Go\Examples\2_Cylinder_Engine_Example\2_Cylinder_Engine.jt" title="Path"></UserValue>
<UserValue value="file" title="FA_Protocol"></UserValue>
<UserValue value="C:/Program Files/UGS/JT2Go/Examples/2_Cylinder_Engine_Example/2_Cylinder_Engine.jt" title="object_id"></UserValue>
<UserValue value="C:\Program Files\UGS\JT2Go\Examples\2_Cylinder_Engine_Example\2_Cylinder_Engine.jt" title="LocalCopy"></UserValue>
<UserValue value="2.0" title="Version"></UserValue>
<UserValue value="local" title="FA_Service"></UserValue>
<UserValue value="No" title="MkIsFolder"></UserValue>
<UserValue value="2_Cylinder_Engine.jt" title="Title"></UserValue>
<UserValue value="DirectModel.Document" title="FileTypeID"></UserValue></UserData>
<InstanceGraph id="id2" rootRefs="inst1931328">
<Instance id="inst1931328" name="2_Cylinder_Engine" partRef="#id14">
<ApplicationRef application="TCC-VIS" label="2_Cylinder_Engine.asm;0;0:"></ApplicationRef>
<UserData id="id18" type="Hidden_Metadata">
<UserValue value="156001" title="TOOLKIT_CUSTOMER"></UserValue></UserData>
<UserData id="id29">
<UserValue value="2_Cylinder_Engine" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Jan-30-1998 16:58:30.00" title="Version Create Date + Time"></UserValue>
<UserValue value="2 Cylinder Engine" title="I-DEAS Name"></UserValue>
<UserValue value="123-001" title="I-DEAS Part Number"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="Jan-10-2005 13:23:55.05" title="Version Mod. Date + Time"></UserValue></UserData>
<Transform id="id15">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</Transform></Instance>
<Instance id="inst1950208" name="rod:123-699;0,Parts" partRef="#id44">
<ApplicationRef application="TCC-VIS" label="rod:123-699;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id45">0.9861037135124207 -0.1661308258771896 -1.166810754732375e-015 0 0.1661308258771896 0.9861037135124207 -1.062013085640994e-015 0 1.327029577804367e-015 8.534118465009541e-016 1 0 0.07101806253194809 0.02219301462173462 0.02199999988079071 1</Transform></Instance>
<Instance id="inst1950304" name="Piston Sub:;0,Parts" partRef="#id50">
<ApplicationRef application="TCC-VIS" label="Piston Sub:;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id51">-1 1.10096191110321e-032 -7.293991291219912e-017 0 1.10096191110321e-032 -1 -3.018818806569426e-016 0 -7.293991291219912e-017 -3.018818806569426e-016 1 0 -0.1368601024150848 0.06445372104644775 0.003820367390289903 1</Transform></Instance>
<Instance id="inst1950160" name="Piston:123-844;0,Parts" partRef="#id58">
<ApplicationRef application="TCC-VIS" label="Piston:123-844;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id59">-1 -1.334063881586189e-008 7.982825511732017e-010 0 1.10096191110321e-032 -1 -3.018818806569426e-016 0 -7.293991291219912e-017 -3.018818806569426e-016 1 0 -0.294677197933197 0.07397986948490143 0.01617963239550591 1</Transform></Instance>
<Instance id="inst1950400" name="Piston pin:123-845;0,Parts" partRef="#id64">
<ApplicationRef application="TCC-VIS" label="Piston pin:123-845;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id65">0.9995650053024292 0.02949320152401924 -7.979323313200837e-010 0 -0.0294931884855032 0.9995650053024292 2.354164085893729e-011 0 -3.085015966644567e-015 2.168479519145078e-015 1 0 -0.0453154630959034 -0.02461725845932961 -0.02632036805152893 1</Transform></Instance>
<Instance id="inst1950496" name="Piston Sub:;0,Parts" partRef="#id70">
<ApplicationRef application="TCC-VIS" label="Piston Sub:;0,Parts.asm;0;1:"></ApplicationRef>
<Transform id="id71">1 0 0 0 0 1 0 0 0 0 1 0 0.1368601024150848 -0.06445372104644775 -0.03617963194847107 1</Transform></Instance>
<Instance id="inst1950448" name="Piston:123-844;0,Parts" partRef="#id58">
<ApplicationRef application="TCC-VIS" label="Piston:123-844;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id83">-1 -1.334063881586189e-008 7.041613514502387e-009 0 -1.003604666278664e-019 -1 1.355268465125744e-016 0 -1.736007260287489e-016 1.355268465125744e-016 1 0 -0.294677197933197 0.07397986948490143 0.0161796361207962 1</Transform></Instance>
<Instance id="inst1950592" name="Piston pin:123-845;0,Parts" partRef="#id64">
<ApplicationRef application="TCC-VIS" label="Piston pin:123-845;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id86">0.9995650053024292 0.02949320152401924 -7.038550631222051e-009 0 -0.0294931884855032 0.9995650053024292 2.076799010541919e-010 0 1.57434811062825e-016 -2.681045890006053e-016 1 0 -0.0453154630959034 -0.02461725845932961 -0.02632036432623863 1</Transform></Instance>
<Instance id="inst1950640" name="CamShaft Sub:123-990;0,Parts" partRef="#id89">
<ApplicationRef application="TCC-VIS" label="CamShaft Sub:123-990;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id90">0.7071067690849304 -0.7071067690849304 4.055928498874345e-013 0 0.7071067690849304 0.7071067690849304 6.101357784178425e-016 0 -2.872288724139332e-013 2.863660101149607e-013 1 0 0.04717867448925972 -0.0528213270008564 -0.08894477039575577 1</Transform></Instance>
<Instance id="inst1950688" name="Cam_shaft:123-457;0,Parts" partRef="#id104">
<ApplicationRef application="TCC-VIS" label="Cam_shaft:123-457;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id105">1.214013511940948e-008 -7.440697502580917e-010 1 0 -0.9059386253356934 0.4234090149402618 3.675416633368289e-013 0 -0.4234090149402618 -0.9059386253356934 1.728632428171784e-013 0 -0.03029589354991913 -0.05256131291389465 0.02505522221326828 1</Transform></Instance>
<Instance id="inst1950736" name="cam_gear:123-456;0,Parts" partRef="#id110">
<ApplicationRef application="TCC-VIS" label="cam_gear:123-456;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id111">-0.4234090149402618 -0.9059386253356934 1.726649286873036e-013 0 -0.9059386253356934 0.4234090149402618 3.675724817835818e-013 0 -1.214013511940948e-008 7.440699723026967e-010 -1 0 -0.09059386700391769 -0.02437981590628624 -0.04005522653460503 1</Transform></Instance>
<Instance id="inst1950784" name="Crank_Sub:123-555;0,Parts" partRef="#id116">
<ApplicationRef application="TCC-VIS" label="Crank_Sub:123-555;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id117">-0.5 -0.8660253882408142 -2.979083167524747e-016 0 0.8660253882408142 -0.5 -7.816530680941419e-016 0 5.279772353637604e-016 -6.488226847947026e-016 1 0 0.01809818297624588 -0.06969784200191498 -0.1055598109960556 1</Transform></Instance>
<Instance id="inst1950832" name="crank:123-782;0,Parts" partRef="#id131">
<ApplicationRef application="TCC-VIS" label="crank:123-782;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id132">-0.9390942454338074 0.3436597287654877 1.284025318025572e-016 0 -0.3436597883701325 -0.9390941858291626 -6.660528172495127e-016 0 2.47777798279003e-008 -2.063888393522007e-009 1 0 -0.05131101608276367 -0.05052240565419197 0.1075598075985909 1</Transform></Instance>
<Instance id="inst1950880" name="crank_gear:123-783;0,Parts" partRef="#id137">
<ApplicationRef application="TCC-VIS" label="crank_gear:123-783;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id138">-0.9390942454338074 0.3436597287654877 3.809448359261655e-016 0 -0.3436597883701325 -0.9390941858291626 -2.583991531420675e-015 0 2.47777798279003e-008 -2.063890391923451e-009 1 0 -0.05131101980805397 -0.05052240565419197 -0.01844018884003162 1</Transform></Instance>
<Instance id="inst1950928" name="Body Sub:123-002;0,Parts" partRef="#id143">
<ApplicationRef application="TCC-VIS" label="Body Sub:123-002;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id144">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</Transform></Instance>
<Instance id="inst1951264" name="Head2 Sub:;0,Parts" partRef="#id158">
<ApplicationRef application="TCC-VIS" label="Head2 Sub:;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id159">1.665474158585312e-008 1.004267005555448e-006 -1 0 -1 -1.666503557373744e-008 -1.665475757306467e-008 0 -1.6665051560949e-008 1 1.004267005555448e-006 0 -0.04826182126998901 -0.05911042168736458 0.03459598124027252 1</Transform></Instance>
<Instance id="inst1951408" name="Spark Plug:;0,Parts" partRef="#id172">
<ApplicationRef application="TCC-VIS" label="Spark Plug:;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id173">1 9.977915303889529e-014 -9.877358024823479e-007 0 -9.946720638254192e-007 -3.500436562831055e-008 -0.9999999403953552 0 -2.75101122437782e-014 1 -2.288952989822068e-013 0 0.02452629990875721 0.2137382179498673 0.2830735743045807 1</Transform></Instance>
<Instance id="inst1951616" name="Rocker_Sub:;0,Parts" partRef="#id178">
<ApplicationRef application="TCC-VIS" label="Rocker_Sub:;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id179">0.9999974370002747 -7.939097296238984e-011 -0.002271066652610898 0 9.118318147522016e-016 1 3.807415215490448e-015 0 0.002271073637530208 3.500404588407946e-008 0.9999973773956299 0 -0.0001340909366263077 -0.01299998629838228 0.0001236627285834402 1</Transform></Instance>
<Instance id="inst1951568" name="Rocker Arm Shaft:123-601;0,Parts" partRef="#id191">
<ApplicationRef application="TCC-VIS" label="Rocker Arm Shaft:123-601;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id192">-0.9999850392341614 -0.004973083734512329 -0.002270016819238663 0 0.004973071627318859 -0.9999875426292419 1.127185623772675e-005 0 -0.002270089229568839 -4.575558421038295e-008 0.9999972581863403 0 0.0487947128713131 0.7686771750450134 -0.02040251158177853 1</Transform></Instance>
<Instance id="inst1951712" name="Rocker_Mount_Sub:;0,Parts" partRef="#id197">
<ApplicationRef application="TCC-VIS" label="Rocker_Mount_Sub:;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id198">1 -7.424300063618716e-011 1.35305974757749e-010 0 1.276140897124513e-015 0.9999998807907105 4.341043060584901e-016 0 -4.433523059788058e-008 -2.848764957263938e-008 0.9999998211860657 0 -1.748614808505522e-009 -9.381160293031599e-010 -7.228971310446752e-010 1</Transform></Instance>
<Instance id="inst1951824" name="Rocker Mount:123-604;0,Parts" partRef="#id205">
<ApplicationRef application="TCC-VIS" label="Rocker Mount:123-604;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id206">0.9999973773956299 1.651584646822357e-008 0.002270044526085258 0 -1.669391558323241e-008 0.9999998807907105 1.723048725921217e-008 0 -0.002270088996738195 -4.57557440824985e-008 0.9999972581863403 0 0.04950515553355217 0.3443533480167389 0.07959935814142227 1</Transform></Instance>
<Instance id="inst1951872" name="Rocker Mount Cap:123-608;0,Parts" partRef="#id211">
<ApplicationRef application="TCC-VIS" label="Rocker Mount Cap:123-608;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id212">0.9999973773956299 1.651585179729409e-008 0.002270044526085258 0 1.669392091230293e-008 -0.9999998807907105 -1.723048725921217e-008 0 0.002270088996738195 4.57557440824985e-008 -0.9999972581863403 0 0.04947110638022423 0.2571229636669159 0.09459931403398514 1</Transform></Instance>
<Instance id="inst1951920" name="Rocker Bolt:123-603;0,Parts" partRef="#id217">
<ApplicationRef application="TCC-VIS" label="Rocker Bolt:123-603;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id218">0.9984452724456787 1.914222380605679e-008 -0.05574143305420876 0 -0.05574139580130577 4.472066095217997e-008 -0.9984451532363892 0 -1.669391203051873e-008 1 1.723049436463953e-008 0 0.01820174790918827 0.326738178730011 0.2976770401000977 1</Transform></Instance>
<Instance id="inst1952032" name="Rocker Bolt:123-603;0,Parts" partRef="#id217">
<ApplicationRef application="TCC-VIS" label="Rocker Bolt:123-603;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id223">0.9984543323516846 1.913488922866691e-008 -0.05557771772146225 0 -0.05557768046855927 4.472379444564467e-008 -0.998454213142395 0 -1.669391025416189e-008 0.9999998807907105 1.723049436463953e-008 0 0.06816709786653519 0.326738178730011 0.2977887094020844 1</Transform></Instance>
<Instance id="inst1952144" name="Rocker_Mount_Sub:;0,Parts" partRef="#id226">
<ApplicationRef application="TCC-VIS" label="Rocker_Mount_Sub:;0,Parts.asm;0;1:"></ApplicationRef>
<Transform id="id227">1 -7.424300063618716e-011 1.35305974757749e-010 0 1.276140897124513e-015 0.9999998807907105 4.341043060584901e-016 0 -4.433523059788058e-008 -2.848764957263938e-008 0.9999998211860657 0 -4.064914627122107e-009 -1.459414988858043e-008 -0.09999953210353851 1</Transform></Instance>
<Instance id="inst1952256" name="Rocker Mount:123-604;0,Parts" partRef="#id205">
<ApplicationRef application="TCC-VIS" label="Rocker Mount:123-604;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id239">0.9999974370002747 1.662746029751361e-008 0.002270044526085258 0 -1.669391735958925e-008 1.00000011920929 1.723049081192585e-008 0 -0.002270061522722244 -2.438619972622291e-008 0.9999974966049194 0 0.04973216727375984 0.3443534076213837 0.07959914952516556 1</Transform></Instance>
<Instance id="inst1952304" name="Rocker Mount Cap:123-608;0,Parts" partRef="#id211">
<ApplicationRef application="TCC-VIS" label="Rocker Mount Cap:123-608;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id242">0.9999974370002747 1.662746562658413e-008 0.002270044526085258 0 1.669392268865977e-008 -1.00000011920929 -1.723049081192585e-008 0 0.002270061522722244 2.438619972622291e-008 -0.9999974966049194 0 0.0496981143951416 0.2571230232715607 0.09459911286830902 1</Transform></Instance>
<Instance id="inst1952352" name="Rocker Bolt:123-603;0,Parts" partRef="#id217">
<ApplicationRef application="TCC-VIS" label="Rocker Bolt:123-603;0,Parts.part;0;2:"></ApplicationRef>
<Transform id="id245">0.9986630082130432 1.791910797521723e-008 -0.05169311910867691 0 -0.05169309675693512 2.345346850063379e-008 -0.998663067817688 0 -1.669391025416189e-008 1.00000011920929 1.72305067991374e-008 0 0.01757495850324631 0.3267382085323334 0.2976291477680206 1</Transform></Instance>
<Instance id="inst1952464" name="Rocker Bolt:123-603;0,Parts" partRef="#id217">
<ApplicationRef application="TCC-VIS" label="Rocker Bolt:123-603;0,Parts.part;0;3:"></ApplicationRef>
<Transform id="id248">0.9986716508865356 1.791518755567267e-008 -0.05152621492743492 0 -0.05152619630098343 2.345645455648082e-008 -0.9986717104911804 0 -1.669391025416189e-008 1.00000011920929 1.723049791735321e-008 0 0.06753963232040405 0.3267382085323334 0.2977406084537506 1</Transform></Instance>
<Instance id="inst1952576" name="Rocker Arm Shaft:123-601;0,Parts" partRef="#id191">
<ApplicationRef application="TCC-VIS" label="Rocker Arm Shaft:123-601;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id251">-0.9999873042106628 -0.004487393889576197 -0.00227002170868218 0 0.004487383179366589 -0.9999898076057434 1.016931855701841e-005 0 -0.002270088996738195 -4.575493051106605e-008 0.9999972581863403 0 -0.02998023852705956 0.7686992287635803 -0.02058133110404015 1</Transform></Instance>
<Instance id="inst1952624" name="Valve Spring:123-702;0,Parts" partRef="#id254">
<ApplicationRef application="TCC-VIS" label="Valve Spring:123-702;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id255">-0.821344792842865 -0.3829995691776276 0.4227339625358582 0 -0.3831273019313812 -0.1786547750234604 -0.9062537550926209 0 0.4226182997226715 -0.9063078165054321 -4.468796817036491e-007 0 -0.2707940638065338 0.1454340070486069 0.1220441088080406 1</Transform></Instance>
<Instance id="inst1952720" name="Valve_Sub:;0,Parts" partRef="#id260">
<ApplicationRef application="TCC-VIS" label="Valve_Sub:;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id261">0.4546822905540466 0.654166042804718 0.6044259667396545 0 -0.8696395754814148 0.4726209938526154 0.1426760256290436 0 -0.1923305839300156 -0.5905050039291382 0.7837809920310974 0 0.09187051653862 0.08063256740570068 0.1662608832120895 1</Transform></Instance>
<Instance id="inst1952672" name="Valve:123-700;0,Parts" partRef="#id268">
<ApplicationRef application="TCC-VIS" label="Valve:123-700;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id269">0.7850326299667358 0.06081443279981613 -0.6164620518684387 0 -0.1356190741062164 0.9878997206687927 -0.07524674385786057 0 0.6044265031814575 0.1426751911640167 0.7837809920310974 0 -0.001248535001650453 -0.2500619888305664 -0.09022713452577591 1</Transform></Instance>
<Instance id="inst1952816" name="Valve Spring Cap:123-704;0,Parts" partRef="#id274">
<ApplicationRef application="TCC-VIS" label="Valve Spring Cap:123-704;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id275">0.7850326299667358 0.06081448495388031 -0.6164620518684387 0 -0.3924773633480072 -0.7211050391197205 -0.5709372162818909 0 -0.4792551398277283 0.6901518106460571 -0.5422225594520569 0 0.0455969013273716 0.2435131669044495 0.06938881427049637 1</Transform></Instance>
<Instance id="inst1952864" name="Spring:;0,Parts" partRef="#id280">
<ApplicationRef application="TCC-VIS" label="Spring:;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id281">1 -3.002940829333056e-008 3.437022044749938e-008 0 -4.150651022882812e-008 1.000000238418579 4.017514854126603e-008 0 3.73510147255729e-008 2.773385787691041e-008 1 0 -1.489124112907803e-008 -4.276215381793236e-009 1.08718030134014e-008 1</Transform></Instance>
<Instance id="inst1952912" name="Spring Link:;0,Parts" partRef="#id288">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id289">-0.6893028616905212 -0.1355008780956268 0.7116888165473938 0 -0.6755837202072144 0.4749762713909149 -0.5639010667800903 0 -0.2616261541843414 -0.8695042133331299 -0.4189447462558746 0 0.1410751193761826 0.09142301231622696 -0.3314632773399353 1</Transform></Instance>
<Instance id="inst1952960" name="Spring Link:;0,Parts" partRef="#id288">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id294">0.8620703816413879 -0.01532000117003918 -0.506557047367096 0 -0.4340352714061737 0.4936883747577667 -0.7535817623138428 0 0.261626124382019 0.8695042133331299 0.4189446866512299 0 -0.05227819457650185 0.07644443958997726 -0.1796288043260574 1</Transform></Instance>
<Instance id="inst1953008" name="Spring Link:;0,Parts" partRef="#id288">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;2:"></ApplicationRef>
<Transform id="id297">-0.6893028616905212 -0.1355008780956268 0.7116888165473938 0 -0.6755837202072144 0.4749762713909149 -0.5639010667800903 0 -0.2616261541843414 -0.8695042133331299 -0.4189447462558746 0 0.1347948610782623 0.09093648940324783 -0.3265315294265747 1</Transform></Instance>
<Instance id="inst1953056" name="Spring Link:;0,Parts" partRef="#id288">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;3:"></ApplicationRef>
<Transform id="id300">0.8620703816413879 -0.01532000117003918 -0.506557047367096 0 -0.4340352714061737 0.4936883747577667 -0.7535817623138428 0 0.261626124382019 0.8695042133331299 0.4189446866512299 0 -0.05855846777558327 0.07595790922641754 -0.1746970862150192 1</Transform></Instance>
<Instance id="inst1953104" name="Spring Link:;0,Parts" partRef="#id288">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;4:"></ApplicationRef>
<Transform id="id303">-0.6893028616905212 -0.1355008780956268 0.7116888165473938 0 -0.6755837202072144 0.4749762713909149 -0.5639010667800903 0 -0.2616261541843414 -0.8695042133331299 -0.4189447462558746 0 0.1285146176815033 0.0904499888420105 -0.3215998709201813 1</Transform></Instance>
<Instance id="inst1953152" name="Spring Link:;0,Parts" partRef="#id288">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;5:"></ApplicationRef>
<Transform id="id306">0.8620703816413879 -0.01532000117003918 -0.506557047367096 0 -0.4340352714061737 0.4936883747577667 -0.7535817623138428 0 0.261626124382019 0.8695042133331299 0.4189446866512299 0 -0.0648387148976326 0.07547140121459961 -0.1697653979063034 1</Transform></Instance>
<Instance id="inst1953200" name="Spring Link:;0,Parts" partRef="#id288">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;6:"></ApplicationRef>
<Transform id="id309">-0.6893028616905212 -0.1355008780956268 0.7116888165473938 0 -0.6755837202072144 0.4749762713909149 -0.5639010667800903 0 -0.2616261541843414 -0.8695042133331299 -0.4189447462558746 0 0.1222343519330025 0.08996346592903137 -0.3166681826114655 1</Transform></Instance>
<Instance id="inst1953248" name="Spring Link:;0,Parts" partRef="#id288">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;7:"></ApplicationRef>
<Transform id="id312">0.8620703816413879 -0.01532000117003918 -0.506557047367096 0 -0.4340352714061737 0.4936883747577667 -0.7535817623138428 0 0.261626124382019 0.8695042133331299 0.4189446866512299 0 -0.07111898809671402 0.07498487830162048 -0.1648336797952652 1</Transform></Instance>
<Instance id="inst1953296" name="Spring Link:;0,Parts" partRef="#id288">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;8:"></ApplicationRef>
<Transform id="id315">-0.6893028616905212 -0.1355008780956268 0.7116888165473938 0 -0.6755837202072144 0.4749762713909149 -0.5639010667800903 0 -0.2616261541843414 -0.8695042133331299 -0.4189447462558746 0 0.1159540787339211 0.08947695046663284 -0.3117364346981049 1</Transform></Instance>
<Instance id="inst1953344" name="Spring Link:;0,Parts" partRef="#id288">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;9:"></ApplicationRef>
<Transform id="id318">0.8620703816413879 -0.01532000117003918 -0.506557047367096 0 -0.4340352714061737 0.4936883747577667 -0.7535817623138428 0 0.261626124382019 0.8695042133331299 0.4189446866512299 0 -0.07739924639463425 0.07449836283922195 -0.1599020063877106 1</Transform></Instance>
<Instance id="inst1953440" name="Valve_Sub:;0,Parts" partRef="#id321">
<ApplicationRef application="TCC-VIS" label="Valve_Sub:;0,Parts.asm;0;1:"></ApplicationRef>
<Transform id="id322">-0.4546823501586914 0.6541661024093628 -0.6044260263442993 0 0.8696396350860596 0.4726210236549377 -0.1426760405302048 0 0.192330613732338 -0.5905051231384277 -0.7837811708450317 0 0.01489819493144751 0.08582951128482819 -0.04803464561700821 1</Transform></Instance>
<Instance id="inst1953392" name="Spring:;0,Parts" partRef="#id335">
<ApplicationRef application="TCC-VIS" label="Spring:;0,Parts.asm;0;1:"></ApplicationRef>
<Transform id="id336">1 2.298901691233368e-008 -2.432995493961698e-008 0 -3.89851670945518e-008 0.9999998807907105 -1.280528216796029e-008 0 -3.000558379540053e-008 -2.485903749516183e-008 0.9999998807907105 0 -1.494453005790319e-009 -7.655864275868396e-010 -5.496130661697407e-009 1</Transform></Instance>
<Instance id="inst1953576" name="Spring Link:;0,Parts" partRef="#id288">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;10:"></ApplicationRef>
<Transform id="id348">-0.7145452499389648 -0.1154179275035858 0.6900026798248291 0 -0.652251660823822 0.4665488302707672 -0.5974109768867493 0 -0.252968043088913 -0.8769325613975525 -0.4086517691612244 0 0.1413719058036804 0.08810769766569138 -0.3271084725856781 1</Transform></Instance>
<Instance id="inst1953624" name="Spring Link:;0,Parts" partRef="#id288">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;11:"></ApplicationRef>
<Transform id="id351">0.8450331687927246 0.005398655775934458 -0.5346865653991699 0 -0.4710902869701386 0.4805829524993897 -0.7396714687347412 0 0.252968043088913 0.8769325613975525 0.4086517691612244 0 -0.05524870008230209 0.07287602126598358 -0.1727083474397659 1</Transform></Instance>
<Instance id="inst1953672" name="Spring Link:;0,Parts" partRef="#id288">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;12:"></ApplicationRef>
<Transform id="id354">-0.7145452499389648 -0.1154179275035858 0.6900026798248291 0 -0.652251660823822 0.4665488302707672 -0.5974109768867493 0 -0.252968043088913 -0.8769325613975525 -0.4086517691612244 0 0.1366616934537888 0.08774281293153763 -0.3234097063541412 1</Transform></Instance>
<Instance id="inst1953720" name="Spring Link:;0,Parts" partRef="#id288">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;13:"></ApplicationRef>
<Transform id="id357">0.8450331687927246 0.005398655775934458 -0.5346865653991699 0 -0.4710902869701386 0.4805829524993897 -0.7396714687347412 0 0.252968043088913 0.8769325613975525 0.4086517691612244 0 -0.05995889753103256 0.07251112163066864 -0.1690095812082291 1</Transform></Instance>
<Instance id="inst1953768" name="Spring Link:;0,Parts" partRef="#id288">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;14:"></ApplicationRef>
<Transform id="id360">-0.7145452499389648 -0.1154179275035858 0.6900026798248291 0 -0.652251660823822 0.4665488302707672 -0.5974109768867493 0 -0.252968043088913 -0.8769325613975525 -0.4086517691612244 0 0.1319515109062195 0.08737793564796448 -0.3197109401226044 1</Transform></Instance>
<Instance id="inst1953816" name="Spring Link:;0,Parts" partRef="#id288">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;15:"></ApplicationRef>
<Transform id="id363">0.8450331687927246 0.005398655775934458 -0.5346865653991699 0 -0.4710902869701386 0.4805829524993897 -0.7396714687347412 0 0.252968043088913 0.8769325613975525 0.4086517691612244 0 -0.06466909497976303 0.07214623689651489 -0.165310800075531 1</Transform></Instance>
<Instance id="inst1953920" name="Spring Link:;0,Parts" partRef="#id288">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;16:"></ApplicationRef>
<Transform id="id366">-0.7145452499389648 -0.1154179275035858 0.6900026798248291 0 -0.652251660823822 0.4665488302707672 -0.5974109768867493 0 -0.252968043088913 -0.8769325613975525 -0.4086517691612244 0 0.127241313457489 0.08701304346323013 -0.3160121440887451 1</Transform></Instance>
<Instance id="inst1954024" name="Spring Link:;0,Parts" partRef="#id288">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;17:"></ApplicationRef>
<Transform id="id369">0.8450331687927246 0.005398655775934458 -0.5346865653991699 0 -0.4710902869701386 0.4805829524993897 -0.7396714687347412 0 0.252968043088913 0.8769325613975525 0.4086517691612244 0 -0.0693792924284935 0.07178134471178055 -0.1616120338439941 1</Transform></Instance>
<Instance id="inst1954128" name="Spring Link:;0,Parts" partRef="#id288">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;18:"></ApplicationRef>
<Transform id="id372">-0.7145452499389648 -0.1154179275035858 0.6900026798248291 0 -0.652251660823822 0.4665488302707672 -0.5974109768867493 0 -0.252968043088913 -0.8769325613975525 -0.4086517691612244 0 0.1225311160087585 0.08664815127849579 -0.3123133778572083 1</Transform></Instance>
<Instance id="inst1954232" name="Spring Link:;0,Parts" partRef="#id288">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;19:"></ApplicationRef>
<Transform id="id375">0.8450331687927246 0.005398655775934458 -0.5346865653991699 0 -0.4710902869701386 0.4805829524993897 -0.7396714687347412 0 0.252968043088913 0.8769325613975525 0.4086517691612244 0 -0.07408948242664337 0.0714164674282074 -0.1579132527112961 1</Transform></Instance>
<Instance id="inst1954336" name="Valve:123-700;0,Parts" partRef="#id268">
<ApplicationRef application="TCC-VIS" label="Valve:123-700;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id378">0.7850325107574463 0.06081444025039673 -0.6164620518684387 0 -0.135619044303894 0.9878994226455689 -0.07524680346250534 0 0.6044264435768127 0.1426751613616943 0.7837807536125183 0 -0.005746716633439064 -0.250409871339798 -0.08668788522481918 1</Transform></Instance>
<Instance id="inst1954440" name="Valve Spring Cap:123-704;0,Parts" partRef="#id274">
<ApplicationRef application="TCC-VIS" label="Valve Spring Cap:123-704;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id381">0.7850325703620911 0.06081447005271912 -0.6164620518684387 0 -0.3681581914424896 -0.7545340657234192 -0.543265700340271 0 -0.498180091381073 0.6534368991851807 -0.5699445009231567 0 0.03418708592653275 0.2526659965515137 0.06506367027759552 1</Transform></Instance>
<Instance id="inst1954488" name="Rocker Arm:123-600;0,Parts" partRef="#id384">
<ApplicationRef application="TCC-VIS" label="Rocker Arm:123-600;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id385">0.9026297330856323 0.4304179251194 -9.149687798526429e-007 0 -0.4304179251194 0.9026297330856323 4.554329109396349e-007 0 1.028840756589489e-006 1.773579327846164e-008 0.9999999403953552 0 0.2777610719203949 0.5800805687904358 -0.005389846861362457 1</Transform></Instance>
<Instance id="inst1954600" name="Rocker Arm_copy:123-602;0,Parts" partRef="#id390">
<ApplicationRef application="TCC-VIS" label="Rocker Arm_copy:123-602;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id391">0.9026297926902771 -0.4304177463054657 -9.298340728491894e-007 0 0.4304177463054657 0.9026297926902771 -4.242589284331189e-007 0 1.028840756589489e-006 1.773579505481848e-008 0.9999999403953552 0 0.3539793193340302 0.3309040069580078 -0.005389927886426449 1</Transform></Instance>
<Instance id="inst1954872" name="Valve Spring:123-702;0,Parts" partRef="#id254">
<ApplicationRef application="TCC-VIS" label="Valve Spring:123-702;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id396">-0.8213930130004883 0.3830220103263855 0.4226199984550476 0 -0.3830239772796631 0.1786065548658371 -0.9063069224357605 0 -0.4226182103157044 -0.9063078165054321 4.008188341231289e-007 0 -0.141640841960907 0.3886727094650269 0.1220077648758888 1</Transform></Instance>
<Instance id="inst1955728" name="rod:123-699;0,Parts" partRef="#id44">
<ApplicationRef application="TCC-VIS" label="rod:123-699;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id399">-0.9861037135124207 0.1661308258771896 1.702963710921711e-016 0 -0.1661308258771896 -0.9861037135124207 -3.509013978502231e-016 0 1.096343463342109e-016 -3.743166442952229e-016 1 0 -0.07101806253194809 -0.02219301089644432 -0.01999999769032002 1</Transform></Instance>
<Part id="id14" name="2_Cylinder_Engine" instanceRefs="inst1950208 inst1950304 inst1950496 inst1950640 inst1950784 inst1950928 inst1955728" type="assembly">
<UserData id="id31" type="Hidden_Metadata">
<UserValue value="156001" title="TOOLKIT_CUSTOMER"></UserValue></UserData>
<UserData id="id42">
<UserValue value="2_Cylinder_Engine" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Jan-30-1998 16:58:30.00" title="Version Create Date + Time"></UserValue>
<UserValue value="2 Cylinder Engine" title="I-DEAS Name"></UserValue>
<UserValue value="123-001" title="I-DEAS Part Number"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="Jan-10-2005 13:23:55.05" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id44" name="rod:123-699;0,Parts" type="solid">
<Bound id="id47" values="0.02005359902977943 -0.006323420908302069 0 0.09100000560283661 0.03700000047683716 0.009999999776482582"></Bound>
<Representation id="id48" format="JT" location="./2_Cylinder_Engine/rod_123_699_0_Parts.jt"></Representation></Part>
<Part id="id50" name="Piston Sub:;0,Parts" instanceRefs="inst1950160 inst1950400" type="assembly">
<UserData id="id56">
<UserValue value="Piston Sub" title="I-DEAS Name"></UserValue>
<UserValue value="Piston Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue></UserData></Part>
<Part id="id58" name="Piston:123-844;0,Parts" type="solid">
<Bound id="id61" values="0.0101108755916357 0.009526152163743973 0 0.05324159190058708 0.04650000110268593 0.04649999737739563"></Bound>
<Representation id="id62" format="JT" location="./2_Cylinder_Engine/Piston_123_844_0_Parts.jt"></Representation></Part>
<Part id="id64" name="Piston pin:123-845;0,Parts" type="solid">
<Bound id="id67" values="-0.2534925639629364 0.09658930450677872 0.04250000044703484 0.01099999435245991 0.01099186204373837 0.04250000044703484"></Bound>
<Representation id="id68" format="JT" location="./2_Cylinder_Engine/Piston_pin_123_845_0_Parts.jt"></Representation></Part>
<Part id="id70" name="Piston Sub:;0,Parts" instanceRefs="inst1950448 inst1950592" type="assembly">
<UserData id="id81">
<UserValue value="Piston Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="Jan-30-1998 16:58:24.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Piston Sub" title="I-DEAS Name"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="May-03-1999 15:12:04.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id89" name="CamShaft Sub:123-990;0,Parts" instanceRefs="inst1950688 inst1950736" type="assembly">
<UserData id="id102">
<UserValue value="CamShaft Sub:123-990;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="Jan-30-1998 16:58:25.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="CamShaft Sub" title="I-DEAS Name"></UserValue>
<UserValue value="123-990" title="I-DEAS Part Number"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="Aug-14-2001 14:11:35.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id104" name="Cam_shaft:123-457;0,Parts" type="solid">
<Bound id="id107" values="0.05063954740762711 -0.03493684902787209 -4.356868157628924e-005 0.1267500072717667 0.02063110843300819 0.01902950927615166"></Bound>
<Representation id="id108" format="JT" location="./2_Cylinder_Engine/Cam_shaft_123_457_0_Parts.jt"></Representation></Part>
<Part id="id110" name="cam_gear:123-456;0,Parts" type="solid">
<Bound id="id113" values="0 -0.1000000014901161 -0.002500000409781933 0.06898061186075211 0.06888007372617722 0.01250000018626452"></Bound>
<Representation id="id114" format="JT" location="./2_Cylinder_Engine/cam_gear_123_456_0_Parts.jt"></Representation></Part>
<Part id="id116" name="Crank_Sub:123-555;0,Parts" instanceRefs="inst1950832 inst1950880" type="assembly">
<UserData id="id129">
<UserValue value="Crank_Sub:123-555;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Aug-14-2001 14:13:01.00" title="Version Create Date + Time"></UserValue>
<UserValue value="Crank_Sub" title="I-DEAS Name"></UserValue>
<UserValue value="123-555" title="I-DEAS Part Number"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="Aug-14-2001 14:13:01.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id131" name="crank:123-782;0,Parts" type="solid">
<Bound id="id134" values="4.847693617193727e-006 0 -0.01325000263750553 0.06299515068531036 0.03500000014901161 0.1267500072717667"></Bound>
<Representation id="id135" format="JT" location="./2_Cylinder_Engine/crank_123_782_0_Parts.jt"></Representation></Part>
<Part id="id137" name="crank_gear:123-783;0,Parts" type="solid">
<Bound id="id140" values="0 -0.0001077877532225102 -0.002500000409781933 0.03597993031144142 0.03586557507514954 0.01250000018626452"></Bound>
<Representation id="id141" format="JT" location="./2_Cylinder_Engine/crank_gear_123_783_0_Parts.jt"></Representation></Part>
<Part id="id143" name="Body Sub:123-002;0,Parts" instanceRefs="inst1951264" type="assembly">
<UserData id="id156">
<UserValue value="Body Sub:123-002;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="Jan-30-1998 16:58:29.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Body Sub" title="I-DEAS Name"></UserValue>
<UserValue value="123-002" title="I-DEAS Part Number"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="Aug-14-2001 14:10:00.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id158" name="Head2 Sub:;0,Parts" instanceRefs="inst1951408 inst1951616 inst1952624 inst1952720 inst1953440 inst1954488 inst1954600 inst1954872" type="assembly">
<UserData id="id170">
<UserValue value="Head2 Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="Jan-30-1998 16:58:27.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Head2 Sub" title="I-DEAS Name"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="May-03-1999 15:12:04.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id172" name="Spark Plug:;0,Parts" type="solid">
<Bound id="id175" values="0.03006996028125286 0.2239631712436676 0.02060705050826073 0.01078151073306799 0.009165501222014427 0.0493929535150528"></Bound>
<Representation id="id176" format="JT" location="./2_Cylinder_Engine/Spark_Plug__0_Parts.jt"></Representation></Part>
<Part id="id178" name="Rocker_Sub:;0,Parts" instanceRefs="inst1951568 inst1951712 inst1952144 inst1952576" type="assembly">
<UserData id="id189">
<UserValue value="Rocker_Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="Jan-30-1998 16:58:27.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Rocker_Sub" title="I-DEAS Name"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="May-03-1999 15:12:04.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id191" name="Rocker Arm Shaft:123-601;0,Parts" type="solid">
<Bound id="id194" values="-0.04317900538444519 0.4631594121456146 0.05750000104308128 0.006500000134110451 0.006495170295238495 0.05750000104308128"></Bound>
<Representation id="id195" format="JT" location="./2_Cylinder_Engine/Rocker_Arm_Shaft_123_601_0_Parts.jt"></Representation></Part>
<Part id="id197" name="Rocker_Mount_Sub:;0,Parts" instanceRefs="inst1951824 inst1951872 inst1951920 inst1952032" type="assembly">
<UserData id="id203">
<UserValue value="Rocker_Mount_Sub" title="I-DEAS Name"></UserValue>
<UserValue value="Rocker_Mount_Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue></UserData></Part>
<Part id="id205" name="Rocker Mount:123-604;0,Parts" type="solid">
<Bound id="id208" values="0.005044352263212204 -0.05961518362164497 0.007500000298023224 0.0494999997317791 0.02099999971687794 0.007500000298023224"></Bound>
<Representation id="id209" format="JT" location="./2_Cylinder_Engine/Rocker_Mount_123_604_0_Parts.jt"></Representation></Part>
<Part id="id211" name="Rocker Mount Cap:123-608;0,Parts" type="solid">
<Bound id="id214" values="0.005044352263212204 -0.05511518567800522 0.007500000298023224 0.0494999997317791 0.006499998271465302 0.007500000298023224"></Bound>
<Representation id="id215" format="JT" location="./2_Cylinder_Engine/Rocker_Mount_Cap_123_608_0_Parts.jt"></Representation></Part>
<Part id="id217" name="Rocker Bolt:123-603;0,Parts" type="solid">
<Bound id="id220" values="0.02305358275771141 0.2096639275550842 -0.04050000011920929 0.007499999366700649 0.007494449149817228 0.04050000011920929"></Bound>
<Representation id="id221" format="JT" location="./2_Cylinder_Engine/Rocker_Bolt_123_603_0_Parts.jt"></Representation></Part>
<Part id="id226" name="Rocker_Mount_Sub:;0,Parts" instanceRefs="inst1952256 inst1952304 inst1952352 inst1952464" type="assembly">
<UserData id="id237">
<UserValue value="Rocker_Mount_Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="Jan-30-1998 16:58:27.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Rocker_Mount_Sub" title="I-DEAS Name"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="May-03-1999 15:12:04.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id254" name="Valve Spring:123-702;0,Parts" type="solid">
<Bound id="id257" values="-0.2873985767364502 -0.0646171048283577 0.0324999988079071 0.008999995887279511 0.008993340656161308 0.0324999988079071"></Bound>
<Representation id="id258" format="JT" location="./2_Cylinder_Engine/Valve_Spring_123_702_0_Parts.jt"></Representation></Part>
<Part id="id260" name="Valve_Sub:;0,Parts" instanceRefs="inst1952672 inst1952816 inst1952864" type="assembly">
<UserData id="id266">
<UserValue value="Valve_Sub" title="I-DEAS Name"></UserValue>
<UserValue value="Valve_Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue></UserData></Part>
<Part id="id268" name="Valve:123-700;0,Parts" type="solid">
<Bound id="id271" values="0.1265590041875839 0.2941140830516815 0 0.05499999970197678 0.01800000295042992 0.01798668131232262"></Bound>
<Representation id="id272" format="JT" location="./2_Cylinder_Engine/Valve_123_700_0_Parts.jt"></Representation></Part>
<Part id="id274" name="Valve Spring Cap:123-704;0,Parts" type="solid">
<Bound id="id277" values="0.2066644430160523 0.2842055261135101 0 0.004499997943639755 0.01600000448524952 0.01598815992474556"></Bound>
<Representation id="id278" format="JT" location="./2_Cylinder_Engine/Valve_Spring_Cap_123_704_0_Parts.jt"></Representation></Part>
<Part id="id280" name="Spring:;0,Parts" instanceRefs="inst1952912 inst1952960 inst1953008 inst1953056 inst1953104 inst1953152 inst1953200 inst1953248 inst1953296 inst1953344" type="assembly">
<UserData id="id286">
<UserValue value="Spring" title="I-DEAS Name"></UserValue>
<UserValue value="Spring:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue></UserData></Part>
<Part id="id288" name="Spring Link:;0,Parts" type="solid">
<Bound id="id291" values="0.1303011178970337 -0.04939981177449226 0.007499259896576405 0.001999998930841684 0.01499851979315281 0.007499259896576405"></Bound>
<Representation id="id292" format="JT" location="./2_Cylinder_Engine/Spring_Link__0_Parts.jt"></Representation></Part>
<Part id="id321" name="Valve_Sub:;0,Parts" instanceRefs="inst1953392 inst1954336 inst1954440" type="assembly">
<UserData id="id333">
<UserValue value="Valve_Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Jan-30-1998 16:58:26.00" title="Version Create Date + Time"></UserValue>
<UserValue value="Valve_Sub" title="I-DEAS Name"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="May-03-1999 15:12:04.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id335" name="Spring:;0,Parts" instanceRefs="inst1953576 inst1953624 inst1953672 inst1953720 inst1953768 inst1953816 inst1953920 inst1954024 inst1954128 inst1954232" type="assembly">
<UserData id="id346">
<UserValue value="Spring:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="Jan-30-1998 16:58:25.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Spring" title="I-DEAS Name"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="May-03-1999 15:12:04.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id384" name="Rocker Arm:123-600;0,Parts" type="solid">
<Bound id="id387" values="-0.2874188423156738 -0.1816282123327255 0.04250000044703484 0.03894562274217606 0.01755017042160034 0.04250000044703484"></Bound>
<Representation id="id388" format="JT" location="./2_Cylinder_Engine/Rocker_Arm_123_600_0_Parts.jt"></Representation></Part>
<Part id="id390" name="Rocker Arm_copy:123-602;0,Parts" type="solid">
<Bound id="id393" values="-0.2914990782737732 -0.1816282123327255 0.04250000044703484 0.03894564881920815 0.01755017600953579 0.04250000044703484"></Bound>
<Representation id="id394" format="JT" location="./2_Cylinder_Engine/Rocker_Arm_copy_123_602_0_Parts.jt"></Representation></Part></InstanceGraph></ProductDef></PLMXML>

View File

@ -0,0 +1,161 @@
<?xml version="1.0" ?>
<PLMXML xmlns="http://www.plmxml.org/Schemas/PLMXMLSchema"
schemaVersion="4" date="2005-01-13" time="18:04:04" author="Vis Mockup 5.1.0">
<ProductDef id="id1">
<UserData id="id12" type="__TCC-VIS_MONIKER_INFO">
<UserValue value="C:\Program Files\UGS\JT2Go\Examples\2_Cylinder_Engine_Example\2_Cylinder_Engine.jt" title="Path"></UserValue>
<UserValue value="file" title="FA_Protocol"></UserValue>
<UserValue value="C:/Program Files/UGS/JT2Go/Examples/2_Cylinder_Engine_Example/2_Cylinder_Engine.jt" title="object_id"></UserValue>
<UserValue value="C:\Program Files\UGS\JT2Go\Examples\2_Cylinder_Engine_Example\2_Cylinder_Engine.jt" title="LocalCopy"></UserValue>
<UserValue value="2.0" title="Version"></UserValue>
<UserValue value="local" title="FA_Service"></UserValue>
<UserValue value="No" title="MkIsFolder"></UserValue>
<UserValue value="2_Cylinder_Engine.jt" title="Title"></UserValue>
<UserValue value="DirectModel.Document" title="FileTypeID"></UserValue></UserData>
<InstanceGraph id="id2" rootRefs="inst1931328">
<Instance id="inst1931328" name="2_Cylinder_Engine" partRef="#id14">
<ApplicationRef application="TCC-VIS" label="2_Cylinder_Engine.asm;0;0:"></ApplicationRef>
<UserData id="id18" type="Hidden_Metadata">
<UserValue value="156001" title="TOOLKIT_CUSTOMER"></UserValue></UserData>
<UserData id="id29">
<UserValue value="2_Cylinder_Engine" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Jan-30-1998 16:58:30.00" title="Version Create Date + Time"></UserValue>
<UserValue value="2 Cylinder Engine" title="I-DEAS Name"></UserValue>
<UserValue value="123-001" title="I-DEAS Part Number"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="Jan-10-2005 13:23:55.05" title="Version Mod. Date + Time"></UserValue></UserData>
<Transform id="id15">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</Transform></Instance>
<Instance id="inst1590432" name="Head Stud:123-006;0,Parts" partRef="#id44">
<ApplicationRef application="TCC-VIS" label="Head Stud:123-006;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id45">1.421973649939901e-012 0.002356703858822584 -0.9999971985816956 0 -6.033720745257654e-010 -0.9999971985816956 -0.002356703858822584 0 -1 6.033737398603023e-010 -3.700562300775484e-019 0 -0.2949999868869782 0.1321395188570023 -0.003983345814049244 1</Transform></Instance>
<Instance id="inst1950112" name="Lifter:123-923;0,Parts" partRef="#id50">
<ApplicationRef application="TCC-VIS" label="Lifter:123-923;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id51">2.757793993168889e-013 4.575816179956671e-013 1 0 4.575816179956671e-013 -1 4.575816179956671e-013 0 1 4.575816179956671e-013 -2.757793993168889e-013 0 0.1000000014901161 -0.1338488310575485 0.05437212437391281 1</Transform></Instance>
<Instance id="inst1950928" name="Body Sub:123-002;0,Parts" partRef="#id56">
<ApplicationRef application="TCC-VIS" label="Body Sub:123-002;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id57">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</Transform></Instance>
<Instance id="inst1950976" name="Case_r:123-200;0,Parts" partRef="#id71">
<ApplicationRef application="TCC-VIS" label="Case_r:123-200;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id72">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</Transform></Instance>
<Instance id="inst1951024" name="Cylinder_1:123-100;0,Parts" partRef="#id77">
<ApplicationRef application="TCC-VIS" label="Cylinder_1:123-100;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id78">1 -5.031413063960599e-009 -1.553538520049358e-009 0 1.553538409027055e-009 -1.993428355717697e-008 1 0 -5.031413063960599e-009 -1 -1.993428355717697e-008 0 0.1269356608390808 -5.273894387869405e-008 -0.0365588441491127 1</Transform></Instance>
<Instance id="inst1951072" name="Cylinder_2:123-101;0,Parts" partRef="#id83">
<ApplicationRef application="TCC-VIS" label="Cylinder_2:123-101;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id84">-1 -1.490642098644912e-008 -1.665472915135524e-008 0 1.665472915135524e-008 -1.764261092773722e-008 -1 0 1.490642098644912e-008 -1 1.764261092773722e-008 0 -0.1269356608390808 3.299700068737366e-009 0.0365588404238224 1</Transform></Instance>
<Instance id="inst1951120" name="cylinder bolt pattern:;0,Parts" partRef="#id89">
<ApplicationRef application="TCC-VIS" label="cylinder bolt pattern:;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id90">2.459232373297482e-009 0.7071067690849304 -0.7071067690849304 0 -4.656259378066352e-009 -0.7071067690849304 -0.7071067690849304 0 -1 5.031412619871389e-009 1.55353274688963e-009 0 0.06499999761581421 0.1287170201539993 -0.003270523622632027 1</Transform></Instance>
<Instance id="inst1951168" name="Head_1:123-150;0,Parts" partRef="#id95">
<ApplicationRef application="TCC-VIS" label="Head_1:123-150;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id96">-1.553133399667672e-009 5.031413063960599e-009 -1 0 5.031413063960599e-009 1 5.031413063960599e-009 0 1 -5.031413063960599e-009 -1.553133399667672e-009 0 0.2239999920129776 0.03048792481422424 0.02500873245298863 1</Transform></Instance>
<Instance id="inst1951264" name="Head2 Sub:;0,Parts" partRef="#id101">
<ApplicationRef application="TCC-VIS" label="Head2 Sub:;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id102">1.665474158585312e-008 1.004267005555448e-006 -1 0 -1 -1.666503557373744e-008 -1.665475757306467e-008 0 -1.6665051560949e-008 1 1.004267005555448e-006 0 -0.04826182126998901 -0.05911042168736458 0.03459598124027252 1</Transform></Instance>
<Instance id="inst1951216" name="Head_2:123-151;0,Parts" partRef="#id115">
<ApplicationRef application="TCC-VIS" label="Head_2:123-151;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id116">1 9.947598300641403e-014 -1.004267005555448e-006 0 1.011203266898519e-006 3.500436918102423e-008 0.9999999403953552 0 2.75101122437782e-014 -1 2.288952989822068e-013 0 0.04958733543753624 0.1757381856441498 0.08959835022687912 1</Transform></Instance>
<Instance id="inst1951360" name="Head Nut:123-005;0,Parts" partRef="#id121">
<ApplicationRef application="TCC-VIS" label="Head Nut:123-005;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id122">0.9999898672103882 1.657488901685156e-008 -0.004498782102018595 0 -0.004498789552599192 -1.781053349247941e-008 -0.9999898076057434 0 -1.665473980949628e-008 1 1.726835030524399e-008 0 -0.02312494441866875 0.2477381676435471 0.2203545719385147 1</Transform></Instance>
<Instance id="inst1954648" name="Valve Cover_copy:;0,Main" partRef="#id127">
<ApplicationRef application="TCC-VIS" label="Valve Cover_copy:;0,Main.part;0;0:"></ApplicationRef>
<Transform id="id128">1 -6.184104131534696e-005 -1.004268028736988e-006 0 1.011203266898519e-006 1.773524793691195e-008 0.9999999403953552 0 -6.184104131534696e-005 -1 -1.720678532990405e-008 0 0.05108793079853058 0.325738400220871 0.091098353266716 1</Transform></Instance>
<Instance id="inst1954760" name="Head Nut:123-005;0,Parts" partRef="#id121">
<ApplicationRef application="TCC-VIS" label="Head Nut:123-005;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id133">0.9999933242797852 1.67195413069976e-008 0.003653878346085548 0 0.003653871593996882 -1.767486601522705e-008 -0.9999932646751404 0 -1.665473980949628e-008 1 1.726829879089564e-008 0 0.08119497448205948 0.2477381974458695 0.2201460748910904 1</Transform></Instance>
<Instance id="inst1954920" name="Valve Cover:123-701;0,Parts" partRef="#id136">
<ApplicationRef application="TCC-VIS" label="Valve Cover:123-701;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id137">-1.552728390308289e-009 5.031413063960599e-009 -1 0 5.031413063960599e-009 1 5.031413063960599e-009 0 1 -5.031413063960599e-009 -1.552728390308289e-009 0 0.2239999920129776 0.03198792785406113 0.02350873313844204 1</Transform></Instance>
<Instance id="inst1955032" name="Head Stud:123-006;0,Parts" partRef="#id44">
<ApplicationRef application="TCC-VIS" label="Head Stud:123-006;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id142">1.421973649939901e-012 0.002356703858822584 -0.9999971985816956 0 -6.033720745257654e-010 -0.9999971985816956 -0.002356703858822584 0 -1 6.033737398603023e-010 -3.700562300775484e-019 0 -0.2949999868869782 0.02160527743399143 -0.1053286716341972 1</Transform></Instance>
<Instance id="inst1955144" name="Head Stud:123-006;0,Parts" partRef="#id44">
<ApplicationRef application="TCC-VIS" label="Head Stud:123-006;0,Parts.part;0;2:"></ApplicationRef>
<Transform id="id145">-5.582201367815287e-013 -0.0009254564647562802 -0.9999995827674866 0 -6.028238463962055e-010 -0.9999995827674866 0.0009254564647562802 0 -1 6.028241239519616e-010 3.326781192647572e-016 0 -0.2949999868869782 0.02149887755513191 0.0004925570683553815 1</Transform></Instance>
<Instance id="inst1955256" name="Head Stud:123-006;0,Parts" partRef="#id44">
<ApplicationRef application="TCC-VIS" label="Head Stud:123-006;0,Parts.part;0;3:"></ApplicationRef>
<Transform id="id148">1.421973649939901e-012 0.002356703858822584 -0.9999971985816956 0 -6.033720745257654e-010 -0.9999971985816956 -0.002356703858822584 0 -1 6.033737398603023e-010 -3.700562300775484e-019 0 -0.2949999868869782 0.1238077878952026 -0.100101500749588 1</Transform></Instance>
<Instance id="inst1955368" name="Lifter:123-923;0,Parts" partRef="#id50">
<ApplicationRef application="TCC-VIS" label="Lifter:123-923;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id151">2.757793993168889e-013 4.575816179956671e-013 1 0 4.575816179956671e-013 -1 4.575816179956671e-013 0 1 4.575816179956671e-013 -2.757793993168889e-013 0 0.1000000014901161 -0.1338488310575485 0.03437212482094765 1</Transform></Instance>
<Instance id="inst1955472" name="Lifter:123-923;0,Parts" partRef="#id50">
<ApplicationRef application="TCC-VIS" label="Lifter:123-923;0,Parts.part;0;2:"></ApplicationRef>
<Transform id="id154">4.052314039881821e-013 1.110223024625157e-015 1 0 1.110223024625157e-015 1 -1.110223024625157e-015 0 -1 1.110223024625157e-015 4.052314039881821e-013 0 -0.1000000014901161 -0.06615117192268372 0.01437209825962782 1</Transform></Instance>
<Instance id="inst1955576" name="Lifter:123-923;0,Parts" partRef="#id50">
<ApplicationRef application="TCC-VIS" label="Lifter:123-923;0,Parts.part;0;3:"></ApplicationRef>
<Transform id="id157">4.052314039881821e-013 1.110223024625157e-015 1 0 1.110223024625157e-015 1 -1.110223024625157e-015 0 -1 1.110223024625157e-015 4.052314039881821e-013 0 -0.1000000014901161 -0.06615117937326431 -0.005627896636724472 1</Transform></Instance>
<Part id="id14" name="2_Cylinder_Engine" instanceRefs="inst1590432 inst1950112 inst1950928 inst1955256 inst1955368 inst1955472 inst1955576" type="assembly">
<UserData id="id31" type="Hidden_Metadata">
<UserValue value="156001" title="TOOLKIT_CUSTOMER"></UserValue></UserData>
<UserData id="id42">
<UserValue value="2_Cylinder_Engine" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Jan-30-1998 16:58:30.00" title="Version Create Date + Time"></UserValue>
<UserValue value="2 Cylinder Engine" title="I-DEAS Name"></UserValue>
<UserValue value="123-001" title="I-DEAS Part Number"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="Jan-10-2005 13:23:55.05" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id44" name="Head Stud:123-006;0,Parts" type="solid">
<Bound id="id47" values="-0.03247146308422089 0.07456196844577789 -0.1150000020861626 0.006500001531094313 0.006495191715657711 0.1150000020861626"></Bound>
<Representation id="id48" format="JT" location="./2_Cylinder_Engine/Head_Stud_123_006_0_Parts.jt"></Representation></Part>
<Part id="id50" name="Lifter:123-923;0,Parts" type="solid">
<Bound id="id53" values="-0.02437210455536842 -0.03384878858923912 -0.04250000044703484 0.00774999987334013 0.007749963086098433 0.04250000044703484"></Bound>
<Representation id="id54" format="JT" location="./2_Cylinder_Engine/Lifter_123_923_0_Parts.jt"></Representation></Part>
<Part id="id56" name="Body Sub:123-002;0,Parts" instanceRefs="inst1950976 inst1951024 inst1951072 inst1951120 inst1951168 inst1951264 inst1954920 inst1955032 inst1955144" type="assembly">
<UserData id="id69">
<UserValue value="Body Sub:123-002;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="Jan-30-1998 16:58:29.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Body Sub" title="I-DEAS Name"></UserValue>
<UserValue value="123-002" title="I-DEAS Part Number"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="Aug-14-2001 14:10:00.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id71" name="Case_r:123-200;0,Parts" type="solid">
<Bound id="id74" values="0 -0.04548577964305878 -0.003500004298985004 0.0949999988079071 0.1354857832193375 0.1164999976754189"></Bound>
<Representation id="id75" format="JT" location="./2_Cylinder_Engine/Case_r_123_200_0_Parts.jt"></Representation></Part>
<Part id="id77" name="Cylinder_1:123-100;0,Parts" type="solid">
<Bound id="id80" values="0.01856433786451817 0.05655883997678757 2.846240931830835e-007 0.08050000667572022 0.0950000062584877 0.08000028133392334"></Bound>
<Representation id="id81" format="JT" location="./2_Cylinder_Engine/Cylinder_1_123_100_0_Parts.jt"></Representation></Part>
<Part id="id83" name="Cylinder_2:123-101;0,Parts" type="solid">
<Bound id="id86" values="0.01856433786451817 0.05655883997678757 2.846240931830835e-007 0.08050000667572022 0.0950000062584877 0.08000028133392334"></Bound>
<Representation id="id87" format="JT" location="./2_Cylinder_Engine/Cylinder_2_123_101_0_Parts.jt"></Representation></Part>
<Part id="id89" name="cylinder bolt pattern:;0,Parts" type="solid">
<Bound id="id92" values="-0.1074714586138725 0.0745619609951973 -0.1150000020861626 0.08149999380111694 0.08149999380111694 0.1150000020861626"></Bound>
<Representation id="id93" format="JT" location="./2_Cylinder_Engine/cylinder_bolt_pattern__0_Parts.jt"></Representation></Part>
<Part id="id95" name="Head_1:123-150;0,Parts" type="solid">
<Bound id="id98" values="0.005008736159652472 -0.03048798069357872 0.04119380190968514 0.1079999953508377 0.09020166844129562 0.0411965511739254"></Bound>
<Representation id="id99" format="JT" location="./2_Cylinder_Engine/Head_1_123_150_0_Parts.jt"></Representation></Part>
<Part id="id101" name="Head2 Sub:;0,Parts" instanceRefs="inst1951216 inst1951360 inst1954648 inst1954760" type="assembly">
<UserData id="id113">
<UserValue value="Head2 Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="Jan-30-1998 16:58:27.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Head2 Sub" title="I-DEAS Name"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="May-03-1999 15:12:04.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id115" name="Head_2:123-151;0,Parts" type="solid">
<Bound id="id118" values="0.005008736159652472 -0.03048798069357872 -0.04119383916258812 0.1079999953508377 0.09020166844129562 0.04119651019573212"></Bound>
<Representation id="id119" format="JT" location="./2_Cylinder_Engine/Head_2_123_151_0_Parts.jt"></Representation></Part>
<Part id="id121" name="Head Nut:123-005;0,Parts" type="solid">
<Bound id="id124" values="0.02565165981650353 0.2141639441251755 -0.008499999530613422 0.01200000010430813 0.01199112832546234 0.008499999530613422"></Bound>
<Representation id="id125" format="JT" location="./2_Cylinder_Engine/Head_Nut_123_005_0_Parts.jt"></Representation></Part>
<Part id="id127" name="Valve Cover_copy:;0,Main" type="solid">
<Bound id="id130" values="0.003508739871904254 -0.03198798000812531 0.0386538989841938 0.101500004529953 0.09204161167144775 0.03634610027074814"></Bound>
<Representation id="id131" format="JT" location="./2_Cylinder_Engine/Valve_Cover_copy__0_Main.jt"></Representation></Part>
<Part id="id136" name="Valve Cover:123-701;0,Parts" type="solid">
<Bound id="id139" values="0.003508739871904254 -0.03198803216218948 0.1113460958003998 0.101500004529953 0.09204155951738358 0.03634609654545784"></Bound>
<Representation id="id140" format="JT" location="./2_Cylinder_Engine/Valve_Cover_123_701_0_Parts.jt"></Representation></Part></InstanceGraph></ProductDef></PLMXML>

View File

@ -0,0 +1,511 @@
<?xml version="1.0" ?>
<PLMXML xmlns="http://www.plmxml.org/Schemas/PLMXMLSchema"
schemaVersion="4" date="2005-02-14" time="21:15:28" author="Vis Mockup 5.1.0">
<ProductDef id="id1">
<UserData id="id12" type="__TCC-VIS_MONIKER_INFO">
<UserValue value="C:\Program Files\UGS\JT2Go\Examples\2_Cylinder_Engine_Example\2_Cylinder_Engine.jt" title="Path"></UserValue>
<UserValue value="file" title="FA_Protocol"></UserValue>
<UserValue value="C:/Program Files/UGS/JT2Go/Examples/2_Cylinder_Engine_Example/2_Cylinder_Engine.jt" title="object_id"></UserValue>
<UserValue value="C:\Program Files\UGS\JT2Go\Examples\2_Cylinder_Engine_Example\2_Cylinder_Engine.jt" title="LocalCopy"></UserValue>
<UserValue value="2.0" title="Version"></UserValue>
<UserValue value="local" title="FA_Service"></UserValue>
<UserValue value="No" title="MkIsFolder"></UserValue>
<UserValue value="2_Cylinder_Engine.jt" title="Title"></UserValue>
<UserValue value="DirectModel.Document" title="FileTypeID"></UserValue></UserData>
<InstanceGraph id="id2" rootRefs="inst1798736">
<Instance id="inst1798736" name="2_Cylinder_Engine" partRef="#id14">
<ApplicationRef application="TCC-VIS" label="2_Cylinder_Engine.asm;0;0:"></ApplicationRef>
<UserData id="id20" type="Hidden_Metadata">
<UserValue value="156001" title="TOOLKIT_CUSTOMER"></UserValue></UserData>
<UserData id="id31">
<UserValue value="2_Cylinder_Engine" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Jan-30-1998 16:58:30.00" title="Version Create Date + Time"></UserValue>
<UserValue value="2 Cylinder Engine" title="I-DEAS Name"></UserValue>
<UserValue value="123-001" title="I-DEAS Part Number"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="Jan-10-2005 13:23:55.05" title="Version Mod. Date + Time"></UserValue></UserData>
<Transform id="id15">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</Transform></Instance>
<Instance id="inst1779056" name="Head Stud:123-006;0,Parts" partRef="#id46">
<ApplicationRef application="TCC-VIS" label="Head Stud:123-006;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id47">1.421973649939901e-012 0.002356703858822584 -0.9999971985816956 0 -6.033720745257654e-010 -0.9999971985816956 -0.002356703858822584 0 -1 6.033737398603023e-010 -3.700562300775484e-019 0 -0.2949999868869782 0.1321395188570023 -0.003983345814049244 1</Transform></Instance>
<Instance id="inst1913768" name="Lifter:123-923;0,Parts" partRef="#id52">
<ApplicationRef application="TCC-VIS" label="Lifter:123-923;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id53">2.757793993168889e-013 4.575816179956671e-013 1 0 4.575816179956671e-013 -1 4.575816179956671e-013 0 1 4.575816179956671e-013 -2.757793993168889e-013 0 0.1000000014901161 -0.1338488310575485 0.05437212437391281 1</Transform></Instance>
<Instance id="inst1910440" name="rod:123-699;0,Parts" partRef="#id58">
<ApplicationRef application="TCC-VIS" label="rod:123-699;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id59">0.9861037135124207 -0.1661308258771896 -1.166810754732375e-015 0 0.1661308258771896 0.9861037135124207 -1.062013085640994e-015 0 1.327029577804367e-015 8.534118465009541e-016 1 0 0.07101806253194809 0.02219301462173462 0.02199999988079071 1</Transform></Instance>
<Instance id="inst1937376" name="Piston Sub:;0,Parts" partRef="#id64">
<ApplicationRef application="TCC-VIS" label="Piston Sub:;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id65">-1 1.10096191110321e-032 -7.293991291219912e-017 0 1.10096191110321e-032 -1 -3.018818806569426e-016 0 -7.293991291219912e-017 -3.018818806569426e-016 1 0 -0.1368601024150848 0.06445372104644775 0.003820367390289903 1</Transform></Instance>
<Instance id="inst1912768" name="Piston:123-844;0,Parts" partRef="#id74">
<ApplicationRef application="TCC-VIS" label="Piston:123-844;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id75">-1 -1.334063881586189e-008 7.982825511732017e-010 0 1.10096191110321e-032 -1 -3.018818806569426e-016 0 -7.293991291219912e-017 -3.018818806569426e-016 1 0 -0.294677197933197 0.07397986948490143 0.01617963239550591 1</Transform></Instance>
<Instance id="inst1865720" name="Piston pin:123-845;0,Parts" partRef="#id83">
<ApplicationRef application="TCC-VIS" label="Piston pin:123-845;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id84">0.9995650053024292 0.02949320152401924 -7.979323313200837e-010 0 -0.0294931884855032 0.9995650053024292 2.354164085893729e-011 0 -3.085015966644567e-015 2.168479519145078e-015 1 0 -0.0453154630959034 -0.02461725845932961 -0.02632036805152893 1</Transform></Instance>
<Instance id="inst1895856" name="Piston Sub:;0,Parts" partRef="#id89">
<ApplicationRef application="TCC-VIS" label="Piston Sub:;0,Parts.asm;0;1:"></ApplicationRef>
<Transform id="id90">1 0 0 0 0 1 0 0 0 0 1 0 0.1368601024150848 -0.06445372104644775 -0.03617963194847107 1</Transform></Instance>
<Instance id="inst1671584" name="Piston:123-844;0,Parts" partRef="#id74">
<ApplicationRef application="TCC-VIS" label="Piston:123-844;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id102">-1 -1.334063881586189e-008 7.041613514502387e-009 0 -1.003604666278664e-019 -1 1.355268465125744e-016 0 -1.736007260287489e-016 1.355268465125744e-016 1 0 -0.294677197933197 0.07397986948490143 0.0161796361207962 1</Transform></Instance>
<Instance id="inst2012776" name="Piston pin:123-845;0,Parts" partRef="#id83">
<ApplicationRef application="TCC-VIS" label="Piston pin:123-845;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id105">0.9995650053024292 0.02949320152401924 -7.038550631222051e-009 0 -0.0294931884855032 0.9995650053024292 2.076799010541919e-010 0 1.57434811062825e-016 -2.681045890006053e-016 1 0 -0.0453154630959034 -0.02461725845932961 -0.02632036432623863 1</Transform></Instance>
<Instance id="inst2026000" name="CamShaft Sub:123-990;0,Parts" partRef="#id108">
<ApplicationRef application="TCC-VIS" label="CamShaft Sub:123-990;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id109">0.7071067690849304 -0.7071067690849304 4.055928498874345e-013 0 0.7071067690849304 0.7071067690849304 6.101357784178425e-016 0 -2.872288724139332e-013 2.863660101149607e-013 1 0 0.04717867448925972 -0.0528213270008564 -0.08894477039575577 1</Transform></Instance>
<Instance id="inst2054176" name="Cam_shaft:123-457;0,Parts" partRef="#id123">
<ApplicationRef application="TCC-VIS" label="Cam_shaft:123-457;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id124">1.214013511940948e-008 -7.440697502580917e-010 1 0 -0.9059386253356934 0.4234090149402618 3.675416633368289e-013 0 -0.4234090149402618 -0.9059386253356934 1.728632428171784e-013 0 -0.03029589354991913 -0.05256131291389465 0.02505522221326828 1</Transform></Instance>
<Instance id="inst1938944" name="cam_gear:123-456;0,Parts" partRef="#id129">
<ApplicationRef application="TCC-VIS" label="cam_gear:123-456;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id130">-0.4234090149402618 -0.9059386253356934 1.726649286873036e-013 0 -0.9059386253356934 0.4234090149402618 3.675724817835818e-013 0 -1.214013511940948e-008 7.440699723026967e-010 -1 0 -0.09059386700391769 -0.02437981590628624 -0.04005522653460503 1</Transform></Instance>
<Instance id="inst1848008" name="Crank_Sub:123-555;0,Parts" partRef="#id135">
<ApplicationRef application="TCC-VIS" label="Crank_Sub:123-555;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id136">-0.5 -0.8660253882408142 -2.979083167524747e-016 0 0.8660253882408142 -0.5 -7.816530680941419e-016 0 5.279772353637604e-016 -6.488226847947026e-016 1 0 0.01809818297624588 -0.06969784200191498 -0.1055598109960556 1</Transform></Instance>
<Instance id="inst1838360" name="crank:123-782;0,Parts" partRef="#id150">
<ApplicationRef application="TCC-VIS" label="crank:123-782;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id151">-0.9390942454338074 0.3436597287654877 1.284025318025572e-016 0 -0.3436597883701325 -0.9390941858291626 -6.660528172495127e-016 0 2.47777798279003e-008 -2.063888393522007e-009 1 0 -0.05131101608276367 -0.05052240565419197 0.1075598075985909 1</Transform></Instance>
<Instance id="inst1857888" name="crank_gear:123-783;0,Parts" partRef="#id156">
<ApplicationRef application="TCC-VIS" label="crank_gear:123-783;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id157">-0.9390942454338074 0.3436597287654877 3.809448359261655e-016 0 -0.3436597883701325 -0.9390941858291626 -2.583991531420675e-015 0 2.47777798279003e-008 -2.063890391923451e-009 1 0 -0.05131101980805397 -0.05052240565419197 -0.01844018884003162 1</Transform></Instance>
<Instance id="inst2010456" name="Body Sub:123-002;0,Parts" partRef="#id162">
<ApplicationRef application="TCC-VIS" label="Body Sub:123-002;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id163">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</Transform></Instance>
<Instance id="inst2026392" name="Case_r:123-200;0,Parts" partRef="#id179">
<ApplicationRef application="TCC-VIS" label="Case_r:123-200;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id180">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</Transform></Instance>
<Instance id="inst2026184" name="Cylinder_1:123-100;0,Parts" partRef="#id187">
<ApplicationRef application="TCC-VIS" label="Cylinder_1:123-100;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id188">1 -5.031413063960599e-009 -1.553538520049358e-009 0 1.553538409027055e-009 -1.993428355717697e-008 1 0 -5.031413063960599e-009 -1 -1.993428355717697e-008 0 0.1269356608390808 -5.273894387869405e-008 -0.0365588441491127 1</Transform></Instance>
<Instance id="inst1996904" name="Cylinder_2:123-101;0,Parts" partRef="#id196">
<ApplicationRef application="TCC-VIS" label="Cylinder_2:123-101;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id197">-1 -1.490642098644912e-008 -1.665472915135524e-008 0 1.665472915135524e-008 -1.764261092773722e-008 -1 0 1.490642098644912e-008 -1 1.764261092773722e-008 0 -0.1269356608390808 3.299700068737366e-009 0.0365588404238224 1</Transform></Instance>
<Instance id="inst1858736" name="cylinder bolt pattern:;0,Parts" partRef="#id203">
<ApplicationRef application="TCC-VIS" label="cylinder bolt pattern:;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id204">2.459232373297482e-009 0.7071067690849304 -0.7071067690849304 0 -4.656259378066352e-009 -0.7071067690849304 -0.7071067690849304 0 -1 5.031412619871389e-009 1.55353274688963e-009 0 0.06499999761581421 0.1287170201539993 -0.003270523622632027 1</Transform></Instance>
<Instance id="inst1726008" name="Head_1:123-150;0,Parts" partRef="#id209">
<ApplicationRef application="TCC-VIS" label="Head_1:123-150;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id210">-1.553133399667672e-009 5.031413063960599e-009 -1 0 5.031413063960599e-009 1 5.031413063960599e-009 0 1 -5.031413063960599e-009 -1.553133399667672e-009 0 0.2239999920129776 0.03048792481422424 0.02500873245298863 1</Transform></Instance>
<Instance id="inst1729056" name="Head2 Sub:;0,Parts" partRef="#id218">
<ApplicationRef application="TCC-VIS" label="Head2 Sub:;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id219">1.665474158585312e-008 1.004267005555448e-006 -1 0 -1 -1.666503557373744e-008 -1.665475757306467e-008 0 -1.6665051560949e-008 1 1.004267005555448e-006 0 -0.04826182126998901 -0.05911042168736458 0.03459598124027252 1</Transform></Instance>
<Instance id="inst1727816" name="Head_2:123-151;0,Parts" partRef="#id232">
<ApplicationRef application="TCC-VIS" label="Head_2:123-151;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id233">1 9.947598300641403e-014 -1.004267005555448e-006 0 1.011203266898519e-006 3.500436918102423e-008 0.9999999403953552 0 2.75101122437782e-014 -1 2.288952989822068e-013 0 0.04958733543753624 0.1757381856441498 0.08959835022687912 1</Transform></Instance>
<Instance id="inst2027256" name="Spark Plug:;0,Parts" partRef="#id239">
<ApplicationRef application="TCC-VIS" label="Spark Plug:;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id240">1 9.977915303889529e-014 -9.877358024823479e-007 0 -9.946720638254192e-007 -3.500436562831055e-008 -0.9999999403953552 0 -2.75101122437782e-014 1 -2.288952989822068e-013 0 0.02452629990875721 0.2137382179498673 0.2830735743045807 1</Transform></Instance>
<Instance id="inst1842808" name="Head Nut:123-005;0,Parts" partRef="#id245">
<ApplicationRef application="TCC-VIS" label="Head Nut:123-005;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id246">0.9999898672103882 1.657488901685156e-008 -0.004498782102018595 0 -0.004498789552599192 -1.781053349247941e-008 -0.9999898076057434 0 -1.665473980949628e-008 1 1.726835030524399e-008 0 -0.02312494441866875 0.2477381676435471 0.2203545719385147 1</Transform></Instance>
<Instance id="inst1906944" name="Rocker_Sub:;0,Parts" partRef="#id251">
<ApplicationRef application="TCC-VIS" label="Rocker_Sub:;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id252">0.9999974370002747 -7.939097296238984e-011 -0.002271066652610898 0 9.118318147522016e-016 1 3.807415215490448e-015 0 0.002271073637530208 3.500404588407946e-008 0.9999973773956299 0 -0.0001340909366263077 -0.01299998629838228 0.0001236627285834402 1</Transform></Instance>
<Instance id="inst2033120" name="Rocker Arm Shaft:123-601;0,Parts" partRef="#id264">
<ApplicationRef application="TCC-VIS" label="Rocker Arm Shaft:123-601;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id265">-0.9999850392341614 -0.004973083734512329 -0.002270016819238663 0 0.004973071627318859 -0.9999875426292419 1.127185623772675e-005 0 -0.002270089229568839 -4.575558421038295e-008 0.9999972581863403 0 0.0487947128713131 0.7686771750450134 -0.02040251158177853 1</Transform></Instance>
<Instance id="inst1789832" name="Rocker_Mount_Sub:;0,Parts" partRef="#id270">
<ApplicationRef application="TCC-VIS" label="Rocker_Mount_Sub:;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id271">1 -7.424300063618716e-011 1.35305974757749e-010 0 1.276140897124513e-015 0.9999998807907105 4.341043060584901e-016 0 -4.433523059788058e-008 -2.848764957263938e-008 0.9999998211860657 0 -1.748614808505522e-009 -9.381160293031599e-010 -7.228971310446752e-010 1</Transform></Instance>
<Instance id="inst1796000" name="Rocker Mount:123-604;0,Parts" partRef="#id278">
<ApplicationRef application="TCC-VIS" label="Rocker Mount:123-604;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id279">0.9999973773956299 1.651584646822357e-008 0.002270044526085258 0 -1.669391558323241e-008 0.9999998807907105 1.723048725921217e-008 0 -0.002270088996738195 -4.57557440824985e-008 0.9999972581863403 0 0.04950515553355217 0.3443533480167389 0.07959935814142227 1</Transform></Instance>
<Instance id="inst2030512" name="Rocker Mount Cap:123-608;0,Parts" partRef="#id284">
<ApplicationRef application="TCC-VIS" label="Rocker Mount Cap:123-608;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id285">0.9999973773956299 1.651585179729409e-008 0.002270044526085258 0 1.669392091230293e-008 -0.9999998807907105 -1.723048725921217e-008 0 0.002270088996738195 4.57557440824985e-008 -0.9999972581863403 0 0.04947110638022423 0.2571229636669159 0.09459931403398514 1</Transform></Instance>
<Instance id="inst1725832" name="Rocker Bolt:123-603;0,Parts" partRef="#id290">
<ApplicationRef application="TCC-VIS" label="Rocker Bolt:123-603;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id291">0.9984452724456787 1.914222380605679e-008 -0.05574143305420876 0 -0.05574139580130577 4.472066095217997e-008 -0.9984451532363892 0 -1.669391203051873e-008 1 1.723049436463953e-008 0 0.01820174790918827 0.326738178730011 0.2976770401000977 1</Transform></Instance>
<Instance id="inst2029080" name="Rocker Bolt:123-603;0,Parts" partRef="#id290">
<ApplicationRef application="TCC-VIS" label="Rocker Bolt:123-603;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id296">0.9984543323516846 1.913488922866691e-008 -0.05557771772146225 0 -0.05557768046855927 4.472379444564467e-008 -0.998454213142395 0 -1.669391025416189e-008 0.9999998807907105 1.723049436463953e-008 0 0.06816709786653519 0.326738178730011 0.2977887094020844 1</Transform></Instance>
<Instance id="inst2033672" name="Rocker_Mount_Sub:;0,Parts" partRef="#id299">
<ApplicationRef application="TCC-VIS" label="Rocker_Mount_Sub:;0,Parts.asm;0;1:"></ApplicationRef>
<Transform id="id300">1 -7.424300063618716e-011 1.35305974757749e-010 0 1.276140897124513e-015 0.9999998807907105 4.341043060584901e-016 0 -4.433523059788058e-008 -2.848764957263938e-008 0.9999998211860657 0 -4.064914627122107e-009 -1.459414988858043e-008 -0.09999953210353851 1</Transform></Instance>
<Instance id="inst1996808" name="Rocker Mount:123-604;0,Parts" partRef="#id278">
<ApplicationRef application="TCC-VIS" label="Rocker Mount:123-604;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id312">0.9999974370002747 1.662746029751361e-008 0.002270044526085258 0 -1.669391735958925e-008 1.00000011920929 1.723049081192585e-008 0 -0.002270061522722244 -2.438619972622291e-008 0.9999974966049194 0 0.04973216727375984 0.3443534076213837 0.07959914952516556 1</Transform></Instance>
<Instance id="inst1867136" name="Rocker Mount Cap:123-608;0,Parts" partRef="#id284">
<ApplicationRef application="TCC-VIS" label="Rocker Mount Cap:123-608;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id315">0.9999974370002747 1.662746562658413e-008 0.002270044526085258 0 1.669392268865977e-008 -1.00000011920929 -1.723049081192585e-008 0 0.002270061522722244 2.438619972622291e-008 -0.9999974966049194 0 0.0496981143951416 0.2571230232715607 0.09459911286830902 1</Transform></Instance>
<Instance id="inst1948848" name="Rocker Bolt:123-603;0,Parts" partRef="#id290">
<ApplicationRef application="TCC-VIS" label="Rocker Bolt:123-603;0,Parts.part;0;2:"></ApplicationRef>
<Transform id="id318">0.9986630082130432 1.791910797521723e-008 -0.05169311910867691 0 -0.05169309675693512 2.345346850063379e-008 -0.998663067817688 0 -1.669391025416189e-008 1.00000011920929 1.72305067991374e-008 0 0.01757495850324631 0.3267382085323334 0.2976291477680206 1</Transform></Instance>
<Instance id="inst1997256" name="Rocker Bolt:123-603;0,Parts" partRef="#id290">
<ApplicationRef application="TCC-VIS" label="Rocker Bolt:123-603;0,Parts.part;0;3:"></ApplicationRef>
<Transform id="id321">0.9986716508865356 1.791518755567267e-008 -0.05152621492743492 0 -0.05152619630098343 2.345645455648082e-008 -0.9986717104911804 0 -1.669391025416189e-008 1.00000011920929 1.723049791735321e-008 0 0.06753963232040405 0.3267382085323334 0.2977406084537506 1</Transform></Instance>
<Instance id="inst1949072" name="Rocker Arm Shaft:123-601;0,Parts" partRef="#id264">
<ApplicationRef application="TCC-VIS" label="Rocker Arm Shaft:123-601;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id324">-0.9999873042106628 -0.004487393889576197 -0.00227002170868218 0 0.004487383179366589 -0.9999898076057434 1.016931855701841e-005 0 -0.002270088996738195 -4.575493051106605e-008 0.9999972581863403 0 -0.02998023852705956 0.7686992287635803 -0.02058133110404015 1</Transform></Instance>
<Instance id="inst2052896" name="Valve Spring:123-702;0,Parts" partRef="#id327">
<ApplicationRef application="TCC-VIS" label="Valve Spring:123-702;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id328">-0.821344792842865 -0.3829995691776276 0.4227339625358582 0 -0.3831273019313812 -0.1786547750234604 -0.9062537550926209 0 0.4226182997226715 -0.9063078165054321 -4.468796817036491e-007 0 -0.2707940638065338 0.1454340070486069 0.1220441088080406 1</Transform></Instance>
<Instance id="inst1725624" name="Valve_Sub:;0,Parts" partRef="#id333">
<ApplicationRef application="TCC-VIS" label="Valve_Sub:;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id334">0.4546822905540466 0.654166042804718 0.6044259667396545 0 -0.8696395754814148 0.4726209938526154 0.1426760256290436 0 -0.1923305839300156 -0.5905050039291382 0.7837809920310974 0 0.09187051653862 0.08063256740570068 0.1662608832120895 1</Transform></Instance>
<Instance id="inst1914472" name="Valve:123-700;0,Parts" partRef="#id341">
<ApplicationRef application="TCC-VIS" label="Valve:123-700;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id342">0.7850326299667358 0.06081443279981613 -0.6164620518684387 0 -0.1356190741062164 0.9878997206687927 -0.07524674385786057 0 0.6044265031814575 0.1426751911640167 0.7837809920310974 0 -0.001248535001650453 -0.2500619888305664 -0.09022713452577591 1</Transform></Instance>
<Instance id="inst1734000" name="Valve Spring Cap:123-704;0,Parts" partRef="#id347">
<ApplicationRef application="TCC-VIS" label="Valve Spring Cap:123-704;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id348">0.7850326299667358 0.06081448495388031 -0.6164620518684387 0 -0.3924773633480072 -0.7211050391197205 -0.5709372162818909 0 -0.4792551398277283 0.6901518106460571 -0.5422225594520569 0 0.0455969013273716 0.2435131669044495 0.06938881427049637 1</Transform></Instance>
<Instance id="inst1730152" name="Spring:;0,Parts" partRef="#id353">
<ApplicationRef application="TCC-VIS" label="Spring:;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id354">1 -3.002940829333056e-008 3.437022044749938e-008 0 -4.150651022882812e-008 1.000000238418579 4.017514854126603e-008 0 3.73510147255729e-008 2.773385787691041e-008 1 0 -1.489124112907803e-008 -4.276215381793236e-009 1.08718030134014e-008 1</Transform></Instance>
<Instance id="inst1910040" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id362">-0.6893028616905212 -0.1355008780956268 0.7116888165473938 0 -0.6755837202072144 0.4749762713909149 -0.5639010667800903 0 -0.2616261541843414 -0.8695042133331299 -0.4189447462558746 0 0.1410751193761826 0.09142301231622696 -0.3314632773399353 1</Transform></Instance>
<Instance id="inst1910640" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id367">0.8620703816413879 -0.01532000117003918 -0.506557047367096 0 -0.4340352714061737 0.4936883747577667 -0.7535817623138428 0 0.261626124382019 0.8695042133331299 0.4189446866512299 0 -0.05227819457650185 0.07644443958997726 -0.1796288043260574 1</Transform></Instance>
<Instance id="inst1911040" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;2:"></ApplicationRef>
<Transform id="id370">-0.6893028616905212 -0.1355008780956268 0.7116888165473938 0 -0.6755837202072144 0.4749762713909149 -0.5639010667800903 0 -0.2616261541843414 -0.8695042133331299 -0.4189447462558746 0 0.1347948610782623 0.09093648940324783 -0.3265315294265747 1</Transform></Instance>
<Instance id="inst1911768" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;3:"></ApplicationRef>
<Transform id="id373">0.8620703816413879 -0.01532000117003918 -0.506557047367096 0 -0.4340352714061737 0.4936883747577667 -0.7535817623138428 0 0.261626124382019 0.8695042133331299 0.4189446866512299 0 -0.05855846777558327 0.07595790922641754 -0.1746970862150192 1</Transform></Instance>
<Instance id="inst1912168" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;4:"></ApplicationRef>
<Transform id="id376">-0.6893028616905212 -0.1355008780956268 0.7116888165473938 0 -0.6755837202072144 0.4749762713909149 -0.5639010667800903 0 -0.2616261541843414 -0.8695042133331299 -0.4189447462558746 0 0.1285146176815033 0.0904499888420105 -0.3215998709201813 1</Transform></Instance>
<Instance id="inst1912968" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;5:"></ApplicationRef>
<Transform id="id379">0.8620703816413879 -0.01532000117003918 -0.506557047367096 0 -0.4340352714061737 0.4936883747577667 -0.7535817623138428 0 0.261626124382019 0.8695042133331299 0.4189446866512299 0 -0.0648387148976326 0.07547140121459961 -0.1697653979063034 1</Transform></Instance>
<Instance id="inst1920696" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;6:"></ApplicationRef>
<Transform id="id382">-0.6893028616905212 -0.1355008780956268 0.7116888165473938 0 -0.6755837202072144 0.4749762713909149 -0.5639010667800903 0 -0.2616261541843414 -0.8695042133331299 -0.4189447462558746 0 0.1222343519330025 0.08996346592903137 -0.3166681826114655 1</Transform></Instance>
<Instance id="inst1827264" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;7:"></ApplicationRef>
<Transform id="id385">0.8620703816413879 -0.01532000117003918 -0.506557047367096 0 -0.4340352714061737 0.4936883747577667 -0.7535817623138428 0 0.261626124382019 0.8695042133331299 0.4189446866512299 0 -0.07111898809671402 0.07498487830162048 -0.1648336797952652 1</Transform></Instance>
<Instance id="inst1920976" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;8:"></ApplicationRef>
<Transform id="id388">-0.6893028616905212 -0.1355008780956268 0.7116888165473938 0 -0.6755837202072144 0.4749762713909149 -0.5639010667800903 0 -0.2616261541843414 -0.8695042133331299 -0.4189447462558746 0 0.1159540787339211 0.08947695046663284 -0.3117364346981049 1</Transform></Instance>
<Instance id="inst1994408" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;9:"></ApplicationRef>
<Transform id="id391">0.8620703816413879 -0.01532000117003918 -0.506557047367096 0 -0.4340352714061737 0.4936883747577667 -0.7535817623138428 0 0.261626124382019 0.8695042133331299 0.4189446866512299 0 -0.07739924639463425 0.07449836283922195 -0.1599020063877106 1</Transform></Instance>
<Instance id="inst1994616" name="Valve_Sub:;0,Parts" partRef="#id394">
<ApplicationRef application="TCC-VIS" label="Valve_Sub:;0,Parts.asm;0;1:"></ApplicationRef>
<Transform id="id395">-0.4546823501586914 0.6541661024093628 -0.6044260263442993 0 0.8696396350860596 0.4726210236549377 -0.1426760405302048 0 0.192330613732338 -0.5905051231384277 -0.7837811708450317 0 0.01489819493144751 0.08582951128482819 -0.04803464561700821 1</Transform></Instance>
<Instance id="inst1995632" name="Spring:;0,Parts" partRef="#id408">
<ApplicationRef application="TCC-VIS" label="Spring:;0,Parts.asm;0;1:"></ApplicationRef>
<Transform id="id409">1 2.298901691233368e-008 -2.432995493961698e-008 0 -3.89851670945518e-008 0.9999998807907105 -1.280528216796029e-008 0 -3.000558379540053e-008 -2.485903749516183e-008 0.9999998807907105 0 -1.494453005790319e-009 -7.655864275868396e-010 -5.496130661697407e-009 1</Transform></Instance>
<Instance id="inst1722840" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;10:"></ApplicationRef>
<Transform id="id421">-0.7145452499389648 -0.1154179275035858 0.6900026798248291 0 -0.652251660823822 0.4665488302707672 -0.5974109768867493 0 -0.252968043088913 -0.8769325613975525 -0.4086517691612244 0 0.1413719058036804 0.08810769766569138 -0.3271084725856781 1</Transform></Instance>
<Instance id="inst1723976" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;11:"></ApplicationRef>
<Transform id="id424">0.8450331687927246 0.005398655775934458 -0.5346865653991699 0 -0.4710902869701386 0.4805829524993897 -0.7396714687347412 0 0.252968043088913 0.8769325613975525 0.4086517691612244 0 -0.05524870008230209 0.07287602126598358 -0.1727083474397659 1</Transform></Instance>
<Instance id="inst1725736" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;12:"></ApplicationRef>
<Transform id="id427">-0.7145452499389648 -0.1154179275035858 0.6900026798248291 0 -0.652251660823822 0.4665488302707672 -0.5974109768867493 0 -0.252968043088913 -0.8769325613975525 -0.4086517691612244 0 0.1366616934537888 0.08774281293153763 -0.3234097063541412 1</Transform></Instance>
<Instance id="inst1995424" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;13:"></ApplicationRef>
<Transform id="id430">0.8450331687927246 0.005398655775934458 -0.5346865653991699 0 -0.4710902869701386 0.4805829524993897 -0.7396714687347412 0 0.252968043088913 0.8769325613975525 0.4086517691612244 0 -0.05995889753103256 0.07251112163066864 -0.1690095812082291 1</Transform></Instance>
<Instance id="inst1726232" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;14:"></ApplicationRef>
<Transform id="id433">-0.7145452499389648 -0.1154179275035858 0.6900026798248291 0 -0.652251660823822 0.4665488302707672 -0.5974109768867493 0 -0.252968043088913 -0.8769325613975525 -0.4086517691612244 0 0.1319515109062195 0.08737793564796448 -0.3197109401226044 1</Transform></Instance>
<Instance id="inst1727160" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;15:"></ApplicationRef>
<Transform id="id436">0.8450331687927246 0.005398655775934458 -0.5346865653991699 0 -0.4710902869701386 0.4805829524993897 -0.7396714687347412 0 0.252968043088913 0.8769325613975525 0.4086517691612244 0 -0.06466909497976303 0.07214623689651489 -0.165310800075531 1</Transform></Instance>
<Instance id="inst1722360" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;16:"></ApplicationRef>
<Transform id="id439">-0.7145452499389648 -0.1154179275035858 0.6900026798248291 0 -0.652251660823822 0.4665488302707672 -0.5974109768867493 0 -0.252968043088913 -0.8769325613975525 -0.4086517691612244 0 0.127241313457489 0.08701304346323013 -0.3160121440887451 1</Transform></Instance>
<Instance id="inst1995528" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;17:"></ApplicationRef>
<Transform id="id442">0.8450331687927246 0.005398655775934458 -0.5346865653991699 0 -0.4710902869701386 0.4805829524993897 -0.7396714687347412 0 0.252968043088913 0.8769325613975525 0.4086517691612244 0 -0.0693792924284935 0.07178134471178055 -0.1616120338439941 1</Transform></Instance>
<Instance id="inst1995008" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;18:"></ApplicationRef>
<Transform id="id445">-0.7145452499389648 -0.1154179275035858 0.6900026798248291 0 -0.652251660823822 0.4665488302707672 -0.5974109768867493 0 -0.252968043088913 -0.8769325613975525 -0.4086517691612244 0 0.1225311160087585 0.08664815127849579 -0.3123133778572083 1</Transform></Instance>
<Instance id="inst2053416" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;19:"></ApplicationRef>
<Transform id="id448">0.8450331687927246 0.005398655775934458 -0.5346865653991699 0 -0.4710902869701386 0.4805829524993897 -0.7396714687347412 0 0.252968043088913 0.8769325613975525 0.4086517691612244 0 -0.07408948242664337 0.0714164674282074 -0.1579132527112961 1</Transform></Instance>
<Instance id="inst2053208" name="Valve:123-700;0,Parts" partRef="#id341">
<ApplicationRef application="TCC-VIS" label="Valve:123-700;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id451">0.7850325107574463 0.06081444025039673 -0.6164620518684387 0 -0.135619044303894 0.9878994226455689 -0.07524680346250534 0 0.6044264435768127 0.1426751613616943 0.7837807536125183 0 -0.005746716633439064 -0.250409871339798 -0.08668788522481918 1</Transform></Instance>
<Instance id="inst1862560" name="Valve Spring Cap:123-704;0,Parts" partRef="#id347">
<ApplicationRef application="TCC-VIS" label="Valve Spring Cap:123-704;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id454">0.7850325703620911 0.06081447005271912 -0.6164620518684387 0 -0.3681581914424896 -0.7545340657234192 -0.543265700340271 0 -0.498180091381073 0.6534368991851807 -0.5699445009231567 0 0.03418708592653275 0.2526659965515137 0.06506367027759552 1</Transform></Instance>
<Instance id="inst1719832" name="Rocker Arm:123-600;0,Parts" partRef="#id457">
<ApplicationRef application="TCC-VIS" label="Rocker Arm:123-600;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id458">0.9026297330856323 0.4304179251194 -9.149687798526429e-007 0 -0.4304179251194 0.9026297330856323 4.554329109396349e-007 0 1.028840756589489e-006 1.773579327846164e-008 0.9999999403953552 0 0.2777610719203949 0.5800805687904358 -0.005389846861362457 1</Transform></Instance>
<Instance id="inst1729824" name="Rocker Arm_copy:123-602;0,Parts" partRef="#id463">
<ApplicationRef application="TCC-VIS" label="Rocker Arm_copy:123-602;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id464">0.9026297926902771 -0.4304177463054657 -9.298340728491894e-007 0 0.4304177463054657 0.9026297926902771 -4.242589284331189e-007 0 1.028840756589489e-006 1.773579505481848e-008 0.9999999403953552 0 0.3539793193340302 0.3309040069580078 -0.005389927886426449 1</Transform></Instance>
<Instance id="inst1726936" name="Valve Cover_copy:;0,Main" partRef="#id469">
<ApplicationRef application="TCC-VIS" label="Valve Cover_copy:;0,Main.part;0;0:"></ApplicationRef>
<Transform id="id470">1 -6.184104131534696e-005 -1.004268028736988e-006 0 1.011203266898519e-006 1.773524793691195e-008 0.9999999403953552 0 -6.184104131534696e-005 -1 -1.720678532990405e-008 0 0.05108792707324028 0.3257383704185486 0.09109834581613541 1</Transform></Instance>
<Instance id="inst1722616" name="Head Nut:123-005;0,Parts" partRef="#id245">
<ApplicationRef application="TCC-VIS" label="Head Nut:123-005;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id475">0.9999933242797852 1.67195413069976e-008 0.003653878346085548 0 0.003653871593996882 -1.767486601522705e-008 -0.9999932646751404 0 -1.665473980949628e-008 1 1.726829879089564e-008 0 0.08119496703147888 0.2477381825447083 0.2201460599899292 1</Transform></Instance>
<Instance id="inst1760240" name="Valve Spring:123-702;0,Parts" partRef="#id327">
<ApplicationRef application="TCC-VIS" label="Valve Spring:123-702;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id478">-0.8213930130004883 0.3830220103263855 0.4226199984550476 0 -0.3830239772796631 0.1786065548658371 -0.9063069224357605 0 -0.4226182103157044 -0.9063078165054321 4.008188341231289e-007 0 -0.141640841960907 0.3886727094650269 0.1220077648758888 1</Transform></Instance>
<Instance id="inst1724160" name="Valve Cover:123-701;0,Parts" partRef="#id481">
<ApplicationRef application="TCC-VIS" label="Valve Cover:123-701;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id482">-1.552728390308289e-009 5.031413063960599e-009 -1 0 5.031413063960599e-009 1 5.031413063960599e-009 0 1 -5.031413063960599e-009 -1.552728390308289e-009 0 0.2239999771118164 0.03198792412877083 0.02350873127579689 1</Transform></Instance>
<Instance id="inst1723752" name="Head Stud:123-006;0,Parts" partRef="#id46">
<ApplicationRef application="TCC-VIS" label="Head Stud:123-006;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id489">1.421973649939901e-012 0.002356703858822584 -0.9999971985816956 0 -6.033720745257654e-010 -0.9999971985816956 -0.002356703858822584 0 -1 6.033737398603023e-010 -3.700562300775484e-019 0 -0.2949999570846558 0.02160527557134628 -0.1053286641836166 1</Transform></Instance>
<Instance id="inst1725216" name="Head Stud:123-006;0,Parts" partRef="#id46">
<ApplicationRef application="TCC-VIS" label="Head Stud:123-006;0,Parts.part;0;2:"></ApplicationRef>
<Transform id="id492">-5.582201367815287e-013 -0.0009254564647562802 -0.9999995827674866 0 -6.028238463962055e-010 -0.9999995827674866 0.0009254564647562802 0 -1 6.028241239519616e-010 3.326781192647572e-016 0 -0.2949999570846558 0.02149887569248676 0.0004925570683553815 1</Transform></Instance>
<Instance id="inst1758176" name="Head Stud:123-006;0,Parts" partRef="#id46">
<ApplicationRef application="TCC-VIS" label="Head Stud:123-006;0,Parts.part;0;3:"></ApplicationRef>
<Transform id="id495">1.421973649939901e-012 0.002356703858822584 -0.9999971985816956 0 -6.033720745257654e-010 -0.9999971985816956 -0.002356703858822584 0 -1 6.033737398603023e-010 -3.700562300775484e-019 0 -0.2949999570846558 0.123807780444622 -0.1001014932990074 1</Transform></Instance>
<Instance id="inst1919952" name="Lifter:123-923;0,Parts" partRef="#id52">
<ApplicationRef application="TCC-VIS" label="Lifter:123-923;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id498">2.757793993168889e-013 4.575816179956671e-013 1 0 4.575816179956671e-013 -1 4.575816179956671e-013 0 1 4.575816179956671e-013 -2.757793993168889e-013 0 0.09999999403953552 -0.1338488161563873 0.03437212482094765 1</Transform></Instance>
<Instance id="inst2053728" name="Lifter:123-923;0,Parts" partRef="#id52">
<ApplicationRef application="TCC-VIS" label="Lifter:123-923;0,Parts.part;0;2:"></ApplicationRef>
<Transform id="id501">4.052314039881821e-013 1.110223024625157e-015 1 0 1.110223024625157e-015 1 -1.110223024625157e-015 0 -1 1.110223024625157e-015 4.052314039881821e-013 0 -0.09999999403953552 -0.06615116447210312 0.01437209732830524 1</Transform></Instance>
<Instance id="inst2050288" name="Lifter:123-923;0,Parts" partRef="#id52">
<ApplicationRef application="TCC-VIS" label="Lifter:123-923;0,Parts.part;0;3:"></ApplicationRef>
<Transform id="id504">4.052314039881821e-013 1.110223024625157e-015 1 0 1.110223024625157e-015 1 -1.110223024625157e-015 0 -1 1.110223024625157e-015 4.052314039881821e-013 0 -0.09999999403953552 -0.06615117192268372 -0.005627896171063185 1</Transform></Instance>
<Instance id="inst1998064" name="rod:123-699;0,Parts" partRef="#id58">
<ApplicationRef application="TCC-VIS" label="rod:123-699;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id507">-0.9861037135124207 0.1661308258771896 1.702963710921711e-016 0 -0.1661308258771896 -0.9861037135124207 -3.509013978502231e-016 0 1.096343463342109e-016 -3.743166442952229e-016 1 0 -0.07101806253194809 -0.02219301089644432 -0.01999999769032002 1</Transform></Instance>
<Part id="id14" name="2_Cylinder_Engine" instanceRefs="inst1779056 inst1913768 inst1910440 inst1937376 inst1895856 inst2026000 inst1848008 inst2010456 inst1758176 inst1919952 inst2053728 inst2050288 inst1998064" type="assembly">
<UserData id="id33" type="Hidden_Metadata">
<UserValue value="156001" title="TOOLKIT_CUSTOMER"></UserValue></UserData>
<UserData id="id44">
<UserValue value="2_Cylinder_Engine" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Jan-30-1998 16:58:30.00" title="Version Create Date + Time"></UserValue>
<UserValue value="2 Cylinder Engine" title="I-DEAS Name"></UserValue>
<UserValue value="123-001" title="I-DEAS Part Number"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="Jan-10-2005 13:23:55.05" title="Version Mod. Date + Time"></UserValue></UserData>
<Occurrence id="id16" instanceRefs="#inst1798736">
<Transform id="id17">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</Transform></Occurrence></Part>
<Part id="id46" name="Head Stud:123-006;0,Parts" type="solid">
<Bound id="id49" values="-0.03247146308422089 0.07456196844577789 -0.1150000020861626 0.006500001531094313 0.006495191715657711 0.1150000020861626"></Bound>
<Representation id="id50" format="JT" location="./2_Cylinder_Engine/Head_Stud_123_006_0_Parts.jt"></Representation></Part>
<Part id="id52" name="Lifter:123-923;0,Parts" type="solid">
<Bound id="id55" values="-0.02437210455536842 -0.03384878858923912 -0.04250000044703484 0.00774999987334013 0.007749963086098433 0.04250000044703484"></Bound>
<Representation id="id56" format="JT" location="./2_Cylinder_Engine/Lifter_123_923_0_Parts.jt"></Representation></Part>
<Part id="id58" name="rod:123-699;0,Parts" type="solid">
<Bound id="id61" values="0.02005359902977943 -0.006323420908302069 0 0.09100000560283661 0.03700000047683716 0.009999999776482582"></Bound>
<Representation id="id62" format="JT" location="./2_Cylinder_Engine/rod_123_699_0_Parts.jt"></Representation></Part>
<Part id="id64" name="Piston Sub:;0,Parts" instanceRefs="inst1912768 inst1865720" type="assembly">
<UserData id="id72">
<UserValue value="Piston Sub" title="I-DEAS Name"></UserValue>
<UserValue value="Piston Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue></UserData>
<Occurrence id="id66" instanceRefs="#inst1798736 #inst1937376">
<Transform id="id67">-1 -1.334063881586189e-008 -7.982826621955041e-010 0 1.10096191110321e-032 -1 -3.018818806569426e-016 0 -7.293991291219912e-017 -3.018818806569426e-016 1 0 -0.1368601024150848 0.06445372104644775 0.003820367390289903 1</Transform></Occurrence></Part>
<Part id="id74" name="Piston:123-844;0,Parts" type="solid">
<Bound id="id80" values="0.0101108755916357 0.009526152163743973 0 0.05324159190058708 0.04650000110268593 0.04649999737739563"></Bound>
<Occurrence id="id76" materialRef="id77" instanceRefs="#inst1798736 #inst1937376 #inst1912768">
<Transform id="id78">-1 -3.025554562441357e-008 -3.172106577409295e-009 0 1.10096191110321e-032 -1.00000011920929 -3.018819071267222e-016 0 -7.293991291219912e-017 -3.018819071267222e-016 1.00000011920929 0 -0.2946771681308746 0.07397986948490143 0.01617963425815105 1</Transform></Occurrence>
<Representation id="id81" format="JT" location="./2_Cylinder_Engine/Piston_123_844_0_Parts.jt"></Representation></Part>
<Part id="id83" name="Piston pin:123-845;0,Parts" type="solid">
<Bound id="id86" values="-0.2534925639629364 0.09658930450677872 0.04250000044703484 0.01099999435245991 0.01099186204373837 0.04250000044703484"></Bound>
<Representation id="id87" format="JT" location="./2_Cylinder_Engine/Piston_pin_123_845_0_Parts.jt"></Representation></Part>
<Part id="id89" name="Piston Sub:;0,Parts" instanceRefs="inst1671584 inst2012776" type="assembly">
<UserData id="id100">
<UserValue value="Piston Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="Jan-30-1998 16:58:24.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Piston Sub" title="I-DEAS Name"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="May-03-1999 15:12:04.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id108" name="CamShaft Sub:123-990;0,Parts" instanceRefs="inst2054176 inst1938944" type="assembly">
<UserData id="id121">
<UserValue value="CamShaft Sub:123-990;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="Jan-30-1998 16:58:25.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="CamShaft Sub" title="I-DEAS Name"></UserValue>
<UserValue value="123-990" title="I-DEAS Part Number"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="Aug-14-2001 14:11:35.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id123" name="Cam_shaft:123-457;0,Parts" type="solid">
<Bound id="id126" values="0.05063954740762711 -0.03493684902787209 -4.356868157628924e-005 0.1267500072717667 0.02063110843300819 0.01902950927615166"></Bound>
<Representation id="id127" format="JT" location="./2_Cylinder_Engine/Cam_shaft_123_457_0_Parts.jt"></Representation></Part>
<Part id="id129" name="cam_gear:123-456;0,Parts" type="solid">
<Bound id="id132" values="0 -0.1000000014901161 -0.002500000409781933 0.06898061186075211 0.06888007372617722 0.01250000018626452"></Bound>
<Representation id="id133" format="JT" location="./2_Cylinder_Engine/cam_gear_123_456_0_Parts.jt"></Representation></Part>
<Part id="id135" name="Crank_Sub:123-555;0,Parts" instanceRefs="inst1838360 inst1857888" type="assembly">
<UserData id="id148">
<UserValue value="Crank_Sub:123-555;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Aug-14-2001 14:13:01.00" title="Version Create Date + Time"></UserValue>
<UserValue value="Crank_Sub" title="I-DEAS Name"></UserValue>
<UserValue value="123-555" title="I-DEAS Part Number"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="Aug-14-2001 14:13:01.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id150" name="crank:123-782;0,Parts" type="solid">
<Bound id="id153" values="4.847693617193727e-006 0 -0.01325000263750553 0.06299515068531036 0.03500000014901161 0.1267500072717667"></Bound>
<Representation id="id154" format="JT" location="./2_Cylinder_Engine/crank_123_782_0_Parts.jt"></Representation></Part>
<Part id="id156" name="crank_gear:123-783;0,Parts" type="solid">
<Bound id="id159" values="0 -0.0001077877532225102 -0.002500000409781933 0.03597993031144142 0.03586557507514954 0.01250000018626452"></Bound>
<Representation id="id160" format="JT" location="./2_Cylinder_Engine/crank_gear_123_783_0_Parts.jt"></Representation></Part>
<Part id="id162" name="Body Sub:123-002;0,Parts" instanceRefs="inst2026392 inst2026184 inst1996904 inst1858736 inst1726008 inst1729056 inst1724160 inst1723752 inst1725216" type="assembly">
<UserData id="id177">
<UserValue value="Body Sub:123-002;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="Jan-30-1998 16:58:29.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Body Sub" title="I-DEAS Name"></UserValue>
<UserValue value="123-002" title="I-DEAS Part Number"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="Aug-14-2001 14:10:00.00" title="Version Mod. Date + Time"></UserValue></UserData>
<Occurrence id="id164" instanceRefs="#inst1798736 #inst2010456">
<Transform id="id165">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</Transform></Occurrence></Part>
<Part id="id179" name="Case_r:123-200;0,Parts" type="solid">
<Bound id="id184" values="0 -0.04548577964305878 -0.003500004298985004 0.0949999988079071 0.1354857832193375 0.1164999976754189"></Bound>
<Occurrence id="id181" materialRef="id182" instanceRefs="#inst1798736 #inst2010456 #inst2026392"></Occurrence>
<Representation id="id185" format="JT" location="./2_Cylinder_Engine/Case_r_123_200_0_Parts.jt"></Representation></Part>
<Part id="id187" name="Cylinder_1:123-100;0,Parts" type="solid">
<Bound id="id193" values="0.01856433786451817 0.05655883997678757 2.846240931830835e-007 0.08050000667572022 0.0950000062584877 0.08000028133392334"></Bound>
<Occurrence id="id189" materialRef="id190" instanceRefs="#inst1798736 #inst2010456 #inst2026184">
<Transform id="id191">1 -5.030475147549396e-009 -8.559119635265233e-008 0 1.553537853915543e-009 -1.993428355717697e-008 1 0 -5.03141173169297e-009 -1 -1.993428355717697e-008 0 0.4018276929855347 0.004671174101531506 -0.01877834275364876 1</Transform></Occurrence>
<Representation id="id194" format="JT" location="./2_Cylinder_Engine/Cylinder_1_123_100_0_Parts.jt"></Representation></Part>
<Part id="id196" name="Cylinder_2:123-101;0,Parts" type="solid">
<Bound id="id200" values="0.01856433786451817 0.05655883997678757 2.846240931830835e-007 0.08050000667572022 0.0950000062584877 0.08000028133392334"></Bound>
<Occurrence id="id198" materialRef="id190" instanceRefs="#inst1798736 #inst2010456 #inst1996904"></Occurrence>
<Representation id="id201" format="JT" location="./2_Cylinder_Engine/Cylinder_2_123_101_0_Parts.jt"></Representation></Part>
<Part id="id203" name="cylinder bolt pattern:;0,Parts" type="solid">
<Bound id="id206" values="-0.1074714586138725 0.0745619609951973 -0.1150000020861626 0.08149999380111694 0.08149999380111694 0.1150000020861626"></Bound>
<Representation id="id207" format="JT" location="./2_Cylinder_Engine/cylinder_bolt_pattern__0_Parts.jt"></Representation></Part>
<Part id="id209" name="Head_1:123-150;0,Parts" type="solid">
<Bound id="id215" values="0.005008736159652472 -0.03048798069357872 0.04119380190968514 0.1079999953508377 0.09020166844129562 0.0411965511739254"></Bound>
<Occurrence id="id211" materialRef="id212" instanceRefs="#inst1798736 #inst2010456 #inst1726008">
<Transform id="id213">-1.553142503496474e-009 5.031413952139019e-009 -1 0 5.031442373848449e-009 1 5.031413063960599e-009 0 1 -7.856474439904559e-007 -1.082494804904854e-007 0 0.5421041250228882 0.03720489889383316 0.04404613375663757 1</Transform></Occurrence>
<Representation id="id216" format="JT" location="./2_Cylinder_Engine/Head_1_123_150_0_Parts.jt"></Representation></Part>
<Part id="id218" name="Head2 Sub:;0,Parts" instanceRefs="inst1727816 inst2027256 inst1842808 inst1906944 inst2052896 inst1725624 inst1994616 inst1719832 inst1729824 inst1726936 inst1722616 inst1760240" type="assembly">
<UserData id="id230">
<UserValue value="Head2 Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="Jan-30-1998 16:58:27.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Head2 Sub" title="I-DEAS Name"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="May-03-1999 15:12:04.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id232" name="Head_2:123-151;0,Parts" type="solid">
<Bound id="id236" values="0.005008736159652472 -0.03048798069357872 -0.04119383916258812 0.1079999953508377 0.09020166844129562 0.04119651019573212"></Bound>
<Occurrence id="id234" materialRef="id212" instanceRefs="#inst1798736 #inst2010456 #inst1729056 #inst1727816"></Occurrence>
<Representation id="id237" format="JT" location="./2_Cylinder_Engine/Head_2_123_151_0_Parts.jt"></Representation></Part>
<Part id="id239" name="Spark Plug:;0,Parts" type="solid">
<Bound id="id242" values="0.03006996028125286 0.2239631712436676 0.02060705050826073 0.01078151073306799 0.009165501222014427 0.0493929535150528"></Bound>
<Representation id="id243" format="JT" location="./2_Cylinder_Engine/Spark_Plug__0_Parts.jt"></Representation></Part>
<Part id="id245" name="Head Nut:123-005;0,Parts" type="solid">
<Bound id="id248" values="0.02565165981650353 0.2141639441251755 -0.008499999530613422 0.01200000010430813 0.01199112832546234 0.008499999530613422"></Bound>
<Representation id="id249" format="JT" location="./2_Cylinder_Engine/Head_Nut_123_005_0_Parts.jt"></Representation></Part>
<Part id="id251" name="Rocker_Sub:;0,Parts" instanceRefs="inst2033120 inst1789832 inst2033672 inst1949072" type="assembly">
<UserData id="id262">
<UserValue value="Rocker_Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="Jan-30-1998 16:58:27.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Rocker_Sub" title="I-DEAS Name"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="May-03-1999 15:12:04.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id264" name="Rocker Arm Shaft:123-601;0,Parts" type="solid">
<Bound id="id267" values="-0.04317900538444519 0.4631594121456146 0.05750000104308128 0.006500000134110451 0.006495170295238495 0.05750000104308128"></Bound>
<Representation id="id268" format="JT" location="./2_Cylinder_Engine/Rocker_Arm_Shaft_123_601_0_Parts.jt"></Representation></Part>
<Part id="id270" name="Rocker_Mount_Sub:;0,Parts" instanceRefs="inst1796000 inst2030512 inst1725832 inst2029080" type="assembly">
<UserData id="id276">
<UserValue value="Rocker_Mount_Sub" title="I-DEAS Name"></UserValue>
<UserValue value="Rocker_Mount_Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue></UserData></Part>
<Part id="id278" name="Rocker Mount:123-604;0,Parts" type="solid">
<Bound id="id281" values="0.005044352263212204 -0.05961518362164497 0.007500000298023224 0.0494999997317791 0.02099999971687794 0.007500000298023224"></Bound>
<Representation id="id282" format="JT" location="./2_Cylinder_Engine/Rocker_Mount_123_604_0_Parts.jt"></Representation></Part>
<Part id="id284" name="Rocker Mount Cap:123-608;0,Parts" type="solid">
<Bound id="id287" values="0.005044352263212204 -0.05511518567800522 0.007500000298023224 0.0494999997317791 0.006499998271465302 0.007500000298023224"></Bound>
<Representation id="id288" format="JT" location="./2_Cylinder_Engine/Rocker_Mount_Cap_123_608_0_Parts.jt"></Representation></Part>
<Part id="id290" name="Rocker Bolt:123-603;0,Parts" type="solid">
<Bound id="id293" values="0.02305358275771141 0.2096639275550842 -0.04050000011920929 0.007499999366700649 0.007494449149817228 0.04050000011920929"></Bound>
<Representation id="id294" format="JT" location="./2_Cylinder_Engine/Rocker_Bolt_123_603_0_Parts.jt"></Representation></Part>
<Part id="id299" name="Rocker_Mount_Sub:;0,Parts" instanceRefs="inst1996808 inst1867136 inst1948848 inst1997256" type="assembly">
<UserData id="id310">
<UserValue value="Rocker_Mount_Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="Jan-30-1998 16:58:27.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Rocker_Mount_Sub" title="I-DEAS Name"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="May-03-1999 15:12:04.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id327" name="Valve Spring:123-702;0,Parts" type="solid">
<Bound id="id330" values="-0.2873985767364502 -0.0646171048283577 0.0324999988079071 0.008999995887279511 0.008993340656161308 0.0324999988079071"></Bound>
<Representation id="id331" format="JT" location="./2_Cylinder_Engine/Valve_Spring_123_702_0_Parts.jt"></Representation></Part>
<Part id="id333" name="Valve_Sub:;0,Parts" instanceRefs="inst1914472 inst1734000 inst1730152" type="assembly">
<UserData id="id339">
<UserValue value="Valve_Sub" title="I-DEAS Name"></UserValue>
<UserValue value="Valve_Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue></UserData></Part>
<Part id="id341" name="Valve:123-700;0,Parts" type="solid">
<Bound id="id344" values="0.1265590041875839 0.2941140830516815 0 0.05499999970197678 0.01800000295042992 0.01798668131232262"></Bound>
<Representation id="id345" format="JT" location="./2_Cylinder_Engine/Valve_123_700_0_Parts.jt"></Representation></Part>
<Part id="id347" name="Valve Spring Cap:123-704;0,Parts" type="solid">
<Bound id="id350" values="0.2066644430160523 0.2842055261135101 0 0.004499997943639755 0.01600000448524952 0.01598815992474556"></Bound>
<Representation id="id351" format="JT" location="./2_Cylinder_Engine/Valve_Spring_Cap_123_704_0_Parts.jt"></Representation></Part>
<Part id="id353" name="Spring:;0,Parts" instanceRefs="inst1910040 inst1910640 inst1911040 inst1911768 inst1912168 inst1912968 inst1920696 inst1827264 inst1920976 inst1994408" type="assembly">
<UserData id="id359">
<UserValue value="Spring" title="I-DEAS Name"></UserValue>
<UserValue value="Spring:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue></UserData></Part>
<Part id="id361" name="Spring Link:;0,Parts" type="solid">
<Bound id="id364" values="0.1303011178970337 -0.04939981177449226 0.007499259896576405 0.001999998930841684 0.01499851979315281 0.007499259896576405"></Bound>
<Representation id="id365" format="JT" location="./2_Cylinder_Engine/Spring_Link__0_Parts.jt"></Representation></Part>
<Part id="id394" name="Valve_Sub:;0,Parts" instanceRefs="inst1995632 inst2053208 inst1862560" type="assembly">
<UserData id="id406">
<UserValue value="Valve_Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Jan-30-1998 16:58:26.00" title="Version Create Date + Time"></UserValue>
<UserValue value="Valve_Sub" title="I-DEAS Name"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="May-03-1999 15:12:04.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id408" name="Spring:;0,Parts" instanceRefs="inst1722840 inst1723976 inst1725736 inst1995424 inst1726232 inst1727160 inst1722360 inst1995528 inst1995008 inst2053416" type="assembly">
<UserData id="id419">
<UserValue value="Spring:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="Jan-30-1998 16:58:25.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Spring" title="I-DEAS Name"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="May-03-1999 15:12:04.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id457" name="Rocker Arm:123-600;0,Parts" type="solid">
<Bound id="id460" values="-0.2874188423156738 -0.1816282123327255 0.04250000044703484 0.03894562274217606 0.01755017042160034 0.04250000044703484"></Bound>
<Representation id="id461" format="JT" location="./2_Cylinder_Engine/Rocker_Arm_123_600_0_Parts.jt"></Representation></Part>
<Part id="id463" name="Rocker Arm_copy:123-602;0,Parts" type="solid">
<Bound id="id466" values="-0.2914990782737732 -0.1816282123327255 0.04250000044703484 0.03894564881920815 0.01755017600953579 0.04250000044703484"></Bound>
<Representation id="id467" format="JT" location="./2_Cylinder_Engine/Rocker_Arm_copy_123_602_0_Parts.jt"></Representation></Part>
<Part id="id469" name="Valve Cover_copy:;0,Main" type="solid">
<Bound id="id472" values="0.003508739871904254 -0.03198798000812531 0.0386538989841938 0.101500004529953 0.09204161167144775 0.03634610027074814"></Bound>
<Representation id="id473" format="JT" location="./2_Cylinder_Engine/Valve_Cover_copy__0_Main.jt"></Representation></Part>
<Part id="id481" name="Valve Cover:123-701;0,Parts" type="solid">
<Bound id="id486" values="0.003508739871904254 -0.03198803216218948 0.1113460958003998 0.101500004529953 0.09204155951738358 0.03634609654545784"></Bound>
<Occurrence id="id483" instanceRefs="#inst1798736 #inst2010456 #inst1724160">
<Transform id="id484">-1.552729944620523e-009 5.031413063960599e-009 -1 0 5.0314401534024e-009 1 5.031413063960599e-009 0 1 -3.418919334308157e-007 -1.096145751944277e-007 0 0.6029092669487 0.04294551536440849 0.04271972924470902 1</Transform></Occurrence>
<Representation id="id487" format="JT" location="./2_Cylinder_Engine/Valve_Cover_123_701_0_Parts.jt"></Representation></Part></InstanceGraph>
<Material id="id77" diffuse="1 0 1" specular="1 0 1" emissive="0 0 0" ambient="0 0 0" shininess="96" alpha="0.1000000238418579"></Material>
<Material id="id182" diffuse="0.847058892250061 0.847058892250061 0.847058892250061" specular="0.8000000715255737 0.8000000715255737 0.8000000715255737" emissive="0 0 0" ambient="0.1490196138620377 0.1490196138620377 0.1490196138620377" shininess="96" alpha="0.5"></Material>
<Material id="id190" diffuse="0.6509804129600525 0.7921569347381592 0.9411765336990356" specular="0.6509804129600525 0.7921569347381592 0.9411765336990356" emissive="0 0 0" ambient="0.1490196138620377 0.1490196138620377 0.1490196138620377" shininess="96" alpha="0.5"></Material>
<Material id="id212" diffuse="1 0 0" specular="1 0 0" emissive="0 0 0" ambient="0.1490196138620377 0.1490196138620377 0.1490196138620377" shininess="96" alpha="0.5"></Material></ProductDef></PLMXML>

View File

@ -0,0 +1,511 @@
<?xml version="1.0" ?>
<PLMXML xmlns="http://www.plmxml.org/Schemas/PLMXMLSchema"
schemaVersion="4" date="2005-02-14" time="21:15:28" author="Vis Mockup 5.1.0">
<ProductDef id="id1">
<UserData id="id12" type="__TCC-VIS_MONIKER_INFO">
<UserValue value="C:\Program Files\UGS\JT2Go\Examples\2_Cylinder_Engine_Example\2_Cylinder_Engine.jt" title="Path"></UserValue>
<UserValue value="file" title="FA_Protocol"></UserValue>
<UserValue value="C:/Program Files/UGS/JT2Go/Examples/2_Cylinder_Engine_Example/2_Cylinder_Engine.jt" title="object_id"></UserValue>
<UserValue value="C:\Program Files\UGS\JT2Go\Examples\2_Cylinder_Engine_Example\2_Cylinder_Engine.jt" title="LocalCopy"></UserValue>
<UserValue value="2.0" title="Version"></UserValue>
<UserValue value="local" title="FA_Service"></UserValue>
<UserValue value="No" title="MkIsFolder"></UserValue>
<UserValue value="2_Cylinder_Engine.jt" title="Title"></UserValue>
<UserValue value="DirectModel.Document" title="FileTypeID"></UserValue></UserData>
<InstanceGraph id="id2" rootRefs="inst1798736">
<Instance id="inst1798736" name="2_Cylinder_Engine" partRef="#id14">
<ApplicationRef application="TCC-VIS" label="2_Cylinder_Engine.asm;0;0:"></ApplicationRef>
<UserData id="id20" type="Hidden_Metadata">
<UserValue value="156001" title="TOOLKIT_CUSTOMER"></UserValue></UserData>
<UserData id="id31">
<UserValue value="2_Cylinder_Engine" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Jan-30-1998 16:58:30.00" title="Version Create Date + Time"></UserValue>
<UserValue value="2 Cylinder Engine" title="I-DEAS Name"></UserValue>
<UserValue value="123-001" title="I-DEAS Part Number"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="Jan-10-2005 13:23:55.05" title="Version Mod. Date + Time"></UserValue></UserData>
<Transform id="id15">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</Transform></Instance>
<Instance id="inst1779056" name="Head Stud:123-006;0,Parts" partRef="#id46">
<ApplicationRef application="TCC-VIS" label="Head Stud:123-006;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id47">1.421973649939901e-012 0.002356703858822584 -0.9999971985816956 0 -6.033720745257654e-010 -0.9999971985816956 -0.002356703858822584 0 -1 6.033737398603023e-010 -3.700562300775484e-019 0 -0.2949999868869782 0.1321395188570023 -0.003983345814049244 1</Transform></Instance>
<Instance id="inst1913768" name="Lifter:123-923;0,Parts" partRef="#id52">
<ApplicationRef application="TCC-VIS" label="Lifter:123-923;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id53">2.757793993168889e-013 4.575816179956671e-013 1 0 4.575816179956671e-013 -1 4.575816179956671e-013 0 1 4.575816179956671e-013 -2.757793993168889e-013 0 0.1000000014901161 -0.1338488310575485 0.05437212437391281 1</Transform></Instance>
<Instance id="inst1910440" name="rod:123-699;0,Parts" partRef="#id58">
<ApplicationRef application="TCC-VIS" label="rod:123-699;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id59">0.9861037135124207 -0.1661308258771896 -1.166810754732375e-015 0 0.1661308258771896 0.9861037135124207 -1.062013085640994e-015 0 1.327029577804367e-015 8.534118465009541e-016 1 0 0.07101806253194809 0.02219301462173462 0.02199999988079071 1</Transform></Instance>
<Instance id="inst1937376" name="Piston Sub:;0,Parts" partRef="#id64">
<ApplicationRef application="TCC-VIS" label="Piston Sub:;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id65">-1 1.10096191110321e-032 -7.293991291219912e-017 0 1.10096191110321e-032 -1 -3.018818806569426e-016 0 -7.293991291219912e-017 -3.018818806569426e-016 1 0 -0.1368601024150848 0.06445372104644775 0.003820367390289903 1</Transform></Instance>
<Instance id="inst1912768" name="Piston:123-844;0,Parts" partRef="#id74">
<ApplicationRef application="TCC-VIS" label="Piston:123-844;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id75">-1 -1.334063881586189e-008 7.982825511732017e-010 0 1.10096191110321e-032 -1 -3.018818806569426e-016 0 -7.293991291219912e-017 -3.018818806569426e-016 1 0 -0.294677197933197 0.07397986948490143 0.01617963239550591 1</Transform></Instance>
<Instance id="inst1865720" name="Piston pin:123-845;0,Parts" partRef="#id83">
<ApplicationRef application="TCC-VIS" label="Piston pin:123-845;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id84">0.9995650053024292 0.02949320152401924 -7.979323313200837e-010 0 -0.0294931884855032 0.9995650053024292 2.354164085893729e-011 0 -3.085015966644567e-015 2.168479519145078e-015 1 0 -0.0453154630959034 -0.02461725845932961 -0.02632036805152893 1</Transform></Instance>
<Instance id="inst1895856" name="Piston Sub:;0,Parts" partRef="#id89">
<ApplicationRef application="TCC-VIS" label="Piston Sub:;0,Parts.asm;0;1:"></ApplicationRef>
<Transform id="id90">1 0 0 0 0 1 0 0 0 0 1 0 0.1368601024150848 -0.06445372104644775 -0.03617963194847107 1</Transform></Instance>
<Instance id="inst1671584" name="Piston:123-844;0,Parts" partRef="#id74">
<ApplicationRef application="TCC-VIS" label="Piston:123-844;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id102">-1 -1.334063881586189e-008 7.041613514502387e-009 0 -1.003604666278664e-019 -1 1.355268465125744e-016 0 -1.736007260287489e-016 1.355268465125744e-016 1 0 -0.294677197933197 0.07397986948490143 0.0161796361207962 1</Transform></Instance>
<Instance id="inst2012776" name="Piston pin:123-845;0,Parts" partRef="#id83">
<ApplicationRef application="TCC-VIS" label="Piston pin:123-845;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id105">0.9995650053024292 0.02949320152401924 -7.038550631222051e-009 0 -0.0294931884855032 0.9995650053024292 2.076799010541919e-010 0 1.57434811062825e-016 -2.681045890006053e-016 1 0 -0.0453154630959034 -0.02461725845932961 -0.02632036432623863 1</Transform></Instance>
<Instance id="inst2026000" name="CamShaft Sub:123-990;0,Parts" partRef="#id108">
<ApplicationRef application="TCC-VIS" label="CamShaft Sub:123-990;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id109">0.7071067690849304 -0.7071067690849304 4.055928498874345e-013 0 0.7071067690849304 0.7071067690849304 6.101357784178425e-016 0 -2.872288724139332e-013 2.863660101149607e-013 1 0 0.04717867448925972 -0.0528213270008564 -0.08894477039575577 1</Transform></Instance>
<Instance id="inst2054176" name="Cam_shaft:123-457;0,Parts" partRef="#id123">
<ApplicationRef application="TCC-VIS" label="Cam_shaft:123-457;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id124">1.214013511940948e-008 -7.440697502580917e-010 1 0 -0.9059386253356934 0.4234090149402618 3.675416633368289e-013 0 -0.4234090149402618 -0.9059386253356934 1.728632428171784e-013 0 -0.03029589354991913 -0.05256131291389465 0.02505522221326828 1</Transform></Instance>
<Instance id="inst1938944" name="cam_gear:123-456;0,Parts" partRef="#id129">
<ApplicationRef application="TCC-VIS" label="cam_gear:123-456;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id130">-0.4234090149402618 -0.9059386253356934 1.726649286873036e-013 0 -0.9059386253356934 0.4234090149402618 3.675724817835818e-013 0 -1.214013511940948e-008 7.440699723026967e-010 -1 0 -0.09059386700391769 -0.02437981590628624 -0.04005522653460503 1</Transform></Instance>
<Instance id="inst1848008" name="Crank_Sub:123-555;0,Parts" partRef="#id135">
<ApplicationRef application="TCC-VIS" label="Crank_Sub:123-555;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id136">-0.5 -0.8660253882408142 -2.979083167524747e-016 0 0.8660253882408142 -0.5 -7.816530680941419e-016 0 5.279772353637604e-016 -6.488226847947026e-016 1 0 0.01809818297624588 -0.06969784200191498 -0.1055598109960556 1</Transform></Instance>
<Instance id="inst1838360" name="crank:123-782;0,Parts" partRef="#id150">
<ApplicationRef application="TCC-VIS" label="crank:123-782;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id151">-0.9390942454338074 0.3436597287654877 1.284025318025572e-016 0 -0.3436597883701325 -0.9390941858291626 -6.660528172495127e-016 0 2.47777798279003e-008 -2.063888393522007e-009 1 0 -0.05131101608276367 -0.05052240565419197 0.1075598075985909 1</Transform></Instance>
<Instance id="inst1857888" name="crank_gear:123-783;0,Parts" partRef="#id156">
<ApplicationRef application="TCC-VIS" label="crank_gear:123-783;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id157">-0.9390942454338074 0.3436597287654877 3.809448359261655e-016 0 -0.3436597883701325 -0.9390941858291626 -2.583991531420675e-015 0 2.47777798279003e-008 -2.063890391923451e-009 1 0 -0.05131101980805397 -0.05052240565419197 -0.01844018884003162 1</Transform></Instance>
<Instance id="inst2010456" name="Body Sub:123-002;0,Parts" partRef="#id162">
<ApplicationRef application="TCC-VIS" label="Body Sub:123-002;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id163">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</Transform></Instance>
<Instance id="inst2026392" name="Case_r:123-200;0,Parts" partRef="#id179">
<ApplicationRef application="TCC-VIS" label="Case_r:123-200;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id180">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</Transform></Instance>
<Instance id="inst2026184" name="Cylinder_1:123-100;0,Parts" partRef="#id187">
<ApplicationRef application="TCC-VIS" label="Cylinder_1:123-100;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id188">1 -5.031413063960599e-009 -1.553538520049358e-009 0 1.553538409027055e-009 -1.993428355717697e-008 1 0 -5.031413063960599e-009 -1 -1.993428355717697e-008 0 0.1269356608390808 -5.273894387869405e-008 -0.0365588441491127 1</Transform></Instance>
<Instance id="inst1996904" name="Cylinder_2:123-101;0,Parts" partRef="#id196">
<ApplicationRef application="TCC-VIS" label="Cylinder_2:123-101;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id197">-1 -1.490642098644912e-008 -1.665472915135524e-008 0 1.665472915135524e-008 -1.764261092773722e-008 -1 0 1.490642098644912e-008 -1 1.764261092773722e-008 0 -0.1269356608390808 3.299700068737366e-009 0.0365588404238224 1</Transform></Instance>
<Instance id="inst1858736" name="cylinder bolt pattern:;0,Parts" partRef="#id203">
<ApplicationRef application="TCC-VIS" label="cylinder bolt pattern:;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id204">2.459232373297482e-009 0.7071067690849304 -0.7071067690849304 0 -4.656259378066352e-009 -0.7071067690849304 -0.7071067690849304 0 -1 5.031412619871389e-009 1.55353274688963e-009 0 0.06499999761581421 0.1287170201539993 -0.003270523622632027 1</Transform></Instance>
<Instance id="inst1726008" name="Head_1:123-150;0,Parts" partRef="#id209">
<ApplicationRef application="TCC-VIS" label="Head_1:123-150;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id210">-1.553133399667672e-009 5.031413063960599e-009 -1 0 5.031413063960599e-009 1 5.031413063960599e-009 0 1 -5.031413063960599e-009 -1.553133399667672e-009 0 0.2239999920129776 0.03048792481422424 0.02500873245298863 1</Transform></Instance>
<Instance id="inst1729056" name="Head2 Sub:;0,Parts" partRef="#id218">
<ApplicationRef application="TCC-VIS" label="Head2 Sub:;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id219">1.665474158585312e-008 1.004267005555448e-006 -1 0 -1 -1.666503557373744e-008 -1.665475757306467e-008 0 -1.6665051560949e-008 1 1.004267005555448e-006 0 -0.04826182126998901 -0.05911042168736458 0.03459598124027252 1</Transform></Instance>
<Instance id="inst1727816" name="Head_2:123-151;0,Parts" partRef="#id232">
<ApplicationRef application="TCC-VIS" label="Head_2:123-151;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id233">1 9.947598300641403e-014 -1.004267005555448e-006 0 1.011203266898519e-006 3.500436918102423e-008 0.9999999403953552 0 2.75101122437782e-014 -1 2.288952989822068e-013 0 0.04958733543753624 0.1757381856441498 0.08959835022687912 1</Transform></Instance>
<Instance id="inst2027256" name="Spark Plug:;0,Parts" partRef="#id239">
<ApplicationRef application="TCC-VIS" label="Spark Plug:;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id240">1 9.977915303889529e-014 -9.877358024823479e-007 0 -9.946720638254192e-007 -3.500436562831055e-008 -0.9999999403953552 0 -2.75101122437782e-014 1 -2.288952989822068e-013 0 0.02452629990875721 0.2137382179498673 0.2830735743045807 1</Transform></Instance>
<Instance id="inst1842808" name="Head Nut:123-005;0,Parts" partRef="#id245">
<ApplicationRef application="TCC-VIS" label="Head Nut:123-005;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id246">0.9999898672103882 1.657488901685156e-008 -0.004498782102018595 0 -0.004498789552599192 -1.781053349247941e-008 -0.9999898076057434 0 -1.665473980949628e-008 1 1.726835030524399e-008 0 -0.02312494441866875 0.2477381676435471 0.2203545719385147 1</Transform></Instance>
<Instance id="inst1906944" name="Rocker_Sub:;0,Parts" partRef="#id251">
<ApplicationRef application="TCC-VIS" label="Rocker_Sub:;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id252">0.9999974370002747 -7.939097296238984e-011 -0.002271066652610898 0 9.118318147522016e-016 1 3.807415215490448e-015 0 0.002271073637530208 3.500404588407946e-008 0.9999973773956299 0 -0.0001340909366263077 -0.01299998629838228 0.0001236627285834402 1</Transform></Instance>
<Instance id="inst2033120" name="Rocker Arm Shaft:123-601;0,Parts" partRef="#id264">
<ApplicationRef application="TCC-VIS" label="Rocker Arm Shaft:123-601;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id265">-0.9999850392341614 -0.004973083734512329 -0.002270016819238663 0 0.004973071627318859 -0.9999875426292419 1.127185623772675e-005 0 -0.002270089229568839 -4.575558421038295e-008 0.9999972581863403 0 0.0487947128713131 0.7686771750450134 -0.02040251158177853 1</Transform></Instance>
<Instance id="inst1789832" name="Rocker_Mount_Sub:;0,Parts" partRef="#id270">
<ApplicationRef application="TCC-VIS" label="Rocker_Mount_Sub:;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id271">1 -7.424300063618716e-011 1.35305974757749e-010 0 1.276140897124513e-015 0.9999998807907105 4.341043060584901e-016 0 -4.433523059788058e-008 -2.848764957263938e-008 0.9999998211860657 0 -1.748614808505522e-009 -9.381160293031599e-010 -7.228971310446752e-010 1</Transform></Instance>
<Instance id="inst1796000" name="Rocker Mount:123-604;0,Parts" partRef="#id278">
<ApplicationRef application="TCC-VIS" label="Rocker Mount:123-604;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id279">0.9999973773956299 1.651584646822357e-008 0.002270044526085258 0 -1.669391558323241e-008 0.9999998807907105 1.723048725921217e-008 0 -0.002270088996738195 -4.57557440824985e-008 0.9999972581863403 0 0.04950515553355217 0.3443533480167389 0.07959935814142227 1</Transform></Instance>
<Instance id="inst2030512" name="Rocker Mount Cap:123-608;0,Parts" partRef="#id284">
<ApplicationRef application="TCC-VIS" label="Rocker Mount Cap:123-608;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id285">0.9999973773956299 1.651585179729409e-008 0.002270044526085258 0 1.669392091230293e-008 -0.9999998807907105 -1.723048725921217e-008 0 0.002270088996738195 4.57557440824985e-008 -0.9999972581863403 0 0.04947110638022423 0.2571229636669159 0.09459931403398514 1</Transform></Instance>
<Instance id="inst1725832" name="Rocker Bolt:123-603;0,Parts" partRef="#id290">
<ApplicationRef application="TCC-VIS" label="Rocker Bolt:123-603;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id291">0.9984452724456787 1.914222380605679e-008 -0.05574143305420876 0 -0.05574139580130577 4.472066095217997e-008 -0.9984451532363892 0 -1.669391203051873e-008 1 1.723049436463953e-008 0 0.01820174790918827 0.326738178730011 0.2976770401000977 1</Transform></Instance>
<Instance id="inst2029080" name="Rocker Bolt:123-603;0,Parts" partRef="#id290">
<ApplicationRef application="TCC-VIS" label="Rocker Bolt:123-603;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id296">0.9984543323516846 1.913488922866691e-008 -0.05557771772146225 0 -0.05557768046855927 4.472379444564467e-008 -0.998454213142395 0 -1.669391025416189e-008 0.9999998807907105 1.723049436463953e-008 0 0.06816709786653519 0.326738178730011 0.2977887094020844 1</Transform></Instance>
<Instance id="inst2033672" name="Rocker_Mount_Sub:;0,Parts" partRef="#id299">
<ApplicationRef application="TCC-VIS" label="Rocker_Mount_Sub:;0,Parts.asm;0;1:"></ApplicationRef>
<Transform id="id300">1 -7.424300063618716e-011 1.35305974757749e-010 0 1.276140897124513e-015 0.9999998807907105 4.341043060584901e-016 0 -4.433523059788058e-008 -2.848764957263938e-008 0.9999998211860657 0 -4.064914627122107e-009 -1.459414988858043e-008 -0.09999953210353851 1</Transform></Instance>
<Instance id="inst1996808" name="Rocker Mount:123-604;0,Parts" partRef="#id278">
<ApplicationRef application="TCC-VIS" label="Rocker Mount:123-604;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id312">0.9999974370002747 1.662746029751361e-008 0.002270044526085258 0 -1.669391735958925e-008 1.00000011920929 1.723049081192585e-008 0 -0.002270061522722244 -2.438619972622291e-008 0.9999974966049194 0 0.04973216727375984 0.3443534076213837 0.07959914952516556 1</Transform></Instance>
<Instance id="inst1867136" name="Rocker Mount Cap:123-608;0,Parts" partRef="#id284">
<ApplicationRef application="TCC-VIS" label="Rocker Mount Cap:123-608;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id315">0.9999974370002747 1.662746562658413e-008 0.002270044526085258 0 1.669392268865977e-008 -1.00000011920929 -1.723049081192585e-008 0 0.002270061522722244 2.438619972622291e-008 -0.9999974966049194 0 0.0496981143951416 0.2571230232715607 0.09459911286830902 1</Transform></Instance>
<Instance id="inst1948848" name="Rocker Bolt:123-603;0,Parts" partRef="#id290">
<ApplicationRef application="TCC-VIS" label="Rocker Bolt:123-603;0,Parts.part;0;2:"></ApplicationRef>
<Transform id="id318">0.9986630082130432 1.791910797521723e-008 -0.05169311910867691 0 -0.05169309675693512 2.345346850063379e-008 -0.998663067817688 0 -1.669391025416189e-008 1.00000011920929 1.72305067991374e-008 0 0.01757495850324631 0.3267382085323334 0.2976291477680206 1</Transform></Instance>
<Instance id="inst1997256" name="Rocker Bolt:123-603;0,Parts" partRef="#id290">
<ApplicationRef application="TCC-VIS" label="Rocker Bolt:123-603;0,Parts.part;0;3:"></ApplicationRef>
<Transform id="id321">0.9986716508865356 1.791518755567267e-008 -0.05152621492743492 0 -0.05152619630098343 2.345645455648082e-008 -0.9986717104911804 0 -1.669391025416189e-008 1.00000011920929 1.723049791735321e-008 0 0.06753963232040405 0.3267382085323334 0.2977406084537506 1</Transform></Instance>
<Instance id="inst1949072" name="Rocker Arm Shaft:123-601;0,Parts" partRef="#id264">
<ApplicationRef application="TCC-VIS" label="Rocker Arm Shaft:123-601;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id324">-0.9999873042106628 -0.004487393889576197 -0.00227002170868218 0 0.004487383179366589 -0.9999898076057434 1.016931855701841e-005 0 -0.002270088996738195 -4.575493051106605e-008 0.9999972581863403 0 -0.02998023852705956 0.7686992287635803 -0.02058133110404015 1</Transform></Instance>
<Instance id="inst2052896" name="Valve Spring:123-702;0,Parts" partRef="#id327">
<ApplicationRef application="TCC-VIS" label="Valve Spring:123-702;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id328">-0.821344792842865 -0.3829995691776276 0.4227339625358582 0 -0.3831273019313812 -0.1786547750234604 -0.9062537550926209 0 0.4226182997226715 -0.9063078165054321 -4.468796817036491e-007 0 -0.2707940638065338 0.1454340070486069 0.1220441088080406 1</Transform></Instance>
<Instance id="inst1725624" name="Valve_Sub:;0,Parts" partRef="#id333">
<ApplicationRef application="TCC-VIS" label="Valve_Sub:;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id334">0.4546822905540466 0.654166042804718 0.6044259667396545 0 -0.8696395754814148 0.4726209938526154 0.1426760256290436 0 -0.1923305839300156 -0.5905050039291382 0.7837809920310974 0 0.09187051653862 0.08063256740570068 0.1662608832120895 1</Transform></Instance>
<Instance id="inst1914472" name="Valve:123-700;0,Parts" partRef="#id341">
<ApplicationRef application="TCC-VIS" label="Valve:123-700;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id342">0.7850326299667358 0.06081443279981613 -0.6164620518684387 0 -0.1356190741062164 0.9878997206687927 -0.07524674385786057 0 0.6044265031814575 0.1426751911640167 0.7837809920310974 0 -0.001248535001650453 -0.2500619888305664 -0.09022713452577591 1</Transform></Instance>
<Instance id="inst1734000" name="Valve Spring Cap:123-704;0,Parts" partRef="#id347">
<ApplicationRef application="TCC-VIS" label="Valve Spring Cap:123-704;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id348">0.7850326299667358 0.06081448495388031 -0.6164620518684387 0 -0.3924773633480072 -0.7211050391197205 -0.5709372162818909 0 -0.4792551398277283 0.6901518106460571 -0.5422225594520569 0 0.0455969013273716 0.2435131669044495 0.06938881427049637 1</Transform></Instance>
<Instance id="inst1730152" name="Spring:;0,Parts" partRef="#id353">
<ApplicationRef application="TCC-VIS" label="Spring:;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id354">1 -3.002940829333056e-008 3.437022044749938e-008 0 -4.150651022882812e-008 1.000000238418579 4.017514854126603e-008 0 3.73510147255729e-008 2.773385787691041e-008 1 0 -1.489124112907803e-008 -4.276215381793236e-009 1.08718030134014e-008 1</Transform></Instance>
<Instance id="inst1910040" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id362">-0.6893028616905212 -0.1355008780956268 0.7116888165473938 0 -0.6755837202072144 0.4749762713909149 -0.5639010667800903 0 -0.2616261541843414 -0.8695042133331299 -0.4189447462558746 0 0.1410751193761826 0.09142301231622696 -0.3314632773399353 1</Transform></Instance>
<Instance id="inst1910640" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id367">0.8620703816413879 -0.01532000117003918 -0.506557047367096 0 -0.4340352714061737 0.4936883747577667 -0.7535817623138428 0 0.261626124382019 0.8695042133331299 0.4189446866512299 0 -0.05227819457650185 0.07644443958997726 -0.1796288043260574 1</Transform></Instance>
<Instance id="inst1911040" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;2:"></ApplicationRef>
<Transform id="id370">-0.6893028616905212 -0.1355008780956268 0.7116888165473938 0 -0.6755837202072144 0.4749762713909149 -0.5639010667800903 0 -0.2616261541843414 -0.8695042133331299 -0.4189447462558746 0 0.1347948610782623 0.09093648940324783 -0.3265315294265747 1</Transform></Instance>
<Instance id="inst1911768" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;3:"></ApplicationRef>
<Transform id="id373">0.8620703816413879 -0.01532000117003918 -0.506557047367096 0 -0.4340352714061737 0.4936883747577667 -0.7535817623138428 0 0.261626124382019 0.8695042133331299 0.4189446866512299 0 -0.05855846777558327 0.07595790922641754 -0.1746970862150192 1</Transform></Instance>
<Instance id="inst1912168" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;4:"></ApplicationRef>
<Transform id="id376">-0.6893028616905212 -0.1355008780956268 0.7116888165473938 0 -0.6755837202072144 0.4749762713909149 -0.5639010667800903 0 -0.2616261541843414 -0.8695042133331299 -0.4189447462558746 0 0.1285146176815033 0.0904499888420105 -0.3215998709201813 1</Transform></Instance>
<Instance id="inst1912968" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;5:"></ApplicationRef>
<Transform id="id379">0.8620703816413879 -0.01532000117003918 -0.506557047367096 0 -0.4340352714061737 0.4936883747577667 -0.7535817623138428 0 0.261626124382019 0.8695042133331299 0.4189446866512299 0 -0.0648387148976326 0.07547140121459961 -0.1697653979063034 1</Transform></Instance>
<Instance id="inst1920696" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;6:"></ApplicationRef>
<Transform id="id382">-0.6893028616905212 -0.1355008780956268 0.7116888165473938 0 -0.6755837202072144 0.4749762713909149 -0.5639010667800903 0 -0.2616261541843414 -0.8695042133331299 -0.4189447462558746 0 0.1222343519330025 0.08996346592903137 -0.3166681826114655 1</Transform></Instance>
<Instance id="inst1827264" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;7:"></ApplicationRef>
<Transform id="id385">0.8620703816413879 -0.01532000117003918 -0.506557047367096 0 -0.4340352714061737 0.4936883747577667 -0.7535817623138428 0 0.261626124382019 0.8695042133331299 0.4189446866512299 0 -0.07111898809671402 0.07498487830162048 -0.1648336797952652 1</Transform></Instance>
<Instance id="inst1920976" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;8:"></ApplicationRef>
<Transform id="id388">-0.6893028616905212 -0.1355008780956268 0.7116888165473938 0 -0.6755837202072144 0.4749762713909149 -0.5639010667800903 0 -0.2616261541843414 -0.8695042133331299 -0.4189447462558746 0 0.1159540787339211 0.08947695046663284 -0.3117364346981049 1</Transform></Instance>
<Instance id="inst1994408" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;9:"></ApplicationRef>
<Transform id="id391">0.8620703816413879 -0.01532000117003918 -0.506557047367096 0 -0.4340352714061737 0.4936883747577667 -0.7535817623138428 0 0.261626124382019 0.8695042133331299 0.4189446866512299 0 -0.07739924639463425 0.07449836283922195 -0.1599020063877106 1</Transform></Instance>
<Instance id="inst1994616" name="Valve_Sub:;0,Parts" partRef="#id394">
<ApplicationRef application="TCC-VIS" label="Valve_Sub:;0,Parts.asm;0;1:"></ApplicationRef>
<Transform id="id395">-0.4546823501586914 0.6541661024093628 -0.6044260263442993 0 0.8696396350860596 0.4726210236549377 -0.1426760405302048 0 0.192330613732338 -0.5905051231384277 -0.7837811708450317 0 0.01489819493144751 0.08582951128482819 -0.04803464561700821 1</Transform></Instance>
<Instance id="inst1995632" name="Spring:;0,Parts" partRef="#id408">
<ApplicationRef application="TCC-VIS" label="Spring:;0,Parts.asm;0;1:"></ApplicationRef>
<Transform id="id409">1 2.298901691233368e-008 -2.432995493961698e-008 0 -3.89851670945518e-008 0.9999998807907105 -1.280528216796029e-008 0 -3.000558379540053e-008 -2.485903749516183e-008 0.9999998807907105 0 -1.494453005790319e-009 -7.655864275868396e-010 -5.496130661697407e-009 1</Transform></Instance>
<Instance id="inst1722840" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;10:"></ApplicationRef>
<Transform id="id421">-0.7145452499389648 -0.1154179275035858 0.6900026798248291 0 -0.652251660823822 0.4665488302707672 -0.5974109768867493 0 -0.252968043088913 -0.8769325613975525 -0.4086517691612244 0 0.1413719058036804 0.08810769766569138 -0.3271084725856781 1</Transform></Instance>
<Instance id="inst1723976" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;11:"></ApplicationRef>
<Transform id="id424">0.8450331687927246 0.005398655775934458 -0.5346865653991699 0 -0.4710902869701386 0.4805829524993897 -0.7396714687347412 0 0.252968043088913 0.8769325613975525 0.4086517691612244 0 -0.05524870008230209 0.07287602126598358 -0.1727083474397659 1</Transform></Instance>
<Instance id="inst1725736" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;12:"></ApplicationRef>
<Transform id="id427">-0.7145452499389648 -0.1154179275035858 0.6900026798248291 0 -0.652251660823822 0.4665488302707672 -0.5974109768867493 0 -0.252968043088913 -0.8769325613975525 -0.4086517691612244 0 0.1366616934537888 0.08774281293153763 -0.3234097063541412 1</Transform></Instance>
<Instance id="inst1995424" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;13:"></ApplicationRef>
<Transform id="id430">0.8450331687927246 0.005398655775934458 -0.5346865653991699 0 -0.4710902869701386 0.4805829524993897 -0.7396714687347412 0 0.252968043088913 0.8769325613975525 0.4086517691612244 0 -0.05995889753103256 0.07251112163066864 -0.1690095812082291 1</Transform></Instance>
<Instance id="inst1726232" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;14:"></ApplicationRef>
<Transform id="id433">-0.7145452499389648 -0.1154179275035858 0.6900026798248291 0 -0.652251660823822 0.4665488302707672 -0.5974109768867493 0 -0.252968043088913 -0.8769325613975525 -0.4086517691612244 0 0.1319515109062195 0.08737793564796448 -0.3197109401226044 1</Transform></Instance>
<Instance id="inst1727160" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;15:"></ApplicationRef>
<Transform id="id436">0.8450331687927246 0.005398655775934458 -0.5346865653991699 0 -0.4710902869701386 0.4805829524993897 -0.7396714687347412 0 0.252968043088913 0.8769325613975525 0.4086517691612244 0 -0.06466909497976303 0.07214623689651489 -0.165310800075531 1</Transform></Instance>
<Instance id="inst1722360" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;16:"></ApplicationRef>
<Transform id="id439">-0.7145452499389648 -0.1154179275035858 0.6900026798248291 0 -0.652251660823822 0.4665488302707672 -0.5974109768867493 0 -0.252968043088913 -0.8769325613975525 -0.4086517691612244 0 0.127241313457489 0.08701304346323013 -0.3160121440887451 1</Transform></Instance>
<Instance id="inst1995528" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;17:"></ApplicationRef>
<Transform id="id442">0.8450331687927246 0.005398655775934458 -0.5346865653991699 0 -0.4710902869701386 0.4805829524993897 -0.7396714687347412 0 0.252968043088913 0.8769325613975525 0.4086517691612244 0 -0.0693792924284935 0.07178134471178055 -0.1616120338439941 1</Transform></Instance>
<Instance id="inst1995008" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;18:"></ApplicationRef>
<Transform id="id445">-0.7145452499389648 -0.1154179275035858 0.6900026798248291 0 -0.652251660823822 0.4665488302707672 -0.5974109768867493 0 -0.252968043088913 -0.8769325613975525 -0.4086517691612244 0 0.1225311160087585 0.08664815127849579 -0.3123133778572083 1</Transform></Instance>
<Instance id="inst2053416" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;19:"></ApplicationRef>
<Transform id="id448">0.8450331687927246 0.005398655775934458 -0.5346865653991699 0 -0.4710902869701386 0.4805829524993897 -0.7396714687347412 0 0.252968043088913 0.8769325613975525 0.4086517691612244 0 -0.07408948242664337 0.0714164674282074 -0.1579132527112961 1</Transform></Instance>
<Instance id="inst2053208" name="Valve:123-700;0,Parts" partRef="#id341">
<ApplicationRef application="TCC-VIS" label="Valve:123-700;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id451">0.7850325107574463 0.06081444025039673 -0.6164620518684387 0 -0.135619044303894 0.9878994226455689 -0.07524680346250534 0 0.6044264435768127 0.1426751613616943 0.7837807536125183 0 -0.005746716633439064 -0.250409871339798 -0.08668788522481918 1</Transform></Instance>
<Instance id="inst1862560" name="Valve Spring Cap:123-704;0,Parts" partRef="#id347">
<ApplicationRef application="TCC-VIS" label="Valve Spring Cap:123-704;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id454">0.7850325703620911 0.06081447005271912 -0.6164620518684387 0 -0.3681581914424896 -0.7545340657234192 -0.543265700340271 0 -0.498180091381073 0.6534368991851807 -0.5699445009231567 0 0.03418708592653275 0.2526659965515137 0.06506367027759552 1</Transform></Instance>
<Instance id="inst1719832" name="Rocker Arm:123-600;0,Parts" partRef="#id457">
<ApplicationRef application="TCC-VIS" label="Rocker Arm:123-600;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id458">0.9026297330856323 0.4304179251194 -9.149687798526429e-007 0 -0.4304179251194 0.9026297330856323 4.554329109396349e-007 0 1.028840756589489e-006 1.773579327846164e-008 0.9999999403953552 0 0.2777610719203949 0.5800805687904358 -0.005389846861362457 1</Transform></Instance>
<Instance id="inst1729824" name="Rocker Arm_copy:123-602;0,Parts" partRef="#id463">
<ApplicationRef application="TCC-VIS" label="Rocker Arm_copy:123-602;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id464">0.9026297926902771 -0.4304177463054657 -9.298340728491894e-007 0 0.4304177463054657 0.9026297926902771 -4.242589284331189e-007 0 1.028840756589489e-006 1.773579505481848e-008 0.9999999403953552 0 0.3539793193340302 0.3309040069580078 -0.005389927886426449 1</Transform></Instance>
<Instance id="inst1726936" name="Valve Cover_copy:;0,Main" partRef="#id469">
<ApplicationRef application="TCC-VIS" label="Valve Cover_copy:;0,Main.part;0;0:"></ApplicationRef>
<Transform id="id470">1 -6.184104131534696e-005 -1.004268028736988e-006 0 1.011203266898519e-006 1.773524793691195e-008 0.9999999403953552 0 -6.184104131534696e-005 -1 -1.720678532990405e-008 0 0.05108792707324028 0.3257383704185486 0.09109834581613541 1</Transform></Instance>
<Instance id="inst1722616" name="Head Nut:123-005;0,Parts" partRef="#id245">
<ApplicationRef application="TCC-VIS" label="Head Nut:123-005;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id475">0.9999933242797852 1.67195413069976e-008 0.003653878346085548 0 0.003653871593996882 -1.767486601522705e-008 -0.9999932646751404 0 -1.665473980949628e-008 1 1.726829879089564e-008 0 0.08119496703147888 0.2477381825447083 0.2201460599899292 1</Transform></Instance>
<Instance id="inst1760240" name="Valve Spring:123-702;0,Parts" partRef="#id327">
<ApplicationRef application="TCC-VIS" label="Valve Spring:123-702;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id478">-0.8213930130004883 0.3830220103263855 0.4226199984550476 0 -0.3830239772796631 0.1786065548658371 -0.9063069224357605 0 -0.4226182103157044 -0.9063078165054321 4.008188341231289e-007 0 -0.141640841960907 0.3886727094650269 0.1220077648758888 1</Transform></Instance>
<Instance id="inst1724160" name="Valve Cover:123-701;0,Parts" partRef="#id481">
<ApplicationRef application="TCC-VIS" label="Valve Cover:123-701;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id482">-1.552728390308289e-009 5.031413063960599e-009 -1 0 5.031413063960599e-009 1 5.031413063960599e-009 0 1 -5.031413063960599e-009 -1.552728390308289e-009 0 0.2239999771118164 0.03198792412877083 0.02350873127579689 1</Transform></Instance>
<Instance id="inst1723752" name="Head Stud:123-006;0,Parts" partRef="#id46">
<ApplicationRef application="TCC-VIS" label="Head Stud:123-006;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id489">1.421973649939901e-012 0.002356703858822584 -0.9999971985816956 0 -6.033720745257654e-010 -0.9999971985816956 -0.002356703858822584 0 -1 6.033737398603023e-010 -3.700562300775484e-019 0 -0.2949999570846558 0.02160527557134628 -0.1053286641836166 1</Transform></Instance>
<Instance id="inst1725216" name="Head Stud:123-006;0,Parts" partRef="#id46">
<ApplicationRef application="TCC-VIS" label="Head Stud:123-006;0,Parts.part;0;2:"></ApplicationRef>
<Transform id="id492">-5.582201367815287e-013 -0.0009254564647562802 -0.9999995827674866 0 -6.028238463962055e-010 -0.9999995827674866 0.0009254564647562802 0 -1 6.028241239519616e-010 3.326781192647572e-016 0 -0.2949999570846558 0.02149887569248676 0.0004925570683553815 1</Transform></Instance>
<Instance id="inst1758176" name="Head Stud:123-006;0,Parts" partRef="#id46">
<ApplicationRef application="TCC-VIS" label="Head Stud:123-006;0,Parts.part;0;3:"></ApplicationRef>
<Transform id="id495">1.421973649939901e-012 0.002356703858822584 -0.9999971985816956 0 -6.033720745257654e-010 -0.9999971985816956 -0.002356703858822584 0 -1 6.033737398603023e-010 -3.700562300775484e-019 0 -0.2949999570846558 0.123807780444622 -0.1001014932990074 1</Transform></Instance>
<Instance id="inst1919952" name="Lifter:123-923;0,Parts" partRef="#id52">
<ApplicationRef application="TCC-VIS" label="Lifter:123-923;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id498">2.757793993168889e-013 4.575816179956671e-013 1 0 4.575816179956671e-013 -1 4.575816179956671e-013 0 1 4.575816179956671e-013 -2.757793993168889e-013 0 0.09999999403953552 -0.1338488161563873 0.03437212482094765 1</Transform></Instance>
<Instance id="inst2053728" name="Lifter:123-923;0,Parts" partRef="#id52">
<ApplicationRef application="TCC-VIS" label="Lifter:123-923;0,Parts.part;0;2:"></ApplicationRef>
<Transform id="id501">4.052314039881821e-013 1.110223024625157e-015 1 0 1.110223024625157e-015 1 -1.110223024625157e-015 0 -1 1.110223024625157e-015 4.052314039881821e-013 0 -0.09999999403953552 -0.06615116447210312 0.01437209732830524 1</Transform></Instance>
<Instance id="inst2050288" name="Lifter:123-923;0,Parts" partRef="#id52">
<ApplicationRef application="TCC-VIS" label="Lifter:123-923;0,Parts.part;0;3:"></ApplicationRef>
<Transform id="id504">4.052314039881821e-013 1.110223024625157e-015 1 0 1.110223024625157e-015 1 -1.110223024625157e-015 0 -1 1.110223024625157e-015 4.052314039881821e-013 0 -0.09999999403953552 -0.06615117192268372 -0.005627896171063185 1</Transform></Instance>
<Instance id="inst1998064" name="rod:123-699;0,Parts" partRef="#id58">
<ApplicationRef application="TCC-VIS" label="rod:123-699;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id507">-0.9861037135124207 0.1661308258771896 1.702963710921711e-016 0 -0.1661308258771896 -0.9861037135124207 -3.509013978502231e-016 0 1.096343463342109e-016 -3.743166442952229e-016 1 0 -0.07101806253194809 -0.02219301089644432 -0.01999999769032002 1</Transform></Instance>
<Part id="id14" name="2_Cylinder_Engine" instanceRefs="inst1779056 inst1913768 inst1910440 inst1937376 inst1895856 inst2026000 inst1848008 inst2010456 inst1758176 inst1919952 inst2053728 inst2050288 inst1998064" type="assembly">
<UserData id="id33" type="Hidden_Metadata">
<UserValue value="156001" title="TOOLKIT_CUSTOMER"></UserValue></UserData>
<UserData id="id44">
<UserValue value="2_Cylinder_Engine" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Jan-30-1998 16:58:30.00" title="Version Create Date + Time"></UserValue>
<UserValue value="2 Cylinder Engine" title="I-DEAS Name"></UserValue>
<UserValue value="123-001" title="I-DEAS Part Number"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="Jan-10-2005 13:23:55.05" title="Version Mod. Date + Time"></UserValue></UserData>
<Occurrence id="id16" instanceRefs="#inst1798736">
<Transform id="id17">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</Transform></Occurrence></Part>
<Part id="id46" name="Head Stud:123-006;0,Parts" type="solid">
<Bound id="id49" values="-0.03247146308422089 0.07456196844577789 -0.1150000020861626 0.006500001531094313 0.006495191715657711 0.1150000020861626"></Bound>
<Representation id="id50" format="JT" location="./2_Cylinder_Engine/Head_Stud_123_006_0_Parts.jt"></Representation></Part>
<Part id="id52" name="Lifter:123-923;0,Parts" type="solid">
<Bound id="id55" values="-0.02437210455536842 -0.03384878858923912 -0.04250000044703484 0.00774999987334013 0.007749963086098433 0.04250000044703484"></Bound>
<Representation id="id56" format="JT" location="./2_Cylinder_Engine/Lifter_123_923_0_Parts.jt"></Representation></Part>
<Part id="id58" name="rod:123-699;0,Parts" type="solid">
<Bound id="id61" values="0.02005359902977943 -0.006323420908302069 0 0.09100000560283661 0.03700000047683716 0.009999999776482582"></Bound>
<Representation id="id62" format="JT" location="./2_Cylinder_Engine/rod_123_699_0_Parts.jt"></Representation></Part>
<Part id="id64" name="Piston Sub:;0,Parts" instanceRefs="inst1912768 inst1865720" type="assembly">
<UserData id="id72">
<UserValue value="Piston Sub" title="I-DEAS Name"></UserValue>
<UserValue value="Piston Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue></UserData>
<Occurrence id="id66" instanceRefs="#inst1798736 #inst1937376">
<Transform id="id67">-1 -1.334063881586189e-008 -7.982826621955041e-010 0 1.10096191110321e-032 -1 -3.018818806569426e-016 0 -7.293991291219912e-017 -3.018818806569426e-016 1 0 -0.1368601024150848 0.06445372104644775 0.003820367390289903 1</Transform></Occurrence></Part>
<Part id="id74" name="Piston:123-844;0,Parts" type="solid">
<Bound id="id80" values="0.0101108755916357 0.009526152163743973 0 0.05324159190058708 0.04650000110268593 0.04649999737739563"></Bound>
<Occurrence id="id76" materialRef="id77" instanceRefs="#inst1798736 #inst1937376 #inst1912768">
<Transform id="id78">-1 -3.025554562441357e-008 -3.172106577409295e-009 0 1.10096191110321e-032 -1.00000011920929 -3.018819071267222e-016 0 -7.293991291219912e-017 -3.018819071267222e-016 1.00000011920929 0 -0.2946771681308746 0.07397986948490143 0.01617963425815105 1</Transform></Occurrence>
<Representation id="id81" format="JT" location="./2_Cylinder_Engine/Piston_123_844_0_Parts.jt"></Representation></Part>
<Part id="id83" name="Piston pin:123-845;0,Parts" type="solid">
<Bound id="id86" values="-0.2534925639629364 0.09658930450677872 0.04250000044703484 0.01099999435245991 0.01099186204373837 0.04250000044703484"></Bound>
<Representation id="id87" format="JT" location="./2_Cylinder_Engine/Piston_pin_123_845_0_Parts.jt"></Representation></Part>
<Part id="id89" name="Piston Sub:;0,Parts" instanceRefs="inst1671584 inst2012776" type="assembly">
<UserData id="id100">
<UserValue value="Piston Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="Jan-30-1998 16:58:24.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Piston Sub" title="I-DEAS Name"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="May-03-1999 15:12:04.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id108" name="CamShaft Sub:123-990;0,Parts" instanceRefs="inst2054176 inst1938944" type="assembly">
<UserData id="id121">
<UserValue value="CamShaft Sub:123-990;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="Jan-30-1998 16:58:25.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="CamShaft Sub" title="I-DEAS Name"></UserValue>
<UserValue value="123-990" title="I-DEAS Part Number"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="Aug-14-2001 14:11:35.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id123" name="Cam_shaft:123-457;0,Parts" type="solid">
<Bound id="id126" values="0.05063954740762711 -0.03493684902787209 -4.356868157628924e-005 0.1267500072717667 0.02063110843300819 0.01902950927615166"></Bound>
<Representation id="id127" format="JT" location="./2_Cylinder_Engine/Cam_shaft_123_457_0_Parts.jt"></Representation></Part>
<Part id="id129" name="cam_gear:123-456;0,Parts" type="solid">
<Bound id="id132" values="0 -0.1000000014901161 -0.002500000409781933 0.06898061186075211 0.06888007372617722 0.01250000018626452"></Bound>
<Representation id="id133" format="JT" location="./2_Cylinder_Engine/cam_gear_123_456_0_Parts.jt"></Representation></Part>
<Part id="id135" name="Crank_Sub:123-555;0,Parts" instanceRefs="inst1838360 inst1857888" type="assembly">
<UserData id="id148">
<UserValue value="Crank_Sub:123-555;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Aug-14-2001 14:13:01.00" title="Version Create Date + Time"></UserValue>
<UserValue value="Crank_Sub" title="I-DEAS Name"></UserValue>
<UserValue value="123-555" title="I-DEAS Part Number"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="Aug-14-2001 14:13:01.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id150" name="crank:123-782;0,Parts" type="solid">
<Bound id="id153" values="4.847693617193727e-006 0 -0.01325000263750553 0.06299515068531036 0.03500000014901161 0.1267500072717667"></Bound>
<Representation id="id154" format="JT" location="./2_Cylinder_Engine/crank_123_782_0_Parts.jt"></Representation></Part>
<Part id="id156" name="crank_gear:123-783;0,Parts" type="solid">
<Bound id="id159" values="0 -0.0001077877532225102 -0.002500000409781933 0.03597993031144142 0.03586557507514954 0.01250000018626452"></Bound>
<Representation id="id160" format="JT" location="./2_Cylinder_Engine/crank_gear_123_783_0_Parts.jt"></Representation></Part>
<Part id="id162" name="Body Sub:123-002;0,Parts" instanceRefs="inst2026392 inst2026184 inst1996904 inst1858736 inst1726008 inst1729056 inst1724160 inst1723752 inst1725216" type="assembly">
<UserData id="id177">
<UserValue value="Body Sub:123-002;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="Jan-30-1998 16:58:29.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Body Sub" title="I-DEAS Name"></UserValue>
<UserValue value="123-002" title="I-DEAS Part Number"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="Aug-14-2001 14:10:00.00" title="Version Mod. Date + Time"></UserValue></UserData>
<Occurrence id="id164" instanceRefs="#inst1798736 #inst2010456">
<Transform id="id165">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</Transform></Occurrence></Part>
<Part id="id179" name="Case_r:123-200;0,Parts" type="solid">
<Bound id="id184" values="0 -0.04548577964305878 -0.003500004298985004 0.0949999988079071 0.1354857832193375 0.1164999976754189"></Bound>
<Occurrence id="id181" materialRef="id182" instanceRefs="#inst1798736 #inst2010456 #inst2026392"></Occurrence>
<Representation id="id185" format="JT" location="./2_Cylinder_Engine/Case_r_123_200_0_Parts.jt"></Representation></Part>
<Part id="id187" name="Cylinder_1:123-100;0,Parts" type="solid">
<Bound id="id193" values="0.01856433786451817 0.05655883997678757 2.846240931830835e-007 0.08050000667572022 0.0950000062584877 0.08000028133392334"></Bound>
<Occurrence id="id189" materialRef="id190" instanceRefs="#inst1798736 #inst2010456 #inst2026184">
<Transform id="id191">1 -5.030475147549396e-009 -8.559119635265233e-008 0 1.553537853915543e-009 -1.993428355717697e-008 1 0 -5.03141173169297e-009 -1 -1.993428355717697e-008 0 0.4018276929855347 0.004671174101531506 -0.01877834275364876 1</Transform></Occurrence>
<Representation id="id194" format="JT" location="./2_Cylinder_Engine/Cylinder_1_123_100_0_Parts.jt"></Representation></Part>
<Part id="id196" name="Cylinder_2:123-101;0,Parts" type="solid">
<Bound id="id200" values="0.01856433786451817 0.05655883997678757 2.846240931830835e-007 0.08050000667572022 0.0950000062584877 0.08000028133392334"></Bound>
<Occurrence id="id198" materialRef="id190" instanceRefs="#inst1798736 #inst2010456 #inst1996904"></Occurrence>
<Representation id="id201" format="JT" location="./2_Cylinder_Engine/Cylinder_2_123_101_0_Parts.jt"></Representation></Part>
<Part id="id203" name="cylinder bolt pattern:;0,Parts" type="solid">
<Bound id="id206" values="-0.1074714586138725 0.0745619609951973 -0.1150000020861626 0.08149999380111694 0.08149999380111694 0.1150000020861626"></Bound>
<Representation id="id207" format="JT" location="./2_Cylinder_Engine/cylinder_bolt_pattern__0_Parts.jt"></Representation></Part>
<Part id="id209" name="Head_1:123-150;0,Parts" type="solid">
<Bound id="id215" values="0.005008736159652472 -0.03048798069357872 0.04119380190968514 0.1079999953508377 0.09020166844129562 0.0411965511739254"></Bound>
<Occurrence id="id211" materialRef="id212" instanceRefs="#inst1798736 #inst2010456 #inst1726008">
<Transform id="id213">-1.553142503496474e-009 5.031413952139019e-009 -1 0 5.031442373848449e-009 1 5.031413063960599e-009 0 1 -7.856474439904559e-007 -1.082494804904854e-007 0 0.5421041250228882 0.03720489889383316 0.04404613375663757 1</Transform></Occurrence>
<Representation id="id216" format="JT" location="./2_Cylinder_Engine/Head_1_123_150_0_Parts.jt"></Representation></Part>
<Part id="id218" name="Head2 Sub:;0,Parts" instanceRefs="inst1727816 inst2027256 inst1842808 inst1906944 inst2052896 inst1725624 inst1994616 inst1719832 inst1729824 inst1726936 inst1722616 inst1760240" type="assembly">
<UserData id="id230">
<UserValue value="Head2 Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="Jan-30-1998 16:58:27.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Head2 Sub" title="I-DEAS Name"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="May-03-1999 15:12:04.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id232" name="Head_2:123-151;0,Parts" type="solid">
<Bound id="id236" values="0.005008736159652472 -0.03048798069357872 -0.04119383916258812 0.1079999953508377 0.09020166844129562 0.04119651019573212"></Bound>
<Occurrence id="id234" materialRef="id212" instanceRefs="#inst1798736 #inst2010456 #inst1729056 #inst1727816"></Occurrence>
<Representation id="id237" format="JT" location="./2_Cylinder_Engine/Head_2_123_151_0_Parts.jt"></Representation></Part>
<Part id="id239" name="Spark Plug:;0,Parts" type="solid">
<Bound id="id242" values="0.03006996028125286 0.2239631712436676 0.02060705050826073 0.01078151073306799 0.009165501222014427 0.0493929535150528"></Bound>
<Representation id="id243" format="JT" location="./2_Cylinder_Engine/Spark_Plug__0_Parts.jt"></Representation></Part>
<Part id="id245" name="Head Nut:123-005;0,Parts" type="solid">
<Bound id="id248" values="0.02565165981650353 0.2141639441251755 -0.008499999530613422 0.01200000010430813 0.01199112832546234 0.008499999530613422"></Bound>
<Representation id="id249" format="JT" location="./2_Cylinder_Engine/Head_Nut_123_005_0_Parts.jt"></Representation></Part>
<Part id="id251" name="Rocker_Sub:;0,Parts" instanceRefs="inst2033120 inst1789832 inst2033672 inst1949072" type="assembly">
<UserData id="id262">
<UserValue value="Rocker_Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="Jan-30-1998 16:58:27.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Rocker_Sub" title="I-DEAS Name"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="May-03-1999 15:12:04.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id264" name="Rocker Arm Shaft:123-601;0,Parts" type="solid">
<Bound id="id267" values="-0.04317900538444519 0.4631594121456146 0.05750000104308128 0.006500000134110451 0.006495170295238495 0.05750000104308128"></Bound>
<Representation id="id268" format="JT" location="./2_Cylinder_Engine/Rocker_Arm_Shaft_123_601_0_Parts.jt"></Representation></Part>
<Part id="id270" name="Rocker_Mount_Sub:;0,Parts" instanceRefs="inst1796000 inst2030512 inst1725832 inst2029080" type="assembly">
<UserData id="id276">
<UserValue value="Rocker_Mount_Sub" title="I-DEAS Name"></UserValue>
<UserValue value="Rocker_Mount_Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue></UserData></Part>
<Part id="id278" name="Rocker Mount:123-604;0,Parts" type="solid">
<Bound id="id281" values="0.005044352263212204 -0.05961518362164497 0.007500000298023224 0.0494999997317791 0.02099999971687794 0.007500000298023224"></Bound>
<Representation id="id282" format="JT" location="./2_Cylinder_Engine/Rocker_Mount_123_604_0_Parts.jt"></Representation></Part>
<Part id="id284" name="Rocker Mount Cap:123-608;0,Parts" type="solid">
<Bound id="id287" values="0.005044352263212204 -0.05511518567800522 0.007500000298023224 0.0494999997317791 0.006499998271465302 0.007500000298023224"></Bound>
<Representation id="id288" format="JT" location="./2_Cylinder_Engine/Rocker_Mount_Cap_123_608_0_Parts.jt"></Representation></Part>
<Part id="id290" name="Rocker Bolt:123-603;0,Parts" type="solid">
<Bound id="id293" values="0.02305358275771141 0.2096639275550842 -0.04050000011920929 0.007499999366700649 0.007494449149817228 0.04050000011920929"></Bound>
<Representation id="id294" format="JT" location="./2_Cylinder_Engine/Rocker_Bolt_123_603_0_Parts.jt"></Representation></Part>
<Part id="id299" name="Rocker_Mount_Sub:;0,Parts" instanceRefs="inst1996808 inst1867136 inst1948848 inst1997256" type="assembly">
<UserData id="id310">
<UserValue value="Rocker_Mount_Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="Jan-30-1998 16:58:27.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Rocker_Mount_Sub" title="I-DEAS Name"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="May-03-1999 15:12:04.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id327" name="Valve Spring:123-702;0,Parts" type="solid">
<Bound id="id330" values="-0.2873985767364502 -0.0646171048283577 0.0324999988079071 0.008999995887279511 0.008993340656161308 0.0324999988079071"></Bound>
<Representation id="id331" format="JT" location="./2_Cylinder_Engine/Valve_Spring_123_702_0_Parts.jt"></Representation></Part>
<Part id="id333" name="Valve_Sub:;0,Parts" instanceRefs="inst1914472 inst1734000 inst1730152" type="assembly">
<UserData id="id339">
<UserValue value="Valve_Sub" title="I-DEAS Name"></UserValue>
<UserValue value="Valve_Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue></UserData></Part>
<Part id="id341" name="Valve:123-700;0,Parts" type="solid">
<Bound id="id344" values="0.1265590041875839 0.2941140830516815 0 0.05499999970197678 0.01800000295042992 0.01798668131232262"></Bound>
<Representation id="id345" format="JT" location="./2_Cylinder_Engine/Valve_123_700_0_Parts.jt"></Representation></Part>
<Part id="id347" name="Valve Spring Cap:123-704;0,Parts" type="solid">
<Bound id="id350" values="0.2066644430160523 0.2842055261135101 0 0.004499997943639755 0.01600000448524952 0.01598815992474556"></Bound>
<Representation id="id351" format="JT" location="./2_Cylinder_Engine/Valve_Spring_Cap_123_704_0_Parts.jt"></Representation></Part>
<Part id="id353" name="Spring:;0,Parts" instanceRefs="inst1910040 inst1910640 inst1911040 inst1911768 inst1912168 inst1912968 inst1920696 inst1827264 inst1920976 inst1994408" type="assembly">
<UserData id="id359">
<UserValue value="Spring" title="I-DEAS Name"></UserValue>
<UserValue value="Spring:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue></UserData></Part>
<Part id="id361" name="Spring Link:;0,Parts" type="solid">
<Bound id="id364" values="0.1303011178970337 -0.04939981177449226 0.007499259896576405 0.001999998930841684 0.01499851979315281 0.007499259896576405"></Bound>
<Representation id="id365" format="JT" location="./2_Cylinder_Engine/Spring_Link__0_Parts.jt"></Representation></Part>
<Part id="id394" name="Valve_Sub:;0,Parts" instanceRefs="inst1995632 inst2053208 inst1862560" type="assembly">
<UserData id="id406">
<UserValue value="Valve_Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Jan-30-1998 16:58:26.00" title="Version Create Date + Time"></UserValue>
<UserValue value="Valve_Sub" title="I-DEAS Name"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="May-03-1999 15:12:04.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id408" name="Spring:;0,Parts" instanceRefs="inst1722840 inst1723976 inst1725736 inst1995424 inst1726232 inst1727160 inst1722360 inst1995528 inst1995008 inst2053416" type="assembly">
<UserData id="id419">
<UserValue value="Spring:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="Jan-30-1998 16:58:25.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Spring" title="I-DEAS Name"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="May-03-1999 15:12:04.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id457" name="Rocker Arm:123-600;0,Parts" type="solid">
<Bound id="id460" values="-0.2874188423156738 -0.1816282123327255 0.04250000044703484 0.03894562274217606 0.01755017042160034 0.04250000044703484"></Bound>
<Representation id="id461" format="JT" location="./2_Cylinder_Engine/Rocker_Arm_123_600_0_Parts.jt"></Representation></Part>
<Part id="id463" name="Rocker Arm_copy:123-602;0,Parts" type="solid">
<Bound id="id466" values="-0.2914990782737732 -0.1816282123327255 0.04250000044703484 0.03894564881920815 0.01755017600953579 0.04250000044703484"></Bound>
<Representation id="id467" format="JT" location="./2_Cylinder_Engine/Rocker_Arm_copy_123_602_0_Parts.jt"></Representation></Part>
<Part id="id469" name="Valve Cover_copy:;0,Main" type="solid">
<Bound id="id472" values="0.003508739871904254 -0.03198798000812531 0.0386538989841938 0.101500004529953 0.09204161167144775 0.03634610027074814"></Bound>
<Representation id="id473" format="JT" location="./2_Cylinder_Engine/Valve_Cover_copy__0_Main.jt"></Representation></Part>
<Part id="id481" name="Valve Cover:123-701;0,Parts" type="solid">
<Bound id="id486" values="0.003508739871904254 -0.03198803216218948 0.1113460958003998 0.101500004529953 0.09204155951738358 0.03634609654545784"></Bound>
<Occurrence id="id483" instanceRefs="#inst1798736 #inst2010456 #inst1724160">
<Transform id="id484">-1.552729944620523e-009 5.031413063960599e-009 -1 0 5.0314401534024e-009 1 5.031413063960599e-009 0 1 -3.418919334308157e-007 -1.096145751944277e-007 0 0.6029092669487 0.04294551536440849 0.04271972924470902 1</Transform></Occurrence>
<Representation id="id487" format="JT" location="./2_Cylinder_Engine/Valve_Cover_123_701_0_Parts.jt"></Representation></Part></InstanceGraph>
<Material id="id77" diffuse="1 0 1" specular="1 0 1" emissive="0 0 0" ambient="0 0 0" shininess="96" alpha="0.1000000238418579"></Material>
<Material id="id182" diffuse="0.847058892250061 0.847058892250061 0.847058892250061" specular="0.8000000715255737 0.8000000715255737 0.8000000715255737" emissive="0 0 0" ambient="0.1490196138620377 0.1490196138620377 0.1490196138620377" shininess="96" alpha="0.5"></Material>
<Material id="id190" diffuse="0.6509804129600525 0.7921569347381592 0.9411765336990356" specular="0.6509804129600525 0.7921569347381592 0.9411765336990356" emissive="0 0 0" ambient="0.1490196138620377 0.1490196138620377 0.1490196138620377" shininess="96" alpha="0.5"></Material>
<Material id="id212" diffuse="1 0 0" specular="1 0 0" emissive="0 0 0" ambient="0.1490196138620377 0.1490196138620377 0.1490196138620377" shininess="96" alpha="0.5"></Material></ProductDef></PLMXML>

View File

@ -0,0 +1,511 @@
<?xml version="1.0" ?>
<PLMXML xmlns="http://www.plmxml.org/Schemas/PLMXMLSchema"
schemaVersion="4" date="2005-02-14" time="21:15:28" author="Vis Mockup 5.1.0">
<ProductDef id="id1">
<UserData id="id12" type="__TCC-VIS_MONIKER_INFO">
<UserValue value="C:\Program Files\UGS\JT2Go\Examples\2_Cylinder_Engine_Example\2_Cylinder_Engine.jt" title="Path"></UserValue>
<UserValue value="file" title="FA_Protocol"></UserValue>
<UserValue value="C:/Program Files/UGS/JT2Go/Examples/2_Cylinder_Engine_Example/2_Cylinder_Engine.jt" title="object_id"></UserValue>
<UserValue value="C:\Program Files\UGS\JT2Go\Examples\2_Cylinder_Engine_Example\2_Cylinder_Engine.jt" title="LocalCopy"></UserValue>
<UserValue value="2.0" title="Version"></UserValue>
<UserValue value="local" title="FA_Service"></UserValue>
<UserValue value="No" title="MkIsFolder"></UserValue>
<UserValue value="2_Cylinder_Engine.jt" title="Title"></UserValue>
<UserValue value="DirectModel.Document" title="FileTypeID"></UserValue></UserData>
<InstanceGraph id="id2" rootRefs="inst1798736">
<Instance id="inst1798736" name="2_Cylinder_Engine" partRef="#id14">
<ApplicationRef application="TCC-VIS" label="2_Cylinder_Engine.asm;0;0:"></ApplicationRef>
<UserData id="id20" type="Hidden_Metadata">
<UserValue value="156001" title="TOOLKIT_CUSTOMER"></UserValue></UserData>
<UserData id="id31">
<UserValue value="2_Cylinder_Engine" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Jan-30-1998 16:58:30.00" title="Version Create Date + Time"></UserValue>
<UserValue value="2 Cylinder Engine" title="I-DEAS Name"></UserValue>
<UserValue value="123-001" title="I-DEAS Part Number"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="Jan-10-2005 13:23:55.05" title="Version Mod. Date + Time"></UserValue></UserData>
<Transform id="id15">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</Transform></Instance>
<Instance id="inst1779056" name="Head Stud:123-006;0,Parts" partRef="#id46">
<ApplicationRef application="TCC-VIS" label="Head Stud:123-006;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id47">1.421973649939901e-012 0.002356703858822584 -0.9999971985816956 0 -6.033720745257654e-010 -0.9999971985816956 -0.002356703858822584 0 -1 6.033737398603023e-010 -3.700562300775484e-019 0 -0.2949999868869782 0.1321395188570023 -0.003983345814049244 1</Transform></Instance>
<Instance id="inst1913768" name="Lifter:123-923;0,Parts" partRef="#id52">
<ApplicationRef application="TCC-VIS" label="Lifter:123-923;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id53">2.757793993168889e-013 4.575816179956671e-013 1 0 4.575816179956671e-013 -1 4.575816179956671e-013 0 1 4.575816179956671e-013 -2.757793993168889e-013 0 0.1000000014901161 -0.1338488310575485 0.05437212437391281 1</Transform></Instance>
<Instance id="inst1910440" name="rod:123-699;0,Parts" partRef="#id58">
<ApplicationRef application="TCC-VIS" label="rod:123-699;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id59">0.9861037135124207 -0.1661308258771896 -1.166810754732375e-015 0 0.1661308258771896 0.9861037135124207 -1.062013085640994e-015 0 1.327029577804367e-015 8.534118465009541e-016 1 0 0.07101806253194809 0.02219301462173462 0.02199999988079071 1</Transform></Instance>
<Instance id="inst1937376" name="Piston Sub:;0,Parts" partRef="#id64">
<ApplicationRef application="TCC-VIS" label="Piston Sub:;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id65">-1 1.10096191110321e-032 -7.293991291219912e-017 0 1.10096191110321e-032 -1 -3.018818806569426e-016 0 -7.293991291219912e-017 -3.018818806569426e-016 1 0 -0.1368601024150848 0.06445372104644775 0.003820367390289903 1</Transform></Instance>
<Instance id="inst1912768" name="Piston:123-844;0,Parts" partRef="#id74">
<ApplicationRef application="TCC-VIS" label="Piston:123-844;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id75">-1 -1.334063881586189e-008 7.982825511732017e-010 0 1.10096191110321e-032 -1 -3.018818806569426e-016 0 -7.293991291219912e-017 -3.018818806569426e-016 1 0 -0.294677197933197 0.07397986948490143 0.01617963239550591 1</Transform></Instance>
<Instance id="inst1865720" name="Piston pin:123-845;0,Parts" partRef="#id83">
<ApplicationRef application="TCC-VIS" label="Piston pin:123-845;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id84">0.9995650053024292 0.02949320152401924 -7.979323313200837e-010 0 -0.0294931884855032 0.9995650053024292 2.354164085893729e-011 0 -3.085015966644567e-015 2.168479519145078e-015 1 0 -0.0453154630959034 -0.02461725845932961 -0.02632036805152893 1</Transform></Instance>
<Instance id="inst1895856" name="Piston Sub:;0,Parts" partRef="#id89">
<ApplicationRef application="TCC-VIS" label="Piston Sub:;0,Parts.asm;0;1:"></ApplicationRef>
<Transform id="id90">1 0 0 0 0 1 0 0 0 0 1 0 0.1368601024150848 -0.06445372104644775 -0.03617963194847107 1</Transform></Instance>
<Instance id="inst1671584" name="Piston:123-844;0,Parts" partRef="#id74">
<ApplicationRef application="TCC-VIS" label="Piston:123-844;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id102">-1 -1.334063881586189e-008 7.041613514502387e-009 0 -1.003604666278664e-019 -1 1.355268465125744e-016 0 -1.736007260287489e-016 1.355268465125744e-016 1 0 -0.294677197933197 0.07397986948490143 0.0161796361207962 1</Transform></Instance>
<Instance id="inst2012776" name="Piston pin:123-845;0,Parts" partRef="#id83">
<ApplicationRef application="TCC-VIS" label="Piston pin:123-845;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id105">0.9995650053024292 0.02949320152401924 -7.038550631222051e-009 0 -0.0294931884855032 0.9995650053024292 2.076799010541919e-010 0 1.57434811062825e-016 -2.681045890006053e-016 1 0 -0.0453154630959034 -0.02461725845932961 -0.02632036432623863 1</Transform></Instance>
<Instance id="inst2026000" name="CamShaft Sub:123-990;0,Parts" partRef="#id108">
<ApplicationRef application="TCC-VIS" label="CamShaft Sub:123-990;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id109">0.7071067690849304 -0.7071067690849304 4.055928498874345e-013 0 0.7071067690849304 0.7071067690849304 6.101357784178425e-016 0 -2.872288724139332e-013 2.863660101149607e-013 1 0 0.04717867448925972 -0.0528213270008564 -0.08894477039575577 1</Transform></Instance>
<Instance id="inst2054176" name="Cam_shaft:123-457;0,Parts" partRef="#id123">
<ApplicationRef application="TCC-VIS" label="Cam_shaft:123-457;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id124">1.214013511940948e-008 -7.440697502580917e-010 1 0 -0.9059386253356934 0.4234090149402618 3.675416633368289e-013 0 -0.4234090149402618 -0.9059386253356934 1.728632428171784e-013 0 -0.03029589354991913 -0.05256131291389465 0.02505522221326828 1</Transform></Instance>
<Instance id="inst1938944" name="cam_gear:123-456;0,Parts" partRef="#id129">
<ApplicationRef application="TCC-VIS" label="cam_gear:123-456;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id130">-0.4234090149402618 -0.9059386253356934 1.726649286873036e-013 0 -0.9059386253356934 0.4234090149402618 3.675724817835818e-013 0 -1.214013511940948e-008 7.440699723026967e-010 -1 0 -0.09059386700391769 -0.02437981590628624 -0.04005522653460503 1</Transform></Instance>
<Instance id="inst1848008" name="Crank_Sub:123-555;0,Parts" partRef="#id135">
<ApplicationRef application="TCC-VIS" label="Crank_Sub:123-555;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id136">-0.5 -0.8660253882408142 -2.979083167524747e-016 0 0.8660253882408142 -0.5 -7.816530680941419e-016 0 5.279772353637604e-016 -6.488226847947026e-016 1 0 0.01809818297624588 -0.06969784200191498 -0.1055598109960556 1</Transform></Instance>
<Instance id="inst1838360" name="crank:123-782;0,Parts" partRef="#id150">
<ApplicationRef application="TCC-VIS" label="crank:123-782;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id151">-0.9390942454338074 0.3436597287654877 1.284025318025572e-016 0 -0.3436597883701325 -0.9390941858291626 -6.660528172495127e-016 0 2.47777798279003e-008 -2.063888393522007e-009 1 0 -0.05131101608276367 -0.05052240565419197 0.1075598075985909 1</Transform></Instance>
<Instance id="inst1857888" name="crank_gear:123-783;0,Parts" partRef="#id156">
<ApplicationRef application="TCC-VIS" label="crank_gear:123-783;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id157">-0.9390942454338074 0.3436597287654877 3.809448359261655e-016 0 -0.3436597883701325 -0.9390941858291626 -2.583991531420675e-015 0 2.47777798279003e-008 -2.063890391923451e-009 1 0 -0.05131101980805397 -0.05052240565419197 -0.01844018884003162 1</Transform></Instance>
<Instance id="inst2010456" name="Body Sub:123-002;0,Parts" partRef="#id162">
<ApplicationRef application="TCC-VIS" label="Body Sub:123-002;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id163">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</Transform></Instance>
<Instance id="inst2026392" name="Case_r:123-200;0,Parts" partRef="#id179">
<ApplicationRef application="TCC-VIS" label="Case_r:123-200;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id180">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</Transform></Instance>
<Instance id="inst2026184" name="Cylinder_1:123-100;0,Parts" partRef="#id187">
<ApplicationRef application="TCC-VIS" label="Cylinder_1:123-100;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id188">1 -5.031413063960599e-009 -1.553538520049358e-009 0 1.553538409027055e-009 -1.993428355717697e-008 1 0 -5.031413063960599e-009 -1 -1.993428355717697e-008 0 0.1269356608390808 -5.273894387869405e-008 -0.0365588441491127 1</Transform></Instance>
<Instance id="inst1996904" name="Cylinder_2:123-101;0,Parts" partRef="#id196">
<ApplicationRef application="TCC-VIS" label="Cylinder_2:123-101;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id197">-1 -1.490642098644912e-008 -1.665472915135524e-008 0 1.665472915135524e-008 -1.764261092773722e-008 -1 0 1.490642098644912e-008 -1 1.764261092773722e-008 0 -0.1269356608390808 3.299700068737366e-009 0.0365588404238224 1</Transform></Instance>
<Instance id="inst1858736" name="cylinder bolt pattern:;0,Parts" partRef="#id203">
<ApplicationRef application="TCC-VIS" label="cylinder bolt pattern:;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id204">2.459232373297482e-009 0.7071067690849304 -0.7071067690849304 0 -4.656259378066352e-009 -0.7071067690849304 -0.7071067690849304 0 -1 5.031412619871389e-009 1.55353274688963e-009 0 0.06499999761581421 0.1287170201539993 -0.003270523622632027 1</Transform></Instance>
<Instance id="inst1726008" name="Head_1:123-150;0,Parts" partRef="#id209">
<ApplicationRef application="TCC-VIS" label="Head_1:123-150;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id210">-1.553133399667672e-009 5.031413063960599e-009 -1 0 5.031413063960599e-009 1 5.031413063960599e-009 0 1 -5.031413063960599e-009 -1.553133399667672e-009 0 0.2239999920129776 0.03048792481422424 0.02500873245298863 1</Transform></Instance>
<Instance id="inst1729056" name="Head2 Sub:;0,Parts" partRef="#id218">
<ApplicationRef application="TCC-VIS" label="Head2 Sub:;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id219">1.665474158585312e-008 1.004267005555448e-006 -1 0 -1 -1.666503557373744e-008 -1.665475757306467e-008 0 -1.6665051560949e-008 1 1.004267005555448e-006 0 -0.04826182126998901 -0.05911042168736458 0.03459598124027252 1</Transform></Instance>
<Instance id="inst1727816" name="Head_2:123-151;0,Parts" partRef="#id232">
<ApplicationRef application="TCC-VIS" label="Head_2:123-151;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id233">1 9.947598300641403e-014 -1.004267005555448e-006 0 1.011203266898519e-006 3.500436918102423e-008 0.9999999403953552 0 2.75101122437782e-014 -1 2.288952989822068e-013 0 0.04958733543753624 0.1757381856441498 0.08959835022687912 1</Transform></Instance>
<Instance id="inst2027256" name="Spark Plug:;0,Parts" partRef="#id239">
<ApplicationRef application="TCC-VIS" label="Spark Plug:;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id240">1 9.977915303889529e-014 -9.877358024823479e-007 0 -9.946720638254192e-007 -3.500436562831055e-008 -0.9999999403953552 0 -2.75101122437782e-014 1 -2.288952989822068e-013 0 0.02452629990875721 0.2137382179498673 0.2830735743045807 1</Transform></Instance>
<Instance id="inst1842808" name="Head Nut:123-005;0,Parts" partRef="#id245">
<ApplicationRef application="TCC-VIS" label="Head Nut:123-005;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id246">0.9999898672103882 1.657488901685156e-008 -0.004498782102018595 0 -0.004498789552599192 -1.781053349247941e-008 -0.9999898076057434 0 -1.665473980949628e-008 1 1.726835030524399e-008 0 -0.02312494441866875 0.2477381676435471 0.2203545719385147 1</Transform></Instance>
<Instance id="inst1906944" name="Rocker_Sub:;0,Parts" partRef="#id251">
<ApplicationRef application="TCC-VIS" label="Rocker_Sub:;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id252">0.9999974370002747 -7.939097296238984e-011 -0.002271066652610898 0 9.118318147522016e-016 1 3.807415215490448e-015 0 0.002271073637530208 3.500404588407946e-008 0.9999973773956299 0 -0.0001340909366263077 -0.01299998629838228 0.0001236627285834402 1</Transform></Instance>
<Instance id="inst2033120" name="Rocker Arm Shaft:123-601;0,Parts" partRef="#id264">
<ApplicationRef application="TCC-VIS" label="Rocker Arm Shaft:123-601;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id265">-0.9999850392341614 -0.004973083734512329 -0.002270016819238663 0 0.004973071627318859 -0.9999875426292419 1.127185623772675e-005 0 -0.002270089229568839 -4.575558421038295e-008 0.9999972581863403 0 0.0487947128713131 0.7686771750450134 -0.02040251158177853 1</Transform></Instance>
<Instance id="inst1789832" name="Rocker_Mount_Sub:;0,Parts" partRef="#id270">
<ApplicationRef application="TCC-VIS" label="Rocker_Mount_Sub:;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id271">1 -7.424300063618716e-011 1.35305974757749e-010 0 1.276140897124513e-015 0.9999998807907105 4.341043060584901e-016 0 -4.433523059788058e-008 -2.848764957263938e-008 0.9999998211860657 0 -1.748614808505522e-009 -9.381160293031599e-010 -7.228971310446752e-010 1</Transform></Instance>
<Instance id="inst1796000" name="Rocker Mount:123-604;0,Parts" partRef="#id278">
<ApplicationRef application="TCC-VIS" label="Rocker Mount:123-604;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id279">0.9999973773956299 1.651584646822357e-008 0.002270044526085258 0 -1.669391558323241e-008 0.9999998807907105 1.723048725921217e-008 0 -0.002270088996738195 -4.57557440824985e-008 0.9999972581863403 0 0.04950515553355217 0.3443533480167389 0.07959935814142227 1</Transform></Instance>
<Instance id="inst2030512" name="Rocker Mount Cap:123-608;0,Parts" partRef="#id284">
<ApplicationRef application="TCC-VIS" label="Rocker Mount Cap:123-608;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id285">0.9999973773956299 1.651585179729409e-008 0.002270044526085258 0 1.669392091230293e-008 -0.9999998807907105 -1.723048725921217e-008 0 0.002270088996738195 4.57557440824985e-008 -0.9999972581863403 0 0.04947110638022423 0.2571229636669159 0.09459931403398514 1</Transform></Instance>
<Instance id="inst1725832" name="Rocker Bolt:123-603;0,Parts" partRef="#id290">
<ApplicationRef application="TCC-VIS" label="Rocker Bolt:123-603;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id291">0.9984452724456787 1.914222380605679e-008 -0.05574143305420876 0 -0.05574139580130577 4.472066095217997e-008 -0.9984451532363892 0 -1.669391203051873e-008 1 1.723049436463953e-008 0 0.01820174790918827 0.326738178730011 0.2976770401000977 1</Transform></Instance>
<Instance id="inst2029080" name="Rocker Bolt:123-603;0,Parts" partRef="#id290">
<ApplicationRef application="TCC-VIS" label="Rocker Bolt:123-603;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id296">0.9984543323516846 1.913488922866691e-008 -0.05557771772146225 0 -0.05557768046855927 4.472379444564467e-008 -0.998454213142395 0 -1.669391025416189e-008 0.9999998807907105 1.723049436463953e-008 0 0.06816709786653519 0.326738178730011 0.2977887094020844 1</Transform></Instance>
<Instance id="inst2033672" name="Rocker_Mount_Sub:;0,Parts" partRef="#id299">
<ApplicationRef application="TCC-VIS" label="Rocker_Mount_Sub:;0,Parts.asm;0;1:"></ApplicationRef>
<Transform id="id300">1 -7.424300063618716e-011 1.35305974757749e-010 0 1.276140897124513e-015 0.9999998807907105 4.341043060584901e-016 0 -4.433523059788058e-008 -2.848764957263938e-008 0.9999998211860657 0 -4.064914627122107e-009 -1.459414988858043e-008 -0.09999953210353851 1</Transform></Instance>
<Instance id="inst1996808" name="Rocker Mount:123-604;0,Parts" partRef="#id278">
<ApplicationRef application="TCC-VIS" label="Rocker Mount:123-604;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id312">0.9999974370002747 1.662746029751361e-008 0.002270044526085258 0 -1.669391735958925e-008 1.00000011920929 1.723049081192585e-008 0 -0.002270061522722244 -2.438619972622291e-008 0.9999974966049194 0 0.04973216727375984 0.3443534076213837 0.07959914952516556 1</Transform></Instance>
<Instance id="inst1867136" name="Rocker Mount Cap:123-608;0,Parts" partRef="#id284">
<ApplicationRef application="TCC-VIS" label="Rocker Mount Cap:123-608;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id315">0.9999974370002747 1.662746562658413e-008 0.002270044526085258 0 1.669392268865977e-008 -1.00000011920929 -1.723049081192585e-008 0 0.002270061522722244 2.438619972622291e-008 -0.9999974966049194 0 0.0496981143951416 0.2571230232715607 0.09459911286830902 1</Transform></Instance>
<Instance id="inst1948848" name="Rocker Bolt:123-603;0,Parts" partRef="#id290">
<ApplicationRef application="TCC-VIS" label="Rocker Bolt:123-603;0,Parts.part;0;2:"></ApplicationRef>
<Transform id="id318">0.9986630082130432 1.791910797521723e-008 -0.05169311910867691 0 -0.05169309675693512 2.345346850063379e-008 -0.998663067817688 0 -1.669391025416189e-008 1.00000011920929 1.72305067991374e-008 0 0.01757495850324631 0.3267382085323334 0.2976291477680206 1</Transform></Instance>
<Instance id="inst1997256" name="Rocker Bolt:123-603;0,Parts" partRef="#id290">
<ApplicationRef application="TCC-VIS" label="Rocker Bolt:123-603;0,Parts.part;0;3:"></ApplicationRef>
<Transform id="id321">0.9986716508865356 1.791518755567267e-008 -0.05152621492743492 0 -0.05152619630098343 2.345645455648082e-008 -0.9986717104911804 0 -1.669391025416189e-008 1.00000011920929 1.723049791735321e-008 0 0.06753963232040405 0.3267382085323334 0.2977406084537506 1</Transform></Instance>
<Instance id="inst1949072" name="Rocker Arm Shaft:123-601;0,Parts" partRef="#id264">
<ApplicationRef application="TCC-VIS" label="Rocker Arm Shaft:123-601;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id324">-0.9999873042106628 -0.004487393889576197 -0.00227002170868218 0 0.004487383179366589 -0.9999898076057434 1.016931855701841e-005 0 -0.002270088996738195 -4.575493051106605e-008 0.9999972581863403 0 -0.02998023852705956 0.7686992287635803 -0.02058133110404015 1</Transform></Instance>
<Instance id="inst2052896" name="Valve Spring:123-702;0,Parts" partRef="#id327">
<ApplicationRef application="TCC-VIS" label="Valve Spring:123-702;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id328">-0.821344792842865 -0.3829995691776276 0.4227339625358582 0 -0.3831273019313812 -0.1786547750234604 -0.9062537550926209 0 0.4226182997226715 -0.9063078165054321 -4.468796817036491e-007 0 -0.2707940638065338 0.1454340070486069 0.1220441088080406 1</Transform></Instance>
<Instance id="inst1725624" name="Valve_Sub:;0,Parts" partRef="#id333">
<ApplicationRef application="TCC-VIS" label="Valve_Sub:;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id334">0.4546822905540466 0.654166042804718 0.6044259667396545 0 -0.8696395754814148 0.4726209938526154 0.1426760256290436 0 -0.1923305839300156 -0.5905050039291382 0.7837809920310974 0 0.09187051653862 0.08063256740570068 0.1662608832120895 1</Transform></Instance>
<Instance id="inst1914472" name="Valve:123-700;0,Parts" partRef="#id341">
<ApplicationRef application="TCC-VIS" label="Valve:123-700;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id342">0.7850326299667358 0.06081443279981613 -0.6164620518684387 0 -0.1356190741062164 0.9878997206687927 -0.07524674385786057 0 0.6044265031814575 0.1426751911640167 0.7837809920310974 0 -0.001248535001650453 -0.2500619888305664 -0.09022713452577591 1</Transform></Instance>
<Instance id="inst1734000" name="Valve Spring Cap:123-704;0,Parts" partRef="#id347">
<ApplicationRef application="TCC-VIS" label="Valve Spring Cap:123-704;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id348">0.7850326299667358 0.06081448495388031 -0.6164620518684387 0 -0.3924773633480072 -0.7211050391197205 -0.5709372162818909 0 -0.4792551398277283 0.6901518106460571 -0.5422225594520569 0 0.0455969013273716 0.2435131669044495 0.06938881427049637 1</Transform></Instance>
<Instance id="inst1730152" name="Spring:;0,Parts" partRef="#id353">
<ApplicationRef application="TCC-VIS" label="Spring:;0,Parts.asm;0;0:"></ApplicationRef>
<Transform id="id354">1 -3.002940829333056e-008 3.437022044749938e-008 0 -4.150651022882812e-008 1.000000238418579 4.017514854126603e-008 0 3.73510147255729e-008 2.773385787691041e-008 1 0 -1.489124112907803e-008 -4.276215381793236e-009 1.08718030134014e-008 1</Transform></Instance>
<Instance id="inst1910040" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id362">-0.6893028616905212 -0.1355008780956268 0.7116888165473938 0 -0.6755837202072144 0.4749762713909149 -0.5639010667800903 0 -0.2616261541843414 -0.8695042133331299 -0.4189447462558746 0 0.1410751193761826 0.09142301231622696 -0.3314632773399353 1</Transform></Instance>
<Instance id="inst1910640" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id367">0.8620703816413879 -0.01532000117003918 -0.506557047367096 0 -0.4340352714061737 0.4936883747577667 -0.7535817623138428 0 0.261626124382019 0.8695042133331299 0.4189446866512299 0 -0.05227819457650185 0.07644443958997726 -0.1796288043260574 1</Transform></Instance>
<Instance id="inst1911040" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;2:"></ApplicationRef>
<Transform id="id370">-0.6893028616905212 -0.1355008780956268 0.7116888165473938 0 -0.6755837202072144 0.4749762713909149 -0.5639010667800903 0 -0.2616261541843414 -0.8695042133331299 -0.4189447462558746 0 0.1347948610782623 0.09093648940324783 -0.3265315294265747 1</Transform></Instance>
<Instance id="inst1911768" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;3:"></ApplicationRef>
<Transform id="id373">0.8620703816413879 -0.01532000117003918 -0.506557047367096 0 -0.4340352714061737 0.4936883747577667 -0.7535817623138428 0 0.261626124382019 0.8695042133331299 0.4189446866512299 0 -0.05855846777558327 0.07595790922641754 -0.1746970862150192 1</Transform></Instance>
<Instance id="inst1912168" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;4:"></ApplicationRef>
<Transform id="id376">-0.6893028616905212 -0.1355008780956268 0.7116888165473938 0 -0.6755837202072144 0.4749762713909149 -0.5639010667800903 0 -0.2616261541843414 -0.8695042133331299 -0.4189447462558746 0 0.1285146176815033 0.0904499888420105 -0.3215998709201813 1</Transform></Instance>
<Instance id="inst1912968" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;5:"></ApplicationRef>
<Transform id="id379">0.8620703816413879 -0.01532000117003918 -0.506557047367096 0 -0.4340352714061737 0.4936883747577667 -0.7535817623138428 0 0.261626124382019 0.8695042133331299 0.4189446866512299 0 -0.0648387148976326 0.07547140121459961 -0.1697653979063034 1</Transform></Instance>
<Instance id="inst1920696" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;6:"></ApplicationRef>
<Transform id="id382">-0.6893028616905212 -0.1355008780956268 0.7116888165473938 0 -0.6755837202072144 0.4749762713909149 -0.5639010667800903 0 -0.2616261541843414 -0.8695042133331299 -0.4189447462558746 0 0.1222343519330025 0.08996346592903137 -0.3166681826114655 1</Transform></Instance>
<Instance id="inst1827264" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;7:"></ApplicationRef>
<Transform id="id385">0.8620703816413879 -0.01532000117003918 -0.506557047367096 0 -0.4340352714061737 0.4936883747577667 -0.7535817623138428 0 0.261626124382019 0.8695042133331299 0.4189446866512299 0 -0.07111898809671402 0.07498487830162048 -0.1648336797952652 1</Transform></Instance>
<Instance id="inst1920976" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;8:"></ApplicationRef>
<Transform id="id388">-0.6893028616905212 -0.1355008780956268 0.7116888165473938 0 -0.6755837202072144 0.4749762713909149 -0.5639010667800903 0 -0.2616261541843414 -0.8695042133331299 -0.4189447462558746 0 0.1159540787339211 0.08947695046663284 -0.3117364346981049 1</Transform></Instance>
<Instance id="inst1994408" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;9:"></ApplicationRef>
<Transform id="id391">0.8620703816413879 -0.01532000117003918 -0.506557047367096 0 -0.4340352714061737 0.4936883747577667 -0.7535817623138428 0 0.261626124382019 0.8695042133331299 0.4189446866512299 0 -0.07739924639463425 0.07449836283922195 -0.1599020063877106 1</Transform></Instance>
<Instance id="inst1994616" name="Valve_Sub:;0,Parts" partRef="#id394">
<ApplicationRef application="TCC-VIS" label="Valve_Sub:;0,Parts.asm;0;1:"></ApplicationRef>
<Transform id="id395">-0.4546823501586914 0.6541661024093628 -0.6044260263442993 0 0.8696396350860596 0.4726210236549377 -0.1426760405302048 0 0.192330613732338 -0.5905051231384277 -0.7837811708450317 0 0.01489819493144751 0.08582951128482819 -0.04803464561700821 1</Transform></Instance>
<Instance id="inst1995632" name="Spring:;0,Parts" partRef="#id408">
<ApplicationRef application="TCC-VIS" label="Spring:;0,Parts.asm;0;1:"></ApplicationRef>
<Transform id="id409">1 2.298901691233368e-008 -2.432995493961698e-008 0 -3.89851670945518e-008 0.9999998807907105 -1.280528216796029e-008 0 -3.000558379540053e-008 -2.485903749516183e-008 0.9999998807907105 0 -1.494453005790319e-009 -7.655864275868396e-010 -5.496130661697407e-009 1</Transform></Instance>
<Instance id="inst1722840" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;10:"></ApplicationRef>
<Transform id="id421">-0.7145452499389648 -0.1154179275035858 0.6900026798248291 0 -0.652251660823822 0.4665488302707672 -0.5974109768867493 0 -0.252968043088913 -0.8769325613975525 -0.4086517691612244 0 0.1413719058036804 0.08810769766569138 -0.3271084725856781 1</Transform></Instance>
<Instance id="inst1723976" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;11:"></ApplicationRef>
<Transform id="id424">0.8450331687927246 0.005398655775934458 -0.5346865653991699 0 -0.4710902869701386 0.4805829524993897 -0.7396714687347412 0 0.252968043088913 0.8769325613975525 0.4086517691612244 0 -0.05524870008230209 0.07287602126598358 -0.1727083474397659 1</Transform></Instance>
<Instance id="inst1725736" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;12:"></ApplicationRef>
<Transform id="id427">-0.7145452499389648 -0.1154179275035858 0.6900026798248291 0 -0.652251660823822 0.4665488302707672 -0.5974109768867493 0 -0.252968043088913 -0.8769325613975525 -0.4086517691612244 0 0.1366616934537888 0.08774281293153763 -0.3234097063541412 1</Transform></Instance>
<Instance id="inst1995424" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;13:"></ApplicationRef>
<Transform id="id430">0.8450331687927246 0.005398655775934458 -0.5346865653991699 0 -0.4710902869701386 0.4805829524993897 -0.7396714687347412 0 0.252968043088913 0.8769325613975525 0.4086517691612244 0 -0.05995889753103256 0.07251112163066864 -0.1690095812082291 1</Transform></Instance>
<Instance id="inst1726232" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;14:"></ApplicationRef>
<Transform id="id433">-0.7145452499389648 -0.1154179275035858 0.6900026798248291 0 -0.652251660823822 0.4665488302707672 -0.5974109768867493 0 -0.252968043088913 -0.8769325613975525 -0.4086517691612244 0 0.1319515109062195 0.08737793564796448 -0.3197109401226044 1</Transform></Instance>
<Instance id="inst1727160" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;15:"></ApplicationRef>
<Transform id="id436">0.8450331687927246 0.005398655775934458 -0.5346865653991699 0 -0.4710902869701386 0.4805829524993897 -0.7396714687347412 0 0.252968043088913 0.8769325613975525 0.4086517691612244 0 -0.06466909497976303 0.07214623689651489 -0.165310800075531 1</Transform></Instance>
<Instance id="inst1722360" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;16:"></ApplicationRef>
<Transform id="id439">-0.7145452499389648 -0.1154179275035858 0.6900026798248291 0 -0.652251660823822 0.4665488302707672 -0.5974109768867493 0 -0.252968043088913 -0.8769325613975525 -0.4086517691612244 0 0.127241313457489 0.08701304346323013 -0.3160121440887451 1</Transform></Instance>
<Instance id="inst1995528" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;17:"></ApplicationRef>
<Transform id="id442">0.8450331687927246 0.005398655775934458 -0.5346865653991699 0 -0.4710902869701386 0.4805829524993897 -0.7396714687347412 0 0.252968043088913 0.8769325613975525 0.4086517691612244 0 -0.0693792924284935 0.07178134471178055 -0.1616120338439941 1</Transform></Instance>
<Instance id="inst1995008" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;18:"></ApplicationRef>
<Transform id="id445">-0.7145452499389648 -0.1154179275035858 0.6900026798248291 0 -0.652251660823822 0.4665488302707672 -0.5974109768867493 0 -0.252968043088913 -0.8769325613975525 -0.4086517691612244 0 0.1225311160087585 0.08664815127849579 -0.3123133778572083 1</Transform></Instance>
<Instance id="inst2053416" name="Spring Link:;0,Parts" partRef="#id361">
<ApplicationRef application="TCC-VIS" label="Spring Link:;0,Parts.part;0;19:"></ApplicationRef>
<Transform id="id448">0.8450331687927246 0.005398655775934458 -0.5346865653991699 0 -0.4710902869701386 0.4805829524993897 -0.7396714687347412 0 0.252968043088913 0.8769325613975525 0.4086517691612244 0 -0.07408948242664337 0.0714164674282074 -0.1579132527112961 1</Transform></Instance>
<Instance id="inst2053208" name="Valve:123-700;0,Parts" partRef="#id341">
<ApplicationRef application="TCC-VIS" label="Valve:123-700;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id451">0.7850325107574463 0.06081444025039673 -0.6164620518684387 0 -0.135619044303894 0.9878994226455689 -0.07524680346250534 0 0.6044264435768127 0.1426751613616943 0.7837807536125183 0 -0.005746716633439064 -0.250409871339798 -0.08668788522481918 1</Transform></Instance>
<Instance id="inst1862560" name="Valve Spring Cap:123-704;0,Parts" partRef="#id347">
<ApplicationRef application="TCC-VIS" label="Valve Spring Cap:123-704;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id454">0.7850325703620911 0.06081447005271912 -0.6164620518684387 0 -0.3681581914424896 -0.7545340657234192 -0.543265700340271 0 -0.498180091381073 0.6534368991851807 -0.5699445009231567 0 0.03418708592653275 0.2526659965515137 0.06506367027759552 1</Transform></Instance>
<Instance id="inst1719832" name="Rocker Arm:123-600;0,Parts" partRef="#id457">
<ApplicationRef application="TCC-VIS" label="Rocker Arm:123-600;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id458">0.9026297330856323 0.4304179251194 -9.149687798526429e-007 0 -0.4304179251194 0.9026297330856323 4.554329109396349e-007 0 1.028840756589489e-006 1.773579327846164e-008 0.9999999403953552 0 0.2777610719203949 0.5800805687904358 -0.005389846861362457 1</Transform></Instance>
<Instance id="inst1729824" name="Rocker Arm_copy:123-602;0,Parts" partRef="#id463">
<ApplicationRef application="TCC-VIS" label="Rocker Arm_copy:123-602;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id464">0.9026297926902771 -0.4304177463054657 -9.298340728491894e-007 0 0.4304177463054657 0.9026297926902771 -4.242589284331189e-007 0 1.028840756589489e-006 1.773579505481848e-008 0.9999999403953552 0 0.3539793193340302 0.3309040069580078 -0.005389927886426449 1</Transform></Instance>
<Instance id="inst1726936" name="Valve Cover_copy:;0,Main" partRef="#id469">
<ApplicationRef application="TCC-VIS" label="Valve Cover_copy:;0,Main.part;0;0:"></ApplicationRef>
<Transform id="id470">1 -6.184104131534696e-005 -1.004268028736988e-006 0 1.011203266898519e-006 1.773524793691195e-008 0.9999999403953552 0 -6.184104131534696e-005 -1 -1.720678532990405e-008 0 0.05108792707324028 0.3257383704185486 0.09109834581613541 1</Transform></Instance>
<Instance id="inst1722616" name="Head Nut:123-005;0,Parts" partRef="#id245">
<ApplicationRef application="TCC-VIS" label="Head Nut:123-005;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id475">0.9999933242797852 1.67195413069976e-008 0.003653878346085548 0 0.003653871593996882 -1.767486601522705e-008 -0.9999932646751404 0 -1.665473980949628e-008 1 1.726829879089564e-008 0 0.08119496703147888 0.2477381825447083 0.2201460599899292 1</Transform></Instance>
<Instance id="inst1760240" name="Valve Spring:123-702;0,Parts" partRef="#id327">
<ApplicationRef application="TCC-VIS" label="Valve Spring:123-702;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id478">-0.8213930130004883 0.3830220103263855 0.4226199984550476 0 -0.3830239772796631 0.1786065548658371 -0.9063069224357605 0 -0.4226182103157044 -0.9063078165054321 4.008188341231289e-007 0 -0.141640841960907 0.3886727094650269 0.1220077648758888 1</Transform></Instance>
<Instance id="inst1724160" name="Valve Cover:123-701;0,Parts" partRef="#id481">
<ApplicationRef application="TCC-VIS" label="Valve Cover:123-701;0,Parts.part;0;0:"></ApplicationRef>
<Transform id="id482">-1.552728390308289e-009 5.031413063960599e-009 -1 0 5.031413063960599e-009 1 5.031413063960599e-009 0 1 -5.031413063960599e-009 -1.552728390308289e-009 0 0.2239999771118164 0.03198792412877083 0.02350873127579689 1</Transform></Instance>
<Instance id="inst1723752" name="Head Stud:123-006;0,Parts" partRef="#id46">
<ApplicationRef application="TCC-VIS" label="Head Stud:123-006;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id489">1.421973649939901e-012 0.002356703858822584 -0.9999971985816956 0 -6.033720745257654e-010 -0.9999971985816956 -0.002356703858822584 0 -1 6.033737398603023e-010 -3.700562300775484e-019 0 -0.2949999570846558 0.02160527557134628 -0.1053286641836166 1</Transform></Instance>
<Instance id="inst1725216" name="Head Stud:123-006;0,Parts" partRef="#id46">
<ApplicationRef application="TCC-VIS" label="Head Stud:123-006;0,Parts.part;0;2:"></ApplicationRef>
<Transform id="id492">-5.582201367815287e-013 -0.0009254564647562802 -0.9999995827674866 0 -6.028238463962055e-010 -0.9999995827674866 0.0009254564647562802 0 -1 6.028241239519616e-010 3.326781192647572e-016 0 -0.2949999570846558 0.02149887569248676 0.0004925570683553815 1</Transform></Instance>
<Instance id="inst1758176" name="Head Stud:123-006;0,Parts" partRef="#id46">
<ApplicationRef application="TCC-VIS" label="Head Stud:123-006;0,Parts.part;0;3:"></ApplicationRef>
<Transform id="id495">1.421973649939901e-012 0.002356703858822584 -0.9999971985816956 0 -6.033720745257654e-010 -0.9999971985816956 -0.002356703858822584 0 -1 6.033737398603023e-010 -3.700562300775484e-019 0 -0.2949999570846558 0.123807780444622 -0.1001014932990074 1</Transform></Instance>
<Instance id="inst1919952" name="Lifter:123-923;0,Parts" partRef="#id52">
<ApplicationRef application="TCC-VIS" label="Lifter:123-923;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id498">2.757793993168889e-013 4.575816179956671e-013 1 0 4.575816179956671e-013 -1 4.575816179956671e-013 0 1 4.575816179956671e-013 -2.757793993168889e-013 0 0.09999999403953552 -0.1338488161563873 0.03437212482094765 1</Transform></Instance>
<Instance id="inst2053728" name="Lifter:123-923;0,Parts" partRef="#id52">
<ApplicationRef application="TCC-VIS" label="Lifter:123-923;0,Parts.part;0;2:"></ApplicationRef>
<Transform id="id501">4.052314039881821e-013 1.110223024625157e-015 1 0 1.110223024625157e-015 1 -1.110223024625157e-015 0 -1 1.110223024625157e-015 4.052314039881821e-013 0 -0.09999999403953552 -0.06615116447210312 0.01437209732830524 1</Transform></Instance>
<Instance id="inst2050288" name="Lifter:123-923;0,Parts" partRef="#id52">
<ApplicationRef application="TCC-VIS" label="Lifter:123-923;0,Parts.part;0;3:"></ApplicationRef>
<Transform id="id504">4.052314039881821e-013 1.110223024625157e-015 1 0 1.110223024625157e-015 1 -1.110223024625157e-015 0 -1 1.110223024625157e-015 4.052314039881821e-013 0 -0.09999999403953552 -0.06615117192268372 -0.005627896171063185 1</Transform></Instance>
<Instance id="inst1998064" name="rod:123-699;0,Parts" partRef="#id58">
<ApplicationRef application="TCC-VIS" label="rod:123-699;0,Parts.part;0;1:"></ApplicationRef>
<Transform id="id507">-0.9861037135124207 0.1661308258771896 1.702963710921711e-016 0 -0.1661308258771896 -0.9861037135124207 -3.509013978502231e-016 0 1.096343463342109e-016 -3.743166442952229e-016 1 0 -0.07101806253194809 -0.02219301089644432 -0.01999999769032002 1</Transform></Instance>
<Part id="id14" name="2_Cylinder_Engine" instanceRefs="inst1779056 inst1913768 inst1910440 inst1937376 inst1895856 inst2026000 inst1848008 inst2010456 inst1758176 inst1919952 inst2053728 inst2050288 inst1998064" type="assembly">
<UserData id="id33" type="Hidden_Metadata">
<UserValue value="156001" title="TOOLKIT_CUSTOMER"></UserValue></UserData>
<UserData id="id44">
<UserValue value="2_Cylinder_Engine" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Jan-30-1998 16:58:30.00" title="Version Create Date + Time"></UserValue>
<UserValue value="2 Cylinder Engine" title="I-DEAS Name"></UserValue>
<UserValue value="123-001" title="I-DEAS Part Number"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="Jan-10-2005 13:23:55.05" title="Version Mod. Date + Time"></UserValue></UserData>
<Occurrence id="id16" instanceRefs="#inst1798736">
<Transform id="id17">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</Transform></Occurrence></Part>
<Part id="id46" name="Head Stud:123-006;0,Parts" type="solid">
<Bound id="id49" values="-0.03247146308422089 0.07456196844577789 -0.1150000020861626 0.006500001531094313 0.006495191715657711 0.1150000020861626"></Bound>
<Representation id="id50" format="JT" location="./2_Cylinder_Engine/Head_Stud_123_006_0_Parts.jt"></Representation></Part>
<Part id="id52" name="Lifter:123-923;0,Parts" type="solid">
<Bound id="id55" values="-0.02437210455536842 -0.03384878858923912 -0.04250000044703484 0.00774999987334013 0.007749963086098433 0.04250000044703484"></Bound>
<Representation id="id56" format="JT" location="./2_Cylinder_Engine/Lifter_123_923_0_Parts.jt"></Representation></Part>
<Part id="id58" name="rod:123-699;0,Parts" type="solid">
<Bound id="id61" values="0.02005359902977943 -0.006323420908302069 0 0.09100000560283661 0.03700000047683716 0.009999999776482582"></Bound>
<Representation id="id62" format="JT" location="./2_Cylinder_Engine/rod_123_699_0_Parts.jt"></Representation></Part>
<Part id="id64" name="Piston Sub:;0,Parts" instanceRefs="inst1912768 inst1865720" type="assembly">
<UserData id="id72">
<UserValue value="Piston Sub" title="I-DEAS Name"></UserValue>
<UserValue value="Piston Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue></UserData>
<Occurrence id="id66" instanceRefs="#inst1798736 #inst1937376">
<Transform id="id67">-1 -1.334063881586189e-008 -7.982826621955041e-010 0 1.10096191110321e-032 -1 -3.018818806569426e-016 0 -7.293991291219912e-017 -3.018818806569426e-016 1 0 -0.1368601024150848 0.06445372104644775 0.003820367390289903 1</Transform></Occurrence></Part>
<Part id="id74" name="Piston:123-844;0,Parts" type="solid">
<Bound id="id80" values="0.0101108755916357 0.009526152163743973 0 0.05324159190058708 0.04650000110268593 0.04649999737739563"></Bound>
<Occurrence id="id76" materialRef="id77" instanceRefs="#inst1798736 #inst1937376 #inst1912768">
<Transform id="id78">-1 -3.025554562441357e-008 -3.172106577409295e-009 0 1.10096191110321e-032 -1.00000011920929 -3.018819071267222e-016 0 -7.293991291219912e-017 -3.018819071267222e-016 1.00000011920929 0 -0.2946771681308746 0.07397986948490143 0.01617963425815105 1</Transform></Occurrence>
<Representation id="id81" format="JT" location="./2_Cylinder_Engine/Piston_123_844_0_Parts.jt"></Representation></Part>
<Part id="id83" name="Piston pin:123-845;0,Parts" type="solid">
<Bound id="id86" values="-0.2534925639629364 0.09658930450677872 0.04250000044703484 0.01099999435245991 0.01099186204373837 0.04250000044703484"></Bound>
<Representation id="id87" format="JT" location="./2_Cylinder_Engine/Piston_pin_123_845_0_Parts.jt"></Representation></Part>
<Part id="id89" name="Piston Sub:;0,Parts" instanceRefs="inst1671584 inst2012776" type="assembly">
<UserData id="id100">
<UserValue value="Piston Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="Jan-30-1998 16:58:24.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Piston Sub" title="I-DEAS Name"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="May-03-1999 15:12:04.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id108" name="CamShaft Sub:123-990;0,Parts" instanceRefs="inst2054176 inst1938944" type="assembly">
<UserData id="id121">
<UserValue value="CamShaft Sub:123-990;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="Jan-30-1998 16:58:25.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="CamShaft Sub" title="I-DEAS Name"></UserValue>
<UserValue value="123-990" title="I-DEAS Part Number"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="Aug-14-2001 14:11:35.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id123" name="Cam_shaft:123-457;0,Parts" type="solid">
<Bound id="id126" values="0.05063954740762711 -0.03493684902787209 -4.356868157628924e-005 0.1267500072717667 0.02063110843300819 0.01902950927615166"></Bound>
<Representation id="id127" format="JT" location="./2_Cylinder_Engine/Cam_shaft_123_457_0_Parts.jt"></Representation></Part>
<Part id="id129" name="cam_gear:123-456;0,Parts" type="solid">
<Bound id="id132" values="0 -0.1000000014901161 -0.002500000409781933 0.06898061186075211 0.06888007372617722 0.01250000018626452"></Bound>
<Representation id="id133" format="JT" location="./2_Cylinder_Engine/cam_gear_123_456_0_Parts.jt"></Representation></Part>
<Part id="id135" name="Crank_Sub:123-555;0,Parts" instanceRefs="inst1838360 inst1857888" type="assembly">
<UserData id="id148">
<UserValue value="Crank_Sub:123-555;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Aug-14-2001 14:13:01.00" title="Version Create Date + Time"></UserValue>
<UserValue value="Crank_Sub" title="I-DEAS Name"></UserValue>
<UserValue value="123-555" title="I-DEAS Part Number"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="Aug-14-2001 14:13:01.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id150" name="crank:123-782;0,Parts" type="solid">
<Bound id="id153" values="4.847693617193727e-006 0 -0.01325000263750553 0.06299515068531036 0.03500000014901161 0.1267500072717667"></Bound>
<Representation id="id154" format="JT" location="./2_Cylinder_Engine/crank_123_782_0_Parts.jt"></Representation></Part>
<Part id="id156" name="crank_gear:123-783;0,Parts" type="solid">
<Bound id="id159" values="0 -0.0001077877532225102 -0.002500000409781933 0.03597993031144142 0.03586557507514954 0.01250000018626452"></Bound>
<Representation id="id160" format="JT" location="./2_Cylinder_Engine/crank_gear_123_783_0_Parts.jt"></Representation></Part>
<Part id="id162" name="Body Sub:123-002;0,Parts" instanceRefs="inst2026392 inst2026184 inst1996904 inst1858736 inst1726008 inst1729056 inst1724160 inst1723752 inst1725216" type="assembly">
<UserData id="id177">
<UserValue value="Body Sub:123-002;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="Jan-30-1998 16:58:29.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Body Sub" title="I-DEAS Name"></UserValue>
<UserValue value="123-002" title="I-DEAS Part Number"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="Aug-14-2001 14:10:00.00" title="Version Mod. Date + Time"></UserValue></UserData>
<Occurrence id="id164" instanceRefs="#inst1798736 #inst2010456">
<Transform id="id165">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</Transform></Occurrence></Part>
<Part id="id179" name="Case_r:123-200;0,Parts" type="solid">
<Bound id="id184" values="0 -0.04548577964305878 -0.003500004298985004 0.0949999988079071 0.1354857832193375 0.1164999976754189"></Bound>
<Occurrence id="id181" materialRef="id182" instanceRefs="#inst1798736 #inst2010456 #inst2026392"></Occurrence>
<Representation id="id185" format="JT" location="./2_Cylinder_Engine/Case_r_123_200_0_Parts.jt"></Representation></Part>
<Part id="id187" name="Cylinder_1:123-100;0,Parts" type="solid">
<Bound id="id193" values="0.01856433786451817 0.05655883997678757 2.846240931830835e-007 0.08050000667572022 0.0950000062584877 0.08000028133392334"></Bound>
<Occurrence id="id189" materialRef="id190" instanceRefs="#inst1798736 #inst2010456 #inst2026184">
<Transform id="id191">1 -5.030475147549396e-009 -8.559119635265233e-008 0 1.553537853915543e-009 -1.993428355717697e-008 1 0 -5.03141173169297e-009 -1 -1.993428355717697e-008 0 0.4018276929855347 0.004671174101531506 -0.01877834275364876 1</Transform></Occurrence>
<Representation id="id194" format="JT" location="./2_Cylinder_Engine/Cylinder_1_123_100_0_Parts.jt"></Representation></Part>
<Part id="id196" name="Cylinder_2:123-101;0,Parts" type="solid">
<Bound id="id200" values="0.01856433786451817 0.05655883997678757 2.846240931830835e-007 0.08050000667572022 0.0950000062584877 0.08000028133392334"></Bound>
<Occurrence id="id198" materialRef="id190" instanceRefs="#inst1798736 #inst2010456 #inst1996904"></Occurrence>
<Representation id="id201" format="JT" location="./2_Cylinder_Engine/Cylinder_2_123_101_0_Parts.jt"></Representation></Part>
<Part id="id203" name="cylinder bolt pattern:;0,Parts" type="solid">
<Bound id="id206" values="-0.1074714586138725 0.0745619609951973 -0.1150000020861626 0.08149999380111694 0.08149999380111694 0.1150000020861626"></Bound>
<Representation id="id207" format="JT" location="./2_Cylinder_Engine/cylinder_bolt_pattern__0_Parts.jt"></Representation></Part>
<Part id="id209" name="Head_1:123-150;0,Parts" type="solid">
<Bound id="id215" values="0.005008736159652472 -0.03048798069357872 0.04119380190968514 0.1079999953508377 0.09020166844129562 0.0411965511739254"></Bound>
<Occurrence id="id211" materialRef="id212" instanceRefs="#inst1798736 #inst2010456 #inst1726008">
<Transform id="id213">-1.553142503496474e-009 5.031413952139019e-009 -1 0 5.031442373848449e-009 1 5.031413063960599e-009 0 1 -7.856474439904559e-007 -1.082494804904854e-007 0 0.5421041250228882 0.03720489889383316 0.04404613375663757 1</Transform></Occurrence>
<Representation id="id216" format="JT" location="./2_Cylinder_Engine/Head_1_123_150_0_Parts.jt"></Representation></Part>
<Part id="id218" name="Head2 Sub:;0,Parts" instanceRefs="inst1727816 inst2027256 inst1842808 inst1906944 inst2052896 inst1725624 inst1994616 inst1719832 inst1729824 inst1726936 inst1722616 inst1760240" type="assembly">
<UserData id="id230">
<UserValue value="Head2 Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="Jan-30-1998 16:58:27.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Head2 Sub" title="I-DEAS Name"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="May-03-1999 15:12:04.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id232" name="Head_2:123-151;0,Parts" type="solid">
<Bound id="id236" values="0.005008736159652472 -0.03048798069357872 -0.04119383916258812 0.1079999953508377 0.09020166844129562 0.04119651019573212"></Bound>
<Occurrence id="id234" materialRef="id212" instanceRefs="#inst1798736 #inst2010456 #inst1729056 #inst1727816"></Occurrence>
<Representation id="id237" format="JT" location="./2_Cylinder_Engine/Head_2_123_151_0_Parts.jt"></Representation></Part>
<Part id="id239" name="Spark Plug:;0,Parts" type="solid">
<Bound id="id242" values="0.03006996028125286 0.2239631712436676 0.02060705050826073 0.01078151073306799 0.009165501222014427 0.0493929535150528"></Bound>
<Representation id="id243" format="JT" location="./2_Cylinder_Engine/Spark_Plug__0_Parts.jt"></Representation></Part>
<Part id="id245" name="Head Nut:123-005;0,Parts" type="solid">
<Bound id="id248" values="0.02565165981650353 0.2141639441251755 -0.008499999530613422 0.01200000010430813 0.01199112832546234 0.008499999530613422"></Bound>
<Representation id="id249" format="JT" location="./2_Cylinder_Engine/Head_Nut_123_005_0_Parts.jt"></Representation></Part>
<Part id="id251" name="Rocker_Sub:;0,Parts" instanceRefs="inst2033120 inst1789832 inst2033672 inst1949072" type="assembly">
<UserData id="id262">
<UserValue value="Rocker_Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="Jan-30-1998 16:58:27.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Rocker_Sub" title="I-DEAS Name"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="May-03-1999 15:12:04.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id264" name="Rocker Arm Shaft:123-601;0,Parts" type="solid">
<Bound id="id267" values="-0.04317900538444519 0.4631594121456146 0.05750000104308128 0.006500000134110451 0.006495170295238495 0.05750000104308128"></Bound>
<Representation id="id268" format="JT" location="./2_Cylinder_Engine/Rocker_Arm_Shaft_123_601_0_Parts.jt"></Representation></Part>
<Part id="id270" name="Rocker_Mount_Sub:;0,Parts" instanceRefs="inst1796000 inst2030512 inst1725832 inst2029080" type="assembly">
<UserData id="id276">
<UserValue value="Rocker_Mount_Sub" title="I-DEAS Name"></UserValue>
<UserValue value="Rocker_Mount_Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue></UserData></Part>
<Part id="id278" name="Rocker Mount:123-604;0,Parts" type="solid">
<Bound id="id281" values="0.005044352263212204 -0.05961518362164497 0.007500000298023224 0.0494999997317791 0.02099999971687794 0.007500000298023224"></Bound>
<Representation id="id282" format="JT" location="./2_Cylinder_Engine/Rocker_Mount_123_604_0_Parts.jt"></Representation></Part>
<Part id="id284" name="Rocker Mount Cap:123-608;0,Parts" type="solid">
<Bound id="id287" values="0.005044352263212204 -0.05511518567800522 0.007500000298023224 0.0494999997317791 0.006499998271465302 0.007500000298023224"></Bound>
<Representation id="id288" format="JT" location="./2_Cylinder_Engine/Rocker_Mount_Cap_123_608_0_Parts.jt"></Representation></Part>
<Part id="id290" name="Rocker Bolt:123-603;0,Parts" type="solid">
<Bound id="id293" values="0.02305358275771141 0.2096639275550842 -0.04050000011920929 0.007499999366700649 0.007494449149817228 0.04050000011920929"></Bound>
<Representation id="id294" format="JT" location="./2_Cylinder_Engine/Rocker_Bolt_123_603_0_Parts.jt"></Representation></Part>
<Part id="id299" name="Rocker_Mount_Sub:;0,Parts" instanceRefs="inst1996808 inst1867136 inst1948848 inst1997256" type="assembly">
<UserData id="id310">
<UserValue value="Rocker_Mount_Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="Jan-30-1998 16:58:27.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Rocker_Mount_Sub" title="I-DEAS Name"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="May-03-1999 15:12:04.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id327" name="Valve Spring:123-702;0,Parts" type="solid">
<Bound id="id330" values="-0.2873985767364502 -0.0646171048283577 0.0324999988079071 0.008999995887279511 0.008993340656161308 0.0324999988079071"></Bound>
<Representation id="id331" format="JT" location="./2_Cylinder_Engine/Valve_Spring_123_702_0_Parts.jt"></Representation></Part>
<Part id="id333" name="Valve_Sub:;0,Parts" instanceRefs="inst1914472 inst1734000 inst1730152" type="assembly">
<UserData id="id339">
<UserValue value="Valve_Sub" title="I-DEAS Name"></UserValue>
<UserValue value="Valve_Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue></UserData></Part>
<Part id="id341" name="Valve:123-700;0,Parts" type="solid">
<Bound id="id344" values="0.1265590041875839 0.2941140830516815 0 0.05499999970197678 0.01800000295042992 0.01798668131232262"></Bound>
<Representation id="id345" format="JT" location="./2_Cylinder_Engine/Valve_123_700_0_Parts.jt"></Representation></Part>
<Part id="id347" name="Valve Spring Cap:123-704;0,Parts" type="solid">
<Bound id="id350" values="0.2066644430160523 0.2842055261135101 0 0.004499997943639755 0.01600000448524952 0.01598815992474556"></Bound>
<Representation id="id351" format="JT" location="./2_Cylinder_Engine/Valve_Spring_Cap_123_704_0_Parts.jt"></Representation></Part>
<Part id="id353" name="Spring:;0,Parts" instanceRefs="inst1910040 inst1910640 inst1911040 inst1911768 inst1912168 inst1912968 inst1920696 inst1827264 inst1920976 inst1994408" type="assembly">
<UserData id="id359">
<UserValue value="Spring" title="I-DEAS Name"></UserValue>
<UserValue value="Spring:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue></UserData></Part>
<Part id="id361" name="Spring Link:;0,Parts" type="solid">
<Bound id="id364" values="0.1303011178970337 -0.04939981177449226 0.007499259896576405 0.001999998930841684 0.01499851979315281 0.007499259896576405"></Bound>
<Representation id="id365" format="JT" location="./2_Cylinder_Engine/Spring_Link__0_Parts.jt"></Representation></Part>
<Part id="id394" name="Valve_Sub:;0,Parts" instanceRefs="inst1995632 inst2053208 inst1862560" type="assembly">
<UserData id="id406">
<UserValue value="Valve_Sub:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="**Changes not in Library**" title="Revision"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Jan-30-1998 16:58:26.00" title="Version Create Date + Time"></UserValue>
<UserValue value="Valve_Sub" title="I-DEAS Name"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="May-03-1999 15:12:04.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id408" name="Spring:;0,Parts" instanceRefs="inst1722840 inst1723976 inst1725736 inst1995424 inst1726232 inst1727160 inst1722360 inst1995528 inst1995008 inst2053416" type="assembly">
<UserData id="id419">
<UserValue value="Spring:;0,Parts" title="Name"></UserValue>
<UserValue type="int" value="0" title="Version"></UserValue>
<UserValue value="sgerus" title="Creator"></UserValue>
<UserValue value="Jan-30-1998 16:58:25.00" title="Version Create Date + Time"></UserValue>
<UserValue value="INITIAL" title="State"></UserValue>
<UserValue value="Spring" title="I-DEAS Name"></UserValue>
<UserValue value="sgerus" title="Last Modifier"></UserValue>
<UserValue value="May-03-1999 15:12:04.00" title="Version Mod. Date + Time"></UserValue></UserData></Part>
<Part id="id457" name="Rocker Arm:123-600;0,Parts" type="solid">
<Bound id="id460" values="-0.2874188423156738 -0.1816282123327255 0.04250000044703484 0.03894562274217606 0.01755017042160034 0.04250000044703484"></Bound>
<Representation id="id461" format="JT" location="./2_Cylinder_Engine/Rocker_Arm_123_600_0_Parts.jt"></Representation></Part>
<Part id="id463" name="Rocker Arm_copy:123-602;0,Parts" type="solid">
<Bound id="id466" values="-0.2914990782737732 -0.1816282123327255 0.04250000044703484 0.03894564881920815 0.01755017600953579 0.04250000044703484"></Bound>
<Representation id="id467" format="JT" location="./2_Cylinder_Engine/Rocker_Arm_copy_123_602_0_Parts.jt"></Representation></Part>
<Part id="id469" name="Valve Cover_copy:;0,Main" type="solid">
<Bound id="id472" values="0.003508739871904254 -0.03198798000812531 0.0386538989841938 0.101500004529953 0.09204161167144775 0.03634610027074814"></Bound>
<Representation id="id473" format="JT" location="./2_Cylinder_Engine/Valve_Cover_copy__0_Main.jt"></Representation></Part>
<Part id="id481" name="Valve Cover:123-701;0,Parts" type="solid">
<Bound id="id486" values="0.003508739871904254 -0.03198803216218948 0.1113460958003998 0.101500004529953 0.09204155951738358 0.03634609654545784"></Bound>
<Occurrence id="id483" instanceRefs="#inst1798736 #inst2010456 #inst1724160">
<Transform id="id484">-1.552729944620523e-009 5.031413063960599e-009 -1 0 5.0314401534024e-009 1 5.031413063960599e-009 0 1 -3.418919334308157e-007 -1.096145751944277e-007 0 0.6029092669487 0.04294551536440849 0.04271972924470902 1</Transform></Occurrence>
<Representation id="id487" format="JT" location="./2_Cylinder_Engine/Valve_Cover_123_701_0_Parts.jt"></Representation></Part></InstanceGraph>
<Material id="id77" diffuse="1 0 1" specular="1 0 1" emissive="0 0 0" ambient="0 0 0" shininess="96" alpha="0.1000000238418579"></Material>
<Material id="id182" diffuse="0.847058892250061 0.847058892250061 0.847058892250061" specular="0.8000000715255737 0.8000000715255737 0.8000000715255737" emissive="0 0 0" ambient="0.1490196138620377 0.1490196138620377 0.1490196138620377" shininess="96" alpha="0.5"></Material>
<Material id="id190" diffuse="0.6509804129600525 0.7921569347381592 0.9411765336990356" specular="0.6509804129600525 0.7921569347381592 0.9411765336990356" emissive="0 0 0" ambient="0.1490196138620377 0.1490196138620377 0.1490196138620377" shininess="96" alpha="0.5"></Material>
<Material id="id212" diffuse="1 0 0" specular="1 0 0" emissive="0 0 0" ambient="0.1490196138620377 0.1490196138620377 0.1490196138620377" shininess="96" alpha="0.5"></Material></ProductDef></PLMXML>

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -157,6 +157,9 @@ Driver_Mesh::Status DriverSTL_R_SMDS_Mesh::Perform()
// static methods
#pragma warning(push)
#pragma warning(disable : 4805)
static Standard_Real readFloat(OSD_File& theFile)
{
union {
@ -176,6 +179,7 @@ static Standard_Real readFloat(OSD_File& theFile)
return u.f;
}
#pragma warning(pop)
static SMDS_MeshNode* addNode(const gp_Pnt& P,
DriverSTL_DataMapOfPntNodePtr& uniqnodes,

View File

@ -94,7 +94,11 @@
#include "Annotation.h"
#include "MeasureDistance.h"
#include "Placement.h"
#include "Plane.h"
#include "GeoFeatureGroup.h"
#include "OriginGroup.h"
#include "Part.h"
#include "OriginFeature.h"
#include "Origin.h"
#include "MaterialObject.h"
#include "Expression.h"
@ -1128,7 +1132,14 @@ void Application::initTypes(void)
App ::MaterialObject ::init();
App ::MaterialObjectPython ::init();
App ::Placement ::init();
App ::OriginFeature ::init();
App ::Plane ::init();
App ::Line ::init();
App ::GeoFeatureGroup ::init();
App ::GeoFeatureGroupPython ::init();
App ::OriginGroup ::init();
App ::Part ::init();
App ::Origin ::init();
// Expression classes
App ::Expression ::init();
@ -1334,7 +1345,7 @@ void Application::processFiles(const std::list<std::string>& files)
Base::Interpreter().runFile(file.filePath().c_str(), true);
}
else if (file.hasExtension("py")) {
try {
try{
Base::Interpreter().loadModule(file.fileNamePure().c_str());
}
catch(const PyException&) {

View File

@ -33,6 +33,11 @@ set(FreeCADApp_LIBS
generate_from_xml(DocumentPy)
generate_from_xml(DocumentObjectPy)
generate_from_xml(DocumentObjectGroupPy)
generate_from_xml(GeoFeaturePy)
generate_from_xml(GeoFeatureGroupPy)
generate_from_xml(OriginGroupPy)
generate_from_xml(PartPy)
generate_from_xml(ComplexGeoDataPy)
generate_from_xml(PropertyContainerPy)
generate_from_xml(MaterialPy)
@ -43,6 +48,10 @@ generate_from_py(FreeCADTest TestScript.h)
SET(FreeCADApp_XML_SRCS
DocumentObjectGroupPy.xml
DocumentObjectPy.xml
GeoFeaturePy.xml
GeoFeatureGroupPy.xml
OriginGroupPy.xml
PartPy.xml
DocumentPy.xml
PropertyContainerPy.xml
ComplexGeoDataPy.xml
@ -58,6 +67,7 @@ SET(Document_CPP_SRCS
DocumentObjectFileIncluded.cpp
DocumentObjectGroup.cpp
DocumentObjectGroupPyImp.cpp
GeoFeaturePyImp.cpp
DocumentObjectPyImp.cpp
DocumentObserver.cpp
DocumentObserverPython.cpp
@ -66,10 +76,18 @@ SET(Document_CPP_SRCS
FeaturePython.cpp
FeatureTest.cpp
GeoFeature.cpp
GeoFeatureGroupPyImp.cpp
GeoFeatureGroup.cpp
OriginGroupPyImp.cpp
OriginGroup.cpp
PartPyImp.cpp
Part.cpp
Origin.cpp
Path.cpp
InventorObject.cpp
MeasureDistance.cpp
Placement.cpp
Plane.cpp
OriginFeature.cpp
Range.cpp
Transactions.cpp
VRMLObject.cpp
@ -93,10 +111,15 @@ SET(Document_HPP_SRCS
FeaturePythonPyImp.inl
FeatureTest.h
GeoFeature.h
GeoFeatureGroup.h
OriginGroup.h
Part.h
Origin.h
Path.h
InventorObject.h
MeasureDistance.h
Placement.h
Plane.h
OriginFeature.h
Range.h
Transactions.h
VRMLObject.h

View File

@ -74,7 +74,6 @@ recompute path. Also enables more complicated dependencies beyond trees.
#include "DocumentPy.h"
#include "Application.h"
#include "DocumentObject.h"
#include "PropertyLinks.h"
#include "MergeDocuments.h"
#include <Base/Console.h>
@ -136,12 +135,13 @@ struct DocumentP
std::map<std::string,DocumentObject*> objectMap;
DocumentObject* activeObject;
Transaction *activeUndoTransaction;
Transaction *activeTransaction;
Transaction *activeTransaction; ///< FIXME: has no effect (2015-09-01, Fat-Zer)
int iTransactionMode;
int iTransactionCount;
std::map<int,Transaction*> mTransactions;
std::map<Vertex,DocumentObject*> vertexMap;
bool rollback;
bool undoing; ///< document in the midle of undo or redo
bool closable;
bool keepTrailingDigits;
int iUndoMode;
@ -157,6 +157,7 @@ struct DocumentP
iTransactionMode = 0;
iTransactionCount = 0;
rollback = false;
undoing = false;
closable = true;
keepTrailingDigits = true;
iUndoMode = 0;
@ -573,9 +574,10 @@ bool Document::undo(void)
// redo
d->activeUndoTransaction = new Transaction();
d->activeUndoTransaction->Name = mUndoTransactions.back()->Name;
d->undoing = true;
// applying the undo
mUndoTransactions.back()->apply(*this,false);
d->undoing = false;
// save the redo
mRedoTransactions.push_back(d->activeUndoTransaction);
@ -604,7 +606,9 @@ bool Document::redo(void)
d->activeUndoTransaction->Name = mRedoTransactions.back()->Name;
// do the redo
d->undoing = true;
mRedoTransactions.back()->apply(*this,true);
d->undoing = false;
mUndoTransactions.push_back(d->activeUndoTransaction);
d->activeUndoTransaction = 0;
@ -927,6 +931,10 @@ Document::Document(void)
ADD_PROPERTY_TYPE(Id,(""),0,Prop_None,"ID of the document");
ADD_PROPERTY_TYPE(Uid,(id),0,Prop_ReadOnly,"UUID of the document");
// license stuff
ADD_PROPERTY_TYPE(License,("CC-BY 3.0"),0,Prop_None,"License string of the Item");
ADD_PROPERTY_TYPE(LicenseURL,("http://creativecommons.org/licenses/by/3.0/"),0,Prop_None,"URL to the license text/contract");
// license stuff
int licenseId = App::GetApplication().GetParameterGroupByPath
("User parameter:BaseApp/Preferences/Document")->GetInt("prefLicenseType",0);
@ -983,6 +991,10 @@ Document::Document(void)
// this creates and sets 'TransientDir' in onChanged()
ADD_PROPERTY_TYPE(TransientDir,(""),0,PropertyType(Prop_Transient|Prop_ReadOnly),
"Transient directory, where the files live while the document is open");
ADD_PROPERTY_TYPE(Tip,(0),0,PropertyType(Prop_Transient),
"Link of the tip object of the document");
ADD_PROPERTY_TYPE(TipName,(""),0,PropertyType(Prop_Hidden|Prop_ReadOnly),
"Link of the tip object of the document");
Uid.touch();
}
@ -1103,7 +1115,7 @@ void Document::Restore(Base::XMLReader &reader)
string name = reader.getAttribute("name");
try {
addObject(type.c_str(),name.c_str());
addObject(type.c_str(), name.c_str(), /*isNew=*/ false);
}
catch ( Base::Exception& ) {
Base::Console().Message("Cannot create object '%s'\n", name.c_str());
@ -1130,6 +1142,10 @@ void Document::Restore(Base::XMLReader &reader)
else if ( scheme >= 3 ) {
// read the feature types
readObjects(reader);
// tip object handling. First the whole document has to be read, then we
// can restore the Tip link out of the TipName Property:
Tip.setValue(getObject(TipName.getValue()));
}
reader.readEndElement("Document");
@ -1215,7 +1231,7 @@ Document::readObjects(Base::XMLReader& reader)
// otherwise we may cause a dependency to itself
// Example: Object 'Cut001' references object 'Cut' and removing the
// digits we make an object 'Cut' referencing itself.
App::DocumentObject* obj = addObject(type.c_str(),name.c_str());
App::DocumentObject* obj = addObject(type.c_str(), name.c_str(), /*isNew=*/ false);
if (obj) {
objs.push_back(obj);
// use this name for the later access because an object with
@ -1336,6 +1352,11 @@ bool Document::save (void)
compression = Base::clamp<int>(compression, Z_NO_COMPRESSION, Z_BEST_COMPRESSION);
if (*(FileName.getValue()) != '\0') {
// Save the name of the tip object in order to handle in Restore()
if(Tip.getValue()) {
TipName.setValue(Tip.getValue()->getNameInDocument());
}
std::string LastModifiedDateString = Base::TimeInfo::currentDateTimeString();
LastModifiedDate.setValue(LastModifiedDateString.c_str());
// set author if needed
@ -1448,6 +1469,8 @@ void Document::restore (void)
// !TODO mind exeptions while restoring!
clearUndos();
for (std::vector<DocumentObject*>::iterator obj = d->objectArray.begin(); obj != d->objectArray.end(); ++obj) {
// NOTE don't call unsetupObject () here due to it is intended to do some manipulations
// on other objects, but here we are wiping out document completely
signalDeletedObject(*(*obj));
delete *obj;
}
@ -1639,8 +1662,11 @@ Document::getDependencyList(const std::vector<App::DocumentObject*>& objs) const
// this sort gives the execute
boost::topological_sort(DepList, std::front_inserter(make_order));
}
catch (const std::exception&) {
return std::vector<App::DocumentObject*>();
catch (const std::exception& e) {
std::stringstream ss;
ss << "Gathering all dependencies failed, probably due to circular dependencies. Error: ";
ss << e.what();
throw Base::Exception(ss.str().c_str());
}
std::set<Vertex> out;
@ -1751,7 +1777,7 @@ void Document::recompute()
for (std::list<Vertex>::reverse_iterator i = make_order.rbegin();i != make_order.rend(); ++i) {
DocumentObject* Cur = d->vertexMap[*i];
if (!Cur) continue;
if (!Cur || !isIn(Cur)) continue;
#ifdef FC_LOGFEATUREUPDATE
std::clog << Cur->getNameInDocument() << " dep on:" ;
#endif
@ -1816,7 +1842,7 @@ void Document::recompute()
// reset all touched
for (std::map<Vertex,DocumentObject*>::iterator it = d->vertexMap.begin(); it != d->vertexMap.end(); ++it) {
if (it->second)
if ((it->second) && isIn(it->second))
it->second->purgeTouched();
}
d->vertexMap.clear();
@ -1914,7 +1940,7 @@ void Document::recomputeFeature(DocumentObject* Feat)
_recomputeFeature(Feat);
}
DocumentObject * Document::addObject(const char* sType, const char* pObjectName)
DocumentObject * Document::addObject(const char* sType, const char* pObjectName, bool isNew)
{
Base::BaseClass* base = static_cast<Base::BaseClass*>(Base::Type::createInstanceByName(sType,true));
@ -1961,6 +1987,11 @@ DocumentObject * Document::addObject(const char* sType, const char* pObjectName)
pcObject->Label.setValue( ObjectName );
// Call the object-specific initialization
if (!d->undoing && !d->rollback && isNew) {
pcObject->setupObject ();
}
// mark the object as new (i.e. set status bit 2) and send the signal
pcObject->StatusBits.set(2);
signalNewObject(*pcObject);
@ -2050,7 +2081,14 @@ void Document::remObject(const char* sName)
if (d->activeObject == pos->second)
d->activeObject = 0;
// Mark the object as about to be deleted
pos->second->StatusBits.set (ObjectStatus::Delete);
if (!d->undoing && !d->rollback) {
pos->second->unsetupObject();
}
signalDeletedObject(*(pos->second));
pos->second->StatusBits.reset (ObjectStatus::Delete); // Unset the bit to be on the safe side
if (!d->vertexMap.empty()) {
// recompute of document is running
for (std::map<Vertex,DocumentObject*>::iterator it = d->vertexMap.begin(); it != d->vertexMap.end(); ++it) {
@ -2064,6 +2102,12 @@ void Document::remObject(const char* sName)
// Before deleting we must nullify all dependant objects
breakDependency(pos->second, true);
//and remove the tip if needed
if(Tip.getValue() && strcmp(Tip.getValue()->getNameInDocument(), sName)==0) {
Tip.setValue(nullptr);
TipName.setValue("");
}
// do no transactions if we do a rollback!
if(!d->rollback){
@ -2098,14 +2142,29 @@ void Document::remObject(const char* sName)
/// Remove an object out of the document (internal)
void Document::_remObject(DocumentObject* pcObject)
{
// TODO Refactoring: share code with Document::remObject() (2015-09-01, Fat-Zer)
_checkTransaction(pcObject);
std::map<std::string,DocumentObject*>::iterator pos = d->objectMap.find(pcObject->getNameInDocument());
if (d->activeObject == pcObject)
d->activeObject = 0;
// Mark the object as about to be deleted
pcObject->StatusBits.set (ObjectStatus::Delete);
if (!d->undoing && !d->rollback) {
pcObject->unsetupObject();
}
signalDeletedObject(*pcObject);
// TODO Check me if it's needed (2015-09-01, Fat-Zer)
pcObject->StatusBits.reset (ObjectStatus::Delete); // Unset the bit to be on the safe side
//remove the tip if needed
if(Tip.getValue() == pcObject) {
Tip.setValue(nullptr);
TipName.setValue("");
}
// do no transactions if we do a rollback!
if(!d->rollback){
@ -2290,6 +2349,16 @@ DocumentObject * Document::getObject(const char *Name) const
return 0;
}
// Note: This method is only used in Tree.cpp slotChangeObject(), see explanation there
const bool Document::isIn(const DocumentObject *pFeat) const
{
for (std::map<std::string,DocumentObject*>::const_iterator o = d->objectMap.begin(); o != d->objectMap.end(); o++)
if (o->second == pFeat)
return true;
return false;
}
const char * Document::getObjectName(DocumentObject *pFeat) const
{
std::map<std::string,DocumentObject*>::const_iterator pos;

View File

@ -30,6 +30,7 @@
#include "PropertyContainer.h"
#include "PropertyStandard.h"
#include "PropertyLinks.h"
#include <map>
#include <vector>
@ -91,10 +92,14 @@ public:
App::PropertyString LicenseURL;
/// Meta descriptons
App::PropertyMap Meta;
/// Meta descriptons
/// Material descriptons, used and defined in the Material module.
App::PropertyMap Material;
/// read-only name of the temp dir created wen the document is opened
PropertyString TransientDir;
/// Tip object of the document (if any)
PropertyLink Tip;
/// Tip object of the document (if any)
PropertyString TipName;
//@}
/** @name Signals of the document */
@ -162,9 +167,14 @@ public:
/** @name Object handling */
//@{
/** Add a feature of sType with sName (ASCII) to this document and set it active.
* Unicode names are set through the Label property.
* Unicode names are set through the Label propery.
* @param sType the type of created object
* @param pObjectName if nonNULL use that name otherwise generate a new uniq name based on the \a sType
* @param isNew if false don't call the \c DocumentObject::setupObject() callback (default is true)
*/
DocumentObject *addObject(const char* sType, const char* pObjectName=0);
DocumentObject *addObject(const char* sType, const char* pObjectName=0, bool isNew=true);
/// Remove a feature out of the document
void remObject(const char* sName);
/** Add an existing feature with sName (ASCII) to this document and set it active.
* Unicode names are set through the Label property.
* This is an overloaded function of the function above and can be used to create
@ -173,8 +183,8 @@ public:
* is raisedd.
*/
void addObject(DocumentObject*, const char* pObjectName=0);
/// Remove a feature out of the document
void remObject(const char* sName);
/** Copy an object from another document to this document
* If \a recursive is true then all objects this object depends on
* are copied as well. By default \a recursive is false.
@ -192,6 +202,8 @@ public:
DocumentObject *getActiveObject(void) const;
/// Returns a Object of this document
DocumentObject *getObject(const char *Name) const;
/// Returns true if the DocumentObject is contained in this document
const bool isIn(const DocumentObject *pFeat) const;
/// Returns a Name of an Object or 0
const char *getObjectName(DocumentObject *pFeat) const;
/// Returns a Name of an Object or 0

View File

@ -172,6 +172,40 @@ DocumentObjectGroup* DocumentObject::getGroup() const
return DocumentObjectGroup::getGroupOfObject(this);
}
bool DocumentObject::testIfLinkDAGCompatible(DocumentObject *linkTo) const
{
std::vector<App::DocumentObject*> linkTo_in_vector;
linkTo_in_vector.push_back(linkTo);
return this->testIfLinkDAGCompatible(linkTo_in_vector);
}
bool DocumentObject::testIfLinkDAGCompatible(const std::vector<DocumentObject *> &linksTo) const
{
Document* doc = this->getDocument();
if (!doc)
throw Base::Exception("DocumentObject::testIfLinkIsDAG: object is not in any document.");
std::vector<App::DocumentObject*> deplist = doc->getDependencyList(linksTo);
if( std::find(deplist.begin(),deplist.end(),this) != deplist.end() )
//found this in dependency list
return false;
else
return true;
}
bool DocumentObject::testIfLinkDAGCompatible(PropertyLinkSubList &linksTo) const
{
const std::vector<App::DocumentObject*> &linksTo_in_vector = linksTo.getValues();
return this->testIfLinkDAGCompatible(linksTo_in_vector);
}
bool DocumentObject::testIfLinkDAGCompatible(PropertyLinkSub &linkTo) const
{
std::vector<App::DocumentObject*> linkTo_in_vector;
linkTo_in_vector.reserve(1);
linkTo_in_vector.push_back(linkTo.getValue());
return this->testIfLinkDAGCompatible(linkTo_in_vector);
}
void DocumentObject::onLostLinkToObject(DocumentObject*)
{

View File

@ -26,6 +26,7 @@
#include <App/PropertyContainer.h>
#include <App/PropertyStandard.h>
#include <App/PropertyLinks.h>
#include <App/PropertyExpressionEngine.h>
#include <Base/TimeInfo.h>
@ -47,6 +48,7 @@ enum ObjectStatus {
New = 2,
Recompute = 3,
Restore = 4,
Delete = 5,
Expand = 16
};
@ -114,6 +116,8 @@ public:
bool isRecomputing() const {return StatusBits.test(3);}
/// returns true if this objects is currently restoring from file
bool isRestoring() const {return StatusBits.test(4);}
/// returns true if this objects is currently restoring from file
bool isDeleting() const {return StatusBits.test(5);}
/// recompute only this object
virtual App::DocumentObjectExecReturn *recompute(void);
/// return the status bits
@ -129,6 +133,21 @@ public:
/// get group if object is part of a group, otherwise 0 is returned
DocumentObjectGroup* getGroup() const;
/**
* @brief testIfLinkIsDAG tests a link that is about to be created for
* circular references.
* @param objToLinkIn (input). The object this object is to depend on after
* the link is going to be created.
* @return true if link can be created (no cycles will be made). False if
* the link will cause a circular dependency and break recomputes. Throws an
* error if the document already has a circular dependency.
* That is, if the return is true, the link is allowed.
*/
bool testIfLinkDAGCompatible(DocumentObject* linkTo) const;
bool testIfLinkDAGCompatible(const std::vector<DocumentObject *> &linksTo) const;
bool testIfLinkDAGCompatible(App::PropertyLinkSubList &linksTo) const;
bool testIfLinkDAGCompatible(App::PropertyLinkSub &linkTo) const;
public:
/** mustExecute
@ -194,7 +213,7 @@ protected:
* 2 - object is marked as 'new'
* 3 - object is marked as 'recompute', i.e. the object gets recomputed now
* 4 - object is marked as 'restoring', i.e. the object gets loaded at the moment
* 5 - reserved
* 5 - object is marked as 'deleting', i.e. the object gets deleted at the moment
* 6 - reserved
* 7 - reserved
* 16 - object is marked as 'expanded' in the tree view
@ -213,6 +232,10 @@ protected:
virtual void onDocumentRestored() {}
/// get called after setting the document
virtual void onSettingDocument() {}
/// get called after a brand new object was created
virtual void setupObject() {}
/// get called when object is going to be removed from the document
virtual void unsetupObject() {}
/// python object of this class and all descendend
protected: // attributes

View File

@ -63,20 +63,22 @@ void DocumentObjectGroup::addObject(DocumentObject* obj)
void DocumentObjectGroup::removeObject(DocumentObject* obj)
{
std::vector<DocumentObject*> grp = Group.getValues();
for (std::vector<DocumentObject*>::iterator it = grp.begin(); it != grp.end(); ++it) {
if (*it == obj) {
grp.erase(it);
Group.setValues(grp);
break;
}
const std::vector<DocumentObject*> & grp = Group.getValues();
std::vector<DocumentObject*> newGrp;
std::remove_copy (grp.begin(), grp.end(), std::back_inserter (newGrp), obj);
if (grp.size() != newGrp.size()) {
Group.setValues (newGrp);
}
}
void DocumentObjectGroup::removeObjectsFromDocument()
{
std::vector<DocumentObject*> grp = Group.getValues();
for (std::vector<DocumentObject*>::iterator it = grp.begin(); it != grp.end(); ++it) {
const std::vector<DocumentObject*> & grp = Group.getValues();
// Use set so iterate on each linked object exactly one time (in case of multiple links to the same document)
std::set<DocumentObject*> grpSet (grp.begin(), grp.end());
for (std::set<DocumentObject*>::iterator it = grpSet.begin(); it != grpSet.end(); ++it) {
removeObjectFromDocument(*it);
}
}
@ -85,11 +87,9 @@ void DocumentObjectGroup::removeObjectFromDocument(DocumentObject* obj)
{
// remove all children
if (obj->getTypeId().isDerivedFrom(DocumentObjectGroup::getClassTypeId())) {
std::vector<DocumentObject*> grp = static_cast<DocumentObjectGroup*>(obj)->Group.getValues();
for (std::vector<DocumentObject*>::iterator it = grp.begin(); it != grp.end(); ++it) {
DocumentObjectGroup *grp = static_cast<DocumentObjectGroup*>(obj);
// recursive call to remove all subgroups
removeObjectFromDocument(*it);
}
grp->removeObjectsFromDocument();
}
this->getDocument()->remObject(obj->getNameInDocument());
@ -103,12 +103,18 @@ DocumentObject *DocumentObjectGroup::getObject(const char *Name) const
return 0;
}
bool DocumentObjectGroup::hasObject(const DocumentObject* obj) const
bool DocumentObjectGroup::hasObject(const DocumentObject* obj, bool recursive) const
{
const std::vector<DocumentObject*>& grp = Group.getValues();
for (std::vector<DocumentObject*>::const_iterator it = grp.begin(); it != grp.end(); ++it) {
if (*it == obj)
if (*it == obj) {
return true;
} else if ( recursive && (*it)->isDerivedFrom (App::DocumentObjectGroup::getTypeId()) ) {
App::DocumentObjectGroup *subGroup = static_cast<App::DocumentObjectGroup *> (*it);
if (subGroup->hasObject (obj, recursive)) {
return true;
}
}
}
return false;
@ -162,7 +168,7 @@ DocumentObjectGroup* DocumentObjectGroup::getGroupOfObject(const DocumentObject*
{
const Document* doc = obj->getDocument();
std::vector<DocumentObject*> grps = doc->getObjectsOfType(DocumentObjectGroup::getClassTypeId());
for (std::vector<DocumentObject*>::iterator it = grps.begin(); it != grps.end(); ++it) {
for (std::vector<DocumentObject*>::const_iterator it = grps.begin(); it != grps.end(); ++it) {
DocumentObjectGroup* grp = (DocumentObjectGroup*)(*it);
if (grp->hasObject(obj))
return grp;

View File

@ -64,8 +64,10 @@ public:
DocumentObject *getObject(const char* Name) const;
/**
* Checks whether the object \a obj is part of this group.
* @param obj the object to check for.
* @param recursive if true check also if the obj is child of some sub group (default is false).
*/
bool hasObject(const DocumentObject* obj) const;
bool hasObject(const DocumentObject* obj, bool recursive=false) const;
/**
* Checks whether this group object is a child (or sub-child)
* of the given group object.

View File

@ -40,7 +40,11 @@
</Methode>
<Methode Name="hasObject">
<Documentation>
<UserDocu>Checks if the group has a given object</UserDocu>
<UserDocu>hasObject(obj, recursive=false)
Checks if the group has a given object
@param obj the object to check for.
@param recursive if true check also if the obj is child of some sub group (default is false).
</UserDocu>
</Documentation>
</Methode>
<CustomAttributes />

View File

@ -172,7 +172,9 @@ PyObject* DocumentObjectGroupPy::getObject(PyObject *args)
PyObject* DocumentObjectGroupPy::hasObject(PyObject *args)
{
PyObject *object;
if (!PyArg_ParseTuple(args, "O!", &(DocumentObjectPy::Type), &object)) // convert args: Python->C
PyObject *recursivePy = 0;
int recursive = 0;
if (!PyArg_ParseTuple(args, "O!|O", &(DocumentObjectPy::Type), &object, &recursivePy))
return NULL; // NULL triggers exception
DocumentObjectPy* docObj = static_cast<DocumentObjectPy*>(object);
@ -184,8 +186,16 @@ PyObject* DocumentObjectGroupPy::hasObject(PyObject *args)
PyErr_SetString(Base::BaseExceptionFreeCADError, "Cannot check an object from another document with this group");
return NULL;
}
if (recursivePy) {
recursive = PyObject_IsTrue(recursivePy);
if ( recursive == -1) {
// Note: shouldn't happen
PyErr_SetString(PyExc_ValueError, "The recursive parameter should be of boolean type");
return 0;
}
}
bool v = getDocumentObjectGroupPtr()->hasObject(docObj->getDocumentObjectPtr());
bool v = getDocumentObjectGroupPtr()->hasObject(docObj->getDocumentObjectPtr(), recursive);
return PyBool_FromLong(v ? 1 : 0);
}

View File

@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (c) Jürgen Riegel (juergen.riegel@web.de) 2002 *
* Copyright (c) Juergen Riegel (juergen.riegel@web.de) 2002 *
* *
* This file is part of the FreeCAD CAx development system. *
* *

View File

@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (c) Jürgen Riegel (juergen.riegel@web.de) 2002 *
* Copyright (c) Juergen Riegel (juergen.riegel@web.de) 2002 *
* *
* This file is part of the FreeCAD CAx development system. *
* *
@ -46,6 +46,13 @@ public:
GeoFeature(void);
virtual ~GeoFeature();
/**
* @brief transformPlacement applies transform to placement of this shape.
* Override this function to propagate the change of placement to base
* features, for example. By the time of writing this comment, the function
* was only called by alignment task (Edit->Alignment)
* @param transform (input).
*/
virtual void transformPlacement(const Base::Placement &transform);
};

175
src/App/GeoFeatureGroup.cpp Normal file
View File

@ -0,0 +1,175 @@
/***************************************************************************
* Copyright (c) Juergen Riegel (juergen.riegel@web.de) 2014 *
* Copyright (c) Alexander Golubev (Fat-Zer) <fatzer2@gmail.com> 2015 *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this library; see the file COPYING.LIB. If not, *
* write to the Free Software Foundation, Inc., 59 Temple Place, *
* Suite 330, Boston, MA 02111-1307, USA *
* *
***************************************************************************/
#include "PreCompiled.h"
#ifndef _PreComp_
#endif
#include <App/Document.h>
#include "GeoFeatureGroup.h"
#include "GeoFeatureGroupPy.h"
#include "FeaturePythonPyImp.h"
using namespace App;
PROPERTY_SOURCE(App::GeoFeatureGroup, App::DocumentObjectGroup)
//===========================================================================
// Feature
//===========================================================================
GeoFeatureGroup::GeoFeatureGroup(void)
{
ADD_PROPERTY(Placement,(Base::Placement()));
}
GeoFeatureGroup::~GeoFeatureGroup(void)
{
}
void GeoFeatureGroup::transformPlacement(const Base::Placement &transform)
{
// NOTE: Keep in sync with APP::GeoFeature
Base::Placement plm = this->Placement.getValue();
plm = transform * plm;
this->Placement.setValue(plm);
}
std::vector<App::DocumentObject*> GeoFeatureGroup::getGeoSubObjects () const {
const auto & objs = Group.getValues();
std::set<const App::DocumentObjectGroup*> processedGroups;
std::set<App::DocumentObject*> rvSet;
std::set<App::DocumentObject*> curSearchSet (objs.begin(), objs.end());
processedGroups.insert ( this );
while ( !curSearchSet.empty() ) {
rvSet.insert ( curSearchSet.begin (), curSearchSet.end () );
std::set<App::DocumentObject*> nextSearchSet;
for ( auto obj: curSearchSet) {
if ( isNonGeoGroup (obj) ) {
const App::DocumentObjectGroup *grp = static_cast<const App::DocumentObjectGroup *> (obj);
// Check if we havent already processed the element may happen in case of nontree structure
// Note: if the condition is false this generally indicates malformed structure
if ( processedGroups.find (grp) == processedGroups.end() ) {
processedGroups.insert ( grp );
const auto & objs = grp->Group.getValues();
nextSearchSet.insert (objs.begin(), objs.end());
}
}
}
nextSearchSet.swap (curSearchSet);
}
return std::vector<App::DocumentObject*> ( rvSet.begin(), rvSet.end() );
}
bool GeoFeatureGroup::geoHasObject (const DocumentObject* obj) const {
const auto & objs = Group.getValues();
if (!obj) {
return false;
}
std::set<const App::DocumentObjectGroup*> processedGroups;
std::set<const App::DocumentObject*> curSearchSet (objs.begin(), objs.end());
processedGroups.insert ( this );
while ( !curSearchSet.empty() ) {
if ( curSearchSet.find (obj) != curSearchSet.end() ) {
return true;
}
std::set<const App::DocumentObject*> nextSearchSet;
for ( auto obj: curSearchSet) {
if ( isNonGeoGroup (obj) ) {
const App::DocumentObjectGroup *grp = static_cast<const App::DocumentObjectGroup *> (obj);
if ( processedGroups.find (grp) == processedGroups.end() ) {
processedGroups.insert ( grp );
const auto & objs = grp->Group.getValues();
nextSearchSet.insert (objs.begin(), objs.end());
}
}
}
nextSearchSet.swap (curSearchSet);
}
return false;
}
GeoFeatureGroup* GeoFeatureGroup::getGroupOfObject(const DocumentObject* obj, bool indirect)
{
const Document* doc = obj->getDocument();
std::vector<DocumentObject*> grps = doc->getObjectsOfType(GeoFeatureGroup::getClassTypeId());
for (std::vector<DocumentObject*>::const_iterator it = grps.begin(); it != grps.end(); ++it) {
GeoFeatureGroup* grp = (GeoFeatureGroup*)(*it);
if ( indirect ) {
if (grp->geoHasObject(obj)) {
return grp;
}
} else {
if (grp->hasObject(obj)) {
return grp;
}
}
}
return 0;
}
PyObject *GeoFeatureGroup::getPyObject()
{
if (PythonObject.is(Py::_None())){
// ref counter is set to 1
PythonObject = Py::Object(new GeoFeatureGroupPy(this),true);
}
return Py::new_reference_to(PythonObject);
}
// Python feature ---------------------------------------------------------
namespace App {
/// @cond DOXERR
PROPERTY_SOURCE_TEMPLATE(App::GeoFeatureGroupPython, App::GeoFeatureGroup)
template<> const char* App::GeoFeatureGroupPython::getViewProviderName(void) const {
return "Gui::ViewProviderGeoFeatureGroupPython";
}
template<> PyObject* App::GeoFeatureGroupPython::getPyObject(void) {
if (PythonObject.is(Py::_None())) {
// ref counter is set to 1
PythonObject = Py::Object(new FeaturePythonPyT<App::GeoFeatureGroupPy>(this),true);
}
return Py::new_reference_to(PythonObject);
}
/// @endcond
// explicit template instantiation
template class AppExport FeaturePythonT<App::GeoFeatureGroup>;
}

91
src/App/GeoFeatureGroup.h Normal file
View File

@ -0,0 +1,91 @@
/***************************************************************************
* Copyright (c) Juergen Riegel (juergen.riegel@web.de) 2014 *
* Copyright (c) Alexander Golubev (Fat-Zer) <fatzer2@gmail.com> 2015 *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this library; see the file COPYING.LIB. If not, *
* write to the Free Software Foundation, Inc., 59 Temple Place, *
* Suite 330, Boston, MA 02111-1307, USA *
* *
***************************************************************************/
#ifndef APP_GeoFeatureGroup_H
#define APP_GeoFeatureGroup_H
#include <App/FeaturePython.h>
#include "DocumentObjectGroup.h"
#include "PropertyGeo.h"
namespace App
{
/**
* The base class for placeable group of DocumentObjects
*/
class AppExport GeoFeatureGroup : public App::DocumentObjectGroup
{
PROPERTY_HEADER(App::GeoFeatureGroup);
public:
PropertyPlacement Placement;
/**
* @brief transformPlacement applies transform to placement of this shape.
* Override this function to propagate the change of placement to base
* features.
* @param transform (input).
*/
virtual void transformPlacement(const Base::Placement &transform);
/// Constructor
GeoFeatureGroup(void);
virtual ~GeoFeatureGroup();
/// Returns all geometrically controlled objects: all objects of this group and it's non-geo subgroups
std::vector<App::DocumentObject*> getGeoSubObjects () const;
/// Returns true if either the group or one of it's non-geo subgroups has the object
bool geoHasObject (const DocumentObject* obj) const;
/** Returns the geo feature group which contains this object.
* In case this object is not part of any geoFeatureGroup 0 is returned.
* Unlike DocumentObjectGroup::getGroupOfObject serches only for GeoFeatureGroups
* @param obj the object to search for
* @param indirect if true return if the group that so-called geoHas the object, @see geoHasObject()
* default is true
*/
static GeoFeatureGroup* getGroupOfObject(const DocumentObject* obj, bool indirect=true);
/// Returns true if the given DocumentObject is DocumentObjectGroup but not GeoFeatureGroup
static bool isNonGeoGroup(const DocumentObject* obj) {
return obj->isDerivedFrom ( App::DocumentObjectGroup::getClassTypeId () ) &&
!obj->isDerivedFrom ( App::GeoFeatureGroup::getClassTypeId () );
}
/// Returns the type name of the ViewProvider
virtual const char* getViewProviderName(void) const {
return "Gui::ViewProviderGeoFeatureGroup";
}
virtual PyObject *getPyObject(void);
};
typedef App::FeaturePythonT<GeoFeatureGroup> GeoFeatureGroupPython;
} //namespace App
#endif // APP_GeoFeatureGroup_H

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<GenerateModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="generateMetaModel_Module.xsd">
<PythonExport
Father="DocumentObjectGroupPy"
Name="GeoFeatureGroupPy"
Twin="GeoFeatureGroup"
TwinPointer="GeoFeatureGroup"
Include="App/GeoFeatureGroup.h"
Namespace="App"
FatherInclude="App/DocumentObjectGroupPy.h"
FatherNamespace="App">
<Documentation>
<Author Licence="LGPL" Name="Werner Mayer" EMail="wmayer@users.sourceforge.net" />
<UserDocu>This class handles placeable group of document objects</UserDocu>
</Documentation>
</PythonExport>
</GenerateModel>

View File

@ -0,0 +1,29 @@
#include "PreCompiled.h"
#include "App/GeoFeatureGroup.h"
// inclusion of the generated files (generated out of GeoFeatureGroupPy.xml)
#include "GeoFeatureGroupPy.h"
#include "GeoFeatureGroupPy.cpp"
using namespace App;
// returns a string which represents the object e.g. when printed in python
std::string GeoFeatureGroupPy::representation(void) const
{
return std::string("<GeoFeatureGroup object>");
}
PyObject *GeoFeatureGroupPy::getCustomAttributes(const char* /*attr*/) const
{
return 0;
}
int GeoFeatureGroupPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/)
{
return 0;
}

23
src/App/GeoFeaturePy.xml Normal file
View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<GenerateModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="generateMetaModel_Module.xsd">
<PythonExport
Father="DocumentObjectPy"
Name="GeoFeaturePy"
Twin="GeoFeature"
TwinPointer="GeoFeature"
Include="App/GeoFeature.h"
Namespace="App"
FatherInclude="App/DocumentObjectPy.h"
FatherNamespace="App">
<Documentation>
<Author Licence="LGPL" Name="Jürgen Riegel" EMail="FreeCAD@juergen-riegel.net" />
<UserDocu>This class does the whole placement and position handling</UserDocu>
</Documentation>
<Methode Name="getPaths">
<Documentation>
<UserDocu>returns all posible paths to the root of the document</UserDocu>
</Documentation>
</Methode>
<CustomAttributes />
</PythonExport>
</GenerateModel>

View File

@ -0,0 +1,40 @@
#include "PreCompiled.h"
#include "App/GeoFeature.h"
// inclusion of the generated files (generated out of GeoFeaturePy.xml)
#include "GeoFeaturePy.h"
#include "GeoFeaturePy.cpp"
using namespace App;
// returns a string which represents the object e.g. when printed in python
std::string GeoFeaturePy::representation(void) const
{
return std::string("<GeoFeature object>");
}
PyObject* GeoFeaturePy::getPaths(PyObject * /*args*/)
{
PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
return 0;
}
PyObject *GeoFeaturePy::getCustomAttributes(const char* /*attr*/) const
{
return 0;
}
int GeoFeaturePy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/)
{
return 0;
}

180
src/App/Origin.cpp Normal file
View File

@ -0,0 +1,180 @@
/***************************************************************************
* Copyright (c) Stefan Tr<EFBFBD>ger (stefantroeger@gmx.net) 2015 *
* Copyright (c) Alexander Golubev (Fat-Zer) <fatzer2@gmail.com> 2015 *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this library; see the file COPYING.LIB. If not, *
* write to the Free Software Foundation, Inc., 59 Temple Place, *
* Suite 330, Boston, MA 02111-1307, USA *
* *
***************************************************************************/
#include "PreCompiled.h"
#ifndef _PreComp_
#include <string>
#endif
#include <Base/Exception.h>
#include <Base/Placement.h>
#include <App/Document.h>
#include "OriginFeature.h"
#include "Origin.h"
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
using namespace App;
PROPERTY_SOURCE(App::Origin, App::DocumentObject)
const char* Origin::AxisRoles[3] = {"X_Axis", "Y_Axis", "Z_Axis"};
const char* Origin::PlaneRoles[3] = {"XY_Plane", "XZ_Plane", "YZ_Plane"};
Origin::Origin(void) {
ADD_PROPERTY_TYPE ( OriginFeatures, (0), 0, App::Prop_Hidden,
"Axis and baseplanes controlled by the origin" );
}
Origin::~Origin(void)
{ }
App::OriginFeature *Origin::getOriginFeature( const char *role) const {
const auto & features = OriginFeatures.getValues ();
auto featIt = std::find_if (features.begin(), features.end(),
[role] (App::DocumentObject *obj) {
return obj->isDerivedFrom ( App::OriginFeature::getClassTypeId () ) &&
strcmp (static_cast<App::OriginFeature *>(obj)->Role.getValue(), role) == 0;
} );
if (featIt != features.end()) {
return static_cast<App::OriginFeature *>(*featIt);
} else {
std::stringstream err;
err << "Origin \"" << getNameInDocument () << "\" doesn't contain feature with role \""
<< role << '"';
throw Base::Exception ( err.str().c_str () );
}
}
App::Line *Origin::getAxis( const char *role ) const {
App::OriginFeature *feat = getOriginFeature (role);
if ( feat->isDerivedFrom(App::Line::getClassTypeId () ) ) {
return static_cast<App::Line *> (feat);
} else {
std::stringstream err;
err << "Origin \"" << getNameInDocument () << "\" contains bad Axis object for role \""
<< role << '"';
throw Base::Exception ( err.str().c_str () );
}
}
App::Plane *Origin::getPlane( const char *role ) const {
App::OriginFeature *feat = getOriginFeature (role);
if ( feat->isDerivedFrom(App::Plane::getClassTypeId () ) ) {
return static_cast<App::Plane *> (feat);
} else {
std::stringstream err;
err << "Origin \"" << getNameInDocument () << "\" comtains bad Plane object for role \""
<< role << '"';
throw Base::Exception ( err.str().c_str () );
}
}
bool Origin::hasObject (DocumentObject *obj) const {
const auto & features = OriginFeatures.getValues ();
return std::find (features.begin(), features.end(), obj) != features.end ();
}
short Origin::mustExecute(void) const {
if (OriginFeatures.isTouched ()) {
return 1;
} else {
return DocumentObject::mustExecute();
}
}
App::DocumentObjectExecReturn *Origin::execute(void) {
try { // try to find all base axis and planes in the origin
for (const char* role: AxisRoles) {
App::Line *axis = getAxis (role);
assert(axis);
}
for (const char* role: PlaneRoles) {
App::Plane *plane = getPlane (role);
assert(plane);
}
} catch (const Base::Exception &ex) {
setError ();
return new App::DocumentObjectExecReturn ( ex.what () );
}
return DocumentObject::execute ();
}
void Origin::setupObject () {
const static struct {
const Base::Type type;
const char *role;
Base::Rotation rot;
} setupData [] = {
{App::Line::getClassTypeId(), "X_Axis", Base::Rotation () },
{App::Line::getClassTypeId(), "Y_Axis", Base::Rotation ( Base::Vector3d (1,1,1), M_PI*2/3 ) },
{App::Line::getClassTypeId(), "Z_Axis", Base::Rotation ( Base::Vector3d (1,1,1), M_PI*4/3 ) },
{App::Plane::getClassTypeId (), "XY_Plane", Base::Rotation () },
{App::Plane::getClassTypeId (), "XZ_Plane", Base::Rotation ( Base::Vector3d (0,1,1), M_PI ), },
{App::Plane::getClassTypeId (), "YZ_Plane", Base::Rotation ( Base::Vector3d (1,1,1), M_PI*2/3 ) },
};
App::Document *doc = getDocument ();
std::vector<App::DocumentObject *> links;
for (auto data: setupData) {
std::string objName = doc->getUniqueObjectName ( data.role );
App::DocumentObject *featureObj = doc->addObject ( data.type.getName(), objName.c_str () );
assert ( featureObj && featureObj->isDerivedFrom ( App::OriginFeature::getClassTypeId () ) );
App::OriginFeature *feature = static_cast <App::OriginFeature *> ( featureObj );
feature->Placement.setValue ( Base::Placement ( Base::Vector3d (), data.rot ) );
feature->Role.setValue ( data.role );
links.push_back (feature);
}
OriginFeatures.setValues (links);
}
void Origin::unsetupObject () {
const auto &objsLnk = OriginFeatures.getValues ();
// Copy to set to assert we won't call methode more then one time for each object
std::set<App::DocumentObject *> objs (objsLnk.begin(), objsLnk.end());
// Remove all controlled objects
for (auto obj: objs ) {
// Check that previous deletes wasn't inderectly removed one of our objects
const auto &objsLnk = OriginFeatures.getValues ();
if ( std::find(objsLnk.begin(), objsLnk.end(), obj) != objsLnk.end()) {
if ( ! obj->isDeleting () ) {
obj->getDocument ()->remObject (obj->getNameInDocument());
}
}
}
}

142
src/App/Origin.h Normal file
View File

@ -0,0 +1,142 @@
/***************************************************************************
* Copyright (c) Stefan Tröger (stefantroeger@gmx.net) 2015 *
* Copyright (c) Alexander Golubev (Fat-Zer) <fatzer2@gmail.com> 2015 *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this library; see the file COPYING.LIB. If not, *
* write to the Free Software Foundation, Inc., 59 Temple Place, *
* Suite 330, Boston, MA 02111-1307, USA *
* *
***************************************************************************/
#ifndef APP_Origin_H
#define APP_Origin_H
#include "GeoFeature.h"
#include "OriginFeature.h"
#include "PropertyLinks.h"
namespace App
{
/** Base class of all geometric document objects.
*/
class AppExport Origin : public App::DocumentObject
{
PROPERTY_HEADER(App::Origin);
public:
/// Constructor
Origin(void);
virtual ~Origin();
/// returns the type name of the ViewProvider
virtual const char* getViewProviderName(void) const {
return "Gui::ViewProviderOrigin";
}
/** @name Axis and plane access
* This functions returns casted axis and planes objects and asserts they are setted correctly
* otherwice Base::Exception is thrown.
*/
///@{
// returns X axis
App::Line *getX () const {
return getAxis ("X_Axis");
}
// returns Y axis
App::Line *getY () const {
return getAxis ("Y_Axis");
}
// returns Z axis
App::Line *getZ () const {
return getAxis ("Z_Axis");
}
// returns XY plane
App::Plane *getXY () const {
return getPlane ("XY_Plane");
}
// returns XZ plane
App::Plane *getXZ () const {
return getPlane ("XZ_Plane");
}
// returns YZ plane
App::Plane *getYZ () const {
return getPlane ("YZ_Plane");
}
/// Returns all axis objects to iterate on them
std::vector<App::Line *> axes() const {
return { getX(), getY(), getZ() };
}
/// Returns all base planes objects to iterate on them
std::vector<App::Plane *> planes() const {
return { getXY(), getXZ(), getYZ() };
}
/// Returns all controled objects (both planes and axis) to iterate on them
std::vector<App::OriginFeature *> baseObjects() const {
return { getX(), getY(), getZ(), getXY(), getXZ(), getYZ() };
}
/// Returns an axis by it's name
App::OriginFeature *getOriginFeature( const char* role ) const;
/// Returns an axis by it's name
App::Line *getAxis( const char* role ) const;
/// Returns an axis by it's name
App::Plane *getPlane( const char* role ) const;
///@}
/// Returns true if the given object is part of the origin
bool hasObject (DocumentObject *obj) const;
/// Returns the default bounding box of the origin (use this if you confused what should be s )
// TODO Delete me if not really needed (2015-09-01, Fat-Zer)
static Base::BoundBox3d defaultBoundBox();
/// Returns true on changing OriginFeature set
virtual short mustExecute(void) const;
/// Axis types
static const char* AxisRoles[3];
/// Baseplane types
static const char* PlaneRoles[3];
// Axis links
PropertyLinkList OriginFeatures;
protected:
/// Checks integrity of the Origin
virtual App::DocumentObjectExecReturn *execute(void);
/// Creates all corresponding Axises and Planes objects for the origin if they not linked yet
virtual void setupObject ();
/// Removes all planes and axis if they are still linked to the document
virtual void unsetupObject ();
private:
struct SetupData;
void setupOriginFeature (App::PropertyLink &featProp, const SetupData &data);
};
} //namespace App
#endif // APP_Origin_H

64
src/App/OriginFeature.cpp Normal file
View File

@ -0,0 +1,64 @@
/***************************************************************************
* Copyright (c) 2015 Alexander Golubev (Fat-Zer) <fatzer2@gmail.com> *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this library; see the file COPYING.LIB. If not, *
* write to the Free Software Foundation, Inc., 59 Temple Place, *
* Suite 330, Boston, MA 02111-1307, USA *
* *
***************************************************************************/
#include "PreCompiled.h"
#ifndef _PreComp_
#endif
#include "Document.h"
#include "Origin.h"
#include "OriginFeature.h"
using namespace App;
PROPERTY_SOURCE(App::OriginFeature, App::GeoFeature)
PROPERTY_SOURCE(App::Plane, App::OriginFeature)
PROPERTY_SOURCE(App::Line, App::OriginFeature)
OriginFeature::OriginFeature()
{
ADD_PROPERTY_TYPE ( Role, (""), 0, App::Prop_ReadOnly, "Role of the feature in the Origin" ) ;
// Set placement to read-only
Placement.setStatus(Property::Hidden, true);
}
OriginFeature::~OriginFeature()
{ }
Origin * OriginFeature::getOrigin () {
App::Document *doc = getDocument();
auto origins = doc->getObjectsOfType ( App::Origin::getClassTypeId() );
auto originIt= std::find_if (origins.begin(), origins.end(), [this] (DocumentObject *origin) {
assert ( origin->isDerivedFrom ( App::Origin::getClassTypeId() ) );
return static_cast<App::Origin *> (origin)->hasObject (this);
} );
if (originIt == origins.end()) {
return 0;
} else {
assert ( (*originIt)->isDerivedFrom ( App::Origin::getClassTypeId() ) );
return static_cast<App::Origin *> (*originIt);
}
}

69
src/App/OriginFeature.h Normal file
View File

@ -0,0 +1,69 @@
/***************************************************************************
* Copyright (c) Jürgen Riegel (juergen.riegel@web.de) 2012 *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this library; see the file COPYING.LIB. If not, *
* write to the Free Software Foundation, Inc., 59 Temple Place, *
* Suite 330, Boston, MA 02111-1307, USA *
* *
***************************************************************************/
#ifndef ORIGINFEATURE_H_6ZWJPB5V
#define ORIGINFEATURE_H_6ZWJPB5V
#include "GeoFeature.h"
namespace App
{
class Origin;
/** Plane Object
* Used to define planar support for all kind of operations in the document space
*/
class AppExport OriginFeature: public App::GeoFeature
{
PROPERTY_HEADER(App::OriginFeature);
public:
/// additional information about the feature usage (e.g. "BasePlane-XY" or "Axis-X" in a Origin)
PropertyString Role;
/// Constructor
OriginFeature(void);
virtual ~OriginFeature();
/// Finds the origin object this plane belongs to
App::Origin *getOrigin ();
};
class AppExport Plane: public App::OriginFeature {
PROPERTY_HEADER(App::OriginFeature);
public:
virtual const char* getViewProviderName(void) const {
return "Gui::ViewProviderPlane";
}
};
class AppExport Line: public App::OriginFeature {
PROPERTY_HEADER(App::OriginFeature);
public:
virtual const char* getViewProviderName(void) const {
return "Gui::ViewProviderLine";
}
};
} //namespace App
#endif /* end of include guard: ORIGINFEATURE_H_6ZWJPB5V */

123
src/App/OriginGroup.cpp Normal file
View File

@ -0,0 +1,123 @@
/***************************************************************************
* Copyright (c) Alexander Golubev (Fat-Zer) <fatzer2@gmail.com> 2015 *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this library; see the file COPYING.LIB. If not, *
* write to the Free Software Foundation, Inc., 59 Temple Place, *
* Suite 330, Boston, MA 02111-1307, USA *
* *
***************************************************************************/
#include "PreCompiled.h"
#include "OriginGroup.h"
#ifndef _PreComp_
#endif
#include <Base/Exception.h>
#include <App/Document.h>
#include "Origin.h"
#include "GeoFeature.h"
using namespace App;
PROPERTY_SOURCE(App::OriginGroup, App::GeoFeatureGroup);
OriginGroup::OriginGroup () {
ADD_PROPERTY_TYPE ( Origin, (0), 0, App::Prop_Hidden, "Origin linked to the group" );
}
OriginGroup::~OriginGroup ()
{ }
App::Origin *OriginGroup::getOrigin () const {
App::DocumentObject *originObj = Origin.getValue ();
if ( !originObj ) {
std::stringstream err;
err << "Can't find Origin for \"" << getNameInDocument () << "\"";
throw Base::Exception ( err.str().c_str () );
} else if (! originObj->isDerivedFrom ( App::Origin::getClassTypeId() ) ) {
std::stringstream err;
err << "Bad object \"" << originObj->getNameInDocument () << "\"(" << originObj->getTypeId().getName()
<< ") linked to the Origin of \"" << getNameInDocument () << "\"";
throw Base::Exception ( err.str().c_str () );
} else {
return static_cast<App::Origin *> ( originObj );
}
}
App::OriginGroup *OriginGroup::getGroupOfObject (const DocumentObject* obj, bool indirect) {
const Document* doc = obj->getDocument();
std::vector<DocumentObject*> grps = doc->getObjectsOfType ( OriginGroup::getClassTypeId() );
for (auto grpObj: grps) {
OriginGroup* grp = static_cast <OriginGroup* >(grpObj);
if ( indirect ) {
if ( grp->geoHasObject (obj) ) {
return grp;
}
} else {
if ( grp->hasObject (obj) ) {
return grp;
}
}
}
return 0;
}
short OriginGroup::mustExecute() const {
if (Origin.isTouched ()) {
return 1;
} else {
return GeoFeatureGroup::mustExecute();
}
}
App::DocumentObjectExecReturn *OriginGroup::execute() {
try { // try to find all base axis and planes in the origin
getOrigin ();
} catch (const Base::Exception &ex) {
setError ();
return new App::DocumentObjectExecReturn ( ex.what () );
}
return GeoFeatureGroup::execute ();
}
void OriginGroup::setupObject () {
App::Document *doc = getDocument ();
std::string objName = std::string ( getNameInDocument()).append ( "Origin" );
App::DocumentObject *originObj = doc->addObject ( "App::Origin", objName.c_str () );
assert ( originObj && originObj->isDerivedFrom ( App::Origin::getClassTypeId () ) );
Origin.setValue (originObj);
GeoFeatureGroup::setupObject ();
}
void OriginGroup::unsetupObject () {
App::DocumentObject *origin = Origin.getValue ();
if (origin && !origin->isDeleting ()) {
origin->getDocument ()->remObject (origin->getNameInDocument());
}
GeoFeatureGroup::unsetupObject ();
}

76
src/App/OriginGroup.h Normal file
View File

@ -0,0 +1,76 @@
/***************************************************************************
* Copyright (c) Alexander Golubev (Fat-Zer) <fatzer2@gmail.com> 2015 *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this library; see the file COPYING.LIB. If not, *
* write to the Free Software Foundation, Inc., 59 Temple Place, *
* Suite 330, Boston, MA 02111-1307, USA *
* *
***************************************************************************/
#ifndef ORIGINGROUP_H_QHTU73IF
#define ORIGINGROUP_H_QHTU73IF
#include "GeoFeatureGroup.h"
#include "PropertyLinks.h"
namespace App {
class Origin;
/**
* Represents an abstact placeable group of objects with an associated Origin
*/
class AppExport OriginGroup: public App::GeoFeatureGroup
{
PROPERTY_HEADER(App::OriginGroup);
public:
OriginGroup ();
virtual ~OriginGroup ();
/// Returns the origin link or throws an exception
App::Origin *getOrigin () const;
/// returns the type name of the ViewProvider
virtual const char* getViewProviderName () const {
return "Gui::ViewProviderOriginGroup";
}
/**
* Returns the origin group which contains this object.
* In case this object is not part of any geoFeatureGroup 0 is returned.
* @param obj the object to search for
* @param indirect if true return if the group that so-called geoHas the object, @see geoHasObject()
* default is true
*/
static OriginGroup* getGroupOfObject (const DocumentObject* obj, bool indirect=true);
/// Returns true on changing OriginFeature set
virtual short mustExecute () const;
/// Origin linked to the group
PropertyLink Origin;
protected:
/// Checks integrity of the Origin
virtual App::DocumentObjectExecReturn *execute ();
/// Creates the corresponding Origin object
virtual void setupObject ();
/// Removes all planes and axis if they are still linked to the document
virtual void unsetupObject ();
};
} /* App */
#endif /* end of include guard: ORIGINGROUP_H_QHTU73IF */

19
src/App/OriginGroupPy.xml Normal file
View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<GenerateModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="generateMetaModel_Module.xsd">
<PythonExport
Father="GeoFeatureGroupPy"
Name="OriginGroupPy"
Twin="OriginGroup"
TwinPointer="OriginGroup"
Include="App/OriginGroup.h"
Namespace="App"
FatherInclude="App/GeoFeatureGroupPy.h"
FatherNamespace="App">
<Documentation>
<Author Licence="LGPL" Name="Alexander Golubev" EMail="fatzer2@gmail.com" />
<UserDocu>This class handles placable group of document objects with an Origin</UserDocu>
</Documentation>
</PythonExport>
</GenerateModel>

View File

@ -0,0 +1,34 @@
#include "PreCompiled.h"
#include "App/OriginGroup.h"
// inclusion of the generated files (generated out of OriginGroupPy.xml)
#include "OriginGroupPy.h"
#include "OriginGroupPy.cpp"
using namespace App;
// returns a string which represents the object e.g. when printed in python
std::string OriginGroupPy::representation(void) const
{
return std::string("<OriginGroup object>");
}
PyObject *OriginGroupPy::getCustomAttributes(const char* /*attr*/) const
{
return 0;
}
int OriginGroupPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/)
{
return 0;
}

121
src/App/Part.cpp Normal file
View File

@ -0,0 +1,121 @@
/***************************************************************************
* Copyright (c) Juergen Riegel (juergen.riegel@web.de) 2014 *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this library; see the file COPYING.LIB. If not, *
* write to the Free Software Foundation, Inc., 59 Temple Place, *
* Suite 330, Boston, MA 02111-1307, USA *
* *
***************************************************************************/
#include "PreCompiled.h"
#ifndef _PreComp_
#endif
#include <App/Document.h>
#include "Part.h"
#include "PartPy.h"
using namespace App;
PROPERTY_SOURCE(App::Part, App::OriginGroup)
//===========================================================================
// Part
//===========================================================================
Part::Part(void)
{
ADD_PROPERTY(Type,(""));
ADD_PROPERTY_TYPE(Material, (), 0, App::Prop_None, "Map with material properties");
ADD_PROPERTY_TYPE(Meta, (), 0, App::Prop_None, "Map with additional meta information");
// create the uuid for the document
Base::Uuid id;
ADD_PROPERTY_TYPE(Id, (""), 0, App::Prop_None, "ID (Part-Number) of the Item");
ADD_PROPERTY_TYPE(Uid, (id), 0, App::Prop_None, "UUID of the Item");
// license stuff
ADD_PROPERTY_TYPE(License, ("CC BY 3.0"), 0, App::Prop_None, "License string of the Item");
ADD_PROPERTY_TYPE(LicenseURL, ("http://creativecommons.org/licenses/by/3.0/"), 0, App::Prop_None, "URL to the license text/contract");
// color and apperance
ADD_PROPERTY(Color, (1.0, 1.0, 1.0, 1.0)); // set transparent -> not used
}
Part::~Part(void)
{
}
App::Part *Part::getPartOfObject (const DocumentObject* obj, bool indirect) {
const Document* doc = obj->getDocument();
std::vector<DocumentObject*> grps = doc->getObjectsOfType ( Part::getClassTypeId() );
for (auto partObj: grps) {
Part* part = static_cast <Part* >(partObj);
if ( indirect ) {
if ( part->geoHasObject (obj) ) {
return part;
}
} else {
if ( part->hasObject (obj) ) {
return part;
}
}
}
return 0;
}
PyObject *Part::getPyObject()
{
if (PythonObject.is(Py::_None())){
// ref counter is set to 1
PythonObject = Py::Object(new PartPy(this),true);
}
return Py::new_reference_to(PythonObject);
}
// Python feature ---------------------------------------------------------
// Not quit sure yet makeing Part derivable in Python is good Idea!
// JR 2014
//namespace App {
///// @cond DOXERR
//PROPERTY_SOURCE_TEMPLATE(App::PartPython, App::Part)
//template<> const char* App::PartPython::getViewProviderName(void) const {
// return "Gui::ViewProviderPartPython";
//}
//template<> PyObject* App::PartPython::getPyObject(void) {
// if (PythonObject.is(Py::_None())) {
// // ref counter is set to 1
// PythonObject = Py::Object(new FeaturePythonPyT<App::PartPy>(this),true);
// }
// return Py::new_reference_to(PythonObject);
//}
///// @endcond
//
//// explicit template instantiation
//template class AppExport FeaturePythonT<App::Part>;
//}

104
src/App/Part.h Normal file
View File

@ -0,0 +1,104 @@
/***************************************************************************
* Copyright (c) Jürgen Riegel (juergen.riegel@web.de) 2014 *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this library; see the file COPYING.LIB. If not, *
* write to the Free Software Foundation, Inc., 59 Temple Place, *
* Suite 330, Boston, MA 02111-1307, USA *
* *
***************************************************************************/
#ifndef APP_Part_H
#define APP_Part_H
#include "OriginGroup.h"
#include "PropertyLinks.h"
namespace App
{
/** Base class of all geometric document objects.
*/
class AppExport Part : public App::OriginGroup
{
PROPERTY_HEADER(App::Part);
public:
/// type of the part
PropertyString Type;
/** @name base properties of all Assembly Items
* This properties corospond mostly to the meta information
* in the App::Document class
*/
//@{
/// Id e.g. Part number
App::PropertyString Id;
/// unique identifier of the Item
App::PropertyUUID Uid;
/// material descriptons
App::PropertyMap Material;
/// Meta descriptons
App::PropertyMap Meta;
/** License string
* Holds the short license string for the Item, e.g. CC-BY
* for the Creative Commons license suit.
*/
App::PropertyString License;
/// License descripton/contract URL
App::PropertyString LicenseURL;
//@}
/** @name Visual properties */
//@{
/** Base color of the Item
If the transparency value is 1.0
the color or the next hirachy is used
*/
App::PropertyColor Color;
//@}
/// Constructor
Part(void);
virtual ~Part();
/// returns the type name of the ViewProvider
virtual const char* getViewProviderName(void) const {
return "Gui::ViewProviderPart";
}
/**
* Returns the part which contains this object.
* In case this object is not belongs to any Part 0 is returned.
* @param obj the object to search for
* @param indirect if true return if the part that so-called geoHas the object, @see geoHasObject()
* default is true
*/
static App::Part* getPartOfObject (const DocumentObject* obj, bool indirect=true);
virtual PyObject *getPyObject(void);
};
//typedef App::FeaturePythonT<Part> PartPython;
} //namespace App
#endif // APP_Part_H

19
src/App/PartPy.xml Normal file
View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<GenerateModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="generateMetaModel_Module.xsd">
<PythonExport
Father="OriginGroupPy"
Name="PartPy"
Twin="Part"
TwinPointer="Part"
Include="App/Part.h"
Namespace="App"
FatherInclude="App/OriginGroupPy.h"
FatherNamespace="App">
<Documentation>
<Author Licence="LGPL" Name="Juergen Riegel" EMail="FreeCAD@juergen-riegel.net" />
<UserDocu>This class handles document objects in Part</UserDocu>
</Documentation>
<CustomAttributes />
</PythonExport>
</GenerateModel>

33
src/App/PartPyImp.cpp Normal file
View File

@ -0,0 +1,33 @@
#include "PreCompiled.h"
#include "App/Part.h"
// inclusion of the generated files (generated out of PartPy.xml)
#include "PartPy.h"
#include "PartPy.cpp"
using namespace App;
// returns a string which represents the object e.g. when printed in python
std::string PartPy::representation(void) const
{
return std::string("<Part object>");
}
PyObject *PartPy::getCustomAttributes(const char* /*attr*/) const
{
return 0;
}
int PartPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/)
{
return 0;
}

View File

@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (c) Jürgen Riegel (juergen.riegel@web.de) 2012 *
* Copyright (c) Jürgen Riegel (juergen.riegel@web.de) 2014 *
* *
* This file is part of the FreeCAD CAx development system. *
* *
@ -26,31 +26,21 @@
#ifndef _PreComp_
#endif
#include "Plane.h"
#include "Path.h"
#define new DEBUG_CLIENTBLOCK
using namespace App;
PROPERTY_SOURCE(App::Plane, App::GeoFeature)
//===========================================================================
// Feature
//===========================================================================
Plane::Plane(void)
{
}
Plane::~Plane(void)
Path::Path(void)
{
}
Path::Path(const std::vector<Base::Persistence *> &PathVector)
:_PathVector(PathVector)
{
}
Path::~Path(void)
{
}

View File

@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (c) Jürgen Riegel (juergen.riegel@web.de) 2012 *
* Copyright (c) Jürgen Riegel (juergen.riegel@web.de) 2014 *
* *
* This file is part of the FreeCAD CAx development system. *
* *
@ -21,14 +21,10 @@
***************************************************************************/
#ifndef APP_Path_H
#define APP_Path_H
#ifndef _AppPlane_h_
#define _AppPlane_h_
#include "GeoFeature.h"
#include "PropertyGeo.h"
#include <Base/Persistence.h>
@ -36,28 +32,25 @@ namespace App
{
/** Plane Object
* Used to define planar support for all kind of operations in the document space
/** Base class of all geometric document objects.
*/
class AppExport Plane: public App::GeoFeature
class AppExport Path
{
PROPERTY_HEADER(App::Plane);
protected:
std::vector<Base::Persistence *> _PathVector;
public:
/// Constructor
Plane(void);
virtual ~Plane();
Path(void);
Path(const std::vector<Base::Persistence *> & PathVector);
virtual ~Path();
const std::vector<Base::Persistence *> & getVector(void)const{return _PathVector;}
/// returns the type name of the ViewProvider
virtual const char* getViewProviderName(void) const {
return "Gui::ViewProviderPlane";
}
};
} //namespace App
#endif
#endif // APP_Path_H

View File

@ -249,7 +249,9 @@ void PropertyLinkSub::setPyObject(PyObject *value)
}
else if (PyTuple_Check(value) || PyList_Check(value)) {
Py::Sequence seq(value);
if (PyObject_TypeCheck(seq[0].ptr(), &(DocumentObjectPy::Type))){
if(seq.size() == 0)
setValue(NULL);
else if (PyObject_TypeCheck(seq[0].ptr(), &(DocumentObjectPy::Type))){
DocumentObjectPy *pcObj = (DocumentObjectPy*)seq[0].ptr();
if (seq[1].isString()) {
std::vector<std::string> vals;
@ -547,11 +549,18 @@ void PropertyLinkSubList::setValue(DocumentObject* lValue,const char* SubName)
_lSubList.resize(1);
_lSubList[0]=SubName;
hasSetValue();
} else {
aboutToSetValue();
_lValueList.clear();
_lSubList.clear();
hasSetValue();
}
}
void PropertyLinkSubList::setValues(const std::vector<DocumentObject*>& lValue,const std::vector<const char*>& lSubNames)
{
if (lValue.size() != lSubNames.size())
throw Base::Exception("PropertyLinkSubList::setValues: size of subelements list != size of objects list");
aboutToSetValue();
_lValueList = lValue;
_lSubList.resize(lSubNames.size());
@ -563,12 +572,71 @@ void PropertyLinkSubList::setValues(const std::vector<DocumentObject*>& lValue,c
void PropertyLinkSubList::setValues(const std::vector<DocumentObject*>& lValue,const std::vector<std::string>& lSubNames)
{
if (lValue.size() != lSubNames.size())
throw Base::Exception("PropertyLinkSubList::setValues: size of subelements list != size of objects list");
aboutToSetValue();
_lValueList = lValue;
_lSubList = lSubNames;
hasSetValue();
}
void PropertyLinkSubList::setValue(DocumentObject* lValue, const std::vector<string> &SubList)
{
aboutToSetValue();
int size = SubList.size();
this->_lValueList.clear();
if (size == 0) {
if (lValue)
this->_lValueList.push_back(lValue);
this->_lSubList.clear();
} else {
this->_lSubList = SubList;
this->_lValueList.insert(this->_lValueList.begin(), size, lValue);
}
hasSetValue();
}
const string PropertyLinkSubList::getPyReprString()
{
assert(this->_lValueList.size() == this->_lSubList.size());
if (this->_lValueList.size() == 0)
return std::string("None");
std::stringstream strm;
strm << "[";
for ( int i = 0 ; i < this->_lSubList.size() ; i++) {
if (i>0)
strm << ",(";
else
strm << "(";
App::DocumentObject* obj = this->_lValueList[i];
if (obj) {
strm << "App.getDocument('" << obj->getDocument()->getName() << "')." << obj->getNameInDocument();
} else {
strm << "None";
}
strm << ",";
strm << "'" << this->_lSubList[i] << "'";
strm << ")";
}
strm << "]";
return strm.str();
}
DocumentObject *PropertyLinkSubList::getValue() const
{
App::DocumentObject* ret = 0;
//FIXME: cache this to avoid iterating each time, to improve speed
for (int i = 0 ; i < this->_lValueList.size() ; i++){
if (ret == 0)
ret = this->_lValueList[i];
if (ret != this->_lValueList[i])
return 0;
}
return ret;
}
PyObject *PropertyLinkSubList::getPyObject(void)
{
unsigned int count = getSize();
@ -591,6 +659,12 @@ PyObject *PropertyLinkSubList::getPyObject(void)
void PropertyLinkSubList::setPyObject(PyObject *value)
{
try { //try PropertyLinkSub syntax
PropertyLinkSub dummy;
dummy.setPyObject(value);
this->setValue(dummy.getValue(), dummy.getSubValues());
} catch (Base::TypeError) {
if (PyTuple_Check(value) || PyList_Check(value)) {
Py::Sequence list(value);
Py::Sequence::size_type size = list.size();
@ -599,7 +673,6 @@ void PropertyLinkSubList::setPyObject(PyObject *value)
values.reserve(size);
std::vector<std::string> SubNames;
SubNames.reserve(size);
for (Py::Sequence::size_type i=0; i<size; i++) {
Py::Object item = list[i];
if (item.isTuple()) {
@ -630,6 +703,7 @@ void PropertyLinkSubList::setPyObject(PyObject *value)
error += value->ob_type->tp_name;
throw Base::TypeError(error);
}
}
}
void PropertyLinkSubList::Save (Base::Writer &writer) const
@ -683,6 +757,44 @@ void PropertyLinkSubList::Restore(Base::XMLReader &reader)
setValues(values,SubNames);
}
void PropertyLinkSubList::Restore_FromLinkSub(XMLReader &reader)
{
//Copy-paste from PropertyLinkSub::Restore()
// read my element
reader.readElement("LinkSub");
// get the values of my attributes
std::string name = reader.getAttribute("value");
int count = reader.getAttributeAsInteger("count");
// Property not in a DocumentObject!
assert(getContainer()->getTypeId().isDerivedFrom(App::DocumentObject::getClassTypeId()) );
std::vector<std::string> values(count);
for (int i = 0; i < count; i++) {
reader.readElement("Sub");
values[i] = reader.getAttribute("value");
}
reader.readEndElement("LinkSub");
DocumentObject *pcObject;
if (name != ""){
App::Document* document = static_cast<DocumentObject*>(getContainer())->getDocument();
pcObject = document ? document->getObject(name.c_str()) : 0;
if (!pcObject) {
if (reader.isVerbose()) {
Base::Console().Warning("Lost link to '%s' while loading, maybe "
"an object was not loaded correctly\n",name.c_str());
}
}
setValue(pcObject,values);
}
else {
setValue(0);
}
}
Property *PropertyLinkSubList::Copy(void) const
{
PropertyLinkSubList *p = new PropertyLinkSubList();

View File

@ -247,12 +247,19 @@ public:
virtual void setSize(int newSize);
virtual int getSize(void) const;
/** Sets the property
/** Sets the property.
* setValue(0, whatever) clears the property
*/
void setValue(DocumentObject*,const char*);
void setValues(const std::vector<DocumentObject*>&,const std::vector<const char*>&);
void setValues(const std::vector<DocumentObject*>&,const std::vector<std::string>&);
/**
* @brief setValue: PropertyLinkSub-compatible overload
* @param SubList
*/
void setValue(App::DocumentObject *lValue, const std::vector<std::string> &SubList=std::vector<std::string>());
// index operator
SubSet operator[] (const int idx) const {
return SubSet(_lValueList.operator[] (idx),_lSubList.operator [](idx));
@ -262,6 +269,16 @@ public:
return _lValueList;
}
const std::string getPyReprString();
/**
* @brief getValue emulates the action of a single-object link.
* @return reference to object, if the link os to only one object. NULL if
* the link is empty, or links to subelements of more than one documant
* object.
*/
DocumentObject* getValue() const;
const std::vector<std::string> &getSubValues(void) const {
return _lSubList;
}
@ -271,6 +288,7 @@ public:
virtual void Save (Base::Writer &writer) const;
virtual void Restore(Base::XMLReader &reader);
virtual void Restore_FromLinkSub(Base::XMLReader &reader);
virtual Property *Copy(void) const;
virtual void Paste(const Property &from);

View File

@ -27,6 +27,7 @@
#define BASE_EXCEPTION_H
#include <exception>
#include <stdexcept>
#include <string>
#include <signal.h>
#include "FileInfo.h"

View File

@ -82,6 +82,13 @@ int RotationPy::PyInit(PyObject* args, PyObject* /*kwd*/)
return 0;
}
PyErr_Clear();
if (PyArg_ParseTuple(args, "O!d", &(Base::MatrixPy::Type), &o, &angle)) {
// NOTE: The last parameter defines the rotation angle in degree.
getRotationPtr()->setValue(static_cast<Base::MatrixPy*>(o)->value());
return 0;
}
PyErr_Clear();
double q0, q1, q2, q3;
if (PyArg_ParseTuple(args, "dddd", &q0, &q1, &q2, &q3)) {
@ -96,6 +103,43 @@ int RotationPy::PyInit(PyObject* args, PyObject* /*kwd*/)
return 0;
}
double a11 = 1.0, a12 = 0.0, a13 = 0.0, a14 = 0.0;
double a21 = 0.0, a22 = 1.0, a23 = 0.0, a24 = 0.0;
double a31 = 0.0, a32 = 0.0, a33 = 1.0, a34 = 0.0;
double a41 = 0.0, a42 = 0.0, a43 = 0.0, a44 = 1.0;
// try read a 4x4 matrix
PyErr_Clear();
if (PyArg_ParseTuple(args, "dddddddddddddddd",
&a11, &a12, &a13, &a14,
&a21, &a22, &a23, &a24,
&a31, &a32, &a33, &a34,
&a41, &a42, &a43, &a44))
{
Matrix4D mtx(a11, a12, a13, a14,
a21, a22, a23, a24,
a31, a32, a33, a34,
a41, a42, a43, a44);
getRotationPtr()->setValue(mtx);
return 0;
}
// try read a 3x3 matrix
PyErr_Clear();
if (PyArg_ParseTuple(args, "ddddddddd",
&a11, &a12, &a13,
&a21, &a22, &a23,
&a31, &a32, &a33))
{
Matrix4D mtx(a11, a12, a13, a14,
a21, a22, a23, a24,
a31, a32, a33, a34,
a41, a42, a43, a44);
getRotationPtr()->setValue(mtx);
return 0;
}
PyErr_Clear();
PyObject *v1, *v2;
if (PyArg_ParseTuple(args, "O!O!", &(Base::VectorPy::Type), &v1,
@ -112,7 +156,11 @@ int RotationPy::PyInit(PyObject* args, PyObject* /*kwd*/)
"-- four floats (a quaternion)\n"
"-- three floats (yaw, pitch, roll)"
"-- Vector (rotation axis) and float (rotation angle)\n"
"-- two Vectors (two axes)");
"-- two Vectors (two axes)\n"
"-- Matrix object\n"
"-- 16 floats (4x4 matrix)\n"
"-- 9 floats (3x3 matrix)\n"
);
return -1;
}

View File

@ -27,6 +27,8 @@
# include <QUuid>
#endif
#include <stdexcept>
/// Here the FreeCAD includes sorted by Base,App,Gui......
#include "Uuid.h"
#include "Exception.h"

View File

@ -0,0 +1,71 @@
/***************************************************************************
* (c) Jürgen Riegel (juergen.riegel@web.de) 2014 *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Library General Public License (LGPL) *
* as published by the Free Software Foundation; either version 2 of *
* the License, or (at your option) any later version. *
* for detail see the LICENCE text file. *
* *
* FreeCAD is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with FreeCAD; if not, write to the Free Software *
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
* USA *
* *
* Juergen Riegel 2014 *
***************************************************************************/
#include "PreCompiled.h"
#ifndef _PreComp_
#endif
#include "ActiveObjectList.h"
#include <Gui/Application.h>
#include <Gui/Document.h>
#include <Gui/ViewProviderDocumentObject.h>
using namespace Gui;
void Gui::ActiveObjectList::setObject(App::DocumentObject* obj, const char* name, const Gui::HighlightMode& mode)
{
if (obj){
if (hasObject(name)){
Gui::Application::Instance->activeDocument()->signalHighlightObject(*dynamic_cast<Gui::ViewProviderDocumentObject*>(Gui::Application::Instance->activeDocument()->getViewProvider(getObject<App::DocumentObject*>(name))), mode, false);
}
_ObjectMap[name] = obj;
Gui::Application::Instance->activeDocument()->signalHighlightObject(*dynamic_cast<Gui::ViewProviderDocumentObject*>(Gui::Application::Instance->activeDocument()->getViewProvider(obj)), mode, true);
}
}
bool Gui::ActiveObjectList::hasObject(const char*name)const
{
return _ObjectMap.find(name) != _ObjectMap.end();
}
void ActiveObjectList::objectDeleted(const ViewProviderDocumentObject& viewProviderIn)
{
App::DocumentObject* object = viewProviderIn.getObject();
//maybe boost::bimap or boost::multi_index
std::map<std::string, App::DocumentObject*>::iterator it;
for (it = _ObjectMap.begin(); it != _ObjectMap.end(); ++it)
{
if (it->second == object)
{
_ObjectMap.erase(it);
return;
}
}
}

View File

@ -0,0 +1,74 @@
/***************************************************************************
* (c) Jürgen Riegel (juergen.riegel@web.de) 2014 *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Library General Public License (LGPL) *
* as published by the Free Software Foundation; either version 2 of *
* the License, or (at your option) any later version. *
* for detail see the LICENCE text file. *
* *
* FreeCAD is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with FreeCAD; if not, write to the Free Software *
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
* USA *
* *
* Juergen Riegel 2014 *
***************************************************************************/
#ifndef GUI_ActiveObjectList_H
#define GUI_ActiveObjectList_H
#include <map>
#include "Tree.h"
namespace App {
class DocumentObject;
}
namespace Gui
{
class Document;
class ViewProviderDocumentObject;
/** List of active or special objects
* This class holds a list of objects with a special name.
* Its mainly used to points to something like the active Body or Part in a edit session.
* The class is used the viewer (editor) of a document.
* @see Gui::MDIViewer
* @author Jürgen Riegel
*/
class GuiExport ActiveObjectList
{
public:
template<typename _T>
inline _T getObject(const char* name) const
{
std::map<std::string, App::DocumentObject*>::const_iterator pos = _ObjectMap.find(name);
return pos == _ObjectMap.end() ? 0 : dynamic_cast<_T>(pos->second);
}
void setObject(App::DocumentObject*, const char*, const Gui::HighlightMode& m = Gui::LightBlue);
bool hasObject(const char*)const;
void objectDeleted(const ViewProviderDocumentObject& viewProviderIn);
protected:
std::map<std::string, App::DocumentObject*> _ObjectMap;
};
} //namespace Gui
static const char PDBODYKEY[] = "pdbody";
static const char PARTKEY[] = "part";
#endif

View File

@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (c) 2004 Jürgen Riegel <juergen.riegel@web.de> *
* Copyright (c) 2004 Juergen Riegel <juergen.riegel@web.de> *
* *
* This file is part of the FreeCAD CAx development system. *
* *
@ -103,7 +103,13 @@
#include "ViewProviderAnnotation.h"
#include "ViewProviderMeasureDistance.h"
#include "ViewProviderPlacement.h"
#include "ViewProviderOriginFeature.h"
#include "ViewProviderPlane.h"
#include "ViewProviderLine.h"
#include "ViewProviderGeoFeatureGroup.h"
#include "ViewProviderOriginGroup.h"
#include "ViewProviderPart.h"
#include "ViewProviderOrigin.h"
#include "ViewProviderMaterialObject.h"
#include "Language/Translator.h"
@ -319,6 +325,15 @@ struct PyMethodDef FreeCADGui_methods[] = {
{NULL, NULL} /* sentinel */
};
Gui::MDIView* Application::activeView(void) const
{
if (activeDocument())
return activeDocument()->getActiveView();
else
return NULL;
}
} // namespace Gui
Application::Application(bool GUIenabled)
@ -1529,7 +1544,14 @@ void Application::initTypes(void)
Gui::ViewProviderPythonFeature ::init();
Gui::ViewProviderPythonGeometry ::init();
Gui::ViewProviderPlacement ::init();
Gui::ViewProviderOriginFeature ::init();
Gui::ViewProviderPlane ::init();
Gui::ViewProviderLine ::init();
Gui::ViewProviderGeoFeatureGroup ::init();
Gui::ViewProviderGeoFeatureGroupPython ::init();
Gui::ViewProviderOriginGroup ::init();
Gui::ViewProviderPart ::init();
Gui::ViewProviderOrigin ::init();
Gui::ViewProviderMaterialObject ::init();
Gui::ViewProviderMaterialObjectPython ::init();

View File

@ -147,6 +147,8 @@ public:
* If no such document exists 0 is returned.
*/
Gui::Document* getDocument(const App::Document* pDoc) const;
/// Getter for the active view of the active document or null
Gui::MDIView* activeView(void) const;
/// Shows the associated view provider of the given object
void showViewProvider(const App::DocumentObject*);
/// Hides the associated view provider of the given object
@ -232,6 +234,7 @@ public:
PYFUNCDEF_S(sActiveDocument);
PYFUNCDEF_S(sSetActiveDocument);
PYFUNCDEF_S(sActiveView);
PYFUNCDEF_S(sGetDocument);
PYFUNCDEF_S(sDoCommand);

View File

@ -139,13 +139,16 @@ PyMethodDef Application::Methods[] = {
"Open a macro, Inventor or VRML file"},
{"export", (PyCFunction) Application::sExport, 1,
"save scene to Inventor or VRML file"},
{"activeDocument", (PyCFunction) Application::sActiveDocument, 1,
{ "activeDocument", (PyCFunction)Application::sActiveDocument, 1,
"activeDocument() -> object or None\n\n"
"Return the active document or None if no one exists"},
"Return the active document or None if no one exists" },
{"setActiveDocument", (PyCFunction) Application::sSetActiveDocument,1,
"setActiveDocument(string or App.Document) -> None\n\n"
"Activate the specified document"},
{"getDocument", (PyCFunction) Application::sGetDocument, 1,
{ "activeView", (PyCFunction)Application::sActiveView, 1,
"activeView() -> object or None\n\n"
"Return the active view of the active document or None if no one exists" },
{ "getDocument", (PyCFunction)Application::sGetDocument, 1,
"getDocument(string) -> object\n\n"
"Get a document by its name"},
{"doCommand", (PyCFunction) Application::sDoCommand, 1,
@ -167,7 +170,7 @@ PyMethodDef Application::Methods[] = {
{NULL, NULL} /* Sentinel */
};
PyObject* Gui::Application::sActiveDocument(PyObject * /*self*/, PyObject *args,PyObject * /*kwd*/)
PyObject* Gui::Application::sActiveDocument(PyObject * /*self*/, PyObject *args, PyObject * /*kwd*/)
{
if (!PyArg_ParseTuple(args, "")) // convert args: Python->C
return NULL; // NULL triggers exception
@ -175,11 +178,28 @@ PyObject* Gui::Application::sActiveDocument(PyObject * /*self*/, PyObject *args,
Document *pcDoc = Instance->activeDocument();
if (pcDoc) {
return pcDoc->getPyObject();
} else {
}
else {
Py_Return;
}
}
PyObject* Gui::Application::sActiveView(PyObject * /*self*/, PyObject *args, PyObject * /*kwd*/)
{
if (!PyArg_ParseTuple(args, "")) // convert args: Python->C
return NULL; // NULL triggers exception
Document *pcDoc = Instance->activeDocument();
if (pcDoc) {
Gui::MDIView *pcView = pcDoc->getActiveView();
if (pcView)
// already incremented in getPyObject().
return pcView->getPyObject();
}
Py_Return;
}
PyObject* Gui::Application::sSetActiveDocument(PyObject * /*self*/, PyObject *args,PyObject * /*kwd*/)
{
Document *pcDoc = 0;

View File

@ -33,6 +33,7 @@ include_directories(
${CMAKE_CURRENT_BINARY_DIR}/propertyeditor
${CMAKE_CURRENT_BINARY_DIR}/TaskView
${CMAKE_CURRENT_BINARY_DIR}/Quarter
${CMAKE_CURRENT_BINARY_DIR}/DAGView
${Boost_INCLUDE_DIRS}
${COIN3D_INCLUDE_DIRS}
${PYTHON_INCLUDE_DIRS}
@ -199,6 +200,7 @@ set(Gui_MOC_HDRS
DlgSettingsMacroImp.h
DlgSettingsUnitsImp.h
DlgTipOfTheDayImp.h
DlgCheckableMessageBox.h
DlgToolbarsImp.h
DlgWorkbenchesImp.h
TaskDlgRelocation.h
@ -260,6 +262,9 @@ set(Gui_MOC_HDRS
TaskView/TaskWatcher.h
TaskView/TaskEditControl.h
TaskView/TaskView.h
DAGView/DAGView.h
DAGView/DAGModel.h
DAGView/DAGRectItem.h
)
#qt4_wrap_cpp(Gui_MOC_SRCS ${Gui_MOC_HDRS})
fc_wrap_cpp(Gui_MOC_SRCS ${Gui_MOC_HDRS})
@ -305,6 +310,7 @@ SET(Gui_UIC_SRCS
DlgSettingsDocument.ui
DlgSettingsImage.ui
DlgSettingsMacro.ui
DlgCheckableMessageBox.ui
DlgTipOfTheDay.ui
DlgToolbars.ui
DlgWorkbenches.ui
@ -376,6 +382,7 @@ SET(Dialog_CPP_SRCS
DlgTipOfTheDayImp.cpp
DlgExpressionInput.cpp
TaskDlgRelocation.cpp
DlgCheckableMessageBox.cpp
DlgUndoRedo.cpp
InputVector.cpp
Placement.cpp
@ -405,6 +412,7 @@ SET(Dialog_HPP_SRCS
DlgProjectInformationImp.h
DlgProjectUtility.h
DlgPropertyLink.h
DlgCheckableMessageBox.h
DlgTipOfTheDayImp.h
DlgExpressionInput.h
TaskDlgRelocation.h
@ -443,6 +451,7 @@ SET(Dialog_SRCS
DlgProjectUtility.ui
DlgPropertyLink.ui
DlgTipOfTheDay.ui
DlgCheckableMessageBox.ui
DlgTreeWidget.ui
DlgExpressionInput.ui
DownloadManager.ui
@ -551,6 +560,11 @@ SET(Dock_Windows_CPP_SRCS
Tree.cpp
TreeView.cpp
ProjectView.cpp
DAGView/DAGView.cpp
DAGView/DAGModel.cpp
DAGView/DAGRectItem.cpp
DAGView/DAGModelGraph.cpp
DAGView/DAGFilter.cpp
)
SET(Dock_Windows_HPP_SRCS
CombiView.h
@ -563,6 +577,11 @@ SET(Dock_Windows_HPP_SRCS
Tree.h
TreeView.h
ProjectView.h
DAGView/DAGView.h
DAGView/DAGModel.h
DAGView/DAGRectItem.h
DAGView/DAGModelGraph.h
DAGView/DAGFilter.h
)
SET(Dock_Windows_SRCS
${Dock_Windows_CPP_SRCS}
@ -815,7 +834,13 @@ SET(Viewprovider_CPP_SRCS
ViewProviderVRMLObject.cpp
ViewProviderBuilder.cpp
ViewProviderPlacement.cpp
ViewProviderOriginFeature.cpp
ViewProviderPlane.cpp
ViewProviderLine.cpp
ViewProviderGeoFeatureGroup.cpp
ViewProviderOriginGroup.cpp
ViewProviderPart.cpp
ViewProviderOrigin.cpp
ViewProviderMaterialObject.cpp
)
SET(Viewprovider_SRCS
@ -833,7 +858,13 @@ SET(Viewprovider_SRCS
ViewProviderVRMLObject.h
ViewProviderBuilder.h
ViewProviderPlacement.h
ViewProviderOriginFeature.h
ViewProviderPlane.h
ViewProviderLine.h
ViewProviderGeoFeatureGroup.h
ViewProviderOriginGroup.h
ViewProviderPart.h
ViewProviderOrigin.h
ViewProviderMaterialObject.h
)
SOURCE_GROUP("View3D\\Viewprovider" FILES ${Viewprovider_SRCS})
@ -924,10 +955,12 @@ SOURCE_GROUP("Widget" FILES ${Widget_SRCS})
SET(View_CPP_SRCS
MDIView.cpp
GraphvizView.cpp
ActiveObjectList.cpp
)
SET(View_HPP_SRCS
MDIView.h
GraphvizView.h
ActiveObjectList.h
)
SET(View_SRCS
${View_CPP_SRCS}

View File

@ -166,7 +166,6 @@ protected:
/// Applies the menu text, tool and status tip to the passed action object
void applyCommandData(const char* context, Action* );
const char* keySequenceToAccel(int) const;
void adjustCameraPosition();
//@}
public:
@ -252,8 +251,6 @@ public:
static void copyVisual(const char* to, const char* attr_to, const char* from, const char* attr_from);
/// Get Python tuple from object and sub-elements
static std::string getPythonTuple(const std::string& name, const std::vector<std::string>& subnames);
/// import an external module only once
//static void addModule(const char* sModuleName);
/// translate a string to a python string literal (needed e.g. in file names for windows...)
const std::string strToPython(const char* Str);
const std::string strToPython(const std::string &Str){return strToPython(Str.c_str());};
@ -289,6 +286,12 @@ public:
void setGroupName(const char*);
//@}
/** @name arbitrary helper methods */
//@{
void adjustCameraPosition();
//@}
protected:
enum CmdType {
AlterDoc = 1, /**< Command change the Document */

View File

@ -28,6 +28,7 @@
# include <QEventLoop>
# include <QFileDialog>
# include <QLabel>
# include <QTextStream>
# include <QStatusBar>
# include <QPointer>
# include <QProcess>
@ -44,6 +45,7 @@
#include <App/DocumentObjectGroup.h>
#include <App/DocumentObject.h>
#include <App/GeoFeature.h>
#include <App/Origin.h>
#include "Action.h"
#include "Application.h"
@ -1067,15 +1069,22 @@ void StdCmdDelete::activated(int iMsg)
}
else {
// check if we can delete the object
std::set<QString> affectedLabels;
for (std::vector<Gui::SelectionObject>::iterator ft = sel.begin(); ft != sel.end(); ++ft) {
App::DocumentObject* obj = ft->getObject();
std::vector<App::DocumentObject*> links = obj->getInList();
if (!links.empty()) {
// check if the referenced objects are groups or are selected too
for (std::vector<App::DocumentObject*>::iterator lt = links.begin(); lt != links.end(); ++lt) {
if (!(*lt)->getTypeId().isDerivedFrom(App::DocumentObjectGroup::getClassTypeId()) && !rSel.isSelected(*lt)) {
if (
(!(*lt)->getTypeId().isDerivedFrom(App::DocumentObjectGroup::getClassTypeId())) &&
(!(*lt)->getTypeId().isDerivedFrom(App::Origin::getClassTypeId())) &&
(!rSel.isSelected(*lt)) &&
(!(*lt)->getTypeId().isDerivedFrom(Base::Type::fromName("Part::BodyBase")))
){
// TODO Do something with this hack of Part::BodyBase (2015-09-09, Fat-Zer)
autoDeletion = false;
break;
affectedLabels.insert(QString::fromUtf8((*lt)->Label.getValue()));
}
}
@ -1086,10 +1095,16 @@ void StdCmdDelete::activated(int iMsg)
}
if (!autoDeletion) {
QString bodyMessage;
QTextStream bodyMessageStream(&bodyMessage);
bodyMessageStream << qApp->translate("Std_Delete",
"The following, referencing objects might break.\n\n"
"Are you sure you want to continue?\n\n");
for (const auto &currentLabel : affectedLabels)
bodyMessageStream << currentLabel << '\n';
int ret = QMessageBox::question(Gui::getMainWindow(),
qApp->translate("Std_Delete", "Object dependencies"),
qApp->translate("Std_Delete", "This object is referenced by other objects and thus these objects might get broken.\n"
"Are you sure to continue?"),
qApp->translate("Std_Delete", "Object dependencies"), bodyMessage,
QMessageBox::Yes, QMessageBox::No);
if (ret == QMessageBox::Yes)
autoDeletion = true;
@ -1112,6 +1127,7 @@ void StdCmdDelete::activated(int iMsg)
}
}
}
doCommand(Doc,"App.getDocument(\"%s\").recompute()", (*it)->getName());
}
}

View File

@ -124,7 +124,7 @@ void ControlSingleton::showDialog(Gui::TaskView::TaskDialog *dlg)
if (ActiveDialog == dlg)
return; // dialog is already defined
ActiveDialog = dlg;
connect(dlg, SIGNAL(destroyed()), this, SLOT(closedDialog()));
connect(dlg, SIGNAL(aboutToBeDestroyed()), this, SLOT(closedDialog()));
}
// not all workbenches have the combo view enabled
else if (!_taskPanel) {

View File

@ -0,0 +1,86 @@
/***************************************************************************
* Copyright (c) 2015 Thomas Anderson <blobfish[at]gmx.com> *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this library; see the file COPYING.LIB. If not, *
* write to the Free Software Foundation, Inc., 59 Temple Place, *
* Suite 330, Boston, MA 02111-1307, USA *
* *
***************************************************************************/
#include "PreCompiled.h"
#ifndef _PreComp_
#endif
#include <Base/Type.h>
#include <Gui/ViewProviderDocumentObject.h>
#include "DAGFilter.h"
using namespace Gui;
using namespace DAG;
FilterBase::FilterBase() : name(QString::fromAscii("empty name")), enabled(true), type(Type::Exclusion)
{
}
FilterOrigin::FilterOrigin() : FilterBase()
{
name = QObject::tr("Origin");
}
bool FilterOrigin::goFilter(const Vertex &vertexIn, const Graph &graphIn, const GraphLinkContainer &linkIn) const
{
Base::Type originType = Base::Type::fromName("App::Origin");
assert (originType != Base::Type::badType());
//if child of origin hide.
InEdgeIterator it, itEnd;
for (boost::tie(it, itEnd) = boost::in_edges(vertexIn, graphIn); it != itEnd; ++it)
{
Vertex source = boost::source(*it, graphIn);
const GraphLinkRecord &sourceRecord = findRecord(source, linkIn);
if
(
(sourceRecord.DObject->getTypeId() == originType) &&
(boost::in_degree(vertexIn, graphIn) == 1)
)
return true;
}
return false;
}
FilterTyped::FilterTyped(const std::string &typeIn) : FilterBase(), type(typeIn)
{
name = QString::fromStdString(typeIn);
}
bool FilterTyped::goFilter(const Gui::DAG::Vertex& vertexIn, const Graph& graphIn, const GraphLinkContainer& linkIn) const
{
if (type.empty())
return false;
Base::Type theType = Base::Type::fromName(type.c_str());
if (theType == Base::Type::badType())
return false;
const GraphLinkRecord &sourceRecord = findRecord(vertexIn, linkIn);
if (sourceRecord.DObject->getTypeId() == theType)
return true;
return false;
}

View File

@ -0,0 +1,73 @@
/***************************************************************************
* Copyright (c) 2015 Thomas Anderson <blobfish[at]gmx.com> *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this library; see the file COPYING.LIB. If not, *
* write to the Free Software Foundation, Inc., 59 Temple Place, *
* Suite 330, Boston, MA 02111-1307, USA *
* *
***************************************************************************/
#ifndef DAGFILTER_H
#define DAGFILTER_H
#include <QString>
#include "DAGModelGraph.h"
namespace Gui
{
class ViewProviderDocumentObject;
namespace DAG
{
class FilterBase
{
public:
enum class Type
{
None = 0, //!< no type designation. shouldn't be used.
Inclusion,
Exclusion
};
FilterBase();
//! @return is whether we have a match or not.
virtual bool goFilter(const Vertex &vertexIn, const Graph &graphIn, const GraphLinkContainer &linkIn) const = 0;
QString name;
bool enabled;
Type type;
};
/*! Hide all children of app::origin that are not
* used by subsequent features
*/
class FilterOrigin : public FilterBase
{
public:
FilterOrigin();
virtual bool goFilter(const Vertex &vertexIn, const Graph &graphIn, const GraphLinkContainer &linkIn) const override;
};
/*! Hide nodes of type*/
class FilterTyped : public FilterBase
{
public:
explicit FilterTyped(const std::string &typeIn);
std::string type;
virtual bool goFilter(const Vertex &vertexIn, const Graph &graphIn, const GraphLinkContainer &linkIn) const override;
};
}
}
#endif // DAGFILTER_H

1202
src/Gui/DAGView/DAGModel.cpp Normal file

File diff suppressed because it is too large Load Diff

167
src/Gui/DAGView/DAGModel.h Normal file
View File

@ -0,0 +1,167 @@
/***************************************************************************
* Copyright (c) 2015 Thomas Anderson <blobfish[at]gmx.com> *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this library; see the file COPYING.LIB. If not, *
* write to the Free Software Foundation, Inc., 59 Temple Place, *
* Suite 330, Boston, MA 02111-1307, USA *
* *
***************************************************************************/
#ifndef DAGMODEL_H
#define DAGMODEL_H
#include <memory>
#include <vector>
#include <boost/signal.hpp>
#include <QGraphicsScene>
#include <QBrush>
#include <QLineEdit>
#include "DAGRectItem.h"
#include "DAGModelGraph.h"
#include "DAGFilter.h"
class QGraphicsSceneHoverEvent;
class QGraphicsProxyWidget;
namespace Gui
{
class Document;
class ViewProviderDocumentObject;
class SelectionChanges;
namespace DAG
{
class LineEdit : public QLineEdit
{
Q_OBJECT
public:
LineEdit(QWidget *parentIn = 0);
Q_SIGNALS:
void acceptedSignal();
void rejectedSignal();
protected:
virtual void keyPressEvent(QKeyEvent*);
};
class Model : public QGraphicsScene
{
Q_OBJECT
public:
Model(QObject *parentIn, const Gui::Document &documentIn);
virtual ~Model() override;
void awake(); //!< hooked up to event dispatcher for update when idle.
void selectionChanged(const SelectionChanges& msg);
protected:
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent* event) override;
virtual void mousePressEvent(QGraphicsSceneMouseEvent* event) override;
virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event) override;
virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent* event) override;
private Q_SLOTS:
void updateSlot();
void onRenameSlot();
void renameAcceptedSlot();
void renameRejectedSlot();
void editingStartSlot();
void editingFinishedSlot();
private:
Model(){}
//documentObject slots.
typedef boost::BOOST_SIGNALS_NAMESPACE::connection Connection;
Connection connectNewObject;
Connection connectDelObject;
Connection connectChgObject;
Connection connectRenObject;
Connection connectActObject;
Connection connectEdtObject;
Connection connectResObject;
Connection connectHltObject;
Connection connectExpObject;
void slotNewObject(const Gui::ViewProviderDocumentObject &VPDObjectIn);
void slotDeleteObject(const Gui::ViewProviderDocumentObject &VPDObjectIn);
void slotChangeObject(const Gui::ViewProviderDocumentObject &VPDObjectIn, const App::Property& propertyIn);
void slotInEdit(const Gui::ViewProviderDocumentObject &VPDObjectIn);
void slotResetEdit(const Gui::ViewProviderDocumentObject &VPDObjectIn);
std::shared_ptr<GraphLinkContainer> graphLink;
std::shared_ptr<Graph> theGraph;
bool graphDirty;
void indexVerticesEdges();
void removeAllItems();
void addVertexItemsToScene(const Vertex &vertexIn);
void removeVertexItemsFromScene(const Vertex &vertexIn);
void updateStates();
RectItem* getRectFromPosition(const QPointF &position); //!< can be nullptr
//! @name View Constants for spacing
//@{
float fontHeight; //!< height of the current qApp default font.
float direction; //!< controls top to bottom or bottom to top direction.
float verticalSpacing; //!< pixels between top and bottom of text to background rectangle.
float rowHeight; //!< height of background rectangle.
float iconSize; //!< size of icon to match font.
float pointSize; //!< size of the connection point.
float pointSpacing; //!< spacing between pofloat columns.
float pointToIcon; //!< spacing from last column points to first icon.
float iconToIcon; //!< spacing between icons.
float iconToText; //!< spacing between last icon and text.
float rowPadding; //!< spaces added to rectangle bacground width ends.
std::vector<QBrush> backgroundBrushes; //!< brushes to paint background rectangles.
std::vector<QBrush> forgroundBrushes; //!< brushes to paint points, connectors, text.
void setupViewConstants();
//@}
RectItem *currentPrehighlight;
enum class SelectionMode
{
Single,
Multiple
};
SelectionMode selectionMode;
std::vector<Vertex> getAllSelected();
void visiblyIsolate(Vertex sourceIn); //!< hide any connected feature and turn on sourceIn.
QPointF lastPick;
bool lastPickValid = false;
QPixmap visiblePixmapEnabled;
QPixmap visiblePixmapDisabled;
QPixmap passPixmap;
QPixmap failPixmap;
QPixmap pendingPixmap;
QAction *renameAction;
QAction *editingFinishedAction;
QGraphicsProxyWidget *proxy = nullptr;
void finishRename();
//filters
void setupFilters();
typedef std::vector<std::shared_ptr<FilterBase> > FilterContainer;
FilterContainer filters;
};
}
}
#endif // DAGMODEL_H

View File

@ -0,0 +1,110 @@
/***************************************************************************
* Copyright (c) 2015 Thomas Anderson <blobfish[at]gmx.com> *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this library; see the file COPYING.LIB. If not, *
* write to the Free Software Foundation, Inc., 59 Temple Place, *
* Suite 330, Boston, MA 02111-1307, USA *
* *
***************************************************************************/
#include "PreCompiled.h"
#ifndef _PreComp_
#endif
#include "DAGModelGraph.h"
using namespace Gui;
using namespace DAG;
VertexProperty::VertexProperty() :
rectangle(new RectItem()),
point(new QGraphicsEllipseItem()),
visibleIcon(new QGraphicsPixmapItem()),
stateIcon(new QGraphicsPixmapItem()),
icon(new QGraphicsPixmapItem()),
text(new QGraphicsTextItem()),
row(0),
column(0),
lastVisibleState(VisibilityState::None),
dagVisible(true)
{
//set z values.
this->rectangle->setZValue(-1000.0);
this->point->setZValue(1000.0);
this->visibleIcon->setZValue(0.0);
this->stateIcon->setZValue(0.0);
this->icon->setZValue(0.0);
this->text->setZValue(0.0);
}
EdgeProperty::EdgeProperty() : relation(BranchTag::None)
{
}
const GraphLinkRecord& Gui::DAG::findRecord(Vertex vertexIn, const GraphLinkContainer &containerIn)
{
typedef GraphLinkContainer::index<GraphLinkRecord::ByVertex>::type List;
const List &list = containerIn.get<GraphLinkRecord::ByVertex>();
List::const_iterator it = list.find(vertexIn);
assert(it != list.end());
return *it;
}
const GraphLinkRecord& Gui::DAG::findRecord(const App::DocumentObject* dObjectIn, const GraphLinkContainer &containerIn)
{
typedef GraphLinkContainer::index<GraphLinkRecord::ByDObject>::type List;
const List &list = containerIn.get<GraphLinkRecord::ByDObject>();
List::const_iterator it = list.find(dObjectIn);
assert(it != list.end());
return *it;
}
const GraphLinkRecord& Gui::DAG::findRecord(const ViewProviderDocumentObject* VPDObjectIn, const GraphLinkContainer &containerIn)
{
typedef GraphLinkContainer::index<GraphLinkRecord::ByVPDObject>::type List;
const List &list = containerIn.get<GraphLinkRecord::ByVPDObject>();
List::const_iterator it = list.find(VPDObjectIn);
assert(it != list.end());
return *it;
}
const GraphLinkRecord& Gui::DAG::findRecord(const RectItem* rectIn, const GraphLinkContainer &containerIn)
{
typedef GraphLinkContainer::index<GraphLinkRecord::ByRectItem>::type List;
const List &list = containerIn.get<GraphLinkRecord::ByRectItem>();
List::const_iterator it = list.find(rectIn);
assert(it != list.end());
return *it;
}
const GraphLinkRecord& Gui::DAG::findRecord(const std::string &stringIn, const GraphLinkContainer &containerIn)
{
typedef GraphLinkContainer::index<GraphLinkRecord::ByUniqueName>::type List;
const List &list = containerIn.get<GraphLinkRecord::ByUniqueName>();
List::const_iterator it = list.find(stringIn);
assert(it != list.end());
return *it;
}
void Gui::DAG::eraseRecord(const ViewProviderDocumentObject* VPDObjectIn, GraphLinkContainer &containerIn)
{
typedef GraphLinkContainer::index<GraphLinkRecord::ByVPDObject>::type List;
const List &list = containerIn.get<GraphLinkRecord::ByVPDObject>();
List::iterator it = list.find(VPDObjectIn);
assert(it != list.end());
containerIn.get<GraphLinkRecord::ByVPDObject>().erase(it);
}

View File

@ -0,0 +1,291 @@
/***************************************************************************
* Copyright (c) 2015 Thomas Anderson <blobfish[at]gmx.com> *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this library; see the file COPYING.LIB. If not, *
* write to the Free Software Foundation, Inc., 59 Temple Place, *
* Suite 330, Boston, MA 02111-1307, USA *
* *
***************************************************************************/
#ifndef DAGMODELGRAPH_H
#define DAGMODELGRAPH_H
#include <memory>
#include <bitset>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/iteration_macros.hpp>
#include <boost/graph/reverse_graph.hpp>
#include <boost/graph/topological_sort.hpp>
#include <boost/graph/graphviz.hpp>
#include <boost/graph/breadth_first_search.hpp>
#include <boost/multi_index_container.hpp>
#include <boost/multi_index/member.hpp>
#include <boost/multi_index/ordered_index.hpp>
#include "DAGRectItem.h"
namespace App{class DocumentObject;}
namespace Gui
{
class ViewProviderDocumentObject;
namespace DAG
{
enum class VisibilityState
{
None = 0, //<! not determined.
On, //<! shown
Off //<! hidden
};
enum class FeatureState
{
None = 0, //<! not determined.
Pass, //<! feature updated ok.
Fail, //<! feature failed to update.
Pending //<! feature is pending an update.
};
//limit of column width? boost::dynamic_bitset?
//did a trial run with this set at 4096, not much difference.
//going to leave a big number by default and see how it goes.
typedef std::bitset<1024> ColumnMask;
/*! @brief Graph vertex information
*
* My data stored for each vertex;
*/
struct VertexProperty
{
VertexProperty();
std::shared_ptr<RectItem> rectangle; //!< background
std::shared_ptr<QGraphicsEllipseItem> point; //!< point
std::shared_ptr<QGraphicsPixmapItem> visibleIcon; //!< visible Icon
std::shared_ptr<QGraphicsPixmapItem> stateIcon; //!< visible Icon
std::shared_ptr<QGraphicsPixmapItem> icon; //!< icon
std::shared_ptr<QGraphicsTextItem> text; //!< text
int row; //!< row for this entry.
ColumnMask column; //!< column number containing the point.
int topoSortIndex;
VisibilityState lastVisibleState; //!< visibility test.
FeatureState lastFeatureState; //!< feature state test.
bool dagVisible; //!< should entry be visible in the DAG view.
};
/*! @brief boost data for each vertex.
*
* needed to create an internal index for vertex. needed for listS.
* color is needed by some algorithms */
typedef boost::property
<
boost::vertex_index_t, std::size_t,
boost::property <boost::vertex_color_t, boost::default_color_type, VertexProperty>
> vertex_prop;
/*! @brief Graph edge information
*
* My data stored for each edge;
*/
struct EdgeProperty
{
//! Feature relation meta data. Not used right now.
enum class BranchTag
{
None = 0, //!< not defined.
Create, //!< create a new branch.
Continue, //!< continue a branch.
Terminate //!< terminate a branch.
};
EdgeProperty();
BranchTag relation;
std::shared_ptr <QGraphicsPathItem> connector; //!< line representing link between nodes.
};
/*! @brief needed to create an internal index for graph edges. needed for setS.*/
typedef boost::property<boost::edge_index_t, std::size_t, EdgeProperty> edge_prop;
typedef boost::adjacency_list<boost::setS, boost::listS, boost::bidirectionalS, vertex_prop, edge_prop> Graph;
typedef boost::graph_traits<Graph>::vertex_descriptor Vertex;
typedef boost::graph_traits<Graph>::edge_descriptor Edge;
typedef boost::graph_traits<Graph>::vertex_iterator VertexIterator;
typedef boost::graph_traits<Graph>::edge_iterator EdgeIterator;
typedef boost::graph_traits<Graph>::in_edge_iterator InEdgeIterator;
typedef boost::graph_traits<Graph>::out_edge_iterator OutEdgeIterator;
typedef boost::graph_traits<Graph>::adjacency_iterator VertexAdjacencyIterator;
typedef boost::reverse_graph<Graph, Graph&> GraphReversed;
typedef std::vector<Vertex> Path; //!< a path or any array of vertices
template <class GraphEW>
class Edge_writer {
public:
Edge_writer(const GraphEW &graphEWIn) : graphEW(graphEWIn) {}
template <class EdgeW>
void operator()(std::ostream& out, const EdgeW& edgeW) const
{
out << "[label=\"";
out << "edge";
out << "\"]";
}
private:
const GraphEW &graphEW;
};
template <class GraphVW>
class Vertex_writer {
public:
Vertex_writer(const GraphVW &graphVWIn) : graphVW(graphVWIn) {}
template <class VertexW>
void operator()(std::ostream& out, const VertexW& vertexW) const
{
out << "[label=\"";
out << graphVW[vertexW].text->toPlainText().toAscii().data();
out << "\"]";
}
private:
const GraphVW &graphVW;
};
template <class GraphIn>
void outputGraphviz(const GraphIn &graphIn, const std::string &filePath)
{
std::ofstream file(filePath.c_str());
boost::write_graphviz(file, graphIn, Vertex_writer<GraphIn>(graphIn),
Edge_writer<GraphIn>(graphIn));
}
//! get all the leaves of the templated graph. Not used right now.
template <class GraphIn>
class RakeLeaves
{
typedef boost::graph_traits<Graph>::vertex_descriptor GraphInVertex;
typedef std::vector<GraphInVertex> GraphInVertices;
public:
RakeLeaves(const GraphIn &graphIn) : graph(graphIn) {}
GraphInVertices operator()() const
{
GraphInVertices out;
BGL_FORALL_VERTICES_T(currentVertex, graph, GraphIn)
{
if (boost::out_degree(currentVertex, graph) == 0)
out.push_back(currentVertex);
}
return out;
}
private:
const GraphIn &graph;
};
//! get all the roots of the templated graph. Not used right now.
template <class GraphIn>
class DigRoots
{
typedef boost::graph_traits<Graph>::vertex_descriptor GraphInVertex;
typedef std::vector<GraphInVertex> GraphInVertices;
public:
DigRoots(const GraphIn &graphIn) : graph(graphIn) {}
GraphInVertices operator()() const
{
GraphInVertices out;
BGL_FORALL_VERTICES_T(currentVertex, graph, GraphIn)
{
if (boost::in_degree(currentVertex, graph) == 0)
out.push_back(currentVertex);
}
return out;
}
private:
const GraphIn &graph;
};
/*! @brief Get connected components.
*/
class ConnectionVisitor : public boost::default_bfs_visitor
{
public:
ConnectionVisitor(std::vector<Vertex> &verticesIn) : vertices(verticesIn){}
template<typename TVertex, typename TGraph>
void discover_vertex(TVertex vertex, TGraph &graph)
{
vertices.push_back(vertex);
}
private:
std::vector<Vertex> &vertices;
};
/*! Multi_index record. */
struct GraphLinkRecord
{
const App::DocumentObject *DObject; //!< document object
const Gui::ViewProviderDocumentObject *VPDObject; //!< view provider
const RectItem *rectItem; //!< qgraphics item.
std::string uniqueName; //!< name for document object.
Vertex vertex; //!< vertex in graph.
//@{
//! used as tags.
struct ByDObject{};
struct ByVPDObject{};
struct ByRectItem{};
struct ByUniqueName{};
struct ByVertex{};
//@}
};
namespace BMI = boost::multi_index;
typedef boost::multi_index_container
<
GraphLinkRecord,
BMI::indexed_by
<
BMI::ordered_unique
<
BMI::tag<GraphLinkRecord::ByDObject>,
BMI::member<GraphLinkRecord, const App::DocumentObject*, &GraphLinkRecord::DObject>
>,
BMI::ordered_unique
<
BMI::tag<GraphLinkRecord::ByVPDObject>,
BMI::member<GraphLinkRecord, const Gui::ViewProviderDocumentObject*, &GraphLinkRecord::VPDObject>
>,
BMI::ordered_unique
<
BMI::tag<GraphLinkRecord::ByRectItem>,
BMI::member<GraphLinkRecord, const RectItem*, &GraphLinkRecord::rectItem>
>,
BMI::ordered_unique
<
BMI::tag<GraphLinkRecord::ByUniqueName>,
BMI::member<GraphLinkRecord, std::string, &GraphLinkRecord::uniqueName>
>,
BMI::ordered_unique
<
BMI::tag<GraphLinkRecord::ByVertex>,
BMI::member<GraphLinkRecord, Vertex, &GraphLinkRecord::vertex>
>
>
> GraphLinkContainer;
const GraphLinkRecord& findRecord(Vertex vertexIn, const GraphLinkContainer &containerIn);
const GraphLinkRecord& findRecord(const App::DocumentObject* dObjectIn, const GraphLinkContainer &containerIn);
const GraphLinkRecord& findRecord(const Gui::ViewProviderDocumentObject* VPDObjectIn, const GraphLinkContainer &containerIn);
const GraphLinkRecord& findRecord(const RectItem* rectIn, const GraphLinkContainer &containerIn);
const GraphLinkRecord& findRecord(const std::string &stringIn, const GraphLinkContainer &containerIn);
void eraseRecord(const Gui::ViewProviderDocumentObject* VPDObjectIn, GraphLinkContainer &containerIn);
}
}
#endif // DAGMODELGRAPH_H

View File

@ -0,0 +1,78 @@
/***************************************************************************
* Copyright (c) 2015 Thomas Anderson <blobfish[at]gmx.com> *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this library; see the file COPYING.LIB. If not, *
* write to the Free Software Foundation, Inc., 59 Temple Place, *
* Suite 330, Boston, MA 02111-1307, USA *
* *
***************************************************************************/
#include "PreCompiled.h"
#ifndef _PreComp_
#include <QPainter>
#include <QApplication>
#endif
#include <QStyleOptionViewItem>
#include "DAGRectItem.h"
using namespace Gui;
using namespace DAG;
RectItem::RectItem(QGraphicsItem* parent) : QGraphicsRectItem(parent)
{
selected = false;
preSelected = false;
editing = false;
}
void RectItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
{
painter->save();
QStyleOptionViewItemV4 styleOption;
styleOption.backgroundBrush = backgroundBrush;
if (editing)
styleOption.backgroundBrush = editBrush;
else
{
styleOption.state |= QStyle::State_Enabled;
if (selected)
styleOption.state |= QStyle::State_Selected;
if (preSelected)
{
if (!selected)
{
styleOption.state |= QStyle::State_Selected;
QPalette palette = styleOption.palette;
QColor tempColor = palette.color(QPalette::Active, QPalette::Highlight);
tempColor.setAlphaF(0.15);
palette.setColor(QPalette::Inactive, QPalette::Highlight, tempColor);
styleOption.palette = palette;
}
styleOption.state |= QStyle::State_MouseOver;
}
}
styleOption.rect = this->rect().toRect();
QApplication::style()->drawControl(QStyle::CE_ItemViewItem, &styleOption, painter);
painter->restore();
}
#include <moc_DAGRectItem.cpp>

View File

@ -0,0 +1,64 @@
/***************************************************************************
* Copyright (c) 2015 Thomas Anderson <blobfish[at]gmx.com> *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this library; see the file COPYING.LIB. If not, *
* write to the Free Software Foundation, Inc., 59 Temple Place, *
* Suite 330, Boston, MA 02111-1307, USA *
* *
***************************************************************************/
#ifndef DAGRECTITEM_H
#define DAGRECTITEM_H
#include <QGraphicsRectItem>
#include <QBrush>
namespace Gui
{
namespace DAG
{
/*all right I give up! the parenting combined with the zvalues is fubar!
* you can't control any kind of layering between children of separate parents
*/
class RectItem : public QGraphicsRectItem
{
public:
RectItem(QGraphicsItem* parent = 0);
void setBackgroundBrush(const QBrush &brushIn){backgroundBrush = brushIn;}
void setEditingBrush(const QBrush &brushIn){editBrush = brushIn;}
void preHighlightOn(){preSelected = true;}
void preHighlightOff(){preSelected = false;}
void selectionOn(){selected = true;}
void selectionOff(){selected = false;}
bool isSelected(){return selected;}
bool isPreSelected(){return preSelected;}
void editingStart(){editing = true;}
void editingFinished(){editing = false;}
bool isEditing(){return editing;}
protected:
virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0);
private:
QBrush backgroundBrush; //!< brush used for background. not used yet.
QBrush editBrush; //!< brush used when object is in edit mode.
//start with booleans, may expand to state.
bool selected;
bool preSelected;
bool editing;
};
}
}
#endif // DAGRECTITEM_H

121
src/Gui/DAGView/DAGView.cpp Normal file
View File

@ -0,0 +1,121 @@
/***************************************************************************
* Copyright (c) 2015 Thomas Anderson <blobfish[at]gmx.com> *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this library; see the file COPYING.LIB. If not, *
* write to the Free Software Foundation, Inc., 59 Temple Place, *
* Suite 330, Boston, MA 02111-1307, USA *
* *
***************************************************************************/
#include "PreCompiled.h"
#ifndef _PreComp_
#include <QAbstractEventDispatcher>
#include <QVBoxLayout>
#endif
#include <sstream>
#include <Base/Console.h>
#include <App/Document.h>
#include <Gui/Document.h>
#include <Gui/Application.h>
#include "DAGModel.h"
#include "DAGView.h"
using namespace Gui;
using namespace DAG;
DAG::DockWindow::DockWindow(Gui::Document* gDocumentIn, QWidget* parent): Gui::DockWindow(gDocumentIn, parent)
{
dagView = new View(this);
QVBoxLayout *layout = new QVBoxLayout();
layout->addWidget(dagView);
this->setLayout(layout);
}
View::View(QWidget* parentIn): QGraphicsView(parentIn)
{
this->setRenderHint(QPainter::Antialiasing, true);
this->setRenderHint(QPainter::TextAntialiasing, true);
Application::Instance->signalActiveDocument.connect(boost::bind(&View::slotActiveDocument, this, _1));
Application::Instance->signalDeleteDocument.connect(boost::bind(&View::slotDeleteDocument, this, _1));
//just update the dagview when the gui process is idle.
connect(QAbstractEventDispatcher::instance(), SIGNAL(awake()), this, SLOT(awakeSlot()));
}
View::~View()
{
Application::Instance->signalActiveDocument.disconnect(boost::bind(&View::slotActiveDocument, this, _1));
Application::Instance->signalDeleteDocument.disconnect(boost::bind(&View::slotDeleteDocument, this, _1));
}
void View::slotActiveDocument(const Document &documentIn)
{
ModelMap::const_iterator it = modelMap.find(&documentIn);
if (it == modelMap.end())
{
ModelMap::value_type entry(std::make_pair(&documentIn, std::shared_ptr<Model>(new Model(this, documentIn))));
modelMap.insert(entry);
this->setScene(entry.second.get());
}
else
{
this->setScene(it->second.get());
}
}
void View::slotDeleteDocument(const Document &documentIn)
{
ModelMap::iterator it = modelMap.find(&documentIn);
if (it != modelMap.end())
modelMap.erase(it);
}
void View::awakeSlot()
{
Model *model = dynamic_cast<Model *>(this->scene());
if (model)
model->awake();
}
void View::onSelectionChanged(const SelectionChanges& msg)
{
//dispatch to appropriate document.
ModelMap::iterator it;
for (auto it = modelMap.begin(); it != modelMap.end(); ++it)
{
if (std::string(it->first->getDocument()->getName()) == std::string(msg.pDocName))
{
it->second->selectionChanged(msg);
return;
}
}
//why am I getting a spontanous event with an empty name?
//also getting events after document has been removed from modelMap.
//just ignore for now.
// std::ostringstream stream;
// stream << std::endl << "couldn't find document of name: " << std::string(msg.pDocName) << std::endl << std::endl;
// Base::Console().Warning(stream.str().c_str());
// assert(0); //no document of name.
}
#include "moc_DAGView.cpp"

75
src/Gui/DAGView/DAGView.h Normal file
View File

@ -0,0 +1,75 @@
/***************************************************************************
* Copyright (c) 2015 Thomas Anderson <blobfish[at]gmx.com> *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this library; see the file COPYING.LIB. If not, *
* write to the Free Software Foundation, Inc., 59 Temple Place, *
* Suite 330, Boston, MA 02111-1307, USA *
* *
***************************************************************************/
#ifndef DAGVIEW_H
#define DAGVIEW_H
#include <memory>
#include <QtGui/QGraphicsView>
#include <Gui/DockWindow.h>
#include <Gui/Document.h>
#include <Gui/Selection.h>
#include "DAGModel.h"
namespace Gui
{
namespace DAG
{
//! @brief view for DAG viewer
class View : public QGraphicsView, public SelectionObserver
{
Q_OBJECT
public:
View(QWidget *parentIn = 0);
virtual ~View() override;
public Q_SLOTS:
void awakeSlot(); //!< hooked up to event dispatcher for update when idle.
private:
virtual void onSelectionChanged(const SelectionChanges& msg) override;
void slotActiveDocument(const Gui::Document &documentIn);
void slotDeleteDocument(const Gui::Document &documentIn);
typedef std::map<const Gui::Document*, std::shared_ptr<Model> > ModelMap;
ModelMap modelMap;
};
//! @brief dock window for DAG viewer
class DockWindow : public Gui::DockWindow
{
Q_OBJECT
public:
DockWindow(Gui::Document* gDocumentIn = 0, QWidget *parent = 0);
~DockWindow(){};
private:
View *dagView;
};
}
}
#endif // DAGVIEW_H

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 201 KiB

View File

@ -0,0 +1,239 @@
/**************************************************************************
**
** This file is part of Qt Creator
**
** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
**
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** Commercial Usage
**
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Nokia.
**
** GNU Lesser General Public License Usage
**
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** If you are unsure which license is appropriate for your use, please
** contact the sales department at http://qt.nokia.com/contact.
**
**************************************************************************/
#include "PreCompiled.h"
#ifndef _PreComp_
# include <QHeaderView>
#endif
#include "DlgCheckableMessageBox.h"
#include "ui_DlgCheckableMessageBox.h"
#include <QtGui/QPushButton>
#include <QtCore/QDebug>
#include "MainWindow.h"
#include <App/Application.h>
//#include <App/Parameter.h>
namespace Gui {
namespace Dialog {
QByteArray toParamEntry(QString name)
{
QString tmp = QString::fromLatin1(name.toLatin1());
name.replace(QString::fromLatin1(" "),QString::fromLatin1("_"));
return name.toLatin1();
}
void DlgCheckableMessageBox::showMessage(QString header, QString message, bool check,QString checkText )
{
bool checked = App::GetApplication().GetParameterGroupByPath( QByteArray("User parameter:BaseApp/CheckMessages"))->GetBool(toParamEntry(header));
if(!checked){
DlgCheckableMessageBox *mb = new DlgCheckableMessageBox(Gui::getMainWindow());
mb->setWindowTitle(header);
mb->setIconPixmap(QMessageBox::standardIcon(QMessageBox::Warning));
mb->setText(message);
mb->setPrefEntry(header);
mb->setCheckBoxText(checkText);
mb->setChecked(check);
mb->setStandardButtons(QDialogButtonBox::Ok);
mb->setDefaultButton(QDialogButtonBox::Ok);
mb->show();
}
}
struct DlgCheckableMessageBoxPrivate {
DlgCheckableMessageBoxPrivate() : clickedButton(0) {}
Ui::DlgCheckableMessageBox ui;
QAbstractButton *clickedButton;
};
DlgCheckableMessageBox::DlgCheckableMessageBox(QWidget *parent) :
QDialog(parent),
m_d(new DlgCheckableMessageBoxPrivate)
{
setModal(true);
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
m_d->ui.setupUi(this);
m_d->ui.pixmapLabel->setVisible(false);
connect(m_d->ui.buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
connect(m_d->ui.buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
connect(m_d->ui.buttonBox, SIGNAL(clicked(QAbstractButton*)), this, SLOT(slotClicked(QAbstractButton*)));
}
DlgCheckableMessageBox::~DlgCheckableMessageBox()
{
delete m_d;
}
void DlgCheckableMessageBox::setPrefEntry( const QString& entry )
{
paramEntry = toParamEntry(entry);
bool checked = App::GetApplication().GetParameterGroupByPath( QByteArray("User parameter:BaseApp/CheckMessages"))->GetBool(paramEntry);
setChecked(checked);
}
void DlgCheckableMessageBox::slotClicked(QAbstractButton *b)
{
m_d->clickedButton = b;
}
QAbstractButton *DlgCheckableMessageBox::clickedButton() const
{
return m_d->clickedButton;
}
QDialogButtonBox::StandardButton DlgCheckableMessageBox::clickedStandardButton() const
{
if (m_d->clickedButton)
return m_d->ui.buttonBox->standardButton(m_d->clickedButton);
return QDialogButtonBox::NoButton;
}
QString DlgCheckableMessageBox::text() const
{
return m_d->ui.messageLabel->text();
}
void DlgCheckableMessageBox::setText(const QString &t)
{
m_d->ui.messageLabel->setText(t);
}
QPixmap DlgCheckableMessageBox::iconPixmap() const
{
if (const QPixmap *p = m_d->ui.pixmapLabel->pixmap())
return QPixmap(*p);
return QPixmap();
}
void DlgCheckableMessageBox::setIconPixmap(const QPixmap &p)
{
m_d->ui.pixmapLabel->setPixmap(p);
m_d->ui.pixmapLabel->setVisible(!p.isNull());
}
bool DlgCheckableMessageBox::isChecked() const
{
return m_d->ui.checkBox->isChecked();
}
void DlgCheckableMessageBox::setChecked(bool s)
{
m_d->ui.checkBox->setChecked(s);
}
QString DlgCheckableMessageBox::checkBoxText() const
{
return m_d->ui.checkBox->text();
}
void DlgCheckableMessageBox::setCheckBoxText(const QString &t)
{
m_d->ui.checkBox->setText(t);
}
QDialogButtonBox::StandardButtons DlgCheckableMessageBox::standardButtons() const
{
return m_d->ui.buttonBox->standardButtons();
}
void DlgCheckableMessageBox::setStandardButtons(QDialogButtonBox::StandardButtons s)
{
m_d->ui.buttonBox->setStandardButtons(s);
}
QDialogButtonBox::StandardButton DlgCheckableMessageBox::defaultButton() const
{
Q_FOREACH (QAbstractButton *b, m_d->ui.buttonBox->buttons())
if (QPushButton *pb = qobject_cast<QPushButton *>(b))
if (pb->isDefault())
return m_d->ui.buttonBox->standardButton(pb);
return QDialogButtonBox::NoButton;
}
void DlgCheckableMessageBox::setDefaultButton(QDialogButtonBox::StandardButton s)
{
if (QPushButton *b = m_d->ui.buttonBox->button(s)) {
b->setDefault(true);
b->setFocus();
}
}
void DlgCheckableMessageBox::accept()
{
if(!paramEntry.isEmpty())
App::GetApplication().GetParameterGroupByPath( QByteArray("User parameter:BaseApp/CheckMessages"))->SetBool(paramEntry,isChecked());
QDialog::accept();
}
void DlgCheckableMessageBox::reject()
{
if(!paramEntry.isEmpty())
App::GetApplication().GetParameterGroupByPath( QByteArray("User parameter:BaseApp/CheckMessages"))->SetBool(paramEntry,isChecked());
QDialog::reject();
}
QDialogButtonBox::StandardButton
DlgCheckableMessageBox::question(QWidget *parent,
const QString &title,
const QString &question,
const QString &checkBoxText,
bool *checkBoxSetting,
QDialogButtonBox::StandardButtons buttons,
QDialogButtonBox::StandardButton defaultButton)
{
DlgCheckableMessageBox mb(parent);
mb.setWindowTitle(title);
mb.setIconPixmap(QMessageBox::standardIcon(QMessageBox::Question));
mb.setText(question);
mb.setCheckBoxText(checkBoxText);
mb.setChecked(*checkBoxSetting);
mb.setStandardButtons(buttons);
mb.setDefaultButton(defaultButton);
mb.exec();
*checkBoxSetting = mb.isChecked();
return mb.clickedStandardButton();
}
QMessageBox::StandardButton DlgCheckableMessageBox::dialogButtonBoxToMessageBoxButton(QDialogButtonBox::StandardButton db)
{
return static_cast<QMessageBox::StandardButton>(int(db));
}
} // namespace Dialog
} // namespace Gui
#include "moc_DlgCheckableMessageBox.cpp"

View File

@ -0,0 +1,116 @@
/**************************************************************************
**
** This file is part of Qt Creator
**
** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
**
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** Commercial Usage
**
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Nokia.
**
** GNU Lesser General Public License Usage
**
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** If you are unsure which license is appropriate for your use, please
** contact the sales department at http://qt.nokia.com/contact.
**
**************************************************************************/
#ifndef CHECKABLEMESSAGEBOX_H
#define CHECKABLEMESSAGEBOX_H
//#include "utils_global.h"
#include <QtGui/QDialogButtonBox>
#include <QtGui/QMessageBox>
#include <QtGui/QDialog>
namespace Gui {
namespace Dialog {
struct DlgCheckableMessageBoxPrivate;
/* A messagebox suitable for questions with a
* "Do not ask me again" checkbox. Emulates the QMessageBox API with
* static conveniences. */
class GuiExport DlgCheckableMessageBox : public QDialog
{
Q_OBJECT
Q_PROPERTY(QString text READ text WRITE setText)
Q_PROPERTY(QPixmap iconPixmap READ iconPixmap WRITE setIconPixmap)
Q_PROPERTY(bool isChecked READ isChecked WRITE setChecked)
Q_PROPERTY(QString prefEntry WRITE setPrefEntry)
Q_PROPERTY(QString checkBoxText READ checkBoxText WRITE setCheckBoxText)
Q_PROPERTY(QDialogButtonBox::StandardButtons buttons READ standardButtons WRITE setStandardButtons)
Q_PROPERTY(QDialogButtonBox::StandardButton defaultButton READ defaultButton WRITE setDefaultButton)
public:
explicit DlgCheckableMessageBox(QWidget *parent);
virtual ~DlgCheckableMessageBox();
static QDialogButtonBox::StandardButton
question(QWidget *parent,
const QString &title,
const QString &question,
const QString &checkBoxText,
bool *checkBoxSetting,
QDialogButtonBox::StandardButtons buttons = QDialogButtonBox::Yes|QDialogButtonBox::No,
QDialogButtonBox::StandardButton defaultButton = QDialogButtonBox::No);
QString text() const;
void setText(const QString &);
void setPrefEntry( const QString& entry );
virtual void accept();
virtual void reject();
bool isChecked() const;
void setChecked(bool s);
QString checkBoxText() const;
void setCheckBoxText(const QString &);
QDialogButtonBox::StandardButtons standardButtons() const;
void setStandardButtons(QDialogButtonBox::StandardButtons s);
QDialogButtonBox::StandardButton defaultButton() const;
void setDefaultButton(QDialogButtonBox::StandardButton s);
// see static QMessageBox::standardPixmap()
QPixmap iconPixmap() const;
void setIconPixmap (const QPixmap &p);
// Query the result
QAbstractButton *clickedButton() const;
QDialogButtonBox::StandardButton clickedStandardButton() const;
// Conversion convenience
static QMessageBox::StandardButton dialogButtonBoxToMessageBoxButton(QDialogButtonBox::StandardButton);
// conviniant show method
static void showMessage(QString haeder, QString message, bool check=false,QString checkText = QString::fromLatin1("Don't show me again"));
private Q_SLOTS:
void slotClicked(QAbstractButton *b);
private:
DlgCheckableMessageBoxPrivate *m_d;
QByteArray paramEntry;
};
} // namespace Dialog
} // namespace Gui
#endif // CHECKABLEMESSAGEBOX_H

Some files were not shown because too many files have changed in this diff Show More