<html><head></head><body><div style="font-family:Helvetica Neue, Helvetica, Arial, sans-serif;font-size:16px;"><div><div>This code should work to create the mesh. I have also attached the produced mesh in .stl and .off format for possible evaluation.</div><div><br></div><div> double tube_radious = 2.5;<br> double MaxToppt[3];<br> MaxToppt[2]=15;<br> double center1[3] = { 0, 0, 0 };<br><br> double CornerPt1[3];<br> double CornerPt2[3];<br> double CornerPt3[3];<br> double CornerPt4[3];<br> double CornerPt5[3];<br> double CornerPt6[3];<br><br> CornerPt2[0] = center1[0] + tube_radious + 1;<br> CornerPt2[1] = center1[1] - 10;<br> CornerPt1[0] = center1[0] - tube_radious - 1; ;<br> CornerPt1[1] = center1[1] - 10;<br> CornerPt3[0] = center1[0] + tube_radious + 1;<br> CornerPt3[1] = center1[1];<br> CornerPt4[0] = center1[0] + tube_radious;<br> CornerPt4[1] = center1[1] + MaxToppt[2] + 10;<br> CornerPt5[0] = center1[0] - tube_radious - (MaxToppt[2] + 10) * 0.7;<br> CornerPt5[1] = center1[1] + (MaxToppt[2] + 10) * 0.7;<br> CornerPt6[0] = center1[0] - tube_radious - 1;<br> CornerPt6[1] = center1[1];<br> CornerPt1[2] = 0;<br> CornerPt2[2] = 0;<br> CornerPt3[2] = 0;<br> CornerPt4[2] = 0;<br> CornerPt5[2] = 0;<br> CornerPt6[2] = 0;<br><br> vtkSmartPointer<vtkPoints> pointsImp_first = vtkSmartPointer<vtkPoints>::New();<br> pointsImp_first->InsertNextPoint(CornerPt1);<br> pointsImp_first->InsertNextPoint(CornerPt2);<br> pointsImp_first->InsertNextPoint(CornerPt3);<br> pointsImp_first->InsertNextPoint(CornerPt4);<br> pointsImp_first->InsertNextPoint(CornerPt5);<br> pointsImp_first->InsertNextPoint(CornerPt6);<br><br> vtkSmartPointer<vtkCellArray> polygonsImp_first = vtkSmartPointer<vtkCellArray>::New();// Add the polygon to a list of polygons<br> polygonsImp_first->Allocate(4, 6);<br> polygonsImp_first->InsertNextCell(3);<br> polygonsImp_first->InsertCellPoint(0);<br> polygonsImp_first->InsertCellPoint(1);<br> polygonsImp_first->InsertCellPoint(2);<br> polygonsImp_first->InsertNextCell(3);<br> polygonsImp_first->InsertCellPoint(0);<br> polygonsImp_first->InsertCellPoint(2);<br> polygonsImp_first->InsertCellPoint(5);<br> polygonsImp_first->InsertNextCell(3);<br> polygonsImp_first->InsertCellPoint(2);<br> polygonsImp_first->InsertCellPoint(3);<br> polygonsImp_first->InsertCellPoint(5);<br> polygonsImp_first->InsertNextCell(3);<br> polygonsImp_first->InsertCellPoint(3);<br> polygonsImp_first->InsertCellPoint(4);<br> polygonsImp_first->InsertCellPoint(5);<br><br> vtkSmartPointer<vtkPolyData> polygonPolyImp_first = vtkSmartPointer<vtkPolyData>::New();<br> polygonPolyImp_first->Initialize();<br> polygonPolyImp_first->SetPoints(pointsImp_first);<br> polygonPolyImp_first->SetPolys(polygonsImp_first);<br><br> //****************************************** Transform <br> vtkSmartPointer<vtkTransform> RotatetwicetranslateTransform = vtkSmartPointer<vtkTransform>::New();<br> RotatetwicetranslateTransform->RotateWXYZ(90, 0, 1, 0);//rotate around y(0,1,0) axis<br> RotatetwicetranslateTransform->RotateWXYZ(90, 0, 0, 1);<br> RotatetwicetranslateTransform->Translate(0, 0, 8);<br> vtkSmartPointer<vtkTransformPolyDataFilter> RotatetwiceFilter = vtkSmartPointer<vtkTransformPolyDataFilter>::New();<br> RotatetwiceFilter->SetInputData(polygonPolyImp_first);<br> RotatetwiceFilter->SetTransform(RotatetwicetranslateTransform);<br> RotatetwiceFilter->Update();<br><br> vtkSmartPointer<vtkPolyData> allpolygonestransformed = vtkSmartPointer<vtkPolyData>::New();<br> allpolygonestransformed = RotatetwiceFilter->GetOutput();<br><br> // Show transformed polygon<br> //vtkSmartPointer<vtkPolyDataMapper> trandformedmapper = vtkSmartPointer<vtkPolyDataMapper>::New();<br> //trandformedmapper->SetInputData(allpolygonestransformed);<br> //vtkSmartPointer<vtkActor> transformedactor = vtkSmartPointer<vtkActor>::New();<br> //transformedactor->SetMapper(trandformedmapper);<br> //transformedactor->GetProperty()->SetColor(1, 0, 0);<br> //<br> //renderer->AddActor(transformedactor);<br> //this->ui.qvtkWidget->GetRenderWindow()->Render();<br><br> //**********************************************************<br> // Extrude the contour along the normal to the plane which the contour lies on.<br> vtkSmartPointer<vtkLinearExtrusionFilter> extrudeFilter4 = vtkSmartPointer<vtkLinearExtrusionFilter>::New();<br> extrudeFilter4->SetInputData(allpolygonestransformed);<br> extrudeFilter4->SetScaleFactor(-18);<br> extrudeFilter4->SetExtrusionTypeToNormalExtrusion();<br> extrudeFilter4->SetVector(1, 0, 0);<br> extrudeFilter4->Update();<br><br> vtkSmartPointer<vtkTriangleFilter> ExtrudedTri = vtkSmartPointer<vtkTriangleFilter>::New();<br> ExtrudedTri->SetInputConnection(extrudeFilter4->GetOutputPort());<br> ExtrudedTri->Update();<br><br> vtkSmartPointer<vtkPolyData> extruded = vtkSmartPointer<vtkPolyData>::New();<br> extruded = ExtrudedTri->GetOutput();<br><br> vtkSmartPointer<vtkCleanPolyData> Clean = vtkSmartPointer<vtkCleanPolyData>::New();<br> Clean->SetInputData(extruded);<br> Clean->SetTolerance(0.0);<br> Clean->PointMergingOn();<br> Clean->ConvertLinesToPointsOn();<br> Clean->ConvertPolysToLinesOn();<br> Clean->ConvertStripsToPolysOn();<br> Clean->Update();<br> <br> vtkSmartPointer<vtkPolyData> alltriclean = vtkSmartPointer<vtkPolyData>::New();<br> alltriclean = Clean->GetOutput();<br> <br> vtkSmartPointer<vtkSTLWriter> stlWriter0 = vtkSmartPointer<vtkSTLWriter>::New();<br> stlWriter0->SetFileName("C:\\alltricleansubdividedsASCII.stl");<br> stlWriter0->SetFileTypeToASCII();<br> stlWriter0->SetInputData(alltriclean);<br> stlWriter0->Update();<br> stlWriter0->Write();<br></div><div><br></div><div><br></div><div><br></div><div>Thank you so much.<br></div><div class="ydp9114db94signature"><br></div></div>
<div><br></div><div><br></div>
<div id="yahoo_quoted_5067438638" class="yahoo_quoted">
<div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;color:#26282a;">
<div>
On Tuesday, January 2, 2018, 6:47:45 PM GMT+2, Bill Lorensen <bill.lorensen@gmail.com> wrote:
</div>
<div><br></div>
<div><br></div>
<div><div dir="ltr">Can you post a small, compilable example that illustrates the problem?<br clear="none"><div class="yqt9220034065" id="yqtfd39399"><br clear="none">On Tue, Jan 2, 2018 at 7:28 AM, Majid Mohammad sadeghi via vtkusers<br clear="none"><<a shape="rect" ymailto="mailto:vtkusers@vtk.org" href="mailto:vtkusers@vtk.org">vtkusers@vtk.org</a>> wrote:<br clear="none">> Dear All,<br clear="none">><br clear="none">> I am exrtuding a 2D polygon using vtkLinearExtrusionFilter, the resulting<br clear="none">> polydata has misoriented faces on the mesh, meaning that for a closed mesh,<br clear="none">> faces inside and outside direction is mixed up. (for example when I open the<br clear="none">> data with meshlab and look at the normals, some are pointing in and some<br clear="none">> outwards)<br clear="none">><br clear="none">> How is it possible to orient order of each triangle vertices in a mesh so<br clear="none">> that there is a consistancy betwwen all faces?<br clear="none">><br clear="none">> Thanks for the help.<br clear="none">><br clear="none">><br clear="none">> _______________________________________________<br clear="none">> Powered by www.kitware.com<br clear="none">><br clear="none">> Visit other Kitware open-source projects at<br clear="none">> <a shape="rect" href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br clear="none">><br clear="none">> Please keep messages on-topic and check the VTK FAQ at:<br clear="none">> <a shape="rect" href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br clear="none">><br clear="none">> Search the list archives at: <a shape="rect" href="http://markmail.org/search/?q=vtkusers" target="_blank">http://markmail.org/search/?q=vtkusers</a><br clear="none">><br clear="none">> Follow this link to subscribe/unsubscribe:<br clear="none">> <a shape="rect" href="https://vtk.org/mailman/listinfo/vtkusers" target="_blank">https://vtk.org/mailman/listinfo/vtkusers</a></div><br clear="none">><br clear="none"><br clear="none"><br clear="none"><br clear="none">-- <br clear="none">Unpaid intern in BillsBasement at noware dot com<div class="yqt9220034065" id="yqtfd17081"><br clear="none"></div></div></div>
</div>
</div></div></body></html>