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; }
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); }