/// <summary> /// 进行三维结构的转换 /// </summary> /// <param name="degree"></param> /// <param name="polyData"></param> /// <param name="info"></param> /// <returns></returns> private static vtkPolyData Extrude3DSection(float degree, vtkPolyData polyData, ModelingBaseInfo info) { //进行拉伸以构造的三维实体 vtkRotationalExtrusionFilter extrude = vtkRotationalExtrusionFilter.New(); extrude.SetInput(polyData); extrude.SetResolution(80); extrude.SetAngle(degree);//旋转 extrude.CappingOn(); vtkPolyDataNormals normals = vtkPolyDataNormals.New(); normals.SetInput(extrude.GetOutput()); normals.SetFeatureAngle(100); //进行转换 vtkTransform transform = vtkTransform.New(); transform.RotateX(info.Angle); //逆时针为正,顺时针为负 transform.Translate(info.BaseCoordinate.X, info.BaseCoordinate.Y, info.BaseCoordinate.Z); //先旋转后平移 vtkTransformFilter transFilter = vtkTransformFilter.New(); transFilter.SetTransform(transform); transFilter.SetInput(normals.GetOutput()); //vtkTriangleFilter filter = vtkTriangleFilter.New(); //filter.SetInput(transFilter.GetOutput()); //return filter.GetPolyDataInput(0); vtkCleanPolyData clearPolydata = vtkCleanPolyData.New();//清除重合的点和片 clearPolydata.SetInput(transFilter.GetOutput()); return(clearPolydata.GetOutput()); //return transFilter.GetPolyDataOutput(); }