DATAKIT API  V2025.1
testlibjtwrite.cpp File Reference

Functions

int AllJtWTests (const Dtk_string &inResultDirectory)
 
Dtk_FdtPtr CreateFdtDatumAt (const Dtk_pnt &D)
 
Dtk_LayerInfosSetPtr CreateLayerInfosSet ()
 
Dtk_ModelDisplayPtr CreateModelDisplay (const Dtk_string &name)
 
int JtWriteSample (const Dtk_string &inResultDirectory)
 
Dtk_ErrorStatus JtwSampleAsmInstances_3_3 (const Dtk_string &outputFileName)
 
Dtk_ErrorStatus JtwSampleAssembly_3_1 (const Dtk_string &outputFileName)
 
Dtk_ErrorStatus JtwSampleAxis_References_5_7 (const Dtk_string &outputFileName)
 
Dtk_ErrorStatus JtwSampleBody_2_1 (const Dtk_string &outputFileName)
 
Dtk_ErrorStatus JtwSampleBodyLOD_2_2 (const Dtk_string &outputFileName)
 
Dtk_ErrorStatus JtwSampleBodyVisibility_2_4 (const Dtk_string &outputFileName)
 
Dtk_ErrorStatus JtwSampleInstancesColors_3_4 (const Dtk_string &outputFileName)
 
Dtk_ErrorStatus JtwSampleInstancesVisibily_3_5 (const Dtk_string &outputFileName)
 
Dtk_ErrorStatus JtwSampleLayerNames_4_5 (const Dtk_string &outputFileName)
 
Dtk_ErrorStatus JtwSampleLayers_4_4 (const Dtk_string &outputFileName)
 
Dtk_ErrorStatus JtwSampleMeshes_1_2 (const Dtk_string &outputFileName)
 
Dtk_ErrorStatus JtwSampleMetadatas_4_3 (const Dtk_string &outputFileName)
 
Dtk_ErrorStatus JtwSampleModelview_sections_5_5 (const Dtk_string &outputFileName)
 
Dtk_ErrorStatus JtwSampleModelViewAsm_6_1 (const Dtk_string &outputFileName)
 
Dtk_ErrorStatus JtwSampleModelViewTarget_6_2 (const Dtk_string &outputFileName, int option)
 
Dtk_ErrorStatus JtwSampleMultipleFilesPerPart_3_6 (const Dtk_string &outputFileName)
 
Dtk_ErrorStatus JtwSampleMultipleFilesShattered_3_7 (const Dtk_string &outputFileName)
 
Dtk_ErrorStatus JtwSampleOneMesh_1_1 (const Dtk_string &outputFileName)
 
Dtk_ErrorStatus JtwSamplePartInstances_3_2 (const Dtk_string &outputFileName)
 
Dtk_ErrorStatus JtwSamplePMI_Geom_association_5_4 (const Dtk_string &outputFileName)
 
Dtk_ErrorStatus JtwSamplePMI_Geom_one_association_5_8 (const Dtk_string &outputFileName)
 
Dtk_ErrorStatus JtwSamplePMI_MV_association_5_3 (const Dtk_string &outputFileName)
 
Dtk_ErrorStatus JtwSamplePMI_PMI_association_5_6 (const Dtk_string &outputFileName)
 
Dtk_ErrorStatus JtwSampleSimpleModelview_5_2 (const Dtk_string &outputFileName)
 
Dtk_ErrorStatus JtwSampleSimplePMI_5_1 (const Dtk_string &outputFileName)
 
Dtk_ErrorStatus JtwSampleUnits_4_2 (const Dtk_string &outputFileName)
 
Dtk_ErrorStatus JtwSampleVersion_4_1 (const Dtk_string &outputFileName)
 
Dtk_ErrorStatus JtwSampleWireBody_2_3 (const Dtk_string &outputFileName)
 
Dtk_EntityPtr MakeMultiSection ()
 
Dtk_ErrorStatus MakePmiOnRoot (Dtk_Jtw_Interface &J, int option)
 
Dtk_BodyPtr MakeReferenceAxis ()
 
Dtk_BodyPtr MakeReferencePlane ()
 
Dtk_BodyPtr MakeReferencePoint ()
 
Dtk_tab< Dtk_Int64Makeroute (Dtk_Int64 r[], int nb)
 
template<typename T >
void Shift (T &mesh, double sh)
 

Function Documentation

◆ AllJtWTests()

int AllJtWTests ( const Dtk_string inResultDirectory)
1098 {
1099  Dtk_ErrorStatus errorStatus;
1100  Dtk_string outputDirectory, outputFileName;
1101  // Choosing output directory and file name
1102  outputDirectory = inResultDirectory + L"dtk/Jt/";
1103  outputDirectory.FixPathSeparator();
1104  outputDirectory.mkdir();
1105 
1106  // samples meshes
1107  outputFileName = outputDirectory + L"JTW_1_1_SampleMesh.jt";
1108  errorStatus = JtwSampleOneMesh_1_1( outputFileName );
1109 
1110  outputFileName = outputDirectory + L"JTW_1_2_SampleMeshes.jt";
1111  errorStatus = JtwSampleMeshes_1_2( outputFileName );
1112 
1113  outputFileName = outputDirectory + L"JTW_2_1_SampleBody.jt";
1114  errorStatus = JtwSampleBody_2_1( outputFileName);
1115  outputFileName = outputDirectory + L"JTW_2_2_SampleBodyLOD.jt";
1116  errorStatus = JtwSampleBodyLOD_2_2( outputFileName );
1117  outputFileName = outputDirectory + L"JTW_2_3_SampleWireBody.jt";
1118  errorStatus = JtwSampleWireBody_2_3( outputFileName );
1119  outputFileName = outputDirectory + L"JTW_2_4_SampleBodyVisibility.jt";
1120  errorStatus = JtwSampleBodyVisibility_2_4( outputFileName );
1121 
1122  outputFileName = outputDirectory + L"JTW_3_1_SampleAssembly.jt";
1123  errorStatus = JtwSampleAssembly_3_1( outputFileName );
1124  outputFileName = outputDirectory + L"JTW_3_2_SamplePartInstances.jt";
1125  errorStatus = JtwSamplePartInstances_3_2( outputFileName );
1126  outputFileName = outputDirectory + L"JTW_3_3_SampleAsmInstances.jt";
1127  errorStatus = JtwSampleAsmInstances_3_3( outputFileName );
1128  outputFileName = outputDirectory + L"JTW_3_4_SampleInstancesColors.jt";
1129  errorStatus = JtwSampleInstancesColors_3_4( outputFileName );
1130  outputFileName = outputDirectory + L"JTW_3_5_SampleInstancesVisibily.jt";
1131  errorStatus = JtwSampleInstancesVisibily_3_5( outputFileName );
1132  outputFileName = outputDirectory + L"JTW_3_6_SampleMultipleFilesPerPart.jt";
1133  errorStatus = JtwSampleMultipleFilesPerPart_3_6( outputFileName );
1134  outputFileName = outputDirectory + L"JTW_3_7_SampleMultipleFilesShattered.jt";
1135  errorStatus = JtwSampleMultipleFilesShattered_3_7( outputFileName );
1136 
1137  outputFileName = outputDirectory + L"JTW_4_1_SampleVersion.jt";
1138  errorStatus = JtwSampleVersion_4_1( outputFileName );
1139  outputFileName = outputDirectory + L"JTW_4_2_SampleUnits.jt";
1140  errorStatus = JtwSampleUnits_4_2( outputFileName );
1141  outputFileName = outputDirectory + L"JTW_4_3_SampleMetadatas.jt";
1142  errorStatus = JtwSampleMetadatas_4_3( outputFileName );
1143  outputFileName = outputDirectory + L"JTW_4_4_SampleLayers.jt";
1144  errorStatus = JtwSampleLayers_4_4( outputFileName );
1145  outputFileName = outputDirectory + L"JTW_4_5_SampleLayerNames.jt";
1146  errorStatus = JtwSampleLayerNames_4_5( outputFileName );
1147 
1148  outputFileName = outputDirectory + L"JTW_5_1_SampleSimplePMI.jt";
1149  errorStatus = JtwSampleSimplePMI_5_1( outputFileName );
1150  outputFileName = outputDirectory + L"JTW_5_2_SampleSimpleModelview.jt";
1151  errorStatus = JtwSampleSimpleModelview_5_2( outputFileName );
1152  outputFileName = outputDirectory + L"JTW_5_3_SamplePMI_MV_association.jt";
1153  errorStatus = JtwSamplePMI_MV_association_5_3( outputFileName );
1154  outputFileName = outputDirectory + L"JTW_5_4_SamplePMI_Geom_association.jt";
1155  errorStatus = JtwSamplePMI_Geom_association_5_4( outputFileName);
1156  outputFileName = outputDirectory + L"JTW_5_5_SampleModelview_sections.jt";
1157  errorStatus = JtwSampleModelview_sections_5_5( outputFileName );
1158  outputFileName = outputDirectory + L"JTW_5_6_SamplePMI_PMI_association.jt";
1159  errorStatus = JtwSamplePMI_PMI_association_5_6( outputFileName );
1160  outputFileName = outputDirectory + L"JTW_5_7_SampleAxis_References.jt";
1161  errorStatus = JtwSampleAxis_References_5_7( outputFileName );
1162  outputFileName = outputDirectory + L"JTW_5_8_SamplePMI_Geom_one_association.jt";
1163  errorStatus = JtwSamplePMI_Geom_one_association_5_8( outputFileName );
1164 
1165  outputFileName = outputDirectory + L"JTW_6_1_SampleModelViewAsm.jt";
1166  errorStatus = JtwSampleModelViewAsm_6_1( outputFileName );
1167  outputFileName = outputDirectory + L"JTW_6_2_SampleModelViewTarget.jt";
1168  errorStatus = JtwSampleModelViewTarget_6_2( outputFileName, 1);
1169  outputFileName = outputDirectory + L"JTW_6_3_SampleModelViewRemove.jt";
1170  errorStatus = JtwSampleModelViewTarget_6_2( outputFileName, 2);
1171  outputFileName = outputDirectory + L"JTW_6_4_SampleAsmPMITarget.jt";
1172  errorStatus = JtwSampleModelViewTarget_6_2( outputFileName, 3);
1173  return errorStatus;
1174 }

