DATAKIT API  V2025.1
WritePrototype.cpp File Reference

Functions

void WritePrototype (Dtk_ComponentPtr inComponent, const Dtk_transfo &inMatrix)
 

Variables

Dtk_tab< Dtk_IDComponentProcessed
 
Dtk_transfo CurrentMatrix = Dtk_transfo()
 

Function Documentation

◆ WritePrototype()

void WritePrototype ( Dtk_ComponentPtr  inComponent,
const Dtk_transfo inMatrix 
)
15 {
16  Dtk_Size_t i;
17  Dtk_ID ComponentID = inComponent->GetID();
18  Dtk_Int32 ComponentIndex;
19  ComponentIndex = ComponentProcessed.find(ComponentID);
20 
21  if (ComponentIndex == -1)
22  {
23  Dtk_NodePtr RootNode;
24  Dtk_API *inAPI = Dtk_API::GetAPI();
25 
26  //it can also contain some instances
27  Dtk_Size_t NumChildren = inComponent->GetNumChildren();
28  for (i = 0; i < NumChildren; i++)
29  {
30  Dtk_ComponentPtr child = inComponent->GetChild(i);
31  WriteComponent(child, inMatrix);
32  }
33 
34  //Get the Construction tree for this prototype
35  Dtk_ErrorStatus err;
36  if (inComponent->ComponentAvailability() == Dtk_Component::ComponentMissing)
38  else
39  err = inAPI->ReadComponent(inComponent, RootNode);
40 
41  //a RootNode= NULL with err == dtkNoError means that component is empty
42  if (err == dtkNoError && RootNode.IsNotNULL())
43  {
44  // Set matrix to apply to all node if you flat assemblies
45  CurrentMatrix = inMatrix;
46 
47  //Go Through the Root Node and children
48  WriteNode(RootNode);
49 
50  if (IsXmlDumpActivated())
51  {
52  XmlWriteGlobalDataSet(inComponent->GetGlobalDataSet());
53 
54  Dtk_Size_t NumMetaData;
55  NumMetaData = inComponent->GetNumMetaData();
56  if (NumMetaData)
57  {
58  for (i = 0; i < NumMetaData; i++)
59  {
60  XmlWriteMetaData( inComponent->GetMetaData(i));
61  }
62  }
63  }
64  }
65 
66  if (IsPdfDumpActivated())
67  {
68  PdfWriteMetaData(inComponent);
69  }
70 
71  //We close the opened Component and free his construction tree
72  err = inAPI->EndComponent(inComponent);
73 
74  }
75  else
76  {
77  //Get the prototype you ever write
78  //The Component has a unique ID given by GetID to help to map it with your Write ID
79  if (IsPdfDumpActivated())
80  {
81  PdfInstanceExistingPrototype(ComponentIndex);
82  }
83 
84  }
85 }

Variable Documentation

◆ ComponentProcessed

Dtk_tab<Dtk_ID> ComponentProcessed

◆ CurrentMatrix

Dtk_transfo CurrentMatrix = Dtk_transfo()
Dtk_ID
uint32_t Dtk_ID
Definition: define.h:689
dtkErrorFileNotExist
@ dtkErrorFileNotExist
Definition: error_dtk.hpp:95
Dtk_SmartPtr::IsNotNULL
Dtk_bool IsNotNULL() const
Definition: util_ptr_dtk.hpp:119
XmlWriteMetaData
void XmlWriteMetaData(const Dtk_MetaDataPtr &inMetaData)
Definition: XmlWrite.cpp:130
PdfWriteMetaData
void PdfWriteMetaData(Dtk_ComponentPtr inComponent)
Definition: PdfWrite.cpp:117
XmlWriteGlobalDataSet
void XmlWriteGlobalDataSet(const Dtk_GlobalDataSetPtr &inSelectionSet)
Definition: XmlWrite.cpp:124
Dtk_Size_t
size_t Dtk_Size_t
Definition: define.h:712
Dtk_API::EndComponent
Dtk_ErrorStatus EndComponent(Dtk_ComponentPtr &inComponent)
EndComponent.
WriteComponent
Dtk_ErrorStatus WriteComponent(Dtk_ComponentPtr inComponent, const Dtk_transfo &inMatrix=Dtk_transfo())
Definition: WriteComponent.cpp:9
Dtk_API::GetAPI
static Dtk_API * GetAPI()
Get DATAKIT API.
PdfInstanceExistingPrototype
void PdfInstanceExistingPrototype(Dtk_ID ComponentIndex)
Definition: PdfWrite.cpp:138
Dtk_Int32
int32_t Dtk_Int32
Definition: define.h:687
Dtk_ErrorStatus
Dtk_ErrorStatus
Definition: error_dtk.hpp:6
CurrentMatrix
Dtk_transfo CurrentMatrix
Definition: WritePrototype.cpp:11
Dtk_SmartPtr< Dtk_Node >
IsXmlDumpActivated
Dtk_bool IsXmlDumpActivated()
Definition: XmlWrite.cpp:17
Dtk_Component::ComponentMissing
@ ComponentMissing
Definition: dtk_maindoc.hpp:567
dtkNoError
@ dtkNoError
Definition: error_dtk.hpp:140
Dtk_API::ReadComponent
Dtk_ErrorStatus ReadComponent(const Dtk_ComponentPtr &inComponent, Dtk_NodePtr &outRootNode)
Read Component from Assembly Tree (Call EndComponent to free data allocated)
WriteNode
Dtk_ErrorStatus WriteNode(Dtk_NodePtr inNode)
Definition: WriteNode.cpp:16
ComponentProcessed
Dtk_tab< Dtk_ID > ComponentProcessed
Definition: WritePrototype.cpp:12
IsPdfDumpActivated
Dtk_bool IsPdfDumpActivated()
Definition: PdfWrite.cpp:26
Dtk_API
Definition: dtk_api.hpp:75