DATAKIT API  V2025.1
WriteNode.cpp File Reference

Functions

Dtk_ErrorStatus WriteNode (Dtk_NodePtr inNode)
 

Function Documentation

◆ WriteNode()

Dtk_ErrorStatus WriteNode ( Dtk_NodePtr  inNode)
17 {
18 
19  FILE * xmlDumpFile = Dtk_DumpXMLNamespace::Dtk_DumpXml_GetFile();
20 
21 
22  //GetName
23  Dtk_string NodeName = inNode->Name();
24 
25  // You can Get Preview if you want to handle it
26  Dtk_PreviewPtr TmpPreview = inNode->GetPreview();
27  if( TmpPreview.IsNotNULL() )
28  {
29  Dtk_Int32 size = TmpPreview->GetStreamSize();
30  char *jpgimage = TmpPreview->GetStream();
31  Dtk_string Preview_name = "NodePreview.jpg";
32  FILE *jpg = Preview_name.OpenFile( "wb" );
33  if( jpg )
34  {
35  fwrite( jpgimage, sizeof( char ), size, jpg );
36  fclose( jpg );
37  }
38  }
39 
40 
41  //See Dtk_InfoPtr methods for others attributes in infos (color, layer...)
42  if( xmlDumpFile )
43  {
45  }
46  if(IsPdfDumpActivated())
47  {
48  Dtk_ID pdfID;
49  pdfID = PdfInitNode(inNode);
50  }
51 
52  //Get The node Blanked Status
53  // -1 = undefined, 0 = Visible, 1=Invisible, 2=Construction Geometry
54  int NodeBlankedStatus = inNode->GetInfos()->GetBlankedStatus();
55 
57 
58  //In this sample we read and treat only visible node - change this test if you want to read invisible and/or construction node
59  if( NodeBlankedStatus == 0 )
60  {
61  //You have many types for Node Data :
62  // BodyType for 3D geometry (solid and wireframe)
63  // MeshType for 3D tessellated geometry
64  // FdtType for FDT
65  // DrawingType for 2D
66  // KinematicsType for Kinematics
67  // AxisSystemType for AxisPlacement
68  // LayerInfosSetType for LayerInfos
69  // MetaDataType for Additional informations
70  // CameraType for Camera
71  // ModelDisplayType for ModelDisplay
72  // VirtualType just for containing children
73  switch( NodeType )
74  {
75  case Dtk_Node::BodyType:
76  {
77  WriteBody( inNode );
78  break;
79  }
80  case Dtk_Node::FdtType:
81  {
82  WriteFdt( inNode );
83  break;
84  }
86  {
87  WriteDrawing( inNode );
88  break;
89  }
90  case Dtk_Node::MeshType:
91  {
92  WriteMesh( inNode );
93  break;
94  }
96  {
97  WriteAxisSystem( inNode );
98  break;
99  }
101  {
102  WriteKinematics( inNode );
103  break;
104  }
106  {
107  WriteLayerFilter( inNode );
108  break;
109  }
111  {
112  WriteColorPalette(inNode);
113  break;
114  }
116  {
117  WriteMetaData( inNode );
118  break;
119  }
121  {
122  WriteCamera( inNode );
123  break;
124  }
126  {
127  WriteModelDisplay( inNode );
128  break;
129  }
131  {
132  WriteConstraints( inNode );
133  break;
134  }
135  default:
136  {
137  break;
138  }
139  }
140  }
141 
142  //Treat recursive TreeNode for Visible and Construction node
143  // NodeBlankedStatus : -1 = undefined, 0 = Visible, 1=Invisible, 2=Construction Geometry
144  //remove this test if you want to treat invisible entities
145  if( NodeBlankedStatus != 1 || NodeType == Dtk_Node::BodyType )
146  //invisible body can have visible children
147  {
148 
149  Dtk_Size_t i, NumChildren;
150  NumChildren = inNode->GetNumChildren();
151  for( i = 0; i < NumChildren; i++ )
152  {
153  WriteNode( inNode->GetChild( i ) );
154  }
155  }
156 
157 
158  // Write Feature associated if you want to handle it
159  WriteFeature( inNode );
160 
161  //Write NodeConnector if you want to handle it
162  WriteNodeConnector( inNode );
163 
164 
165  if( xmlDumpFile )
166  {
168  }
169  if(IsPdfDumpActivated())
170  {
171  PdfEndNode();
172  }
173 
174  return dtkNoError;
175 }
WriteColorPalette
void WriteColorPalette(Dtk_NodePtr inNode)
Definition: WriteColorPalette.cpp:5
WriteModelDisplay
void WriteModelDisplay(Dtk_NodePtr inNode)
Definition: WriteModelDisplay.cpp:5
Dtk_ID
uint32_t Dtk_ID
Definition: define.h:689
Dtk_Info::GetBlankedStatus
int GetBlankedStatus() const
Retrieves the entity Blanked Status.
Dtk_Node::FdtType
@ FdtType
Definition: dtk_maindoc.hpp:251
Dtk_SmartPtr::IsNotNULL
Dtk_bool IsNotNULL() const
Definition: util_ptr_dtk.hpp:119
Dtk_Node::NodeDataTypeEnum
NodeDataTypeEnum
Definition: dtk_maindoc.hpp:246
Dtk_Node::ModelDisplayType
@ ModelDisplayType
Definition: dtk_maindoc.hpp:258
WriteDrawing
void WriteDrawing(Dtk_NodePtr inNode)
Definition: WriteDrawing.cpp:4
Dtk_string
This is a high level string class.
Definition: dtk_string.hpp:58
Dtk_Size_t
size_t Dtk_Size_t
Definition: define.h:712
Dtk_Node::KinematicsType
@ KinematicsType
Definition: dtk_maindoc.hpp:253
Dtk_DumpXml_Dtk_NodePtr_End
Dtk_ErrorStatus Dtk_DumpXml_Dtk_NodePtr_End(FILE *F)
Definition: util_xml_dtk.cpp:4554
Dtk_Node::BodyType
@ BodyType
Definition: dtk_maindoc.hpp:248
Dtk_Node::CameraType
@ CameraType
Definition: dtk_maindoc.hpp:259
Dtk_string::OpenFile
FILE * OpenFile(const Dtk_string &inRights) const
File Utility : Open a file with the given rights.
PdfEndNode
void PdfEndNode()
Definition: PdfWrite.cpp:168
Dtk_DumpXml_Dtk_NodePtr_Init
Dtk_ErrorStatus Dtk_DumpXml_Dtk_NodePtr_Init(FILE *F, const Dtk_NodePtr &inObject)
Definition: util_xml_dtk.cpp:4457
WriteFeature
void WriteFeature(Dtk_NodePtr inNode)
Definition: WriteFeature.cpp:13
WriteMesh
void WriteMesh(Dtk_NodePtr inNode)
Definition: WriteMesh.cpp:80
Dtk_Node::GetChild
const Dtk_NodePtr GetChild(const Dtk_Size_t &inPos) const
Retrieves the ith Dtk_Node - read only -.
Definition: dtk_maindoc.hpp:385
WriteConstraints
void WriteConstraints(Dtk_NodePtr inNode)
Definition: WriteConstraints.cpp:5
WriteMetaData
void WriteMetaData(Dtk_NodePtr inNode)
Definition: WriteMetaData.cpp:8
Dtk_Node::GetNodeType
NodeDataTypeEnum GetNodeType() const
Retrieves the Dtk_Node Node Type - read only -.
WriteFdt
void WriteFdt(Dtk_NodePtr inNode)
Definition: WriteFdt.cpp:7
WriteCamera
void WriteCamera(Dtk_NodePtr inNode)
Definition: WriteCamera.cpp:5
Dtk_DocElement::Name
const Dtk_string & Name() const
Retrieves the Dtk_DocElement Name - read only -.
WriteKinematics
void WriteKinematics(Dtk_NodePtr inNode)
Definition: WriteKinematics.cpp:5
PdfInitNode
Dtk_ID PdfInitNode(Dtk_NodePtr inNode)
Definition: PdfWrite.cpp:156
Dtk_Int32
int32_t Dtk_Int32
Definition: define.h:687
Dtk_Node::MetaDataType
@ MetaDataType
Definition: dtk_maindoc.hpp:257
Dtk_DumpXml_GetFile
FILE * Dtk_DumpXml_GetFile()
Definition: util_xml_dtk.cpp:4865
Dtk_Node::ConstraintType
@ ConstraintType
Definition: dtk_maindoc.hpp:261
Dtk_DocElement::GetInfos
Dtk_InfoPtr GetInfos() const
Retrieves the Dtk_DocElement Dtk_InfoPtr - read only -.
Dtk_DocElement::GetNumChildren
Dtk_Size_t GetNumChildren() const
Retrieves the number of the Dtk_DocElement children - read only -.
Dtk_Node::LayerInfosSetType
@ LayerInfosSetType
Definition: dtk_maindoc.hpp:255
Dtk_SmartPtr
Definition: util_ptr_dtk.hpp:37
catiav5w::NodeType
NodeType
Type of Specification Tree Node used into a CATPart file.
Definition: catiav5w.hpp:426
WriteNodeConnector
void WriteNodeConnector(Dtk_NodePtr inNode)
Definition: WriteNodeConnector.cpp:5
WriteLayerFilter
void WriteLayerFilter(Dtk_NodePtr inNode)
Definition: WriteLayerFilter.cpp:5
Dtk_Node::ColorInfosSetType
@ ColorInfosSetType
Definition: dtk_maindoc.hpp:256
WriteAxisSystem
void WriteAxisSystem(Dtk_NodePtr inNode)
Definition: WriteAxisSystem.cpp:8
dtkNoError
@ dtkNoError
Definition: error_dtk.hpp:140
WriteNode
Dtk_ErrorStatus WriteNode(Dtk_NodePtr inNode)
Definition: WriteNode.cpp:16
Dtk_Node::DrawingType
@ DrawingType
Definition: dtk_maindoc.hpp:252
WriteBody
void WriteBody(Dtk_NodePtr inNode)
Definition: WriteBody.cpp:13
Dtk_Node::AxisSystemType
@ AxisSystemType
Definition: dtk_maindoc.hpp:254
IsPdfDumpActivated
Dtk_bool IsPdfDumpActivated()
Definition: PdfWrite.cpp:26
Dtk_DocElement::GetPreview
Dtk_PreviewPtr GetPreview() const
Retrieves the Dtk_DocElement Dtk_PreviewPtr - read only -.
Dtk_Node::MeshType
@ MeshType
Definition: dtk_maindoc.hpp:249