◆ CreateFdtDatumAt()

Dtk_FdtPtr CreateFdtDatumAt ( const Dtk_pnt D)
1008 {
1010  double scale = 0.1;
1011  Dtk_transfo rescale(Dtk_dir(scale, 0, 0), Dtk_dir(0, scale, 0), Dtk_dir(0, 0, scale), scale * Dtk_pnt(-50., -100., -50.));
1012  pmi->Transform(rescale);
1013  Dtk_transfo shift;
1014  shift.addTranslate(D);
1015  pmi->Transform(shift);
1016  return pmi;
1017 }

◆ CreateLayerInfosSet()

Dtk_LayerInfosSetPtr CreateLayerInfosSet ( )
547 {
548  Dtk_LayerInfosSetPtr lay = Dtk_LayerInfosSet::Create(2); // 2 layers
549  lay->SetLayerID(0, 3); // layer 0 has ID 3
550  lay->SetLayerID(1, 5); // layer 1 has ID 5
551  lay->SetLayerName(0, "LayerThree");
552  lay->SetLayerName(1, "LayerFive");
553  return lay;
554 }

◆ CreateModelDisplay()

Dtk_ModelDisplayPtr CreateModelDisplay ( const Dtk_string name)
943 {
944  Dtk_pnt from(300, 300, 300);
945  Dtk_pnt to(0, 0, 0);
946  Dtk_dir up(-0.57735, 0.57735, -0.57735);
947  Dtk_CameraPtr cam = Dtk_Camera::Create(from, to, 5, 5, up);
949  mv->info() = Dtk_Info::create();
950  mv->info()->SetName(name);
951  return mv;
952 }

◆ JtWriteSample()

int JtWriteSample ( const Dtk_string inResultDirectory)
1179 {
1180  cout << endl << "----------------------------------------------" << endl;
1181  cout <<"Jt Write start" << endl;
1182 
1183  tess_InitTesselation("./", 0.005); // Init Tessellation : working directory and default tolerance (needed for writing bodies)
1184  tess_ComputeBoundariesFromMesh(0); // Disable wire creation on mesh during Brep tessellation.
1185 
1186  int err = AllJtWTests(inResultDirectory); // all tests.
1187 
1188  tess_EndTesselation(); // End of tessellation
1189  cout <<"Jt Write end" << endl;
1190 
1191 
1192  return err;
1193 }

◆ JtwSampleAsmInstances_3_3()

Dtk_ErrorStatus JtwSampleAsmInstances_3_3 ( const Dtk_string outputFileName)
251 {
252  Dtk_dir X(1, 0, 0);
253  Dtk_dir Y(0, 1, 0);
254  Dtk_dir Z(0, 0, 1);
255  Dtk_ErrorStatus err;
256  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
257  CHECK_OK(err);
258  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
259 
260  Dtk_Int64 id_of_axles = 2;
261  CHECK_OK(J.OpenInstance("Axles", 2)); // open Axles, give an ID for future reinstance, placement by default : identity matrix
262 
263  CHECK_OK(J.OpenInstance("Axle")); // open
264  Dtk_BodyPtr axle = sampleWriter::CreateCyl(0.2, 5);
265  CHECK_OK(J.AddBody(axle));
266  CHECK_OK(J.CloseLastInstance()); // close Axle
267 
268  CHECK_OK(J.OpenInstance("Wheels")); // open
269  Dtk_Int64 id_of_wheel = 1;
270  CHECK_OK(J.OpenInstance("Wheel", id_of_wheel, Dtk_transfo(X, Y, Z, Dtk_pnt(0, 0, 5)))); // open instance
271  Dtk_BodyPtr wheel = sampleWriter::CreateCyl(1, 1);
272  CHECK_OK(J.AddBody(wheel));
273  CHECK_OK(J.CloseLastInstance()); // close Wheel
274 
275  CHECK_OK(J.OpenInstance("Wheel2", id_of_wheel, Dtk_transfo(X, -Y, -Z, Dtk_pnt()))); // open reinstance
276  CHECK_OK(J.CloseLastInstance()); // reinstancied : must close Wheel immediatly.
277 
278  CHECK_OK(J.CloseLastInstance()); // close Wheels
279 
280  CHECK_OK(J.CloseLastInstance()); // close Axles
281 
282  CHECK_OK(J.OpenInstance("Axles2", 2, Dtk_transfo(X, Y, Z, Dtk_pnt(10, 0, 0)))); // reinstance whole subassembly with matrix
283  CHECK_OK(J.CloseLastInstance()); // reinstancied : must close Wheel immediatly.
284 
285  CHECK_OK(J.CloseLastInstance()); // close RootNode
286  cout << "=> " << outputFileName.c_str() << endl;
287  return dtkNoError;// Automatic Finish while J released
288 }

◆ JtwSampleAssembly_3_1()

Dtk_ErrorStatus JtwSampleAssembly_3_1 ( const Dtk_string outputFileName)
183 {
184  Dtk_ErrorStatus err;
185  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
186  CHECK_OK(err);
187  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
188 
189  CHECK_OK(J.OpenInstance("Axle")); // open
190  Dtk_BodyPtr axle = sampleWriter::CreateCyl(0.2, 5);
191  CHECK_OK(J.AddBody(axle));
192  CHECK_OK(J.CloseLastInstance()); // close Axle
193 
194  CHECK_OK(J.OpenInstance("Wheels")); // open
195 
196  CHECK_OK(J.OpenInstance("Wheel")); // open
197  Dtk_BodyPtr wheel = sampleWriter::CreateCyl(1, 1);
198  Shift(wheel, 2);
199  CHECK_OK(J.AddBody(wheel));
200  CHECK_OK(J.CloseLastInstance()); // close Wheel
201 
202  CHECK_OK(J.OpenInstance("Wheel2")); // open
203  Shift(wheel, 3);
204  CHECK_OK(J.AddBody(wheel));
205  CHECK_OK(J.CloseLastInstance()); // close Wheel
206 
207  CHECK_OK(J.CloseLastInstance()); // close Wheels
208 
209  CHECK_OK(J.CloseLastInstance()); // close RootNode
210  cout << "=> " << outputFileName.c_str() << endl;
211  return dtkNoError;// Automatic Finish while J released
212 }

◆ JtwSampleAxis_References_5_7()

Dtk_ErrorStatus JtwSampleAxis_References_5_7 ( const Dtk_string outputFileName)
859 {
860  Dtk_ErrorStatus err;
861  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
862  CHECK_OK(err);
863  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
864 
865  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl(100, 150); // Create a Cylinder radius=100, height=150 (with a green face)
866  CHECK_OK(J.AddBody(cylinder)); // Add the body
867 
868  Dtk_pnt from(300, 300, 300);
869  Dtk_pnt to(0, 0, 0);
870  Dtk_dir up(-0.57735, 0.57735, -0.57735);
871  Dtk_CameraPtr cam = Dtk_Camera::Create(from, to, 250, 250, up);
872  Dtk_ModelDisplayPtr mv2 = Dtk_ModelDisplay::Create(cam, NULL, 1);
873  mv2->info() = Dtk_Info::create();
874  mv2->info()->SetName("SecondView");
875  CHECK_OK(J.AddModelView(mv2, 8)); // Add Modelview, set ID = 8
876 
878  axis->SetMatrix(Dtk_transfo(Dtk_dir(1, 0, 0), Dtk_dir(0, 1, 0), Dtk_dir(0, 0, 1), Dtk_pnt(100, 100, 0))); // X,Y,Z, O
879  axis->SetName("MyAxisSystem"); // give a name
880  CHECK_OK(J.AddAxisSystem(axis, 50)); // give ID 50
881  CHECK_OK(J.ConnectPMI_ModelView(50, 8)); // Connect AxisSystem 50 to Modelview 8
882 
883  Dtk_BodyPtr refplane = MakeReferencePlane();
884  CHECK_OK(J.AddReferenceGeometry(refplane, 60)); // give ID 60
885  CHECK_OK(J.ConnectPMI_ModelView(60, 8)); // Connect Referenceplane 50 to Modelview 8
886 
887  Dtk_BodyPtr refaxis = MakeReferenceAxis();
888  CHECK_OK(J.AddReferenceGeometry(refaxis, 70)); // give ID 70
889  CHECK_OK(J.ConnectPMI_ModelView(70, 8)); // Connect Referenceplane 60 to Modelview 8
890 
891  Dtk_BodyPtr refpoint = MakeReferencePoint();
892  CHECK_OK(J.AddReferenceGeometry(refpoint, 80)); // give ID 80
893  CHECK_OK(J.ConnectPMI_ModelView(80, 8)); // Connect Referenceplane 70 to Modelview 8
894 
895  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
896  cout << "=> " << outputFileName.c_str() << endl;
897  return dtkNoError;// Automatic Finish while J released
898 }

◆ JtwSampleBody_2_1()

Dtk_ErrorStatus JtwSampleBody_2_1 ( const Dtk_string outputFileName)
95 {
96  Dtk_ErrorStatus err;
97  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
98  CHECK_OK(err);
99  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
100  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl(1, 2); // Create a Cylinder radius=1, height=2 (with a green face)
101  CHECK_OK(J.AddBody(cylinder)); // Add the body
102  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
103  cout << "=> " << outputFileName.c_str() << endl;
104  return dtkNoError;// Automatic Finish while J released
105 }

◆ JtwSampleBodyLOD_2_2()

