DATAKIT SDK  V2026.2
testlibjtwrite.cpp File Reference

Functions

void AddVertex (Dtk_MeshPtr mesh, const Dtk_pnt &P, const Dtk_dir &N, float u, float v)
 
int AllJtWTests (const Dtk_string &inResultDirectory)
 
Dtk_FdtPtr CreateFdtDatumAt (const Dtk_pnt &D)
 
Dtk_LayerInfosSetPtr CreateLayerInfosSet ()
 
Dtk_ModelDisplayPtr CreateModelDisplay (const Dtk_string &name)
 
Dtk_MeshPtr CreateTextureMesh ()
 
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 JtwSampleLightmap_2_5 (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 JtwSampleTextures_1_3 (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)
 
Dtk_ErrorStatus SampleLossyCompression_2_6 (const Dtk_string &outputFileName)
 
void SetLightMapOnOneFace (Dtk_BodyPtr &body, const Dtk_RGB &ambiant, const Dtk_RGB &diffuse, const Dtk_RGB &specular, float shininess)
 
template<typename T >
void Shift (T &mesh, double sh)
 

Function Documentation

◆ AddVertex()

void AddVertex ( Dtk_MeshPtr  mesh,
const Dtk_pnt P,
const Dtk_dir N,
float  u,
float  v 
)
95 {
96  mesh->add_vertex( &P, &N, NULL, u, v );
97 }

◆ AllJtWTests()

int AllJtWTests ( const Dtk_string inResultDirectory)
1239 {
1240  Dtk_ErrorStatus errorStatus;
1241  Dtk_string outputDirectory, outputFileName;
1242  // Choosing output directory and file name
1243  outputDirectory = inResultDirectory + L"Jt/";
1244  outputDirectory.FixPathSeparator();
1245  outputDirectory.mkdir();
1246 
1247  // samples meshes
1248  outputFileName = outputDirectory + L"JTW_1_1_SampleMesh.jt";
1249  errorStatus = JtwSampleOneMesh_1_1( outputFileName );
1250  outputFileName = outputDirectory + L"JTW_1_2_SampleMeshes.jt";
1251  errorStatus = JtwSampleMeshes_1_2( outputFileName );
1252  outputFileName = outputDirectory + L"JTW_1_3_SampleTextures.jt";
1253  errorStatus = JtwSampleTextures_1_3( outputFileName );
1254 
1255  outputFileName = outputDirectory + L"JTW_2_1_SampleBody.jt";
1256  errorStatus = JtwSampleBody_2_1( outputFileName);
1257  outputFileName = outputDirectory + L"JTW_2_2_SampleBodyLOD.jt";
1258  errorStatus = JtwSampleBodyLOD_2_2( outputFileName );
1259  outputFileName = outputDirectory + L"JTW_2_3_SampleWireBody.jt";
1260  errorStatus = JtwSampleWireBody_2_3( outputFileName );
1261  outputFileName = outputDirectory + L"JTW_2_4_SampleBodyVisibility.jt";
1262  errorStatus = JtwSampleBodyVisibility_2_4( outputFileName );
1263  outputFileName = outputDirectory + L"JTW_2_5_SampleLightmap.jt";
1264  errorStatus = JtwSampleLightmap_2_5( outputFileName );
1265  outputFileName = outputDirectory + L"JTW_2_6_SampleLossy.jt";
1266  errorStatus = SampleLossyCompression_2_6( outputFileName );
1267 
1268  outputFileName = outputDirectory + L"JTW_3_1_SampleAssembly.jt";
1269  errorStatus = JtwSampleAssembly_3_1( outputFileName );
1270  outputFileName = outputDirectory + L"JTW_3_2_SamplePartInstances.jt";
1271  errorStatus = JtwSamplePartInstances_3_2( outputFileName );
1272  outputFileName = outputDirectory + L"JTW_3_3_SampleAsmInstances.jt";
1273  errorStatus = JtwSampleAsmInstances_3_3( outputFileName );
1274  outputFileName = outputDirectory + L"JTW_3_4_SampleInstancesColors.jt";
1275  errorStatus = JtwSampleInstancesColors_3_4( outputFileName );
1276  outputFileName = outputDirectory + L"JTW_3_5_SampleInstancesVisibily.jt";
1277  errorStatus = JtwSampleInstancesVisibily_3_5( outputFileName );
1278  outputFileName = outputDirectory + L"JTW_3_6_SampleMultipleFilesPerPart.jt";
1279  errorStatus = JtwSampleMultipleFilesPerPart_3_6( outputFileName );
1280  outputFileName = outputDirectory + L"JTW_3_7_SampleMultipleFilesShattered.jt";
1281  errorStatus = JtwSampleMultipleFilesShattered_3_7( outputFileName );
1282 
1283  outputFileName = outputDirectory + L"JTW_4_1_SampleVersion.jt";
1284  errorStatus = JtwSampleVersion_4_1( outputFileName );
1285  outputFileName = outputDirectory + L"JTW_4_2_SampleUnits.jt";
1286  errorStatus = JtwSampleUnits_4_2( outputFileName );
1287  outputFileName = outputDirectory + L"JTW_4_3_SampleMetadatas.jt";
1288  errorStatus = JtwSampleMetadatas_4_3( outputFileName );
1289  outputFileName = outputDirectory + L"JTW_4_4_SampleLayers.jt";
1290  errorStatus = JtwSampleLayers_4_4( outputFileName );
1291  outputFileName = outputDirectory + L"JTW_4_5_SampleLayerNames.jt";
1292  errorStatus = JtwSampleLayerNames_4_5( outputFileName );
1293 
1294  outputFileName = outputDirectory + L"JTW_5_1_SampleSimplePMI.jt";
1295  errorStatus = JtwSampleSimplePMI_5_1( outputFileName );
1296  outputFileName = outputDirectory + L"JTW_5_2_SampleSimpleModelview.jt";
1297  errorStatus = JtwSampleSimpleModelview_5_2( outputFileName );
1298  outputFileName = outputDirectory + L"JTW_5_3_SamplePMI_MV_association.jt";
1299  errorStatus = JtwSamplePMI_MV_association_5_3( outputFileName );
1300  outputFileName = outputDirectory + L"JTW_5_4_SamplePMI_Geom_association.jt";
1301  errorStatus = JtwSamplePMI_Geom_association_5_4( outputFileName);
1302  outputFileName = outputDirectory + L"JTW_5_5_SampleModelview_sections.jt";
1303  errorStatus = JtwSampleModelview_sections_5_5( outputFileName );
1304  outputFileName = outputDirectory + L"JTW_5_6_SamplePMI_PMI_association.jt";
1305  errorStatus = JtwSamplePMI_PMI_association_5_6( outputFileName );
1306  outputFileName = outputDirectory + L"JTW_5_7_SampleAxis_References.jt";
1307  errorStatus = JtwSampleAxis_References_5_7( outputFileName );
1308  outputFileName = outputDirectory + L"JTW_5_8_SamplePMI_Geom_one_association.jt";
1309  errorStatus = JtwSamplePMI_Geom_one_association_5_8( outputFileName );
1310 
1311  outputFileName = outputDirectory + L"JTW_6_1_SampleModelViewAsm.jt";
1312  errorStatus = JtwSampleModelViewAsm_6_1( outputFileName );
1313  outputFileName = outputDirectory + L"JTW_6_2_SampleModelViewTarget.jt";
1314  errorStatus = JtwSampleModelViewTarget_6_2( outputFileName, 1);
1315  outputFileName = outputDirectory + L"JTW_6_3_SampleModelViewRemove.jt";
1316  errorStatus = JtwSampleModelViewTarget_6_2( outputFileName, 2);
1317  outputFileName = outputDirectory + L"JTW_6_4_SampleAsmPMITarget.jt";
1318  errorStatus = JtwSampleModelViewTarget_6_2( outputFileName, 3);
1319  outputFileName = outputDirectory + L"JTW_6_5_SampleAsmExplodedView.jt";
1320  errorStatus = JtwSampleModelViewTarget_6_2( outputFileName, 4 );
1321 
1322  return errorStatus;
1323 }

◆ CreateFdtDatumAt()

Dtk_FdtPtr CreateFdtDatumAt ( const Dtk_pnt D)
1134 {
1136  double scale = 0.1;
1137  Dtk_transfo rescale(Dtk_dir(scale, 0, 0), Dtk_dir(0, scale, 0), Dtk_dir(0, 0, scale), scale * Dtk_pnt(-50., -100., -50.));
1138  pmi->Transform(rescale);
1139  Dtk_transfo shift;
1140  shift.addTranslate(D);
1141  pmi->Transform(shift);
1142  return pmi;
1143 }

◆ CreateLayerInfosSet()

Dtk_LayerInfosSetPtr CreateLayerInfosSet ( )
675 {
677  lay->AddLayer( Dtk_LayerInfosSet::Layer( 3, L"LayerThree" ) ); // first layer has ID 3
678  lay->AddLayer( Dtk_LayerInfosSet::Layer( 5, L"LayerFive" ) ); // second layer has ID 5
679  return lay;
680 }

◆ CreateModelDisplay()

Dtk_ModelDisplayPtr CreateModelDisplay ( const Dtk_string name)
1069 {
1070  Dtk_pnt from(300, 300, 300);
1071  Dtk_pnt to(0, 0, 0);
1072  Dtk_dir up(-0.57735, 0.57735, -0.57735);
1073  Dtk_CameraPtr cam = Dtk_Camera::Create(from, to, 5, 5, up);
1074  Dtk_ModelDisplayPtr mv = Dtk_ModelDisplay::Create(cam, NULL, 1);
1075  mv->info() = Dtk_Info::create();
1076  mv->info()->SetName(name);
1077  return mv;
1078 }

◆ CreateTextureMesh()

Dtk_MeshPtr CreateTextureMesh ( )
100 {
102  Dtk_mesh_face* mf = new Dtk_mesh_face( mesh.operator->() );
103  mesh->add_mesh_face( mf );
104  AddVertex( mesh, Dtk_pnt( 0, 0, 0 ), Dtk_dir( 0, 0, 1 ), 0, 0 );
105  AddVertex( mesh, Dtk_pnt( 10, 0, 0 ), Dtk_dir( 0, 0, 1 ), 1, 0 );
106  AddVertex( mesh, Dtk_pnt( 10, 10, 0 ), Dtk_dir( 0, 0, 1 ), 1, 1 );
107  AddVertex( mesh, Dtk_pnt( 0, 10, 0 ), Dtk_dir( 0, 0, 1 ), 0, 1 );
108  Dtk_tab<Dtk_ID> inds;
109  inds.push_back( 0 ); inds.push_back( 1 ); inds.push_back( 2 );
110  inds.push_back( 0 ); inds.push_back( 2 ); inds.push_back( 3 );
111  mf->add_triangles(&inds );
112 // texture
113  Dtk_picture picture;
114  picture.MetricHeight() = picture.MetricWidth() = 256;
115  picture.PixelWidth() = 256;
116  picture.PixelHeight() = 256;
117  picture.FileType() = DTK_PICTURE_RGB24;
118  picture.File().resize( 256 * 256 * 3 );
119  size_t i, size = picture.File().size();
120  for( i = 0; i < size; i++ ) // make "random" pixels
121  picture.File()[ i ] = ( i * i + i / 256 ) % 256;
123  texture->SetTextureImage( &picture );
124  Dtk_RenderInfosPtr render = Dtk_RenderInfos::Create( "uselessname", NULL, texture );
125  mf->info() = Dtk_Info::create();
126  mf->info()->AddRenderInfos( render );
127  return mesh;
128 }

◆ JtWriteSample()

int JtWriteSample ( const Dtk_string inResultDirectory)
1328 {
1329  cout << endl << "----------------------------------------------" << endl;
1330  cout <<"Jt Write start" << endl;
1331 
1332  tess_InitTesselation("./", 0.005); // Init Tessellation : working directory and default tolerance (needed for writing bodies)
1333  tess_ComputeBoundariesFromMesh(0); // Disable wire creation on mesh during Brep tessellation.
1334 
1335  int err = AllJtWTests(inResultDirectory); // all tests.
1336 
1337  tess_EndTesselation(); // End of tessellation
1338  cout <<"Jt Write end" << endl;
1339 
1340 
1341  return err;
1342 }

◆ JtwSampleAsmInstances_3_3()

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

◆ JtwSampleAssembly_3_1()

Dtk_ErrorStatus JtwSampleAssembly_3_1 ( const Dtk_string outputFileName)
311 {
312  Dtk_ErrorStatus err;
313  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
314  CHECK_OK(err);
315  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
316 
317  CHECK_OK(J.OpenInstance("Axle")); // open
318  Dtk_BodyPtr axle = sampleWriter::CreateCyl(0.2, 5);
319  CHECK_OK(J.AddBody(axle));
320  CHECK_OK(J.CloseLastInstance()); // close Axle
321 
322  CHECK_OK(J.OpenInstance("Wheels")); // open
323 
324  CHECK_OK(J.OpenInstance("Wheel")); // open
325  Dtk_BodyPtr wheel = sampleWriter::CreateCyl(1, 1);
326  Shift(wheel, 2);
327  CHECK_OK(J.AddBody(wheel));
328  CHECK_OK(J.CloseLastInstance()); // close Wheel
329 
330  CHECK_OK(J.OpenInstance("Wheel2")); // open
331  Shift(wheel, 3);
332  CHECK_OK(J.AddBody(wheel));
333  CHECK_OK(J.CloseLastInstance()); // close Wheel
334 
335  CHECK_OK(J.CloseLastInstance()); // close Wheels
336 
337  CHECK_OK(J.CloseLastInstance()); // close RootNode
338  cout << "=> " << outputFileName.c_str() << endl;
339  return dtkNoError;// Automatic Finish while J released
340 }

◆ JtwSampleAxis_References_5_7()

Dtk_ErrorStatus JtwSampleAxis_References_5_7 ( const Dtk_string outputFileName)
985 {
986  Dtk_ErrorStatus err;
987  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
988  CHECK_OK(err);
989  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
990 
991  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl(100, 150); // Create a Cylinder radius=100, height=150 (with a green face)
992  CHECK_OK(J.AddBody(cylinder)); // Add the body
993 
994  Dtk_pnt from(300, 300, 300);
995  Dtk_pnt to(0, 0, 0);
996  Dtk_dir up(-0.57735, 0.57735, -0.57735);
997  Dtk_CameraPtr cam = Dtk_Camera::Create(from, to, 250, 250, up);
998  Dtk_ModelDisplayPtr mv2 = Dtk_ModelDisplay::Create(cam, NULL, 1);
999  mv2->info() = Dtk_Info::create();
1000  mv2->info()->SetName("SecondView");
1001  CHECK_OK(J.AddModelView(mv2, 8)); // Add Modelview, set ID = 8
1002 
1004  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
1005  axis->SetName("MyAxisSystem"); // give a name
1006  CHECK_OK(J.AddAxisSystem(axis, 50)); // give ID 50
1007  CHECK_OK(J.ConnectPMI_ModelView(50, 8)); // Connect AxisSystem 50 to Modelview 8
1008 
1009  Dtk_BodyPtr refplane = MakeReferencePlane();
1010  CHECK_OK(J.AddReferenceGeometry(refplane, 60)); // give ID 60
1011  CHECK_OK(J.ConnectPMI_ModelView(60, 8)); // Connect Referenceplane 50 to Modelview 8
1012 
1013  Dtk_BodyPtr refaxis = MakeReferenceAxis();
1014  CHECK_OK(J.AddReferenceGeometry(refaxis, 70)); // give ID 70
1015  CHECK_OK(J.ConnectPMI_ModelView(70, 8)); // Connect Referenceplane 60 to Modelview 8
1016 
1017  Dtk_BodyPtr refpoint = MakeReferencePoint();
1018  CHECK_OK(J.AddReferenceGeometry(refpoint, 80)); // give ID 80
1019  CHECK_OK(J.ConnectPMI_ModelView(80, 8)); // Connect Referenceplane 70 to Modelview 8
1020 
1021  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
1022  cout << "=> " << outputFileName.c_str() << endl;
1023  return dtkNoError;// Automatic Finish while J released
1024 }

◆ JtwSampleBody_2_1()

Dtk_ErrorStatus JtwSampleBody_2_1 ( const Dtk_string outputFileName)
147 {
148  Dtk_ErrorStatus err;
149  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
150  CHECK_OK(err);
151  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
152  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl(1, 2); // Create a Cylinder radius=1, height=2 (with a green face)
153  CHECK_OK(J.AddBody(cylinder)); // Add the body
154  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
155  cout << "=> " << outputFileName.c_str() << endl;
156  return dtkNoError;// Automatic Finish while J released
157 }

◆ JtwSampleBodyLOD_2_2()

Dtk_ErrorStatus JtwSampleBodyLOD_2_2 ( const Dtk_string outputFileName)
162 {
163  Dtk_ErrorStatus err;
164  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
165  CHECK_OK(err);
166  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
167 
168  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl(1, 2); // Create a Cylinder radius=1, height=2 (with a green face)
169  CHECK_OK(J.AddBody(cylinder)); // Add the body, tessellated as default tess_InitTesselation value
170 
171  Dtk_BodyPtr cylinder2 = sampleWriter::CreateCyl(1, 2); // Create another Cylinder radius=1, height=2 (with a green face)
172  Shift(cylinder2, 3); // shift the cylinder, see exemple above
173  Dtk_tab<Dtk_Float32> lods; // create a LOD array
174  lods.push_back(0.001f); lods.push_back(-1); // Highest LOD : linear tol = 0.001, angular automatic
175  lods.push_back(0.01f); lods.push_back(-1); // Medium LOD : linear tol = 0.01, angular automatic
176  lods.push_back(0.1f); lods.push_back(-1); // Lower LOD : linear tol = 0.1, angular automatic
177  CHECK_OK(J.AddBody(cylinder2, lods)); // add the body, will tessellate automaticly for LODS.
178 
179  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
180  cout << "=> " << outputFileName.c_str() << endl;
181  return dtkNoError;// Automatic Finish while J released
182 }

◆ JtwSampleBodyVisibility_2_4()

Dtk_ErrorStatus JtwSampleBodyVisibility_2_4 ( const Dtk_string outputFileName)
209 {
210  Dtk_ErrorStatus err;
211  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
212  CHECK_OK(err);
213  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
214 
215  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl(1, 2);
216  CHECK_OK(J.AddBody(cylinder));
217 
218  Dtk_BodyPtr cylinder2 = sampleWriter::CreateCyl(1, 2);
219  Shift(cylinder2, 3);
220  CHECK_OK(J.AddBody(cylinder2));
221 
222  Dtk_BodyPtr cylinder3 = sampleWriter::CreateCyl(1, 2);
223  Shift(cylinder3, 6);
224  cylinder3->info()->SetBlankedStatus(DTK_TRUE);
225  CHECK_OK(J.AddBody(cylinder3));
226 
227  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
228  cout << "=> " << outputFileName.c_str() << endl;
229  return dtkNoError;// Automatic Finish while J released
230 }

◆ JtwSampleInstancesColors_3_4()

Dtk_ErrorStatus JtwSampleInstancesColors_3_4 ( const Dtk_string outputFileName)
422 {
423  Dtk_dir X(1, 0, 0);
424  Dtk_dir Y(0, 1, 0);
425  Dtk_dir Z(0, 0, 1);
426  Dtk_ErrorStatus err;
427  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
428  CHECK_OK(err);
429  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
430 
431  Dtk_Int64 id_of_axles = 2;
432  CHECK_OK(J.OpenInstance("Axles", id_of_axles)); // open Axles, give an ID for future reinstance, placement by default : identity matrix
433 
434  CHECK_OK(J.OpenInstance("Axle")); // open
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")); // open
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)))); // open instance
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", id_of_axles, Dtk_transfo(X, Y, Z, Dtk_pnt(5, 0, 0))));
454  CHECK_OK(J.LastInstance_SetInstanceColor(Dtk_RGB(255, 0, 0, 128), Dtk_Jtw_Interface::keepsubcolor));
455  // Give a RED color with transparence, with keepsubcolor strategy : only uncolored faces are filled
456  CHECK_OK(J.CloseLastInstance()); // close Axles2
457 
458  CHECK_OK(J.OpenInstance("Axles3", id_of_axles, Dtk_transfo(X, Y, Z, Dtk_pnt(10, 0, 0))));
459  CHECK_OK(J.LastInstance_SetInstanceColor(Dtk_RGB(0, 0, 255), Dtk_Jtw_Interface::overwritecolor));
460  // Give a BLUE color, with overwrite color strategy : all faces are filled
461  CHECK_OK(J.CloseLastInstance()); // close Axles2
462 
463  CHECK_OK(J.CloseLastInstance()); // close RootNode
464  cout << "=> " << outputFileName.c_str() << endl;
465  return dtkNoError;// Automatic Finish while J released
466 }

