@Josh_Lopez-Binder wrote:
Continuing the discussion from How can I use Plane.FitPlaneToPoints from Python correctly?:
I was also confused when I initially tried to use a function that modified an input variable in-place, using rhinocommon and Python. I got this error when I tried passing in a python boolean to Mesh.TopologyEdges.GetEdgesForFace(Int32,Boolean[]):
TypeError: expected StrongBox[Array[bool]], got boolSo, to avoid similar confusion, here is an example using the Mesh.TopologyEdges.GetEdgesForFace(Int32,Boolean[])
method. The method "gets the indices of the edges that surround the given face."import clr import System import Rhino.Geometry as geom import rhinoscriptsyntax as rs import scriptcontext def get_edges_orientations_for_face(mesh,face): ''' returns a list of tuples: [(edgeIndex,alignedWithFace),...] where edgeIndex is the index of the TopologyEdge in the mesh and alignedWithFace is a boolean which is True if the edge direction is consistent with the face ''' orientations = clr.StrongBox[System.Array[bool]]() edges = mesh.TopologyEdges.GetEdgesForFace(face,orientations) edges = list(edges) orientations = list(orientations.Value) edges_with_orientations = zip(edges,orientations) return edges_with_orientations def make_mesh(): ''' creates an upright square mesh with two triangular faces ''' vertices = [] vertices.append((0.0,0.0,0.0)) vertices.append((5.0,0.0,0.0)) vertices.append((5.0,0.0,5.0)) vertices.append((0.0,0.0,5.0)) face_vertices = [] face_vertices.append((0,1,3,3)) face_vertices.append((1,2,3,3)) rhino_mesh = create_mesh(vertices,face_vertices) return rhino_mesh def create_mesh(vertices,face_vertices): '''add a mesh to doc and get the Rhino.Geometry.Mesh object''' mesh_GUID = rs.AddMesh( vertices, face_vertices ) obj = scriptcontext.doc.Objects.Find(mesh_GUID) return obj.Geometry if __name__ == "__main__": mesh = make_mesh() face = 0 edges_with_orientations = get_edges_orientations_for_face(mesh,face) print "for face {}, got oriented edge tuples: {}".format(face,edges_with_orientations)I found it very helpful to look at IronPython documentation. The section on Typed Arrays helped significantly.
Posts: 1
Participants: 1