Example #1
0
        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);
        }
Example #2
0
        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);
        }