Dtk_ErrorStatus JtwSampleBodyLOD_2_2 ( const Dtk_string outputFileName)
110 {
111  Dtk_ErrorStatus err;
112  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
113  CHECK_OK(err);
114  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
115 
116  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl(1, 2); // Create a Cylinder radius=1, height=2 (with a green face)
117  CHECK_OK(J.AddBody(cylinder)); // Add the body, tessellated as default tess_InitTesselation value
118 
119  Dtk_BodyPtr cylinder2 = sampleWriter::CreateCyl(1, 2); // Create another Cylinder radius=1, height=2 (with a green face)
120  Shift(cylinder2, 3); // shift the cylinder, see exemple above
121  Dtk_tab<Dtk_Float32> lods; // create a LOD array
122  lods.push_back(0.001f); lods.push_back(-1); // Highest LOD : linear tol = 0.001, angular automatic
123  lods.push_back(0.01f); lods.push_back(-1); // Medium LOD : linear tol = 0.01, angular automatic
124  lods.push_back(0.1f); lods.push_back(-1); // Lower LOD : linear tol = 0.1, angular automatic
125  CHECK_OK(J.AddBody(cylinder2, lods)); // add the body, will tessellate automaticly for LODS.
126 
127  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
128  cout << "=> " << outputFileName.c_str() << endl;
129  return dtkNoError;// Automatic Finish while J released
130 }

◆ JtwSampleBodyVisibility_2_4()

Dtk_ErrorStatus JtwSampleBodyVisibility_2_4 ( const Dtk_string outputFileName)
157 {
158  Dtk_ErrorStatus err;
159  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
160  CHECK_OK(err);
161  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
162 
163  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl(1, 2);
164  CHECK_OK(J.AddBody(cylinder));
165 
166  Dtk_BodyPtr cylinder2 = sampleWriter::CreateCyl(1, 2);
167  Shift(cylinder2, 3);
168  CHECK_OK(J.AddBody(cylinder2));
169 
170  Dtk_BodyPtr cylinder3 = sampleWriter::CreateCyl(1, 2);
171  Shift(cylinder3, 6);
172  cylinder3->info()->SetBlankedStatus(DTK_TRUE);
173  CHECK_OK(J.AddBody(cylinder3));
174 
175  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
176  cout << "=> " << outputFileName.c_str() << endl;
177  return dtkNoError;// Automatic Finish while J released
178 }

◆ JtwSampleInstancesColors_3_4()

Dtk_ErrorStatus JtwSampleInstancesColors_3_4 ( const Dtk_string outputFileName)
294 {
295  Dtk_dir X(1, 0, 0);
296  Dtk_dir Y(0, 1, 0);
297  Dtk_dir Z(0, 0, 1);
298  Dtk_ErrorStatus err;
299  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
300  CHECK_OK(err);
301  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
302 
303  Dtk_Int64 id_of_axles = 2;
304  CHECK_OK(J.OpenInstance("Axles", id_of_axles)); // open Axles, give an ID for future reinstance, placement by default : identity matrix
305 
306  CHECK_OK(J.OpenInstance("Axle")); // open
307  Dtk_BodyPtr axle = sampleWriter::CreateCyl(0.2, 5);
308  CHECK_OK(J.AddBody(axle));
309  CHECK_OK(J.CloseLastInstance()); // close Axle
310 
311  CHECK_OK(J.OpenInstance("Wheels")); // open
312  Dtk_Int64 id_of_wheel = 1;
313  CHECK_OK(J.OpenInstance("Wheel", id_of_wheel, Dtk_transfo(X, Y, Z, Dtk_pnt(0, 0, 5)))); // open instance
314  Dtk_BodyPtr wheel = sampleWriter::CreateCyl(1, 1);
315  CHECK_OK(J.AddBody(wheel));
316  CHECK_OK(J.CloseLastInstance()); // close Wheel
317 
318  CHECK_OK(J.OpenInstance("Wheel2", id_of_wheel, Dtk_transfo(X, -Y, -Z, Dtk_pnt()))); // open reinstance
319  CHECK_OK(J.CloseLastInstance()); // reinstancied : must close Wheel immediatly.
320 
321  CHECK_OK(J.CloseLastInstance()); // close Wheels
322 
323  CHECK_OK(J.CloseLastInstance()); // close Axles
324 
325  CHECK_OK(J.OpenInstance("Axles2", id_of_axles, Dtk_transfo(X, Y, Z, Dtk_pnt(5, 0, 0))));
326  CHECK_OK(J.LastInstance_SetInstanceColor(Dtk_RGB(255, 0, 0, 128), Dtk_Jtw_Interface::keepsubcolor));
327  // Give a RED color with transparence, with keepsubcolor strategy : only uncolored faces are filled
328  CHECK_OK(J.CloseLastInstance()); // close Axles2
329 
330  CHECK_OK(J.OpenInstance("Axles3", id_of_axles, Dtk_transfo(X, Y, Z, Dtk_pnt(10, 0, 0))));
331  CHECK_OK(J.LastInstance_SetInstanceColor(Dtk_RGB(0, 0, 255), Dtk_Jtw_Interface::overwritecolor));
332  // Give a BLUE color, with overwrite color strategy : all faces are filled
333  CHECK_OK(J.CloseLastInstance()); // close Axles2
334 
335  CHECK_OK(J.CloseLastInstance()); // close RootNode
336  cout << "=> " << outputFileName.c_str() << endl;
337  return dtkNoError;// Automatic Finish while J released
338 }

◆ JtwSampleInstancesVisibily_3_5()

Dtk_ErrorStatus JtwSampleInstancesVisibily_3_5 ( const Dtk_string outputFileName)
343 {
344  Dtk_dir X(1, 0, 0);
345  Dtk_dir Y(0, 1, 0);
346  Dtk_dir Z(0, 0, 1);
347  Dtk_ErrorStatus err;
348  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
349  CHECK_OK(err);
350  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
351 
352  CHECK_OK(J.OpenInstance("Axle")); // open
353  Dtk_BodyPtr axle = sampleWriter::CreateCyl(0.2, 5);
354  CHECK_OK(J.AddBody(axle));
355  CHECK_OK(J.CloseLastInstance()); // close Axle
356 
357  CHECK_OK(J.OpenInstance("Wheels")); // open
358  Dtk_Int64 id_of_wheel = 1;
359  CHECK_OK(J.OpenInstance("Wheel", id_of_wheel, Dtk_transfo(X, Y, Z, Dtk_pnt(0, 0, 5)))); // open instance
360  Dtk_BodyPtr wheel = sampleWriter::CreateCyl(1, 1);
361  CHECK_OK(J.AddBody(wheel));
362  CHECK_OK(J.CloseLastInstance()); // close Wheel
363 
364  CHECK_OK(J.OpenInstance("Wheel2", id_of_wheel, Dtk_transfo(X, -Y, -Z, Dtk_pnt())));
365  CHECK_OK(J.LastInstance_SetInvisible()); // Set as invisible
366  CHECK_OK(J.CloseLastInstance()); // reinstancied : must close Wheel immediatly.
367 
368  CHECK_OK(J.CloseLastInstance()); // close Wheels
369 
370  CHECK_OK(J.CloseLastInstance()); // close RootNode
371  cout << "=> " << outputFileName.c_str() << endl;
372  return dtkNoError;// Automatic Finish while J released
373 }

◆ JtwSampleLayerNames_4_5()

Dtk_ErrorStatus JtwSampleLayerNames_4_5 ( const Dtk_string outputFileName)
557 {
558  Dtk_ErrorStatus err;
559  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
560  CHECK_OK(err);
561  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
562 
564  CHECK_OK(J.AddLayerInfosSet(lay));
565 
566  CHECK_OK(J.OpenInstance("Cyl1"));
567  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl(1, 2);
568  cylinder->info()->SetLayer(3);
569  CHECK_OK(J.AddBody(cylinder)); // Add the body
570  CHECK_OK(J.CloseLastInstance());
571 
572  CHECK_OK(J.OpenInstance("Cyl2"));
573  Dtk_BodyPtr cylinder2 = sampleWriter::CreateCyl(1, 2);
574  cylinder2->info()->SetLayer(5);
575  Shift(cylinder2, 3);
576  CHECK_OK(J.AddBody(cylinder2)); // Add the body
577  CHECK_OK(J.CloseLastInstance());
578 
579  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
580  cout << "=> " << outputFileName.c_str() << endl;
581  return dtkNoError;// Automatic Finish while J released
582 }

◆ JtwSampleLayers_4_4()

Dtk_ErrorStatus JtwSampleLayers_4_4 ( const Dtk_string outputFileName)
519 {
520  Dtk_ErrorStatus err;
521  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
522  CHECK_OK(err);
523  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
524 
525  CHECK_OK(J.OpenInstance("Cyl1"));
526  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl(1, 2);
527  cylinder->info()->SetLayer(3);
528  CHECK_OK(J.AddBody(cylinder)); // Add the body
529  CHECK_OK(J.CloseLastInstance());
530 
531  CHECK_OK(J.OpenInstance("Cyl2"));
532  Dtk_BodyPtr cylinder2 = sampleWriter::CreateCyl(1, 2);
533  cylinder2->info()->SetLayer(5);
534  Shift(cylinder2, 3);
535  CHECK_OK(J.AddBody(cylinder2)); // Add the body
536  CHECK_OK(J.CloseLastInstance());
537 
538  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
539  cout << "=> " << outputFileName.c_str() << endl;
540  return dtkNoError;// Automatic Finish while J released
541 }

◆ JtwSampleMeshes_1_2()

