import Rhino import rhinoscriptsyntax as rs import scriptcontext def GetCurvesAndEdges(): """ Return segmento di polylinea , linea, edge """ filter= Rhino.DocObjects.ObjectType.Curve rc, objrefs = Rhino.Input.RhinoGet.GetOneObject("Seleziona segmento o edge da quotare", False, filter) if rc != Rhino.Commands.Result.Success: return rc pp=Rhino.DocObjects.ObjRef.CurveParameter(objrefs) #print "c",objrefs.Curve() pt=objrefs.SelectionPoint() idobj=objrefs.Object() crv= objrefs.Curve() #rs.AddPoint(pt) a=Rhino.Geometry.Curve.DuplicateSegments(objrefs.Curve()) #if crv.IsPolyline(): if len(a)==0: segmento=scriptcontext.doc.Objects.AddCurve(objrefs.Curve()) rs.UnselectAllObjects() rs.SelectObject(segmento) rs.Command("_Dim _Object") rs.DeleteObject(segmento) return cc=[] for i in a: seg=scriptcontext.doc.Objects.AddCurve(i) param=rs.CurveClosestPoint(seg,pt) cp=rs.EvaluateCurve(seg,param) if rs.PointCompare(pt,cp,0.001): segmento=seg print "seg",segmento else: cc.append(seg) #rs.MessageBox(segmento) rs.UnselectAllObjects() #if rs.IsLine(segmento): rs.SelectObject(segmento) rs.Command("_Dim _Object") rs.DeleteObject(segmento) rs.DeleteObjects(cc) GetCurvesAndEdges()