<div dir="ltr"><div><div>Hi ! <br></div>I am trying to clip a vtkPolyhedron in a vtkUnstructuredGrid with a vtkBoxClipDataSet, but the whole disappears after clipping. <br></div><div>I am using :<br>vtkSmartPointer<vtkBoxClipDataSet> clipper =vtkSmartPointer<vtkBoxClipDataSet>::New();<br>clipper->SetInputData(Grid);<br>clipper->SetBoxClip(plan[1]->GetNormal(),plan[1]->GetOrigin(),plan[2]->GetNormal(),plan[2]->GetOrigin(),plan[3]->GetNormal(),plan[3]->GetOrigin(),plan[0]->GetNormal(),plan[0]->GetOrigin(),plan[4]->GetNormal(),plan[4]->GetOrigin(),plan[5]->GetNormal(),plan[5]->GetOrigin());<br></div><div>clipper->Update();<br>vtkDataSetMapper* clipMapper =vtkDataSetMapper::New();<br>clipMapper->ImmediateModeRenderingOn();<br>clipMapper->SetInputData(clipper->GetOutput());<br></div><div>actor->SetMapper(clipMapper);<br><br></div><div>The grid is defined with this function, and without clipping it works : <br>void CTestMDI2109Doc::MakePolyhedron(int numpiece,vtkSmartPointer<vtkUnstructuredGrid> uGrid,\<br>                    vtkSmartPointer<vtkCellArray> hexs,int nbsommet,int neg0pos1,\<br>                    int x0y1z2, vtkSmartPointer<vtkPoints> points, float epaisseur,int nbface, int nbmaxsommetface)<br>{<br>      int coef=1; double x=0,y=0,z=0;<br>    if (neg0pos1==0) coef=-1;<br>    if (x0y1z2==0) <br>        x=coef*epaisseur;<br>    if (x0y1z2==1) <br>        y=coef*epaisseur;<br>    if (x0y1z2==2) <br>        z=coef*epaisseur;<br> <br>    double* pt;<br>  vtkSmartPointer<vtkPoints> Points =vtkSmartPointer<vtkPoints>::New();<br>  for (int i=0; i<nbmaxsommetface; i++){<br>      Points->InsertNextPoint(points->GetPoint(i));<br>  }<br>  for (int j=nbmaxsommetface; j<nbsommet;j++){<br>      pt=points->GetPoint(j-nbmaxsommetface);<br>      pt[0]+=x; pt[1]+=y; pt[2]+=z;<br>      Points->InsertNextPoint(pt);<br>  }<br><br>  vtkIdType PointsIds[NBSOMMETMAX];<br>  for (int k=0; k<nbsommet; k++){PointsIds[k]=k;}<br> <br>  vtkIdType Face[NBFACEMAX][NBSOMMETFACEMAX];<br>  for (int l=0; l<nbface ; l++){<br>      for (int n=0; n<nbmaxsommetface; n++){<br>      if (l==0) Face[l][n]=n;<br>      if (l==1){if (n==0) Face[l][n]=0;<br>                else if (n==1) Face[l][n]=1;<br>                else if (n==2) Face[l][n]=6;<br>                else Face[l][n]=5;}<br>        if (l==2){if (n==0) Face[l][n]=1;<br>                else if (n==1) Face[l][n]=2;<br>                else if (n==2) Face[l][n]=7;<br>                else Face[l][n]=6;}<br>      if (l==3){if (n==0) Face[l][n]=2;<br>                else if (n==1) Face[l][n]=3;<br>                else if (n==2) Face[l][n]=8;<br>                else  Face[l][n]=7;}<br>        if (l==4){if (n==0) Face[l][n]=3;<br>                else if (n==1) Face[l][n]=4;<br>                else if (n==2) Face[l][n]=9;<br>                else  Face[l][n]=8;}<br>        if (l==5){if (n==0) Face[l][n]=4;<br>                else if (n==1) Face[l][n]=0;<br>                else if (n==2) Face[l][n]=5;<br>                else Face[l][n]=9;}<br>      if (l==6) Face[l][n]=n+nbmaxsommetface-1;<br>      }<br>  }<br><br>  vtkSmartPointer<vtkCellArray> Faces =vtkSmartPointer<vtkCellArray>::New();<br>  for (int i = 0; i < nbface; i++)<br>    {<br>   Faces->InsertNextCell(nbmaxsommetface, Face[i]);<br>    }<br><br>  uGrid->InsertNextCell(VTK_POLYHEDRON,nbsommet, PointsIds,nbface, Faces->GetPointer());<br>  uGrid->SetPoints(Points);<br>}<br><br></div><div>If someone has an any idea :) <br></div><div>Thanks,<br></div><div>Amélie<br></div></div>