public static List <FD_Object> GeneratePanelList(List <Mesh> items) { List <FD_Object> panel_list = new List <FD_Object>(); foreach (Mesh ori_mesh in items) { foreach (MeshFace m_face in ori_mesh.Faces) { FD_Vertex temp_v1 = new FD_Vertex(ori_mesh.Vertices[m_face.A].X, ori_mesh.Vertices[m_face.A].Y, ori_mesh.Vertices[m_face.A].Z); FD_Vertex temp_v2 = new FD_Vertex(ori_mesh.Vertices[m_face.B].X, ori_mesh.Vertices[m_face.B].Y, ori_mesh.Vertices[m_face.B].Z); FD_Vertex temp_v3 = new FD_Vertex(ori_mesh.Vertices[m_face.C].X, ori_mesh.Vertices[m_face.C].Y, ori_mesh.Vertices[m_face.C].Z); if (m_face.IsTriangle) { panel_list.Add(new FD_Panel(temp_v3, temp_v2, temp_v1)); } else if (m_face.IsQuad) { FD_Vertex temp_v4 = new FD_Vertex(ori_mesh.Vertices[m_face.D].X, ori_mesh.Vertices[m_face.D].Y, ori_mesh.Vertices[m_face.D].Z); panel_list.Add(new FD_Panel(temp_v4, temp_v3, temp_v2, temp_v1)); } else { } } } return(panel_list); }
public static List <FD_Object> GenerateCubeList(List <dynamic> items) { List <FD_Object> cube_list = new List <FD_Object>(); foreach (dynamic ori_box in items) { if (ori_box.Value is Box) { Point3d[] temp_list = ori_box.Value.GetCorners(); FD_Vertex vertex1 = new FD_Vertex(temp_list[3].X, temp_list[3].Y, temp_list[3].Z); FD_Vertex vertex2 = new FD_Vertex(temp_list[2].X, temp_list[2].Y, temp_list[2].Z); FD_Vertex vertex3 = new FD_Vertex(temp_list[1].X, temp_list[1].Y, temp_list[1].Z); FD_Vertex vertex4 = new FD_Vertex(temp_list[0].X, temp_list[0].Y, temp_list[0].Z); cube_list.Add(new FD_Cube(vertex1, vertex2, vertex3, vertex4, ori_box.Value.Z.Length)); } else if (ori_box.Value is FD_Cube) { cube_list.Add(ori_box.Value); } else if (ori_box.Value is Mesh || ori_box.Value is Brep) { Mesh ori_mesh; if (ori_box.Value is Brep) { Mesh[] converted_list = Mesh.CreateFromBrep(ori_box.Value, new MeshingParameters()); ori_mesh = new Mesh(); foreach (Mesh m in converted_list) { ori_mesh.Append(m); } } else { ori_mesh = ori_box.Value; } FD_GeoMesh mo = new FD_GeoMesh(); foreach (Point3d v in ori_mesh.Vertices) { mo.Vertices.Add(new FD_Vertex(v.X, v.Y, v.Z)); } foreach (MeshFace f in ori_mesh.Faces) { if (f.IsTriangle) { mo.Faces.Add(new FD_Face(f.A, f.B, f.C)); } else if (f.IsQuad) { mo.Faces.Add(new FD_Face(f.A, f.B, f.C)); mo.Faces.Add(new FD_Face(f.C, f.D, f.A)); } } cube_list.Add(mo); } } return(cube_list); }