Dtk_ErrorStatus JtwSampleMeshes_1_2 ( const Dtk_string outputFileName)
50 {
51  Dtk_ErrorStatus err;
52  Dtk_Jtw_Interface J(outputFileName, err);
53  CHECK_OK(err);
54  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
55 
56  Dtk_MeshPtr CubeMesh = sampleWriter::CreateMeshCube(); // create a simple red cube
57  CHECK_OK(J.AddMesh(CubeMesh)); // write the cube (A)
58 
59  Dtk_MeshPtr CubePervertexColorMesh = sampleWriter::CreateMeshCubeVertexColor(); // create a per vertex color cube
60  Shift(CubePervertexColorMesh, 3); // translate it not to be on previous geometry
61  CHECK_OK(J.AddMesh(CubePervertexColorMesh)); // (B)
62 
63  Dtk_MeshPtr TransparentCube = sampleWriter::CreateMeshCube(); // create a simple red cube
64  TransparentCube->info()->SetColor(Dtk_RGB(0, 255, 0, 128)); // set whole cube as green and transparent
65  Shift(TransparentCube, 6); // translate it not to be on previous geometry
66  CHECK_OK(J.AddMesh(TransparentCube)); // (C)
67 
68  Dtk_MeshPtr TransparentOneFaceCube = sampleWriter::CreateMeshCube(); // create a simple red cube
69  if (TransparentOneFaceCube->get_nb_mesh_face() == 6)
70  {
71  if (TransparentOneFaceCube->get_mesh_face(3)->info().IsNULL())
72  TransparentOneFaceCube->get_mesh_face(3)->info() = Dtk_Info::create();
73  TransparentOneFaceCube->get_mesh_face(3)->info()->SetColor(Dtk_RGB(0, 0, 255, 128)); // set face 3 as blue and transparent
74  }
75  Shift(TransparentOneFaceCube, 9); // translate it not to be on previous geometry (D)
76  CHECK_OK(J.AddMesh(TransparentOneFaceCube));
77 
78  Dtk_MeshPtr MeshWire = sampleWriter::CreateMeshWire(); // create wire mesh
79  Shift(MeshWire, 12); // translate it not to be on previous geometry
80  CHECK_OK(J.AddMesh(MeshWire)); // (E)
81 
82  Dtk_MeshPtr MeshPoints = sampleWriter::CreateMeshPoints(); // create a mesh wich contain only orange points.
83  Shift(MeshPoints, 15); // translate it not to be on previous geometry
84  CHECK_OK(J.AddMesh(MeshPoints)); // (F)
85 
86  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
87  cout << "=> " << outputFileName.c_str() << endl;
88  return dtkNoError; // Automatic Finish while J released
89 }

◆ JtwSampleMetadatas_4_3()

Dtk_ErrorStatus JtwSampleMetadatas_4_3 ( const Dtk_string outputFileName)
497 {
498  Dtk_ErrorStatus err;
499  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
500  CHECK_OK(err);
501  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
502 
504  CHECK_OK(J.AddMetaData(meta));
505 
506  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl(1, 2); // Create a Cylinder radius=1, height=2 (with a green face)
507  CHECK_OK(J.AddBody(cylinder)); // Add the body
508 
509  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
510  cout << "=> " << outputFileName.c_str() << endl;
511  return dtkNoError;// Automatic Finish while J released
512 }

◆ JtwSampleModelview_sections_5_5()

Dtk_ErrorStatus JtwSampleModelview_sections_5_5 ( const Dtk_string outputFileName)
730 {
731  Dtk_ErrorStatus err;
732  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
733  CHECK_OK(err);
734  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
735 
736  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl(100, 150); // Create a Cylinder radius=100, height=150 (with a green face)
737  CHECK_OK(J.AddBody(cylinder)); // Add the body
738 
739  Dtk_FdtPtr pmi = sampleWriter::CreateFdtDatum(); // Create an FDT (PMI)
740  CHECK_OK(J.AddPMI(pmi, 5)); // Add the PMI, set ID = 5
741 
742  Dtk_pnt from(300, 300, 300);
743  Dtk_pnt to(0, 0, 0);
744  Dtk_dir up(-0.57735, 0.57735, -0.57735);
745  Dtk_CameraPtr cam = Dtk_Camera::Create(from, to, 150, 150, up);
746  Dtk_PlaneSurfacePtr section = Dtk_PlaneSurface::Create(Dtk_pnt(), Dtk_dir(1, 0, 0), Dtk_dir(0, 1, 0)); // (A)
747  //Dtk_EntityPtr section = MakeMultiSection(); // (B)
749 
750  mv2->info() = Dtk_Info::create();
751  mv2->info()->SetName("SecondView");
752  CHECK_OK(J.AddModelView(mv2, 8)); // Add Modelview, set ID = 8
753 
754  CHECK_OK(J.ConnectPMI_ModelView(5, 8)); // Connect PMI 5 into Modelview 8
755 
756  CHECK_OK(J.ConnectPMI_Geom(5, 2, DTK_TYPE_FACE)); // Connect PMI 5 on body, on face ID= 2
757  CHECK_OK(J.ConnectPMI_Geom(5, 15, DTK_TYPE_EDGE)); // Connect PMI 5 on body, on edge ID= 15
758 
759  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
760  cout << "=> " << outputFileName.c_str() << endl;
761  return dtkNoError;// Automatic Finish while J released
762 }

◆ JtwSampleModelViewAsm_6_1()

Dtk_ErrorStatus JtwSampleModelViewAsm_6_1 ( const Dtk_string outputFileName)
955 {
956  Dtk_dir X(1, 0, 0);
957  Dtk_dir Y(0, 1, 0);
958  Dtk_dir Z(0, 0, 1);
959  Dtk_ErrorStatus err;
960  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
961  CHECK_OK(err);
962  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
963 
964  Dtk_Int64 id_of_axles = 2;
965  CHECK_OK(J.OpenInstance("Axles", id_of_axles)); // open Axles, give an ID for future reinstance, placement by default : identity matrix
966 
967  CHECK_OK(J.OpenInstance("Axle")); // open
968  Dtk_BodyPtr axle = sampleWriter::CreateCyl(0.2, 5);
969  CHECK_OK(J.AddBody(axle));
970  CHECK_OK(J.AddModelView(CreateModelDisplay("AxleMV"), 8));
971  CHECK_OK(J.CloseLastInstance()); // close Axle
972 
973  CHECK_OK(J.OpenInstance("Wheels")); // open
974  Dtk_Int64 id_of_wheel = 1;
975  CHECK_OK(J.OpenInstance("Wheel", id_of_wheel, Dtk_transfo(X, Y, Z, Dtk_pnt(0, 0, 5)))); // open instance
976  Dtk_BodyPtr wheel = sampleWriter::CreateCyl(1, 1);
977  CHECK_OK(J.AddBody(wheel));
978  CHECK_OK(J.AddModelView(CreateModelDisplay("WheelMV"), 8));
979  CHECK_OK(J.CloseLastInstance()); // close Wheel
980 
981  CHECK_OK(J.OpenInstance("Wheel2", id_of_wheel, Dtk_transfo(X, -Y, -Z, Dtk_pnt()))); // open reinstance
982  CHECK_OK(J.CloseLastInstance()); // reinstancied : must close Wheel immediatly.
983 
984  CHECK_OK(J.CloseLastInstance()); // close Wheels
985 
986  CHECK_OK(J.CloseLastInstance()); // close Axles
987 
988  CHECK_OK(J.OpenInstance("Axles2", id_of_axles, Dtk_transfo(X, Y, Z, Dtk_pnt(5, 0, 0)))); // reinstance whole subassembly with matrix
989  CHECK_OK(J.CloseLastInstance()); // close Axles2
990 
991  CHECK_OK(J.AddModelView(CreateModelDisplay("RootMV"), 8));
992  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
993  cout << "=> " << outputFileName.c_str() << endl;
994  return dtkNoError;// Automatic Finish while J released
995 }

◆ JtwSampleModelViewTarget_6_2()

Dtk_ErrorStatus JtwSampleModelViewTarget_6_2 ( const Dtk_string outputFileName,
int  option 
)
1057 {
1058  Dtk_dir X(1, 0, 0);
1059  Dtk_dir Y(0, 1, 0);
1060  Dtk_dir Z(0, 0, 1);
1061  Dtk_ErrorStatus err;
1062  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
1063  CHECK_OK(err);
1064  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
1065  CHECK_OK(J.OpenInstance("Axles", 2));
1066  CHECK_OK(J.LastInstance_SetInstanceID(11));
1067  CHECK_OK(J.OpenInstance("Axle", 3));
1068  CHECK_OK(J.LastInstance_SetInstanceID(12));
1069  Dtk_BodyPtr axle = sampleWriter::CreateCyl(0.2, 5);
1070  CHECK_OK(J.AddBody(axle));
1071  CHECK_OK(J.CloseLastInstance()); // close Axle
1072  CHECK_OK(J.OpenInstance("Wheels", 4));
1073  CHECK_OK(J.LastInstance_SetInstanceID(13));
1074  CHECK_OK(J.OpenInstance("Wheel", 5, Dtk_transfo(X, Y, Z, Dtk_pnt(0, 0, 5))));
1075  CHECK_OK(J.LastInstance_SetInstanceID(14));
1076  Dtk_BodyPtr wheel = sampleWriter::CreateCyl(1, 1);
1077  CHECK_OK(J.AddBody(wheel));
1078  CHECK_OK(J.CloseLastInstance()); // close Wheel
1079  CHECK_OK(J.OpenInstance("Wheel2", 5, Dtk_transfo(X, -Y, -Z, Dtk_pnt())));
1080  CHECK_OK(J.LastInstance_SetInstanceID(15));
1081  CHECK_OK(J.CloseLastInstance()); // reinstancied : must close Wheel2 immediatly.
1082  CHECK_OK(J.CloseLastInstance()); // close Wheels
1083  CHECK_OK(J.CloseLastInstance()); // close Axles
1084  CHECK_OK(J.OpenInstance("Axles2", 2, Dtk_transfo(X, Y, Z, Dtk_pnt(6, 0, 0))));
1085  CHECK_OK(J.LastInstance_SetInstanceID(16));
1086  CHECK_OK(J.CloseLastInstance()); // close Axles2
1087  MakePmiOnRoot(J, option);
1088  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
1089  cout << "=> " << outputFileName.c_str() << endl;
1090  return dtkNoError;// Automatic Finish while J released
1091 }

◆ JtwSampleMultipleFilesPerPart_3_6()

