CAD-To-X3D Conversion with Product Structure and External Geometry Referencing
Total Page:16
File Type:pdf, Size:1020Kb
CAD-to-X3D Conversion with product structure and external geometry referencing Hyokwang Lee PartDB Co., Ltd. and Web3D Korea Chapter [email protected] Engineering IT & VR solutions based on International Standards CATIA Hub_Assembly model Hub_AssemblyH (1) disc_with_holes(2) cap(3) sleeve_sub_assemblyH (4) gasket(5) cylinder(6) CATIA Hub Assembly (6 Files) Simple Conversion of Hub_Assembly into X3D Save as VRML/X3D http://web3d.org/x3d/content/examples/Basic/CAD/ Simple Conversion of Hub_Assembly into X3D Save as VRML/X3D Simple Conversion of Hub_Assembly into X3D Save as VRML Product Structure disappeared!! Representing a CAD assembly in X3D . Hub_Assembly represented in a single X3D file . Assembly structure : CADAssembly, CADPart . Geometry : CADFace CatiaHubAssembly.X3D Hub_AssemblyH (1) <CADAssembly name=“Hub_Assembly”> (1) T disc_with_holes(2) <CADPart name=“disc_with_holes” ...> <CADFace> ... </CADFace> cap(3) </CADPart> <CADPart name=“cap” ...> sleeve_sub_assemblyH (4) T(2) <CADFace> ... </CADFace> (3) T(4) </CADPart> T gasket(5) CAD2X3D cylinder(6) conversion <CADAssembly name=“sleeve_sub_assembly”> <CADPart name=“gasket” ...> T(6) T(5) <CADFace> ... </CADFace> </CADPart> . Transform information is applied to the leaf node <CADPart name=“cylinder” ...> which includes geometry. <CADFace> ... </CADFace> CATIA Hub Assembly ex) Tcylinder = T(1)*T(4)*T(6) </CADPart> (6 Files) </CADAssembly> </CADAssembly> Representing a CAD assembly in X3D . Hub_Assembly represented in a single X3D file . Assembly structure : CADAssembly, CADPart . Geometry : CADFace CatiaHubAssembly.X3D Hub_AssemblyH (1) <CADAssembly name=“Hub_Assembly”> (1) T disc_with_holes(2) <CADPart name=“disc_with_holes” ...> • Partial change <CADFace > ... </CADFace> cap(3) </CADPart> • Reusability <CADPart name=“cap” ...> sleeve_sub_assemblyH (4) T(2) <CADFace> ... </CADFace> (3) T(4) </CADPart> T gasket(5) CAD2X3D cylinder(6) conversion <CADAssembly name=“sleeve_sub_assembly”> <CADPart name=“gasket” ...> T(6) T(5) <CADFace> ... </CADFace> </CADPart> . Transform information is applied to the leaf node <CADPart name=“cylinder” ...> which includes geometry. <CADFace> ... </CADFace> CATIA Hub Assembly ex) Tcylinder = T(1)*T(4)*T(6) </CADPart> (6 Files) </CADAssembly> </CADAssembly> Heavyweight CAD Data • Size (CATIA) : 1,154 MB Format # of files Size(MB) • # of files : 4054 3DXML 1 136 HOOPS 1 105 VRML 1 1,136 IGES 1 1,934 STEP 1 1,287 Representing a CAD assembly in X3D . Hub_Assembly represented in multipe X3D files . An assembly structure file with transforms conserved separate . Externally referenced geometry files CatiaHubAssembly.X3D Reusable geometry files Transform <CADAssembly name=“Hub_Assembly”> CatiaHubDiscWithHoles.x3d T(1) Transform --- <CADPart name=“disc_with_holes” ...> --- <CADFace> ... </CADFace> --- </CADPart> Transform CatiaHubCap.x3d T(2) <CADPart name=“cap” ...> T(3) T(4) <CADFace> ... </CADFace> --- </CADPart> --- --- Transform <CADAssembly name=“sleeve_sub_assembly”> T(6) CatiaHubGasket.x3d T(5) Transform <CADPart name=“gasket” ...> --- --- <CADFace> ... </CADFace> --- </CADPart> Transform CatiaHubCylinder.x3d <CADPart name=“cylinder” ...> <CADFace> ... </CADFace> --- </CADPart> --- --- </CADAssembly> </CADAssembly> CatiaHubAssembly.X3D <Transfrom DEF=“T(1)”> <CADAssembly name=“Hub_Assembly”> Suggestions <Transform DEF=“T(2)”> <CADAssembly name=“disc_with_holes”> <CADPart name=“disc_with_holes” ...> <CADFace> ... </CADFace> . Conserving transform information </CADPart> separate for each assembly </CADAssembly> </Transform> . Transform parent for each CADAssembly <Transform DEF=“T(3)”> . A dummy CADAssembly for a CADPart <CADAssembly name=“cap”> <CADPart name=“cap” ...> <CADFace> ... </CADFace> </CADPart> </CADAssembly> (1) T </Transform> <Transform DEF=“T(4)”> <CADAssembly name=“sleeve_sub_assembly”> <Transform DEF=“T(5)”> <CADAssembly name=“gasket”> T(2) (4) <CADPart name=“gasket” ...> T(3) T <CADFace> ... </CADFace> </CADPart> </CADAssembly> </Transform> T(6) T(5) <Transform DEF=“T(6)”> <CADAssembly name=“cylinder”> <CADPart name=“cylinder” ...> <CADFace> ... </CADFace> </CADPart> </CADAssembly> </Transform> </CADAssembly> </Transform> </CADAssembly> </Transform> BS Contact X3D Validation & Viewers VRML/X3D Instant Reality Octaga Player Xj3D Viewer Suggestions . External referencing of geometry files A. Prototype with Inline B. Inline CatiaHubAssembly.X3D Reusable geometry files <Transfrom DEF=“T(1)”> <CADAssembly name=“Hub_Assembly”> T(1) <Transform DEF=“T(2)”> <CADAssembly name=“disc_with_holes”> CatiaHubDiscWithHoles.x3d <CADPart name=“disc_with_holes” ...> --- <CADFace> ... </CADFace> --- (2) T </CADPart> --- (4) T(3) T </CADAssembly> </Transform> <Transform DEF=“T(3)”> (6) (5) T T <CADAssembly name=“cap”> CatiaHubCap.x3d <CADPart name=“cap” ...> --- <CADFace> ... </CADFace> --- </CADPart> --- </CADAssembly> </Transform> Suggestions . External referencing of geometry files A. Prototype with Inline B. Inline CatiaHubAssembly.X3D Reusable geometry files <ProtoDeclare name="CADGeometry"> <ProtoInterface> <Transfrom DEF=“T(1)”> <field type="MFString" accessType="inputOutput" <CADAssembly name=“Hub_Assembly”> name="url" value="" /> </ProtoInterface> <Transform DEF=“T(2)”> <ProtoBody> <CADAssembly name=“disc_with_holes”> CatiaHubDiscWithHoles.x3d <Inline> <IS> <CADPart name=“disc_with_holes” ...> --- <connect nodeField="url" protoField="url" /> <CADFace> ... </CADFace> --- --- </IS> </CADPart> </Inline> </ProtoBody> </CADAssembly> </ProtoDeclare> </Transform> Suggestions . External referencing of geometry files A. Prototype with Inline B. Inline CatiaHubAssembly.X3D Reusable geometry files <ProtoDeclare name="CADGeometry"> <ProtoInterface> <Transfrom DEF=“T(1)”> <field type="MFString" accessType="inputOutput" <CADAssembly name=“Hub_Assembly”> name="url" value="" /> </ProtoInterface> <Transform DEF=“T(2)”> <ProtoBody> <CADAssembly name=“disc_with_holes”> CatiaHubDiscWithHoles.x3d <Inline> <IS> <ProtoInstance name="CADGeometry"> --- <connect nodeField="url" protoField="url" /> <fieldValue name="url" --- value='"disc_with_holes.x3d"'/> --- </IS> </ProtoInstance> </Inline> </ProtoBody> </CADAssembly> </ProtoDeclare> </Transform> CatiaHubAssembly.X3D Reusable geometry files <ProtoDeclare name="CADGeometry"> <ProtoInterface> <Transfrom DEF=“T(1)”> <field type="MFString" accessType="inputOutput" <CADAssembly name=“Hub_Assembly”> name="url" value="" /> <Transform DEF=“T(2)”> CatiaHubDiscWithHoles.x3d </ProtoInterface> <CADAssembly name=“disc_with_holes”> <ProtoBody> <Inline> <ProtoInstance name="CADGeometry"> --- <IS> <fieldValue name="url“ --- <connect nodeField="url" protoField="url" /> value='"disc_with_holes.x3d"' /> --- </IS> </ProtoInstance> </Inline> </ProtoBody> </CADAssembly> </ProtoDeclare> </Transform> <Transform DEF=“T(3)”> <CADAssembly name=“cap”> CatiaHubCap.x3d <ProtoInstance name="CADGeometry"> --- <fieldValue name="url“ --- value='"cap.x3d"' /> --- </ProtoInstance> (1) </CADAssembly> T </Transform> <Transform DEF=“T(4)”> <CADAssembly name=“sleeve_sub_assembly”> <Transform DEF=“T(5)”> (2) <CADAssembly name=“gasket”> CatiaHubGasket.x3d T (4) T(3) T <ProtoInstance name="CADGeometry"> <fieldValue name="url“ --- --- value='"gasket.x3d"' /> </ProtoInstance> --- </CADAssembly> </Transform> T(6) T(5) <Transform DEF=“T(6)”> <CADAssembly name=“cylinder”> CatiaHubCylinder.x3d <ProtoInstance name="CADGeometry"> --- <fieldValue name="url“ --- value='"cylinder.x3d"' /> --- </ProtoInstance> </CADAssembly> </Transform> </CADAssembly> </Transform> </CADAssembly> </Transform> BS Contact X3D Validation & Viewers VRML/X3D Instant Reality Octaga Player Suggestions . External referencing of geometry files A. Prototype with Inline B. Inline CatiaHubAssemblyInline.X3D Reusable geometry files <Transfrom DEF=“T(1)”> <CADAssembly name=“Hub_Assembly”> CatiaHubDiscWithHoles.x3d <Transform DEF=“T(2)”> <CADAssembly name=“disc_with_holes”> --- --- <Inline url='"disc_with_holes.x3d"'/> --- </CADAssembly> </Transform> CatiaHubAssemblyInline.X3D Reusable geometry files <Transfrom DEF=“T(1)”> <CADAssembly name=“Hub_Assembly”> CatiaHubDiscWithHoles.x3d <Transform DEF=“T(2)”> <CADAssembly name=“disc_with_holes”> --- --- <Inline url='"disc_with_holes.x3d"'/> --- </CADAssembly> </Transform> <Transform DEF=“T(3)”> CatiaHubCap.x3d <CADAssembly name=“cap”> --- <Inline url='" cap.x3d "'/> --- --- </CADAssembly> </Transform> T(1) <Transform DEF=“T(4)”> <CADAssembly name=“sleeve_sub_assembly”> (2) <Transform DEF=“T(5)”> CatiaHubGasket.x3d T <CADAssembly name=“gasket”> T(3) T(4) --- <Inline url='" gasket.x3d "'/> --- --- </CADAssembly> </Transform> (6) (5) T T <Transform DEF=“T(6)”> CatiaHubCylinder.x3d <CADAssembly name=“cylinder”> --- <Inline url='" cylinder.x3d "'/> --- --- </CADAssembly> </Transform> </CADAssembly> </Transform> </CADAssembly> </Transform> Heavyweight CAD Data • Size (CATIA) : 1,154 MB Format # of files Size(MB) • # of files : 4054 3DXML 1 136 HOOPS 1 105 VRML 1 1,136 IGES 1 1,934 STEP 1 1,287 VRML’s 3890 491 VRML’s 3890 427 (reduced) X3D’s 3890 455 X3DB’s 3890 65 Thank you! Hyokwang Lee [email protected] http://www.partdb.com Engineering IT & VR solutions based on International Standards .