+// ======================================================== test_replace1
+int test_replace1 (int nbargs, cpchar tabargs[])
+{
+ const int size_x = 3;
+ const int size_y = 3;
+ const int size_z = 3;
+ const int size_cyl = 4;
+
+ Hex::Hex mon_ex;
+ Hex::Document* doc = mon_ex.addDocument ();
+ Hex::Vector* vx = doc->addVector (1, 0, 0);
+ Hex::Vector* vz = doc->addVector (0, 0, 1);
+ Hex::Vertex* ori = doc->addVertex (8, 0, 0);
+ const double rint = 1;
+ const double rext = 3;
+ const double angle = 360;
+ const double haut = 1;
+ const int nr = 1;
+ const int nh = 1;
+
+ Hex::Elements* grid = doc->makeCartesianTop (size_x,size_y,size_z);
+ Hex::Elements* pipe = doc->makePipeUni (ori, vx, vz, rint, rext, angle,
+ haut, nr, size_cyl, nh);
+
+ Hex::Vertex* c1 = grid->getVertexIJK (1, 2, size_z);
+ Hex::Vertex* c2 = grid->getVertexIJK (1, 1, size_z);
+ Hex::Vertex* c3 = grid->getVertexIJK (2, 1, size_z);
+
+ Hex::Vertex* p1 = pipe->getVertexIJK (1, 1, 1);
+ Hex::Vertex* p2 = pipe->getVertexIJK (1, 2, 1);
+ Hex::Vertex* p3 = pipe->getVertexIJK (1, 3, 1);
+
+ Hex::Quads qpattern;
+ for (int na=0; na<size_cyl; ++na)
+ {
+ Hex::Quad* quad =pipe->getQuadIJ (0, na, 1);
+ quad->setColor (2);
+ qpattern.push_back (quad);
+ }
+
+ c1->setColor (6);
+ c2->setColor (4);
+ c3->setColor (2);
+
+ p1->setColor (6);
+ p2->setColor (5);
+ p3->setColor (4);
+ doc->saveVtk ("replace0.vtk");
+
+ Hex::Elements* rep = doc->replaceHexa (qpattern, p1,c1, p2,c2, p3,c3);
+ HexDisplay (rep->isValid());
+ Hex::what ();
+
+ doc->saveVtk ("replace1.vtk");
+ doc->saveVtk ("replace2.vtk");
+ doc->saveVtk ("replace3.vtk");
+ return HOK;
+}
+// ======================================================== test_replace
+int test_replace (int nbargs, cpchar tabargs[])
+{
+ const int size_x = 5;
+ const int size_y = 5;
+ const int size_z = 3;
+ const int size_cyl = 12;
+
+ Hex::Hex mon_ex;
+ Hex::Document* doc = mon_ex.addDocument ();
+ Hex::Vector* vx = doc->addVector (1, 0, 0);
+ Hex::Vector* vz = doc->addVector (0, 0, 1);
+ Hex::Vertex* ori = doc->addVertex (8, 0, 0);
+ const double rint = 2;
+ const double rext = 3;
+ const double angle = 360;
+ const double haut = 1;
+ const int nr = 1;
+ const int nh = 1;
+
+ Hex::Elements* grid = doc->makeCartesianTop (size_x,size_y,size_z);
+ Hex::Elements* pipe = doc->makePipeUni (ori, vx, vz, rint, rext, angle,
+ haut, nr, size_cyl, nh);
+
+ Hex::Vertex* c1 = grid->getVertexIJK (2, 1, size_z);
+ Hex::Vertex* c2 = grid->getVertexIJK (3, 1, size_z);
+
+ Hex::Vertex* p1 = pipe->getVertexIJK (1, 7, 1);
+ Hex::Vertex* p2 = pipe->getVertexIJK (1, 8, 1);
+
+ Hex::Quads qpattern, qtarget;
+ for (int na=0; na<size_cyl; ++na)
+ {
+ Hex::Quad* quad =pipe->getQuadIJ (0, na, 1);
+ quad->setColor (2);
+ qpattern.push_back (quad);
+ }
+
+ for (int ni=1; ni<size_x-1; ++ni)
+ for (int nj=1; nj<size_y-1; ++nj)
+ {
+ cout << " grid->getQuad (" << ni << "," << nj << ")\n";
+ Hex::Quad* quad = grid->getQuadIJ (ni, nj, size_z);
+ quad->setColor (2);
+ qtarget.push_back (quad);
+ }
+
+ c1->setColor (6);
+ c2->setColor (4);
+
+ p1->setColor (6);
+ p2->setColor (4);
+ doc->saveVtk ("replace0.vtk");
+
+ Hex::Elements* rep = doc->replace (qpattern, qtarget, p1,c1, p2,c2);
+ HexDisplay (rep->isValid());
+ Hex::what ();
+
+ doc->saveVtk ("replace1.vtk");
+ doc->saveVtk ("replace2.vtk");
+ return HOK;
+}