◆ JtwSampleInstancesVisibily_3_5()

Dtk_ErrorStatus JtwSampleInstancesVisibily_3_5 ( const Dtk_string outputFileName)
471 {
472  Dtk_dir X(1, 0, 0);
473  Dtk_dir Y(0, 1, 0);
474  Dtk_dir Z(0, 0, 1);
475  Dtk_ErrorStatus err;
476  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
477  CHECK_OK(err);
478  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
479 
480  CHECK_OK(J.OpenInstance("Axle")); // open
481  Dtk_BodyPtr axle = sampleWriter::CreateCyl(0.2, 5);
482  CHECK_OK(J.AddBody(axle));
483  CHECK_OK(J.CloseLastInstance()); // close Axle
484 
485  CHECK_OK(J.OpenInstance("Wheels")); // open
486  Dtk_Int64 id_of_wheel = 1;
487  CHECK_OK(J.OpenInstance("Wheel", id_of_wheel, Dtk_transfo(X, Y, Z, Dtk_pnt(0, 0, 5)))); // open instance
488  Dtk_BodyPtr wheel = sampleWriter::CreateCyl(1, 1);
489  CHECK_OK(J.AddBody(wheel));
490  CHECK_OK(J.CloseLastInstance()); // close Wheel
491 
492  CHECK_OK(J.OpenInstance("Wheel2", id_of_wheel, Dtk_transfo(X, -Y, -Z, Dtk_pnt())));
493  CHECK_OK(J.LastInstance_SetInvisible()); // Set as invisible
494  CHECK_OK(J.CloseLastInstance()); // reinstancied : must close Wheel immediatly.
495 
496  CHECK_OK(J.CloseLastInstance()); // close Wheels
497 
498  CHECK_OK(J.CloseLastInstance()); // close RootNode
499  cout << "=> " << outputFileName.c_str() << endl;
500  return dtkNoError;// Automatic Finish while J released
501 }