Dtk_ErrorStatus JtwSampleMultipleFilesPerPart_3_6 ( const Dtk_string outputFileName)
378 {
379  Dtk_dir X(1, 0, 0);
380  Dtk_dir Y(0, 1, 0);
381  Dtk_dir Z(0, 0, 1);
382  Dtk_ErrorStatus err;
383  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
384  CHECK_OK(err);
385  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
386 
387  Dtk_Int64 id_of_axles = 2;
388  CHECK_OK(J.OpenInstance("Axles", 2)); // open Axles, give an ID for future reinstance, placement by default : identity matrix
389 
390  CHECK_OK(J.OpenInstance("Axle",Dtk_transfo(), "assembly/axle.jt"));// open instance in a new file.
391  Dtk_BodyPtr axle = sampleWriter::CreateCyl(0.2, 5);
392  CHECK_OK(J.AddBody(axle));
393  CHECK_OK(J.CloseLastInstance()); // close Axle
394 
395  CHECK_OK(J.OpenInstance("Wheels")); // open
396  Dtk_Int64 id_of_wheel = 1;
397  CHECK_OK(J.OpenInstance("Wheel", id_of_wheel, Dtk_transfo(X, Y, Z, Dtk_pnt(0, 0, 5)), "assembly/wheel.jt"));
398  Dtk_BodyPtr wheel = sampleWriter::CreateCyl(1, 1);
399  CHECK_OK(J.AddBody(wheel));
400  CHECK_OK(J.CloseLastInstance()); // close Wheel
401 
402  CHECK_OK(J.OpenInstance("Wheel2", id_of_wheel, Dtk_transfo(X, -Y, -Z, Dtk_pnt()))); // open reinstance
403  CHECK_OK(J.CloseLastInstance()); // reinstancied : must close Wheel immediatly.
404 
405  CHECK_OK(J.CloseLastInstance()); // close Wheels
406 
407  CHECK_OK(J.CloseLastInstance()); // close Axles
408 
409  CHECK_OK(J.OpenInstance("Axles2", 2, Dtk_transfo(X, Y, Z, Dtk_pnt(10, 0, 0)))); // reinstance whole subassembly with matrix
410  CHECK_OK(J.CloseLastInstance()); // close Axles2
411 
412  CHECK_OK(J.CloseLastInstance()); // close RootNode
413  cout << "=> " << outputFileName.c_str() << endl;
414  return dtkNoError;// Automatic Finish while J released
415 }

◆ JtwSampleMultipleFilesShattered_3_7()

Dtk_ErrorStatus JtwSampleMultipleFilesShattered_3_7 ( const Dtk_string outputFileName)
421 {
422  Dtk_dir X(1, 0, 0);
423  Dtk_dir Y(0, 1, 0);
424  Dtk_dir Z(0, 0, 1);
425  Dtk_ErrorStatus err;
426  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
427  CHECK_OK(err);
428  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
429 
430  Dtk_Int64 id_of_axles = 2;
431  CHECK_OK(J.OpenInstance("Axles", 2, Dtk_transfo(), "shattered_axles.jt")); // open Axles, give an ID for future reinstance, open instance in a new file.
432 
433  CHECK_OK(J.OpenInstance("Axle", Dtk_transfo(), "shattered_axle.jt")); // open instance in a new file.
434 
435  Dtk_BodyPtr axle = sampleWriter::CreateCyl(0.2, 5);
436  CHECK_OK(J.AddBody(axle));
437  CHECK_OK(J.CloseLastInstance()); // close Axle
438 
439  CHECK_OK(J.OpenInstance("Wheels", Dtk_transfo(), "shattered_wheels.jt")); // open instance in a new file.
440  Dtk_Int64 id_of_wheel = 1;
441  CHECK_OK(J.OpenInstance("Wheel", id_of_wheel, Dtk_transfo(X, Y, Z, Dtk_pnt(0, 0, 5)), "shattered_wheel.jt")); // open instance in a new file.
442  Dtk_BodyPtr wheel = sampleWriter::CreateCyl(1, 1);
443  CHECK_OK(J.AddBody(wheel));
444  CHECK_OK(J.CloseLastInstance()); // close Wheel
445 
446  CHECK_OK(J.OpenInstance("Wheel2", id_of_wheel, Dtk_transfo(X, -Y, -Z, Dtk_pnt()))); // open reinstance
447  CHECK_OK(J.CloseLastInstance()); // reinstancied : must close Wheel immediatly."
448 
449  CHECK_OK(J.CloseLastInstance()); // close Wheels
450 
451  CHECK_OK(J.CloseLastInstance()); // close Axles
452 
453  CHECK_OK(J.OpenInstance("Axles2", 2, Dtk_transfo(X, Y, Z, Dtk_pnt(10, 0, 0)))); // reinstance whole subassembly with matrix
454  CHECK_OK(J.CloseLastInstance()); // close Axles2
455 
456  CHECK_OK(J.CloseLastInstance()); // close RootNode
457  cout << "=> " << outputFileName.c_str() << endl;
458  return dtkNoError;// Automatic Finish while J released
459 }

◆ JtwSampleOneMesh_1_1()

Dtk_ErrorStatus JtwSampleOneMesh_1_1 ( const Dtk_string outputFileName)
25 {
26  Dtk_ErrorStatus err;
27  Dtk_Jtw_Interface J(outputFileName, err);
28  CHECK_OK(err);
29  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
30  Dtk_MeshPtr CubeMesh = sampleWriter::CreateMeshCube(); // create a simple red cube
31  CHECK_OK(J.AddMesh(CubeMesh)); // write the cube
32  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
33  cout << "=> " << outputFileName.c_str() << endl;
34  return dtkNoError; // Automatic Finish while J released
35 }

◆ JtwSamplePartInstances_3_2()

Dtk_ErrorStatus JtwSamplePartInstances_3_2 ( const Dtk_string outputFileName)
217 {
218  Dtk_dir X(1, 0, 0);
219  Dtk_dir Y(0, 1, 0);
220  Dtk_dir Z(0, 0, 1);
221  Dtk_ErrorStatus err;
222  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
223  CHECK_OK(err);
224  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
225 
226  CHECK_OK(J.OpenInstance("Axle")); // open
227  Dtk_BodyPtr axle = sampleWriter::CreateCyl(0.2, 5);
228  CHECK_OK(J.AddBody(axle));
229  CHECK_OK(J.CloseLastInstance()); // close Axle
230 
231  CHECK_OK(J.OpenInstance("Wheels")); // open
232  Dtk_Int64 id_of_wheel = 1;
233  CHECK_OK(J.OpenInstance("Wheel", id_of_wheel, Dtk_transfo(X, Y, Z, Dtk_pnt(0, 0, 5)))); // open instance
234  Dtk_BodyPtr wheel = sampleWriter::CreateCyl(1, 1);
235  CHECK_OK(J.AddBody(wheel));
236  CHECK_OK(J.CloseLastInstance()); // close Wheel
237 
238  CHECK_OK(J.OpenInstance("Wheel2", id_of_wheel, Dtk_transfo(X, -Y, -Z, Dtk_pnt()))); // open reinstance
239  CHECK_OK(J.CloseLastInstance()); // reinstancied : must close Wheel immediatly.
240 
241  CHECK_OK(J.CloseLastInstance()); // close Wheels
242 
243  CHECK_OK(J.CloseLastInstance()); // close RootNode
244  cout << "=> " << outputFileName.c_str() << endl;
245  return dtkNoError;// Automatic Finish while J released
246 }

◆ JtwSamplePMI_Geom_association_5_4()

Dtk_ErrorStatus JtwSamplePMI_Geom_association_5_4 ( const Dtk_string outputFileName)
676 {
677  Dtk_ErrorStatus err;
678  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
679  CHECK_OK(err);
680  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
681 
682  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl(100, 150); // Create a Cylinder radius=100, height=150 (with a green face)
683  CHECK_OK(J.AddBody(cylinder)); // Add the body
684 
685  Dtk_FdtPtr pmi = sampleWriter::CreateFdtDatum(); // Create an FDT (PMI)
686  CHECK_OK(J.AddPMI(pmi, 5)); // Add the PMI, set ID = 5
687 
688  Dtk_pnt from(300, 300, 300);
689  Dtk_pnt to(0, 0, 0);
690  Dtk_dir up(-0.57735, 0.57735, -0.57735);
691  Dtk_CameraPtr cam = Dtk_Camera::Create(from, to, 150, 150, up);
692  Dtk_ModelDisplayPtr mv2 = Dtk_ModelDisplay::Create(cam, NULL, 1);
693  mv2->info() = Dtk_Info::create();
694  mv2->info()->SetName("SecondView");
695  CHECK_OK(J.AddModelView(mv2, 8)); // Add Modelview, set ID = 8
696 
697  CHECK_OK(J.ConnectPMI_ModelView(5, 8)); // Connect PMI 5 into Modelview 8
698 
699  CHECK_OK(J.ConnectPMI_Geom(5, 2, DTK_TYPE_FACE)); // Connect PMI 5 on body, on face ID= 2
700  CHECK_OK(J.ConnectPMI_Geom(5, 15, DTK_TYPE_EDGE)); // Connect PMI 5 on body, on edge ID= 15
701 
702  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
703  cout << "=> " << outputFileName.c_str() << endl;
704  return dtkNoError;// Automatic Finish while J released
705 }

◆ JtwSamplePMI_Geom_one_association_5_8()

