<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>