Per gli scriptomani
Qui sotto è allegato uno script in Python che si comporta in modo strano. Lo script mette le quote (lungo X o lungo Y) dei lati di una polylinea come nell’immagine allegata o qualsiasi altra.
Se clicco la il lato vicino allo spigolo( cerchio rosso) mi mette la quota esattamente se clicco il lato in posizione centrale (cerchio verde) mette la quota tra un estremo e il punto dove ho cliccato come nell’immagine allegata.
Cosa ulteriormente strana è che: chiudo Rhino e lo riapro , disegno una polylinea , lancio lo script e clicco su un lato lontano dallo spigolo mette la quota precisa la prima volta e successivamente torna il casino di prima.
Vorrei che qualcuno lo provasse per vedere cosa succede su altri computer.
Ciao Vittorio
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()
#rs.AddPoint(pt)
a=Rhino.Geometry.Curve.DuplicateSegments(objrefs.Curve())
if len(a)==0:
segmento=scriptcontext.doc.Objects.AddCurve(objrefs.Curve())
return segmento
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.0001):
segmento=seg
else:
cc.append(seg)
rs.DeleteObjects(cc)
return segmento
cc=GetCurvesAndEdges()
if rs.IsLine(cc):
ps=rs.CurveStartPoint(cc)
pe=rs.CurveEndPoint(cc)
#rs.AddPoints((ps,pe))
p1=rs.coerce3dpoint(ps)
p2=rs.coerce3dpoint(pe)
rs.AddPoints((p1,p2))
rs.DeleteObject(cc)
rs.Command("Dim W"+str(p1)+" W"+str(p2))