◆ JtwSampleLayerNames_4_5()

Dtk_ErrorStatus JtwSampleLayerNames_4_5 ( const Dtk_string outputFileName)
683 {
684  Dtk_ErrorStatus err;
685  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
686  CHECK_OK(err);
687  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
688 
690  CHECK_OK(J.AddLayerInfosSet(lay));
691 
692  CHECK_OK(J.OpenInstance("Cyl1"));
693  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl(1, 2);
694  cylinder->info()->SetLayer(3);
695  CHECK_OK(J.AddBody(cylinder)); // Add the body
696  CHECK_OK(J.CloseLastInstance());
697 
698  CHECK_OK(J.OpenInstance("Cyl2"));
699  Dtk_BodyPtr cylinder2 = sampleWriter::CreateCyl(1, 2);
700  cylinder2->info()->SetLayer(5);
701  Shift(cylinder2, 3);
702  CHECK_OK(J.AddBody(cylinder2)); // Add the body
703  CHECK_OK(J.CloseLastInstance());
704 
705  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
706  cout << "=> " << outputFileName.c_str() << endl;
707  return dtkNoError;// Automatic Finish while J released
708 }

◆ JtwSampleLayers_4_4()

Dtk_ErrorStatus JtwSampleLayers_4_4 ( const Dtk_string outputFileName)
647 {
648  Dtk_ErrorStatus err;
649  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
650  CHECK_OK(err);
651  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
652 
653  CHECK_OK(J.OpenInstance("Cyl1"));
654  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl(1, 2);
655  cylinder->info()->SetLayer(3);
656  CHECK_OK(J.AddBody(cylinder)); // Add the body
657  CHECK_OK(J.CloseLastInstance());
658 
659  CHECK_OK(J.OpenInstance("Cyl2"));
660  Dtk_BodyPtr cylinder2 = sampleWriter::CreateCyl(1, 2);
661  cylinder2->info()->SetLayer(5);
662  Shift(cylinder2, 3);
663  CHECK_OK(J.AddBody(cylinder2)); // Add the body
664  CHECK_OK(J.CloseLastInstance());
665 
666  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
667  cout << "=> " << outputFileName.c_str() << endl;
668  return dtkNoError;// Automatic Finish while J released
669 }

◆ JtwSampleLightmap_2_5()

Dtk_ErrorStatus JtwSampleLightmap_2_5 ( const Dtk_string outputFileName)
254 {
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_BodyPtr cylinder = sampleWriter::CreateCyl( 1, 2 );
261  SetLightMapOnOneFace( cylinder, Dtk_RGB( 50, 50, 50 ), Dtk_RGB( 255, 0, 0 ), Dtk_RGB( 0, 0, 255 ), 0 );
262  CHECK_OK( J.AddBody( cylinder ) );
263 
264  Dtk_BodyPtr cylinder2 = sampleWriter::CreateCyl( 1, 2 );
265  Shift( cylinder2, 3 );
266  SetLightMapOnOneFace( cylinder2, Dtk_RGB( 50, 50, 50 ), Dtk_RGB( 255, 0, 0 ), Dtk_RGB( 0, 0, 0 ), 0.5 );
267  CHECK_OK( J.AddBody( cylinder2 ) );
268 
269  Dtk_BodyPtr cylinder3 = sampleWriter::CreateCyl( 1, 2 );
270  Shift( cylinder3, 6 );
271  SetLightMapOnOneFace( cylinder3, Dtk_RGB( 100, 50, 30 ), Dtk_RGB( 255, 0, 0 ), Dtk_RGB( 255, 255, 255 ), 1 );
272  CHECK_OK( J.AddBody( cylinder3 ) );
273 
274  CHECK_OK( J.CloseLastInstance() ); // Rootnode closing.
275  cout << "=> " << outputFileName.c_str() << endl;
276  return dtkNoError;// Automatic Finish while J released
277 }

◆ 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)
625 {
626  Dtk_ErrorStatus err;
627  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
628  CHECK_OK(err);
629  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
630 
632  CHECK_OK(J.AddMetaData(meta));
633 
634  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl(1, 2); // Create a Cylinder radius=1, height=2 (with a green face)
635  CHECK_OK(J.AddBody(cylinder)); // Add the body
636 
637  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
638  cout << "=> " << outputFileName.c_str() << endl;
639  return dtkNoError;// Automatic Finish while J released
640 }

◆ JtwSampleModelview_sections_5_5()

Dtk_ErrorStatus JtwSampleModelview_sections_5_5 ( const Dtk_string outputFileName)
856 {
857  Dtk_ErrorStatus err;
858  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
859  CHECK_OK(err);
860  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
861 
862  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl(100, 150); // Create a Cylinder radius=100, height=150 (with a green face)
863  CHECK_OK(J.AddBody(cylinder)); // Add the body
864 
865  Dtk_FdtPtr pmi = sampleWriter::CreateFdtDatum(); // Create an FDT (PMI)
866  CHECK_OK(J.AddPMI(pmi, 5)); // Add the PMI, set ID = 5
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, 150, 150, up);
872  Dtk_PlaneSurfacePtr section = Dtk_PlaneSurface::Create(Dtk_pnt(), Dtk_dir(1, 0, 0), Dtk_dir(0, 1, 0)); // (A)
873  //Dtk_EntityPtr section = MakeMultiSection(); // (B)
875 
876  mv2->info() = Dtk_Info::create();
877  mv2->info()->SetName("SecondView");
878  CHECK_OK(J.AddModelView(mv2, 8)); // Add Modelview, set ID = 8
879 
880  CHECK_OK(J.ConnectPMI_ModelView(5, 8)); // Connect PMI 5 into Modelview 8
881 
882  CHECK_OK(J.ConnectPMI_Geom(5, 2, DTK_TYPE_FACE)); // Connect PMI 5 on body, on face ID= 2
883  CHECK_OK(J.ConnectPMI_Geom(5, 15, DTK_TYPE_EDGE)); // Connect PMI 5 on body, on edge ID= 15
884 
885  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
886  cout << "=> " << outputFileName.c_str() << endl;
887  return dtkNoError;// Automatic Finish while J released
888 }

