コード例 #1
0
 public static Mesh Hare_to_RhinoMesh(Hare.Geometry.Topology T)
 {
     Mesh m_RhinoMesh = new Mesh();
     int ct = 0;
     for (int i = 0; i < T.Polygon_Count; i++)
     {
         Hare.Geometry.Point[] Pt = T.Polygon_Vertices(i);
         int[] F = new int[T.Polys[i].VertextCT];
         for (int j = 0; j < T.Polys[i].VertextCT; j++)
         {
             m_RhinoMesh.Vertices.Add(new Point3d(Pt[j].x, Pt[j].y, Pt[j].z) / 90);
             F[j] = ct;
             ct++;
         }
         if (F.Length == 3)
         {
             m_RhinoMesh.Faces.AddFace(F[2], F[1], F[0]);
         }
         else
         {
             m_RhinoMesh.Faces.AddFace(F[2], F[1], F[0], F[3]);
         }
     }
     m_RhinoMesh.Normals.ComputeNormals();
     m_RhinoMesh.Vertices.CombineIdentical(true, true);
     m_RhinoMesh.Compact();
     return m_RhinoMesh;
 }
コード例 #2
0
 public static void Plot_Hare_Topology(Hare.Geometry.Topology T)
 {
     Mesh m_RhinoMesh = new Mesh();
     int ct = 0;
     for (int i = 0; i < T.Polygon_Count; i++)
     {
         Hare.Geometry.Point[] Pt = T.Polygon_Vertices(i);
         int[] F = new int[T.Polys[i].VertextCT];
         for (int j = 0; j < T.Polys[i].VertextCT; j++)
         {
             m_RhinoMesh.Vertices.Add(new Point3d(Pt[j].x, Pt[j].y, Pt[j].z) / 90);
             F[j] = ct;
             ct++;
         }
         if (F.Length == 3)
         {
             m_RhinoMesh.Faces.AddFace(F[2], F[1], F[0]);
         }
         else
         {
             m_RhinoMesh.Faces.AddFace(F[2], F[1], F[0], F[3]);
         }
     }
     m_RhinoMesh.FaceNormals.ComputeFaceNormals();
     m_RhinoMesh.Normals.ComputeNormals();
     Rhino.RhinoDoc.ActiveDoc.Objects.Add(m_RhinoMesh);
 }