Dtk_ErrorStatus JtwSamplePMI_Geom_one_association_5_8 ( const Dtk_string outputFileName)
903 {
904  Dtk_ErrorStatus err;
905  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
906  CHECK_OK(err);
907  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
908 
909  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl(100, 150); // Create a Cylinder radius=100, height=150 (with a green face)
910  cylinder->info()->SetId(10);
911  CHECK_OK(J.AddBody(cylinder)); // Add the body
912 
913  Dtk_BodyPtr cylinder2 = sampleWriter::CreateCyl(100, 150); // Create a Cylinder radius=100, height=150 (with a green face)
914  Shift(cylinder2, 250);
915  cylinder2->info()->SetId(11);
916  CHECK_OK(J.AddBody(cylinder2)); // Add the body
917 
918  Dtk_FdtPtr pmi = sampleWriter::CreateFdtDatum(); // Create an FDT (PMI)
919  CHECK_OK(J.AddPMI(pmi, 5)); // Add the PMI, set ID = 5
920 
921  Dtk_pnt from(300, 300, 300);
922  Dtk_pnt to(0, 0, 0);
923  Dtk_dir up(-0.57735, 0.57735, -0.57735);
924  Dtk_CameraPtr cam = Dtk_Camera::Create(from, to, 250, 250, up);
925  Dtk_ModelDisplayPtr mv2 = Dtk_ModelDisplay::Create(cam, NULL, 1);
926  mv2->info() = Dtk_Info::create();
927  mv2->info()->SetName("SecondView");
928  CHECK_OK(J.AddModelView(mv2, 8)); // Add Modelview, set ID = 8
929 
930  CHECK_OK(J.ConnectPMI_ModelView(5, 8)); // Connect PMI 5 into Modelview 8
931 
932  CHECK_OK(J.ConnectPMI_Geom(5, 2, DTK_TYPE_FACE, Dtk_tab<Dtk_Int64>(), 10)); // Connect PMI 5 on body 10, on face ID= 2
933  CHECK_OK(J.ConnectPMI_Geom(5, 15, DTK_TYPE_EDGE, Dtk_tab<Dtk_Int64>(), 11)); // Connect PMI 5 on body 11, on edge ID= 15
934 
935  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
936  cout << "=> " << outputFileName.c_str() << endl;
937  return dtkNoError;// Automatic Finish while J released
938 }

◆ JtwSamplePMI_MV_association_5_3()

Dtk_ErrorStatus JtwSamplePMI_MV_association_5_3 ( const Dtk_string outputFileName)
645 {
646  Dtk_ErrorStatus err;
647  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
648  CHECK_OK(err);
649  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
650 
651  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl(100, 150); // Create a Cylinder radius=100, height=150 (with a green face)
652  CHECK_OK(J.AddBody(cylinder)); // Add the body
653 
654  Dtk_FdtPtr pmi = sampleWriter::CreateFdtDatum(); // Create an FDT (PMI)
655  CHECK_OK(J.AddPMI(pmi, 5)); // Add the PMI, set ID = 5
656 
657  Dtk_pnt from(300, 300, 300);
658  Dtk_pnt to(0, 0, 0);
659  Dtk_dir up(-0.57735, 0.57735, -0.57735);
660  Dtk_CameraPtr cam = Dtk_Camera::Create(from, to, 250, 250, up);
661  Dtk_ModelDisplayPtr mv2 = Dtk_ModelDisplay::Create(cam, NULL, 1);
662  mv2->info() = Dtk_Info::create();
663  mv2->info()->SetName("SecondView");
664  CHECK_OK(J.AddModelView(mv2, 8)); // Add Modelview, set ID = 8
665 
666  CHECK_OK(J.ConnectPMI_ModelView(5, 8)); // Connect PMI 5 into Modelview 8
667 
668  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
669  cout << "=> " << outputFileName.c_str() << endl;
670  return dtkNoError;// Automatic Finish while J released
671 }

◆ JtwSamplePMI_PMI_association_5_6()

Dtk_ErrorStatus JtwSamplePMI_PMI_association_5_6 ( const Dtk_string outputFileName)
767 {
768  Dtk_ErrorStatus err;
769  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
770  CHECK_OK(err);
771  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
772 
773  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl(100, 150); // Create a Cylinder radius=100, height=150 (with a green face)
774  CHECK_OK(J.AddBody(cylinder)); // Add the body
775 
776  int i;
777  for (i = 0; i < 10; i++) // create 10 PMI
778  {
779  Dtk_FdtPtr pmi = sampleWriter::CreateFdtDatum(); // Create an FDT (PMI)
780  Shift(pmi, 15 * i);
781  CHECK_OK(J.AddPMI(pmi, 5 + i)); // Add the PMI, set ID = 5
782  }
783  Dtk_pnt from(300, 300, 300);
784  Dtk_pnt to(0, 0, 0);
785  Dtk_dir up(-0.57735, 0.57735, -0.57735);
786  Dtk_CameraPtr cam = Dtk_Camera::Create(from, to, 150, 150, up);
787  Dtk_ModelDisplayPtr mv2 = Dtk_ModelDisplay::Create(cam, NULL, 1);
788  mv2->info() = Dtk_Info::create();
789  mv2->info()->SetName("SecondView");
790  CHECK_OK(J.AddModelView(mv2, 30)); // Add Modelview, set ID = 8
791 
792  for (i = 0; i < 10; i++) // link the 10 PMIto ModelView
793  {
794  CHECK_OK(J.ConnectPMI_ModelView(5 + i, 30));
795  }
796 
797  CHECK_OK(J.ConnectPMI_PMI(6, 8)); // Associate PMI 6 to PMI 8
798 
799  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
800  cout << "=> " << outputFileName.c_str() << endl;
801  return dtkNoError;// Automatic Finish while J released
802 }

◆ JtwSampleSimpleModelview_5_2()

Dtk_ErrorStatus JtwSampleSimpleModelview_5_2 ( const Dtk_string outputFileName)
608 {
609  Dtk_ErrorStatus err;
610  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
611  CHECK_OK(err);
612  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
613 
614  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl(100, 150); // Create a Cylinder radius=100, height=150 (with a green face)
615  CHECK_OK(J.AddBody(cylinder)); // Add the body
616 
617  Dtk_FdtPtr pmi = sampleWriter::CreateFdtDatum(); // Create an FDT (PMI)
618  CHECK_OK(J.AddPMI(pmi)); // Add the PMI
619 
620  Dtk_pnt from(0, 0, 100);
621  Dtk_pnt to(0, 0, 0);
622  Dtk_dir up(0, 1, 0);
623  Dtk_CameraPtr cam = Dtk_Camera::Create(from, to, 100, 100, up); // semiwidth = 100
624  Dtk_ModelDisplayPtr mvfit = Dtk_ModelDisplay::Create(cam, NULL, 1);
625  mvfit->info() = Dtk_Info::create();
626  mvfit->info()->SetName("FitView");
627  CHECK_OK(J.AddModelView(mvfit));
628 
629  from = Dtk_pnt(300, 300, 300);
630  up = Dtk_dir(-0.57735, 0.57735, -0.57735);
631  cam = Dtk_Camera::Create(from, to, 250, 250, up);
632  Dtk_ModelDisplayPtr mv2 = Dtk_ModelDisplay::Create(cam, NULL, 1);
633  mv2->info() = Dtk_Info::create();
634  mv2->info()->SetName("SecondView");
635  CHECK_OK(J.AddModelView(mv2));
636 
637  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
638  cout << "=> " << outputFileName.c_str() << endl;
639  return dtkNoError;// Automatic Finish while J released
640 }

◆ JtwSampleSimplePMI_5_1()

Dtk_ErrorStatus JtwSampleSimplePMI_5_1 ( const Dtk_string outputFileName)
588 {
589  Dtk_ErrorStatus err;
590  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
591  CHECK_OK(err);
592  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
593 
594  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl(100, 150); // Create a Cylinder radius=1, height=2 (with a green face)
595  CHECK_OK(J.AddBody(cylinder)); // Add the body
596 
597  Dtk_FdtPtr pmi = sampleWriter::CreateFdtDatum(); // Create an FDT (PMI)
598  CHECK_OK(J.AddPMI(pmi)); // Add the PMI
599 
600  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
601  cout << "=> " << outputFileName.c_str() << endl;
602  return dtkNoError;// Automatic Finish while J released
603 }

◆ JtwSampleUnits_4_2()

Dtk_ErrorStatus JtwSampleUnits_4_2 ( const Dtk_string outputFileName)
480 {
481  Dtk_ErrorStatus err;
483  // set units as inches
484  CHECK_OK(err);
485  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
486  Dtk_MeshPtr CubeMesh = sampleWriter::CreateMeshCube(); // create a simple red cube
487  CHECK_OK(J.AddMesh(CubeMesh)); // write the cube
488  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
489  cout << "=> " << outputFileName.c_str() << endl;
490  return dtkNoError;// Automatic Finish while J released
491 }

◆ JtwSampleVersion_4_1()

Dtk_ErrorStatus JtwSampleVersion_4_1 ( const Dtk_string outputFileName)
465 {
466  Dtk_ErrorStatus err;
467  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep, Dtk_Jtw_Interface::version80); // set version 8.0
468  CHECK_OK(err);
469  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
470  Dtk_MeshPtr CubeMesh = sampleWriter::CreateMeshCube(); // create a simple red cube
471  CHECK_OK(J.AddMesh(CubeMesh)); // write the cube
472  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
473  cout << "=> " << outputFileName.c_str() << endl;
474  return dtkNoError;// Automatic Finish while J released
475 }

◆ JtwSampleWireBody_2_3()

Dtk_ErrorStatus JtwSampleWireBody_2_3 ( const Dtk_string outputFileName)
136 {
137  Dtk_ErrorStatus err;
138  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
139  CHECK_OK(err);
140  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
141 
143  CHECK_OK(J.AddBody(wire));
144 
146  CHECK_OK(J.AddBody(wire2));
147 
148  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
149  cout << "=> " << outputFileName.c_str() << endl;
150  return dtkNoError;// Automatic Finish while J released
151 }

◆ MakeMultiSection()