◆ JtwSampleModelViewAsm_6_1()

Dtk_ErrorStatus JtwSampleModelViewAsm_6_1 ( const Dtk_string outputFileName)
1081 {
1082  Dtk_dir X(1, 0, 0);
1083  Dtk_dir Y(0, 1, 0);
1084  Dtk_dir Z(0, 0, 1);
1085  Dtk_ErrorStatus err;
1086  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
1087  CHECK_OK(err);
1088  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
1089 
1090  Dtk_Int64 id_of_axles = 2;
1091  CHECK_OK(J.OpenInstance("Axles", id_of_axles)); // open Axles, give an ID for future reinstance, placement by default : identity matrix
1092 
1093  CHECK_OK(J.OpenInstance("Axle")); // open
1094  Dtk_BodyPtr axle = sampleWriter::CreateCyl(0.2, 5);
1095  CHECK_OK(J.AddBody(axle));
1096  CHECK_OK(J.AddModelView(CreateModelDisplay("AxleMV"), 8));
1097  CHECK_OK(J.CloseLastInstance()); // close Axle
1098 
1099  CHECK_OK(J.OpenInstance("Wheels")); // open
1100  Dtk_Int64 id_of_wheel = 1;
1101  CHECK_OK(J.OpenInstance("Wheel", id_of_wheel, Dtk_transfo(X, Y, Z, Dtk_pnt(0, 0, 5)))); // open instance
1102  Dtk_BodyPtr wheel = sampleWriter::CreateCyl(1, 1);
1103  CHECK_OK(J.AddBody(wheel));
1104  CHECK_OK(J.AddModelView(CreateModelDisplay("WheelMV"), 8));
1105  CHECK_OK(J.CloseLastInstance()); // close Wheel
1106 
1107  CHECK_OK(J.OpenInstance("Wheel2", id_of_wheel, Dtk_transfo(X, -Y, -Z, Dtk_pnt()))); // open reinstance
1108  CHECK_OK(J.CloseLastInstance()); // reinstancied : must close Wheel immediatly.
1109 
1110  CHECK_OK(J.CloseLastInstance()); // close Wheels
1111 
1112  CHECK_OK(J.CloseLastInstance()); // close Axles
1113 
1114  CHECK_OK(J.OpenInstance("Axles2", id_of_axles, Dtk_transfo(X, Y, Z, Dtk_pnt(5, 0, 0)))); // reinstance whole subassembly with matrix
1115  CHECK_OK(J.CloseLastInstance()); // close Axles2
1116 
1117  CHECK_OK(J.AddModelView(CreateModelDisplay("RootMV"), 8));
1118  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
1119  cout << "=> " << outputFileName.c_str() << endl;
1120  return dtkNoError;// Automatic Finish while J released
1121 }

◆ JtwSampleModelViewTarget_6_2()

Dtk_ErrorStatus JtwSampleModelViewTarget_6_2 ( const Dtk_string outputFileName,
int  option 
)
1198 {
1199  Dtk_dir X(1, 0, 0);
1200  Dtk_dir Y(0, 1, 0);
1201  Dtk_dir Z(0, 0, 1);
1202  Dtk_ErrorStatus err;
1203  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
1204  CHECK_OK(err);
1205  CHECK_OK(J.OpenInstance("RootNode", 1)); // Rootnode creation
1206  CHECK_OK(J.OpenInstance("Axles", 2));
1207  CHECK_OK(J.LastInstance_SetInstanceID(11));
1208  CHECK_OK(J.OpenInstance("Axle", 3));
1209  CHECK_OK(J.LastInstance_SetInstanceID(12));
1210  Dtk_BodyPtr axle = sampleWriter::CreateCyl(0.2, 5);
1211  CHECK_OK(J.AddBody(axle));
1212  CHECK_OK(J.CloseLastInstance()); // close Axle
1213  CHECK_OK(J.OpenInstance("Wheels", 4));
1214  CHECK_OK(J.LastInstance_SetInstanceID(13));
1215  CHECK_OK(J.OpenInstance("Wheel", 5, Dtk_transfo(X, Y, Z, Dtk_pnt(0, 0, 5))));
1216  CHECK_OK(J.LastInstance_SetInstanceID(14));
1217  Dtk_BodyPtr wheel = sampleWriter::CreateCyl(1, 1);
1218  CHECK_OK(J.AddBody(wheel));
1219  CHECK_OK(J.CloseLastInstance()); // close Wheel
1220  CHECK_OK(J.OpenInstance("Wheel2", 5, Dtk_transfo(X, -Y, -Z, Dtk_pnt())));
1221  CHECK_OK(J.LastInstance_SetInstanceID(15));
1222  CHECK_OK(J.CloseLastInstance()); // reinstancied : must close Wheel2 immediatly.
1223  CHECK_OK(J.CloseLastInstance()); // close Wheels
1224  CHECK_OK(J.CloseLastInstance()); // close Axles
1225  CHECK_OK(J.OpenInstance("Axles2", 2, Dtk_transfo(X, Y, Z, Dtk_pnt(6, 0, 0))));
1226  CHECK_OK(J.LastInstance_SetInstanceID(16));
1227  CHECK_OK(J.CloseLastInstance()); // close Axles2
1228  MakePmiOnRoot(J, option);
1229  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
1230  cout << "=> " << outputFileName.c_str() << endl;
1231  return dtkNoError;// Automatic Finish while J released
1232 }

◆ JtwSampleMultipleFilesPerPart_3_6()

Dtk_ErrorStatus JtwSampleMultipleFilesPerPart_3_6 ( const Dtk_string outputFileName)
506 {
507  Dtk_dir X(1, 0, 0);
508  Dtk_dir Y(0, 1, 0);
509  Dtk_dir Z(0, 0, 1);
510  Dtk_ErrorStatus err;
511  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
512  CHECK_OK(err);
513  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
514 
515  Dtk_Int64 id_of_axles = 2;
516  CHECK_OK(J.OpenInstance("Axles", id_of_axles)); // open Axles, give an ID for future reinstance, placement by default : identity matrix
517 
518  CHECK_OK(J.OpenInstance("Axle",Dtk_transfo(), "assembly/axle.jt"));// open instance in a new file.
519  Dtk_BodyPtr axle = sampleWriter::CreateCyl(0.2, 5);
520  CHECK_OK(J.AddBody(axle));
521  CHECK_OK(J.CloseLastInstance()); // close Axle
522 
523  CHECK_OK(J.OpenInstance("Wheels")); // open
524  Dtk_Int64 id_of_wheel = 1;
525  CHECK_OK(J.OpenInstance("Wheel", id_of_wheel, Dtk_transfo(X, Y, Z, Dtk_pnt(0, 0, 5)), "assembly/wheel.jt"));
526  Dtk_BodyPtr wheel = sampleWriter::CreateCyl(1, 1);
527  CHECK_OK(J.AddBody(wheel));
528  CHECK_OK(J.CloseLastInstance()); // close Wheel
529 
530  CHECK_OK(J.OpenInstance("Wheel2", id_of_wheel, Dtk_transfo(X, -Y, -Z, Dtk_pnt()))); // open reinstance
531  CHECK_OK(J.CloseLastInstance()); // reinstancied : must close Wheel immediatly.
532 
533  CHECK_OK(J.CloseLastInstance()); // close Wheels
534 
535  CHECK_OK(J.CloseLastInstance()); // close Axles
536 
537  CHECK_OK(J.OpenInstance("Axles2", 2, Dtk_transfo(X, Y, Z, Dtk_pnt(10, 0, 0)))); // reinstance whole subassembly with matrix
538  CHECK_OK(J.CloseLastInstance()); // close Axles2
539 
540  CHECK_OK(J.CloseLastInstance()); // close RootNode
541  cout << "=> " << outputFileName.c_str() << endl;
542  return dtkNoError;// Automatic Finish while J released
543 }

◆ JtwSampleMultipleFilesShattered_3_7()

Dtk_ErrorStatus JtwSampleMultipleFilesShattered_3_7 ( const Dtk_string outputFileName)
549 {
550  Dtk_dir X(1, 0, 0);
551  Dtk_dir Y(0, 1, 0);
552  Dtk_dir Z(0, 0, 1);
553  Dtk_ErrorStatus err;
554  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
555  CHECK_OK(err);
556  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
557 
558  Dtk_Int64 id_of_axles = 2;
559  CHECK_OK(J.OpenInstance("Axles", id_of_axles, Dtk_transfo(), "shattered_axles.jt")); // open Axles, give an ID for future reinstance, open instance in a new file.
560 
561  CHECK_OK(J.OpenInstance("Axle", Dtk_transfo(), "shattered_axle.jt")); // open instance in a new file.
562 
563  Dtk_BodyPtr axle = sampleWriter::CreateCyl(0.2, 5);
564  CHECK_OK(J.AddBody(axle));
565  CHECK_OK(J.CloseLastInstance()); // close Axle
566 
567  CHECK_OK(J.OpenInstance("Wheels", Dtk_transfo(), "shattered_wheels.jt")); // open instance in a new file.
568  Dtk_Int64 id_of_wheel = 1;
569  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.
570  Dtk_BodyPtr wheel = sampleWriter::CreateCyl(1, 1);
571  CHECK_OK(J.AddBody(wheel));
572  CHECK_OK(J.CloseLastInstance()); // close Wheel
573 
574  CHECK_OK(J.OpenInstance("Wheel2", id_of_wheel, Dtk_transfo(X, -Y, -Z, Dtk_pnt()))); // open reinstance
575  CHECK_OK(J.CloseLastInstance()); // reinstancied : must close Wheel immediatly."
576 
577  CHECK_OK(J.CloseLastInstance()); // close Wheels
578 
579  CHECK_OK(J.CloseLastInstance()); // close Axles
580 
581  CHECK_OK(J.OpenInstance("Axles2", 2, Dtk_transfo(X, Y, Z, Dtk_pnt(10, 0, 0)))); // reinstance whole subassembly with matrix
582  CHECK_OK(J.CloseLastInstance()); // close Axles2
583 
584  CHECK_OK(J.CloseLastInstance()); // close RootNode
585  cout << "=> " << outputFileName.c_str() << endl;
586  return dtkNoError;// Automatic Finish while J released
587 }

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

◆ JtwSamplePMI_Geom_association_5_4()

Dtk_ErrorStatus JtwSamplePMI_Geom_association_5_4 ( const Dtk_string outputFileName)
802 {
803  Dtk_ErrorStatus err;
804  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
805  CHECK_OK(err);
806  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
807 
808  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl(100, 150); // Create a Cylinder radius=100, height=150 (with a green face)
809  CHECK_OK(J.AddBody(cylinder)); // Add the body
810 
811  Dtk_FdtPtr pmi = sampleWriter::CreateFdtDatum(); // Create an FDT (PMI)
812  CHECK_OK(J.AddPMI(pmi, 5)); // Add the PMI, set ID = 5
813 
814  Dtk_pnt from(300, 300, 300);
815  Dtk_pnt to(0, 0, 0);
816  Dtk_dir up(-0.57735, 0.57735, -0.57735);
817  Dtk_CameraPtr cam = Dtk_Camera::Create(from, to, 150, 150, up);
818  Dtk_ModelDisplayPtr mv2 = Dtk_ModelDisplay::Create(cam, NULL, 1);
819  mv2->info() = Dtk_Info::create();
820  mv2->info()->SetName("SecondView");
821  CHECK_OK(J.AddModelView(mv2, 8)); // Add Modelview, set ID = 8
822 
823  CHECK_OK(J.ConnectPMI_ModelView(5, 8)); // Connect PMI 5 into Modelview 8
824 
825  CHECK_OK(J.ConnectPMI_Geom(5, 2, DTK_TYPE_FACE)); // Connect PMI 5 on body, on face ID= 2
826  CHECK_OK(J.ConnectPMI_Geom(5, 15, DTK_TYPE_EDGE)); // Connect PMI 5 on body, on edge ID= 15
827 
828  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
829  cout << "=> " << outputFileName.c_str() << endl;
830  return dtkNoError;// Automatic Finish while J released
831 }

◆ JtwSamplePMI_Geom_one_association_5_8()

Dtk_ErrorStatus JtwSamplePMI_Geom_one_association_5_8 ( const Dtk_string outputFileName)
1029 {
1030  Dtk_ErrorStatus err;
1031  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
1032  CHECK_OK(err);
1033  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
1034 
1035  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl(100, 150); // Create a Cylinder radius=100, height=150 (with a green face)
1036  cylinder->info()->SetId(10);
1037  CHECK_OK(J.AddBody(cylinder)); // Add the body
1038 
1039  Dtk_BodyPtr cylinder2 = sampleWriter::CreateCyl(100, 150); // Create a Cylinder radius=100, height=150 (with a green face)
1040  Shift(cylinder2, 250);
1041  cylinder2->info()->SetId(11);
1042  CHECK_OK(J.AddBody(cylinder2)); // Add the body
1043 
1044  Dtk_FdtPtr pmi = sampleWriter::CreateFdtDatum(); // Create an FDT (PMI)
1045  CHECK_OK(J.AddPMI(pmi, 5)); // Add the PMI, set ID = 5
1046 
1047  Dtk_pnt from(300, 300, 300);
1048  Dtk_pnt to(0, 0, 0);
1049  Dtk_dir up(-0.57735, 0.57735, -0.57735);
1050  Dtk_CameraPtr cam = Dtk_Camera::Create(from, to, 250, 250, up);
1051  Dtk_ModelDisplayPtr mv2 = Dtk_ModelDisplay::Create(cam, NULL, 1);
1052  mv2->info() = Dtk_Info::create();
1053  mv2->info()->SetName("SecondView");
1054  CHECK_OK(J.AddModelView(mv2, 8)); // Add Modelview, set ID = 8
1055 
1056  CHECK_OK(J.ConnectPMI_ModelView(5, 8)); // Connect PMI 5 into Modelview 8
1057 
1058  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
1059  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
1060 
1061  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
1062  cout << "=> " << outputFileName.c_str() << endl;
1063  return dtkNoError;// Automatic Finish while J released
1064 }

◆ JtwSamplePMI_MV_association_5_3()

Dtk_ErrorStatus JtwSamplePMI_MV_association_5_3 ( const Dtk_string outputFileName)
771 {
772  Dtk_ErrorStatus err;
773  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
774  CHECK_OK(err);
775  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
776 
777  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl(100, 150); // Create a Cylinder radius=100, height=150 (with a green face)
778  CHECK_OK(J.AddBody(cylinder)); // Add the body
779 
780  Dtk_FdtPtr pmi = sampleWriter::CreateFdtDatum(); // Create an FDT (PMI)
781  CHECK_OK(J.AddPMI(pmi, 5)); // 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, 250, 250, 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, 8)); // Add Modelview, set ID = 8
791 
792  CHECK_OK(J.ConnectPMI_ModelView(5, 8)); // Connect PMI 5 into Modelview 8
793 
794  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
795  cout << "=> " << outputFileName.c_str() << endl;
796  return dtkNoError;// Automatic Finish while J released
797 }

◆ JtwSamplePMI_PMI_association_5_6()

Dtk_ErrorStatus JtwSamplePMI_PMI_association_5_6 ( const Dtk_string outputFileName)
893 {
894  Dtk_ErrorStatus err;
895  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
896  CHECK_OK(err);
897  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
898 
899  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl(100, 150); // Create a Cylinder radius=100, height=150 (with a green face)
900  CHECK_OK(J.AddBody(cylinder)); // Add the body
901 
902  int i;
903  for (i = 0; i < 10; i++) // create 10 PMI
904  {
905  Dtk_FdtPtr pmi = sampleWriter::CreateFdtDatum(); // Create an FDT (PMI)
906  Shift(pmi, 15 * i);
907  CHECK_OK(J.AddPMI(pmi, 5 + i)); // Add the PMI, set ID = 5
908  }
909  Dtk_pnt from(300, 300, 300);
910  Dtk_pnt to(0, 0, 0);
911  Dtk_dir up(-0.57735, 0.57735, -0.57735);
912  Dtk_CameraPtr cam = Dtk_Camera::Create(from, to, 150, 150, up);
913  Dtk_ModelDisplayPtr mv2 = Dtk_ModelDisplay::Create(cam, NULL, 1);
914  mv2->info() = Dtk_Info::create();
915  mv2->info()->SetName("SecondView");
916  CHECK_OK(J.AddModelView(mv2, 30)); // Add Modelview, set ID = 8
917 
918  for (i = 0; i < 10; i++) // link the 10 PMIto ModelView
919  {
920  CHECK_OK(J.ConnectPMI_ModelView(5 + i, 30));
921  }
922 
923  CHECK_OK(J.ConnectPMI_PMI(6, 8)); // Associate PMI 6 to PMI 8
924 
925  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
926  cout << "=> " << outputFileName.c_str() << endl;
927  return dtkNoError;// Automatic Finish while J released
928 }

◆ JtwSampleSimpleModelview_5_2()

Dtk_ErrorStatus JtwSampleSimpleModelview_5_2 ( const Dtk_string outputFileName)
734 {
735  Dtk_ErrorStatus err;
736  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
737  CHECK_OK(err);
738  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
739 
740  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl(100, 150); // Create a Cylinder radius=100, height=150 (with a green face)
741  CHECK_OK(J.AddBody(cylinder)); // Add the body
742 
743  Dtk_FdtPtr pmi = sampleWriter::CreateFdtDatum(); // Create an FDT (PMI)
744  CHECK_OK(J.AddPMI(pmi)); // Add the PMI
745 
746  Dtk_pnt from(0, 0, 100);
747  Dtk_pnt to(0, 0, 0);
748  Dtk_dir up(0, 1, 0);
749  Dtk_CameraPtr cam = Dtk_Camera::Create(from, to, 100, 100, up); // semiwidth = 100
750  Dtk_ModelDisplayPtr mvfit = Dtk_ModelDisplay::Create(cam, NULL, 1);
751  mvfit->info() = Dtk_Info::create();
752  mvfit->info()->SetName("FitView");
753  CHECK_OK(J.AddModelView(mvfit));
754 
755  from = Dtk_pnt(300, 300, 300);
756  up = Dtk_dir(-0.57735, 0.57735, -0.57735);
757  cam = Dtk_Camera::Create(from, to, 250, 250, up);
758  Dtk_ModelDisplayPtr mv2 = Dtk_ModelDisplay::Create(cam, NULL, 1);
759  mv2->info() = Dtk_Info::create();
760  mv2->info()->SetName("SecondView");
761  CHECK_OK(J.AddModelView(mv2));
762 
763  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
764  cout << "=> " << outputFileName.c_str() << endl;
765  return dtkNoError;// Automatic Finish while J released
766 }