Dtk_EntityPtr MakeMultiSection ( )
710 {
711  Dtk_BodyPtr body = Dtk_Body::Create();
712  Dtk_ShellPtr shell = Dtk_Shell::Create(body);
713  body->AddOpenShell(shell);
714  Dtk_FacePtr face1 = Dtk_Face::Create(body);
715  Dtk_PlaneSurfacePtr section1 = Dtk_PlaneSurface::Create(Dtk_pnt(), Dtk_dir(1, 0, 0), Dtk_dir(0, 1, 0));
716  section1->info() = Dtk_Info::create();
717  section1->info()->SetColor(Dtk_RGB(128, 0, 0)); // red
718  face1->SetGeom(Dtk_SurfacePtr::DtkDynamicCast(section1));
719  shell->AddFace(face1, DTK_TRUE);
720  Dtk_FacePtr face2 = Dtk_Face::Create(body);
721  Dtk_PlaneSurfacePtr section2 = Dtk_PlaneSurface::Create(Dtk_pnt(), Dtk_dir(0, 1, 0), Dtk_dir(1, 0, 0));
722  section2->info() = Dtk_Info::create();
723  section2->info()->SetColor(Dtk_RGB(0, 0, 128)); // blue
724  face2->SetGeom(Dtk_SurfacePtr::DtkDynamicCast(section2));
725  shell->AddFace(face2, DTK_TRUE);
726  return Dtk_EntityPtr::DtkDynamicCast(body);
727 }

◆ MakePmiOnRoot()

Dtk_ErrorStatus MakePmiOnRoot ( Dtk_Jtw_Interface J,
int  option 
)
1020 {
1021  Dtk_pnt from(300, 300, 300);
1022  Dtk_pnt to(3, 0, 3);
1023  Dtk_dir up(-0.57735, 0.57735, -0.57735);
1024  Dtk_CameraPtr cam = Dtk_Camera::Create(from, to, 5, 5, up);
1025  Dtk_ModelDisplayPtr mv2 = Dtk_ModelDisplay::Create(cam, NULL, 1);
1026  mv2->info() = Dtk_Info::create();
1027  mv2->info()->SetName("View");
1028  CHECK_OK(J.AddModelView(mv2, 8)); // Add Modelview, set ID = 8
1029 
1030  if (option == 1) // 6.2. Add instances by addition
1031  {
1032  Dtk_Int64 r1[] = { 1,11,2,13,4,14 }; // target one specific wheel
1033  Dtk_Int64 r2[] = { 1,16 }; // target one specific axle subassembly
1036  }
1037  if (option == 2) // 6.3. Remove instances (soustraction)
1038  {
1039  Dtk_Int64 r1[] = { 1,11,2,13,4,14 }; // target one specific wheel
1040  CHECK_OK(J.ConnectModelView_Instance(8, Makeroute(r1, 6), 1)); // last parameter hide = 1
1041  }
1042  if (option == 3) // 6.4. Target PMI on assembly geometry
1043  {
1044  Dtk_FdtPtr pmi = CreateFdtDatumAt(Dtk_pnt(0, 1, 0));
1045  CHECK_OK(J.AddPMI(pmi, 5)); // Add the PMI, set ID = 5
1046  CHECK_OK(J.ConnectPMI_ModelView(5, 8)); // set PMI into Modelview
1047  Dtk_Int64 r1[] = { 1,11,2,13,4,15,5 }; // target one specific wheel
1048  CHECK_OK(J.ConnectPMI_Geom(5, 3, DTK_TYPE_FACE, Makeroute(r1, 7)));
1049  Dtk_Int64 r2[] = { 1,16,2,12, 3 }; // target one specific axle
1050  CHECK_OK(J.ConnectPMI_Geom(5, 2, DTK_TYPE_FACE, Makeroute(r2, 5)));
1051  }
1052 
1053  return dtkNoError;
1054 }

◆ MakeReferenceAxis()

Dtk_BodyPtr MakeReferenceAxis ( )
826 {
827  Dtk_BodyPtr body = Dtk_Body::Create();
828  body->info() = Dtk_Info::create();
829  body->info()->SetName("MyReferenceAxis");
830  body->info()->SetInfiniteGeometryFlag(1); // mandatory
831  body->info()->SetColor(Dtk_RGB(0, 128, 0)); // color green
832  Dtk_ShellPtr shell = Dtk_Shell::Create(body);
833  body->AddOpenShell(shell);
834  Dtk_tab<Dtk_CurvePtr> tabwire;
835  Dtk_LinePtr L = Dtk_Line::Create(Dtk_pnt(100, 100, 0), Dtk_dir(0, 0, 1));
836  L->SetTrimmingParameters(0.0, 200.0);
838  shell->AddWire(tabwire);
839  return body;
840 }

◆ MakeReferencePlane()

Dtk_BodyPtr MakeReferencePlane ( )
808 {
809  Dtk_BodyPtr body = Dtk_Body::Create();
810  body->info() = Dtk_Info::create();
811  body->info()->SetName("MyReferencePlane");
812  body->info()->SetInfiniteGeometryFlag(1); // mandatory
813  body->info()->SetColor(Dtk_RGB(128, 0, 0)); // color red
814  Dtk_ShellPtr shell = Dtk_Shell::Create(body);
815  body->AddOpenShell(shell);
816  Dtk_FacePtr face1 = Dtk_Face::Create(body);
817  Dtk_PlaneSurfacePtr plane = Dtk_PlaneSurface::Create(Dtk_pnt(), Dtk_dir(1, 0, 0), Dtk_dir(0, 1, 0));
818  double box[4] = { -200,200,-200,200 }; // trim of the plane
819  plane->SetTrimUVBox(box);
821  shell->AddFace(face1, DTK_TRUE);
822  return body;
823 }

◆ MakeReferencePoint()

Dtk_BodyPtr MakeReferencePoint ( )
843 {
844  Dtk_BodyPtr body = Dtk_Body::Create();
845  body->info() = Dtk_Info::create();
846  body->info()->SetName("MyReferencePoint");
847  body->info()->SetInfiniteGeometryFlag(1); // mandatory
848  body->info()->SetColor(Dtk_RGB(0, 0, 128)); // color blue
849  Dtk_ShellPtr shell = Dtk_Shell::Create(body);
850  body->AddOpenShell(shell);
851  Dtk_tab<Dtk_PointPtr> tabpoints;
852  Dtk_PointPtr point = Dtk_Point::Create(Dtk_pnt(120, 120, 0));
853  tabpoints.push_back(point);
854  shell->AddWire(tabpoints);
855  return body;
856 }

◆ Makeroute()

Dtk_tab<Dtk_Int64> Makeroute ( Dtk_Int64  r[],
int  nb 
)
1000 {
1001  Dtk_tab<Dtk_Int64> res;
1002  for (int i = 0; i < nb; i++)
1003  res.push_back(r[i]);
1004  return res;
1005 }

◆ Shift()