◆ JtwSampleSimplePMI_5_1()

Dtk_ErrorStatus JtwSampleSimplePMI_5_1 ( const Dtk_string outputFileName)
714 {
715  Dtk_ErrorStatus err;
716  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
717  CHECK_OK(err);
718  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
719 
720  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl(100, 150); // Create a Cylinder radius=1, height=2 (with a green face)
721  CHECK_OK(J.AddBody(cylinder)); // Add the body
722 
723  Dtk_FdtPtr pmi = sampleWriter::CreateFdtDatum(); // Create an FDT (PMI)
724  CHECK_OK(J.AddPMI(pmi)); // Add the PMI
725 
726  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
727  cout << "=> " << outputFileName.c_str() << endl;
728  return dtkNoError;// Automatic Finish while J released
729 }

◆ JtwSampleTextures_1_3()

Dtk_ErrorStatus JtwSampleTextures_1_3 ( const Dtk_string outputFileName)
131 {
132  Dtk_ErrorStatus err;
133  Dtk_Jtw_Interface J( outputFileName, err );
134  CHECK_OK( err );
135  CHECK_OK( J.OpenInstance( "RootNode" ) ); // Rootnode creation
136  Dtk_MeshPtr TextureMesh = CreateTextureMesh(); // create a simple red cube
137  CHECK_OK( J.AddMesh( TextureMesh ) ); // write the cube
138  CHECK_OK( J.CloseLastInstance() ); // Rootnode closing.
139  cout << "=> " << outputFileName.c_str() << endl;
140  return dtkNoError; // Automatic Finish while J released
141 }

◆ JtwSampleUnits_4_2()

Dtk_ErrorStatus JtwSampleUnits_4_2 ( const Dtk_string outputFileName)
608 {
609  Dtk_ErrorStatus err;
611  // set units as inches
612  CHECK_OK(err);
613  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
614  Dtk_MeshPtr CubeMesh = sampleWriter::CreateMeshCube(); // create a simple red cube
615  CHECK_OK(J.AddMesh(CubeMesh)); // write the cube
616  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
617  cout << "=> " << outputFileName.c_str() << endl;
618  return dtkNoError;// Automatic Finish while J released
619 }

◆ JtwSampleVersion_4_1()

Dtk_ErrorStatus JtwSampleVersion_4_1 ( const Dtk_string outputFileName)
593 {
594  Dtk_ErrorStatus err;
595  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep, Dtk_Jtw_Interface::version80); // set version 8.0
596  CHECK_OK(err);
597  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
598  Dtk_MeshPtr CubeMesh = sampleWriter::CreateMeshCube(); // create a simple red cube
599  CHECK_OK(J.AddMesh(CubeMesh)); // write the cube
600  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
601  cout << "=> " << outputFileName.c_str() << endl;
602  return dtkNoError;// Automatic Finish while J released
603 }

◆ JtwSampleWireBody_2_3()

Dtk_ErrorStatus JtwSampleWireBody_2_3 ( const Dtk_string outputFileName)
188 {
189  Dtk_ErrorStatus err;
190  Dtk_Jtw_Interface J(outputFileName, err, Dtk_Jtw_Interface::xtbrep); // Specify allowing BREP Writing
191  CHECK_OK(err);
192  CHECK_OK(J.OpenInstance("RootNode")); // Rootnode creation
193 
195  CHECK_OK(J.AddBody(wire));
196 
198  CHECK_OK(J.AddBody(wire2));
199 
200  CHECK_OK(J.CloseLastInstance()); // Rootnode closing.
201  cout << "=> " << outputFileName.c_str() << endl;
202  return dtkNoError;// Automatic Finish while J released
203 }

◆ MakeMultiSection()

Dtk_EntityPtr MakeMultiSection ( )
836 {
837  Dtk_BodyPtr body = Dtk_Body::Create();
838  Dtk_ShellPtr shell = Dtk_Shell::Create(body);
839  body->AddOpenShell(shell);
840  Dtk_FacePtr face1 = Dtk_Face::Create(body);
841  Dtk_PlaneSurfacePtr section1 = Dtk_PlaneSurface::Create(Dtk_pnt(), Dtk_dir(1, 0, 0), Dtk_dir(0, 1, 0));
842  section1->info() = Dtk_Info::create();
843  section1->info()->SetColor(Dtk_RGB(128, 0, 0)); // red
844  face1->SetGeom(Dtk_SurfacePtr::DtkDynamicCast(section1));
845  shell->AddFace(face1, DTK_TRUE);
846  Dtk_FacePtr face2 = Dtk_Face::Create(body);
847  Dtk_PlaneSurfacePtr section2 = Dtk_PlaneSurface::Create(Dtk_pnt(), Dtk_dir(0, 1, 0), Dtk_dir(1, 0, 0));
848  section2->info() = Dtk_Info::create();
849  section2->info()->SetColor(Dtk_RGB(0, 0, 128)); // blue
850  face2->SetGeom(Dtk_SurfacePtr::DtkDynamicCast(section2));
851  shell->AddFace(face2, DTK_TRUE);
852  return Dtk_EntityPtr::DtkDynamicCast(body);
853 }

◆ MakePmiOnRoot()

Dtk_ErrorStatus MakePmiOnRoot ( Dtk_Jtw_Interface J,
int  option 
)
1146 {
1147  Dtk_pnt from(300, 300, 300);
1148  Dtk_pnt to(3, 0, 3);
1149  Dtk_dir up(-0.57735, 0.57735, -0.57735);
1150  Dtk_CameraPtr cam = Dtk_Camera::Create(from, to, 5, 5, up);
1151  Dtk_ModelDisplayPtr mv2 = Dtk_ModelDisplay::Create(cam, NULL, 1);
1152  mv2->info() = Dtk_Info::create();
1153  mv2->info()->SetName("View");
1154  CHECK_OK(J.AddModelView(mv2, 8)); // Add Modelview, set ID = 8
1155 
1156  if (option == 1) // 6.2. Add instances by addition
1157  {
1158  Dtk_Int64 r1[] = { 1,11,2,13,4,14 }; // target one specific wheel
1159  Dtk_Int64 r2[] = { 1,16 }; // target one specific axle subassembly
1162  }
1163  if (option == 2) // 6.3. Remove instances (soustraction)
1164  {
1165  Dtk_Int64 r1[] = { 1,11,2,13,4,14 }; // target one specific wheel
1166  CHECK_OK(J.ConnectModelView_Instance(8, Makeroute(r1, 6), 1)); // last parameter hide = 1
1167  }
1168  if (option == 3) // 6.4. Target PMI on assembly geometry
1169  {
1170  Dtk_FdtPtr pmi = CreateFdtDatumAt(Dtk_pnt(0, 1, 0));
1171  CHECK_OK(J.AddPMI(pmi, 5)); // Add the PMI, set ID = 5
1172  CHECK_OK(J.ConnectPMI_ModelView(5, 8)); // set PMI into Modelview
1173  Dtk_Int64 r1[] = { 1,11,2,13,4,15,5 }; // target one specific wheel
1174  CHECK_OK(J.ConnectPMI_Geom(5, 3, DTK_TYPE_FACE, Makeroute(r1, 7)));
1175  Dtk_Int64 r2[] = { 1,16,2,12, 3 }; // target one specific axle
1176  CHECK_OK(J.ConnectPMI_Geom(5, 2, DTK_TYPE_FACE, Makeroute(r2, 5)));
1177  }
1178  if( option == 4 ) // 6.2. Add instances by addition, and shift for exploded view
1179  {
1180  Dtk_Int64 rsub[] = { 1,16 }; // target one specific axle subassembly
1181  Dtk_Int64 rw1[] = { 1,11,2,13,4,14 }; // target the first wheel of the other axle subassembly
1182  Dtk_Int64 rw2[] = { 1,11,2,13,4,15 }; // target the second wheel of the other axle subassembly
1183  Dtk_Int64 ra[] = { 1,11,2,12 }; // target the axle of the other axle subassembly
1184  Dtk_dir X( 1, 0, 0 );
1185  Dtk_dir Y( 0, 1, 0 );
1186  Dtk_dir Z( 0, 0, 1 );
1187  Dtk_transfo newplacementwheel1( X, Y, Z, Dtk_pnt( 0, 0, 8 ) );
1188  Dtk_transfo newplacementwheel2( X, -Y, -Z, Dtk_pnt( 0, 0, -3 ) );
1189  CHECK_OK( J.ConnectModelView_Instance( 8, Makeroute( rsub, 2 ) ) );
1190  CHECK_OK( J.ConnectModelView_Instance( 8, Makeroute( ra, 4 ) ) );
1191  CHECK_OK( J.ConnectModelView_Instance( 8, Makeroute( rw1, 6 ), 0, 0, &newplacementwheel1 ) );
1192  CHECK_OK( J.ConnectModelView_Instance( 8, Makeroute( rw2, 6 ), 0, 0, &newplacementwheel2 ) );
1193  }
1194  return dtkNoError;
1195 }

◆ MakeReferenceAxis()

Dtk_BodyPtr MakeReferenceAxis ( )
952 {
953  Dtk_BodyPtr body = Dtk_Body::Create();
954  body->info() = Dtk_Info::create();
955  body->info()->SetName("MyReferenceAxis");
956  body->info()->SetInfiniteGeometryFlag(1); // mandatory
957  body->info()->SetColor(Dtk_RGB(0, 128, 0)); // color green
958  Dtk_ShellPtr shell = Dtk_Shell::Create(body);
959  body->AddOpenShell(shell);
960  Dtk_tab<Dtk_CurvePtr> tabwire;
961  Dtk_LinePtr L = Dtk_Line::Create(Dtk_pnt(100, 100, 0), Dtk_dir(0, 0, 1));
962  L->SetTrimmingParameters(0.0, 200.0);
964  shell->AddWire(tabwire);
965  return body;
966 }

◆ MakeReferencePlane()

Dtk_BodyPtr MakeReferencePlane ( )
934 {
935  Dtk_BodyPtr body = Dtk_Body::Create();
936  body->info() = Dtk_Info::create();
937  body->info()->SetName("MyReferencePlane");
938  body->info()->SetInfiniteGeometryFlag(1); // mandatory
939  body->info()->SetColor(Dtk_RGB(128, 0, 0)); // color red
940  Dtk_ShellPtr shell = Dtk_Shell::Create(body);
941  body->AddOpenShell(shell);
942  Dtk_FacePtr face1 = Dtk_Face::Create(body);
943  Dtk_PlaneSurfacePtr plane = Dtk_PlaneSurface::Create(Dtk_pnt(), Dtk_dir(1, 0, 0), Dtk_dir(0, 1, 0));
944  double box[4] = { -200,200,-200,200 }; // trim of the plane
945  plane->SetTrimUVBox(box);
947  shell->AddFace(face1, DTK_TRUE);
948  return body;
949 }

◆ MakeReferencePoint()

Dtk_BodyPtr MakeReferencePoint ( )
969 {
970  Dtk_BodyPtr body = Dtk_Body::Create();
971  body->info() = Dtk_Info::create();
972  body->info()->SetName("MyReferencePoint");
973  body->info()->SetInfiniteGeometryFlag(1); // mandatory
974  body->info()->SetColor(Dtk_RGB(0, 0, 128)); // color blue
975  Dtk_ShellPtr shell = Dtk_Shell::Create(body);
976  body->AddOpenShell(shell);
977  Dtk_tab<Dtk_PointPtr> tabpoints;
978  Dtk_PointPtr point = Dtk_Point::Create(Dtk_pnt(120, 120, 0));
979  tabpoints.push_back(point);
980  shell->AddWire(tabpoints);
981  return body;
982 }

◆ Makeroute()

Dtk_tab<Dtk_Int64> Makeroute ( Dtk_Int64  r[],
int  nb 
)
1126 {
1127  Dtk_tab<Dtk_Int64> res;
1128  for (int i = 0; i < nb; i++)
1129  res.push_back(r[i]);
1130  return res;
1131 }

◆ SampleLossyCompression_2_6()

Dtk_ErrorStatus SampleLossyCompression_2_6 ( const Dtk_string outputFileName)
284 {
285  Dtk_ErrorStatus err;
286  Dtk_Jtw_Interface J( outputFileName, err, Dtk_Jtw_Interface::xtbrep ); // Specify allowing BREP Writing
287  CHECK_OK( err );
288  CHECK_OK( J.OpenInstance( "RootNode" ) ); // Rootnode creation
289 
290  Dtk_BodyPtr cylinder = sampleWriter::CreateCyl( 1, 2 ); // Create a Cylinder radius=1, height=2 (with a green face)
291  CHECK_OK( J.AddBody( cylinder ) ); // Add the body, tessellated as default tess_InitTesselation value
292 
293  Dtk_BodyPtr cylinder2 = sampleWriter::CreateCyl( 1, 2 ); // Create another Cylinder radius=1, height=2 (with a green face)
294  Shift( cylinder2, 3 ); // shift the cylinder, see exemple above
295  Dtk_tab<Dtk_Float32> lods; // create a LOD array
296  lods.push_back( 0.001f ); lods.push_back( -1 ); // Highest LOD : linear tol = 0.001, angular automatic
297  lods.push_back( 0.01f ); lods.push_back( -1 ); // Medium LOD : linear tol = 0.01, angular automatic
298  lods.push_back( 0.1f ); lods.push_back( -1 ); // Lower LOD : linear tol = 0.1, angular automatic
299  CHECK_OK( J.AddBody( cylinder2, lods , 0.01f ) ); // add the body, will tessellate automaticly for LODS, and a Lossy factor of 0.01
300 
301  CHECK_OK( J.CloseLastInstance() ); // Rootnode closing.
302  cout << "=> " << outputFileName.c_str() << endl;
303  return dtkNoError;// Automatic Finish while J released
304 }

◆ SetLightMapOnOneFace()

void SetLightMapOnOneFace ( Dtk_BodyPtr body,
const Dtk_RGB ambiant,
const Dtk_RGB diffuse,
const Dtk_RGB specular,
float  shininess 
)
237 {
238  size_t i, nb = body->GetNumTopologicalEntities( DTK_TYPE_UNKNOWN );
239  for( i = 0; i < nb; i++ )
240  {// fetch first face, then abort
241  Dtk_TopologicalEntityPtr topo = body->GetPtr( (Dtk_ID)i );
242  if( topo.IsNULL() || topo->get_type_detk() != DTK_TYPE_FACE )
243  continue;
245  Dtk_LightMapPtr lightmap = Dtk_LightMap::Create( ambiant, diffuse, specular );
246  lightmap->SetShininessRatio( shininess );
247  Dtk_RenderInfosPtr render = Dtk_RenderInfos::Create( "uselessname", lightmap, NULL );
248  face->info()->AddRenderInfos( render );
249  break;
250  }
251 }