template<typename T >
void Shift ( T &  mesh,
double  sh 
)
43 {
44  Dtk_transfo t;
45  t.addTranslate(Dtk_dir(sh, 0, 0));
46  mesh->Transform(t);
47 }
CreateFdtDatumAt
Dtk_FdtPtr CreateFdtDatumAt(const Dtk_pnt &D)
Definition: testlibjtwrite.cpp:1007
Dtk_ModelDisplay::Create
static Dtk_ModelDisplayPtr Create(const Dtk_CameraPtr &inCamera, const Dtk_EntityPtr &inClippingEntity, const Dtk_bool inIsActivated)
Full featured constructor.
Dtk_transfo
This is the Transformation dedicated class.
Definition: dtk_transfo.hpp:19
JtwSampleMetadatas_4_3
Dtk_ErrorStatus JtwSampleMetadatas_4_3(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:496
Dtk_PlaneSurface::Create
static Dtk_PlaneSurfacePtr Create(const Dtk_pnt &inOrigin, const Dtk_dir &inNormal, const Dtk_dir &inUDirection, const Dtk_dir &inVDirection=Dtk_dir())
Create an infinite plane surface.
sampleWriter::CreateMeshCube
Dtk_MeshPtr CreateMeshCube()
Mesh Cube sample.
Definition: testcreatemesh.cpp:207
sampleWriter::CreateCyl
Dtk_BodyPtr CreateCyl(double radius, double height)
Definition: testcreatecube.cpp:1791
sampleWriter::CreateMeshCubeVertexColor
Dtk_MeshPtr CreateMeshCubeVertexColor()
Definition: testcreatemesh.cpp:299
CreateLayerInfosSet
Dtk_LayerInfosSetPtr CreateLayerInfosSet()
Definition: testlibjtwrite.cpp:546
sampleWriter::CreateMeshPoints
Dtk_MeshPtr CreateMeshPoints()
Points mesh sample.
Definition: testcreatemesh.cpp:439
Dtk_Jtw_Interface::ConnectModelView_Instance
Dtk_ErrorStatus ConnectModelView_Instance(Dtk_Int64 inIdmodelview, const Dtk_tab< Dtk_Int64 > &inRoute, int inHide=0, Dtk_ID inBodyID=0, const Dtk_transfo &inExplode=Dtk_transfo())
Connect a ModelView on an Instance, for part representation restriction in a modelview.
DTK_TRUE
#define DTK_TRUE
Definition: define.h:727
JtwSamplePMI_MV_association_5_3
Dtk_ErrorStatus JtwSamplePMI_MV_association_5_3(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:644
Dtk_string
This is a high level string class.
Definition: dtk_string.hpp:58
Dtk_Jtw_Interface::keepsubcolor
@ keepsubcolor
Definition: jtw.h:17
JtwSampleModelViewTarget_6_2
Dtk_ErrorStatus JtwSampleModelViewTarget_6_2(const Dtk_string &outputFileName, int option)
Definition: testlibjtwrite.cpp:1056
JtwSampleAxis_References_5_7
Dtk_ErrorStatus JtwSampleAxis_References_5_7(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:858
JtwSampleBodyLOD_2_2
Dtk_ErrorStatus JtwSampleBodyLOD_2_2(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:109
JtwSampleMultipleFilesShattered_3_7
Dtk_ErrorStatus JtwSampleMultipleFilesShattered_3_7(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:420
Dtk_AxisSystem::create
static Dtk_SmartPtr< Dtk_AxisSystem > create()
Dtk_Jtw_Interface::ConnectPMI_Geom
Dtk_ErrorStatus ConnectPMI_Geom(Dtk_Int64 inIdfdt, Dtk_Int64 inGeomid, type_detk inTypegeom, const Dtk_tab< Dtk_Int64 > &inRoute=Dtk_tab< Dtk_Int64 >(), Dtk_ID inBodyID=0)
Connect a PMI on a body face/edge/vertex.
Dtk_Body::Create
static Dtk_BodyPtr Create()
Create a body.
tess_InitTesselation
int tess_InitTesselation(Dtk_string inWorkingDirectory, double inTolerance)
Init the tesselation library.
JtwSampleBody_2_1
Dtk_ErrorStatus JtwSampleBody_2_1(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:94
Dtk_Jtw_Interface::xtbrep
@ xtbrep
Definition: jtw.h:13
JtwSampleWireBody_2_3
Dtk_ErrorStatus JtwSampleWireBody_2_3(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:135
MakeReferenceAxis
Dtk_BodyPtr MakeReferenceAxis()
Definition: testlibjtwrite.cpp:825
JtwSampleModelview_sections_5_5
Dtk_ErrorStatus JtwSampleModelview_sections_5_5(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:729
Dtk_Face::Create
static Dtk_FacePtr Create(const Dtk_BodyPtr &inParentBody)
Create a face in a body.
JtwSampleInstancesColors_3_4
Dtk_ErrorStatus JtwSampleInstancesColors_3_4(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:293
JtwSamplePMI_Geom_association_5_4
Dtk_ErrorStatus JtwSamplePMI_Geom_association_5_4(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:675
JtwSampleLayers_4_4
Dtk_ErrorStatus JtwSampleLayers_4_4(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:518
Dtk_Jtw_Interface::version95
@ version95
Definition: jtw.h:28
sampleWriter::CreateMeshWire
Dtk_MeshPtr CreateMeshWire()
Wire mesh sample.
Definition: testcreatemesh.cpp:388
JtwSampleInstancesVisibily_3_5
Dtk_ErrorStatus JtwSampleInstancesVisibily_3_5(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:342
Dtk_Int64
int64_t Dtk_Int64
Definition: define.h:692
Dtk_Line::Create
static Dtk_LinePtr Create(const Dtk_Line &inLineToCopy)
constructors returning Smart pointers
sampleWriter::CreateFdtDatum
Dtk_FdtPtr CreateFdtDatum()
Create Simple Datum.
Definition: testcreatefdt.cpp:19
DTK_TYPE_FACE
@ DTK_TYPE_FACE
Definition: define.h:141
Dtk_MetaData::TypeProperty
@ TypeProperty
Definition: dtk_metadata.hpp:28
Dtk_SmartPtr< Dtk_Entity >::DtkDynamicCast
static Dtk_SmartPtr< Dtk_Entity > DtkDynamicCast(const Dtk_SmartPtr< T2 > &p)
Definition: util_ptr_dtk.hpp:101
Dtk_ErrorStatus
Dtk_ErrorStatus
Definition: error_dtk.hpp:6
Dtk_SmartPtr::IsNULL
Dtk_bool IsNULL() const
Definition: util_ptr_dtk.hpp:118
Dtk_Face::SetGeom
void SetGeom(const Dtk_SurfacePtr &inSurface)
Set Geometry.
Dtk_Jtw_Interface::AddPMI
Dtk_ErrorStatus AddPMI(const Dtk_FdtPtr &inPMI, Dtk_Int64 inIdpmi=-1)
Add a fdt into the current node.
JtwSampleVersion_4_1
Dtk_ErrorStatus JtwSampleVersion_4_1(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:464
CHECK_OK
#define CHECK_OK(X)
Definition: testwriters.h:9
Dtk_SmartPtr
Definition: util_ptr_dtk.hpp:37
JtwSampleOneMesh_1_1
Dtk_ErrorStatus JtwSampleOneMesh_1_1(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:24
Dtk_Jtw_Interface::inches
@ inches
Definition: jtw.h:43
Dtk_string::c_str
const char * c_str() const
Retrieve the ASCII conversion string.
Dtk_Jtw_Interface::version80
@ version80
Definition: jtw.h:22
JtwSampleLayerNames_4_5
Dtk_ErrorStatus JtwSampleLayerNames_4_5(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:556
JtwSampleAssembly_3_1
Dtk_ErrorStatus JtwSampleAssembly_3_1(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:182
JtwSampleSimplePMI_5_1
Dtk_ErrorStatus JtwSampleSimplePMI_5_1(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:587
Dtk_string::mkdir
int mkdir() const
File Utility : Create a Directory.
Dtk_pnt
This is a mathematical point class.
Definition: dtk_pnt.hpp:22
JtwSamplePMI_Geom_one_association_5_8
Dtk_ErrorStatus JtwSamplePMI_Geom_one_association_5_8(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:902
MakeReferencePlane
Dtk_BodyPtr MakeReferencePlane()
Definition: testlibjtwrite.cpp:807
Dtk_string::FixPathSeparator
void FixPathSeparator()
File Utility : Fixes path separator consistency. It lets you replace the '\' or '/' by the OS needed ...
Dtk_Jtw_Interface::AddModelView
Dtk_ErrorStatus AddModelView(const Dtk_ModelDisplayPtr &inModelview, Dtk_Int64 inIdmodelview=-1)
Add a modelView into the current node.
Dtk_Camera::Create
static Dtk_CameraPtr Create()
Base constructor.
JtwSampleMeshes_1_2
Dtk_ErrorStatus JtwSampleMeshes_1_2(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:49
JtwSampleAsmInstances_3_3
Dtk_ErrorStatus JtwSampleAsmInstances_3_3(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:250
JtwSampleUnits_4_2
Dtk_ErrorStatus JtwSampleUnits_4_2(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:479
DTK_TYPE_EDGE
@ DTK_TYPE_EDGE
Definition: define.h:128
tess_ComputeBoundariesFromMesh
int tess_ComputeBoundariesFromMesh()
: Check value of option memorize noundaries of mesh
Dtk_tab
This is a high level array class.
Definition: util_stl_dtk.hpp:85
Dtk_transfo::addTranslate
void addTranslate(const Dtk_dir &V)
Translate the Dtk_transfo.
MakeReferencePoint
Dtk_BodyPtr MakeReferencePoint()
Definition: testlibjtwrite.cpp:842
tess_EndTesselation
void tess_EndTesselation()
Free the data used by tesselation library.
sampleWriter::CreateCurves
Dtk_BodyPtr CreateCurves()
Definition: testcreatecube.cpp:1292
sampleWriter::CreateCurvesStyle
Dtk_BodyPtr CreateCurvesStyle()
Definition: testcreatecube.cpp:1370
JtwSamplePartInstances_3_2
Dtk_ErrorStatus JtwSamplePartInstances_3_2(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:216
MakePmiOnRoot
Dtk_ErrorStatus MakePmiOnRoot(Dtk_Jtw_Interface &J, int option)
Definition: testlibjtwrite.cpp:1019
JtwSampleSimpleModelview_5_2
Dtk_ErrorStatus JtwSampleSimpleModelview_5_2(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:607
Dtk_LayerInfosSet::Create
static Dtk_LayerInfosSetPtr Create(const Dtk_Size_t inNumLayers)
Base constructor.
dtkNoError
@ dtkNoError
Definition: error_dtk.hpp:140
Dtk_tab::push_back
void push_back(const T &x)
Inserts an element at the end of the array.
Definition: util_stl_dtk.hpp:415
Dtk_Shell::Create
static Dtk_ShellPtr Create(const Dtk_BodyPtr &inParentBody)
Create a shell in a body.
Dtk_Jtw_Interface
This is Jt Interface class used to write Jt files.
Definition: jtw.h:8
CreateModelDisplay
Dtk_ModelDisplayPtr CreateModelDisplay(const Dtk_string &name)
Definition: testlibjtwrite.cpp:942
Dtk_Point::Create
static Dtk_PointPtr Create(const Dtk_Point &inToCopy)
constructors returning Smart pointers
Dtk_RGB
Definition: dtk_rgb.hpp:7
AllJtWTests
int AllJtWTests(const Dtk_string &inResultDirectory)
Definition: testlibjtwrite.cpp:1097
JtwSampleMultipleFilesPerPart_3_6
Dtk_ErrorStatus JtwSampleMultipleFilesPerPart_3_6(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:377
JtwSamplePMI_PMI_association_5_6
Dtk_ErrorStatus JtwSamplePMI_PMI_association_5_6(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:766
Dtk_Info::create
static Dtk_SmartPtr< Dtk_Info > create()
Dtk_Jtw_Interface::ConnectPMI_ModelView
Dtk_ErrorStatus ConnectPMI_ModelView(Dtk_Int64 inIdpmi, Dtk_Int64 inIdModelView, const Dtk_tab< Dtk_Int64 > &inRoute=Dtk_tab< Dtk_Int64 >())
Connect a PMI on a ModelView.
Dtk_dir
This is a mathematical direction class.
Definition: dtk_dir.hpp:15
Dtk_Jtw_Interface::overwritecolor
@ overwritecolor
Definition: jtw.h:18
JtwSampleModelViewAsm_6_1
Dtk_ErrorStatus JtwSampleModelViewAsm_6_1(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:954
JtwSampleBodyVisibility_2_4
Dtk_ErrorStatus JtwSampleBodyVisibility_2_4(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:156
Makeroute
Dtk_tab< Dtk_Int64 > Makeroute(Dtk_Int64 r[], int nb)
Definition: testlibjtwrite.cpp:999
Shift
void Shift(T &mesh, double sh)
Definition: testlibjtwrite.cpp:42
Dtk_MetaData::CreateMetaData
static Dtk_MetaDataPtr CreateMetaData(const MetaDataTypeEnum &inEnumType, Dtk_string inTitle, Dtk_string inValue, Dtk_string inValueType=Dtk_string(L"STRING"))
Create a Dtk_MetaDataPtr .