◆ 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:1133
Dtk_ModelDisplay::Create
static Dtk_ModelDisplayPtr Create(const Dtk_CameraPtr &inCamera, const Dtk_EntityPtr &inClippingEntity, const Dtk_bool inIsActivated)
Calls full featured constructor to allocate a new object.
JtwSampleLightmap_2_5
Dtk_ErrorStatus JtwSampleLightmap_2_5(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:253
DTK_MESH_NORMAL
#define DTK_MESH_NORMAL
Definition: util_mesh_dtk.hpp:31
Dtk_ID
uint32_t Dtk_ID
Definition: define.h:681
Dtk_transfo
This is the Transformation dedicated class.
Definition: dtk_transfo.hpp:19
Dtk_mesh_face
This is a high level face class.
Definition: util_mesh_dtk.hpp:865
JtwSampleMetadatas_4_3
Dtk_ErrorStatus JtwSampleMetadatas_4_3(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:624
DTK_TYPE_UNKNOWN
@ DTK_TYPE_UNKNOWN
Definition: define.h:26
Dtk_TextureInfos::Create
static Dtk_TextureInfosPtr Create(const TextureMappingTypeEnum &inType)
Create a Dtk_TextureInfosPtr.
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:204
DTK_PICTURE_RGB24
@ DTK_PICTURE_RGB24
Definition: dtk_picture.hpp:28
Dtk_picture::PixelWidth
Dtk_Size_t & PixelWidth()
Retrieves the width (in pixels)
Definition: dtk_picture.hpp:91
AddVertex
void AddVertex(Dtk_MeshPtr mesh, const Dtk_pnt &P, const Dtk_dir &N, float u, float v)
Definition: testlibjtwrite.cpp:94
sampleWriter::CreateCyl
Dtk_BodyPtr CreateCyl(double radius, double height)
Definition: testcreatecube.cpp:1750
sampleWriter::CreateMeshCubeVertexColor
Dtk_MeshPtr CreateMeshCubeVertexColor()
Definition: testcreatemesh.cpp:296
Dtk_LayerInfosSet::Layer
Definition: util_ent_dtk.hpp:519
CreateLayerInfosSet
Dtk_LayerInfosSetPtr CreateLayerInfosSet()
Definition: testlibjtwrite.cpp:674
sampleWriter::CreateMeshPoints
Dtk_MeshPtr CreateMeshPoints()
Points mesh sample.
Definition: testcreatemesh.cpp:436
tess_InitTesselation
int tess_InitTesselation(Dtk_string inWorkingDirectory, double inTolerance)
Init the tesselation library.
DTK_TRUE
#define DTK_TRUE
Definition: define.h:719
Dtk_mesh::Create
static Dtk_MeshPtr Create(int inVertex_format=1, Dtk_bool inBack_face_culling=true)
Constructor.
JtwSamplePMI_MV_association_5_3
Dtk_ErrorStatus JtwSamplePMI_MV_association_5_3(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:770
Dtk_Info::AddRenderInfos
Dtk_ErrorStatus AddRenderInfos(const Dtk_RenderInfosPtr &inRender)
Dtk_string
This is a high level string class.
Definition: dtk_string.hpp:53
Dtk_Jtw_Interface::keepsubcolor
@ keepsubcolor
Definition: jtw.h:30
JtwSampleModelViewTarget_6_2
Dtk_ErrorStatus JtwSampleModelViewTarget_6_2(const Dtk_string &outputFileName, int option)
Definition: testlibjtwrite.cpp:1197
JtwSampleAxis_References_5_7
Dtk_ErrorStatus JtwSampleAxis_References_5_7(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:984
JtwSampleBodyLOD_2_2
Dtk_ErrorStatus JtwSampleBodyLOD_2_2(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:161
JtwSampleMultipleFilesShattered_3_7
Dtk_ErrorStatus JtwSampleMultipleFilesShattered_3_7(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:548
Dtk_RenderInfos::Create
static Dtk_RenderInfosPtr Create(const Dtk_string &inName)
Creates a Dtk_RenderInfosPtr.
Dtk_AxisSystem::create
static Dtk_SmartPtr< Dtk_AxisSystem > create()
Calls default constructor to allocate a new object.
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.
DTK_MESH_XYZ
#define DTK_MESH_XYZ
Definition: util_mesh_dtk.hpp:30
Dtk_LightMap::Create
static Dtk_LightMapPtr Create(Dtk_RGB inAmbiant, Dtk_RGB inDiffuse, Dtk_RGB inSpecular)
Create a Dtk_LightMapPtr.
Dtk_picture::MetricWidth
double & MetricWidth()
Retrieves the width (in mm)
Definition: dtk_picture.hpp:101
tess_ComputeBoundariesFromMesh
void tess_ComputeBoundariesFromMesh(int value)
Set boundaries computation from mesh option. Default value is enabled (1). See tess_getBoundariesFrom...
DTK_MESH_UV_TEXTURES
#define DTK_MESH_UV_TEXTURES
Definition: util_mesh_dtk.hpp:33
SetLightMapOnOneFace
void SetLightMapOnOneFace(Dtk_BodyPtr &body, const Dtk_RGB &ambiant, const Dtk_RGB &diffuse, const Dtk_RGB &specular, float shininess)
Definition: testlibjtwrite.cpp:235
JtwSampleBody_2_1
Dtk_ErrorStatus JtwSampleBody_2_1(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:146
Dtk_Jtw_Interface::xtbrep
@ xtbrep
Definition: jtw.h:26
Dtk_picture::PixelHeight
Dtk_Size_t & PixelHeight()
Retrieves the height (in pixels)
Definition: dtk_picture.hpp:96
JtwSampleWireBody_2_3
Dtk_ErrorStatus JtwSampleWireBody_2_3(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:187
MakeReferenceAxis
Dtk_BodyPtr MakeReferenceAxis()
Definition: testlibjtwrite.cpp:951
Dtk_picture::FileType
Dtk_PictureType & FileType()
Retrieves the file type.
Definition: dtk_picture.hpp:87
JtwSampleModelview_sections_5_5
Dtk_ErrorStatus JtwSampleModelview_sections_5_5(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:855
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:421
JtwSamplePMI_Geom_association_5_4
Dtk_ErrorStatus JtwSamplePMI_Geom_association_5_4(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:801
JtwSampleLayers_4_4
Dtk_ErrorStatus JtwSampleLayers_4_4(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:646
Dtk_Jtw_Interface::version95
@ version95
Definition: jtw.h:41
sampleWriter::CreateMeshWire
Dtk_MeshPtr CreateMeshWire()
Wire mesh sample.
Definition: testcreatemesh.cpp:385
Dtk_picture::MetricHeight
double & MetricHeight()
Retrieves the height (in mm)
Definition: dtk_picture.hpp:105
Dtk_picture::File
Dtk_tab< char > & File()
Retrieves the binary file.
Definition: dtk_picture.hpp:83
JtwSampleInstancesVisibily_3_5
Dtk_ErrorStatus JtwSampleInstancesVisibily_3_5(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:470
Dtk_picture
This class defines a picture.
Definition: dtk_picture.hpp:45
Dtk_Int64
int64_t Dtk_Int64
Definition: define.h:684
sampleWriter::CreateFdtDatum
Dtk_FdtPtr CreateFdtDatum()
Creates simple Datum.
Definition: testcreatefdt.cpp:15
Dtk_TextureInfos::StoredUVMapping
@ StoredUVMapping
Definition: dtk_render.hpp:38
Dtk_tab::resize
void resize(Dtk_Size_t n, const T &t)
Resizes the array.
Definition: util_stl_dtk.hpp:604
DTK_TYPE_FACE
@ DTK_TYPE_FACE
Definition: define.h:132
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:592
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:59
Dtk_string::c_str
const char * c_str() const
Retrieve the ASCII conversion string.
Dtk_Jtw_Interface::version80
@ version80
Definition: jtw.h:35
CreateTextureMesh
Dtk_MeshPtr CreateTextureMesh()
Definition: testlibjtwrite.cpp:99
SampleLossyCompression_2_6
Dtk_ErrorStatus SampleLossyCompression_2_6(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:283
Dtk_Point::Create
static Dtk_PointPtr Create(const Dtk_Point &in)
Calls copy constructor to allocate a new object.
JtwSampleLayerNames_4_5
Dtk_ErrorStatus JtwSampleLayerNames_4_5(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:682
JtwSampleAssembly_3_1
Dtk_ErrorStatus JtwSampleAssembly_3_1(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:310
JtwSampleSimplePMI_5_1
Dtk_ErrorStatus JtwSampleSimplePMI_5_1(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:713
Dtk_string::mkdir
int mkdir() const
File Utility : Create a Directory.
Dtk_pnt
This is a mathematical point class.
Definition: dtk_pnt.hpp:20
JtwSamplePMI_Geom_one_association_5_8
Dtk_ErrorStatus JtwSamplePMI_Geom_one_association_5_8(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:1028
MakeReferencePlane
Dtk_BodyPtr MakeReferencePlane()
Definition: testlibjtwrite.cpp:933
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()
Calls default constructor to allocate a new object.
Dtk_Line::Create
static Dtk_LinePtr Create(const Dtk_Line &in)
Calls copy constructor to allocate a new object.
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:378
JtwSampleUnits_4_2
Dtk_ErrorStatus JtwSampleUnits_4_2(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:607
DTK_TYPE_EDGE
@ DTK_TYPE_EDGE
Definition: define.h:119
Dtk_tab
This is a high level array class.
Definition: util_stl_dtk.hpp:84
Dtk_LayerInfosSet::Create
static Dtk_LayerInfosSetPtr Create()
Calls default constructor to allocate a new object.
Dtk_transfo::addTranslate
void addTranslate(const Dtk_dir &V)
Translate the Dtk_transfo.
Dtk_tab::size
Dtk_Size_t size() const
Returns the size of the array.
Definition: util_stl_dtk.hpp:503
MakeReferencePoint
Dtk_BodyPtr MakeReferencePoint()
Definition: testlibjtwrite.cpp:968
sampleWriter::CreateCurves
Dtk_BodyPtr CreateCurves()
Definition: testcreatecube.cpp:1357
sampleWriter::CreateCurvesStyle
Dtk_BodyPtr CreateCurvesStyle()
Definition: testcreatecube.cpp:1434
JtwSamplePartInstances_3_2
Dtk_ErrorStatus JtwSamplePartInstances_3_2(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:344
MakePmiOnRoot
Dtk_ErrorStatus MakePmiOnRoot(Dtk_Jtw_Interface &J, int option)
Definition: testlibjtwrite.cpp:1145
tess_EndTesselation
void tess_EndTesselation()
Free the data used by tesselation library.
JtwSampleSimpleModelview_5_2
Dtk_ErrorStatus JtwSampleSimpleModelview_5_2(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:733
dtkNoError
@ dtkNoError
Definition: error_dtk.hpp:149
Dtk_tab::push_back
void push_back(const T &x)
Inserts an element at the end of the array.
Definition: util_stl_dtk.hpp:416
Dtk_Shell::Create
static Dtk_ShellPtr Create(const Dtk_BodyPtr &inParentBody)
Create a shell in a body.
Dtk_mesh_face::info
Dtk_InfoPtr & info()
acces to class info of mesh_face
Dtk_Jtw_Interface
This is Jt Interface class used to write Jt files.
Definition: jtw.h:21
CreateModelDisplay
Dtk_ModelDisplayPtr CreateModelDisplay(const Dtk_string &name)
Definition: testlibjtwrite.cpp:1068
Dtk_RGB
Definition: dtk_rgb.hpp:7
AllJtWTests
int AllJtWTests(const Dtk_string &inResultDirectory)
Definition: testlibjtwrite.cpp:1238
JtwSampleMultipleFilesPerPart_3_6
Dtk_ErrorStatus JtwSampleMultipleFilesPerPart_3_6(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:505
JtwSamplePMI_PMI_association_5_6
Dtk_ErrorStatus JtwSamplePMI_PMI_association_5_6(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:892
Dtk_Info::create
static Dtk_SmartPtr< Dtk_Info > create()
Calls default constructor to allocate a new object.
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:14
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 *const inExplode_absolute=NULL)
Connect a ModelView on an Instance, for part representation restriction in a modelview.
Dtk_Jtw_Interface::overwritecolor
@ overwritecolor
Definition: jtw.h:31
JtwSampleModelViewAsm_6_1
Dtk_ErrorStatus JtwSampleModelViewAsm_6_1(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:1080
JtwSampleBodyVisibility_2_4
Dtk_ErrorStatus JtwSampleBodyVisibility_2_4(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:208
Makeroute
Dtk_tab< Dtk_Int64 > Makeroute(Dtk_Int64 r[], int nb)
Definition: testlibjtwrite.cpp:1125
Shift
void Shift(T &mesh, double sh)
Definition: testlibjtwrite.cpp:42
Dtk_mesh_face::add_triangles
int add_triangles(Dtk_tab< Dtk_UInt32 > *inIndices)
Add one of multiple triangles.
JtwSampleTextures_1_3
Dtk_ErrorStatus JtwSampleTextures_1_3(const Dtk_string &outputFileName)
Definition: testlibjtwrite.cpp:130
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 .
Dtk_Entity::info
Dtk_InfoPtr & info()