Posto una domanda forse banale ma che mi costringe a fare dei passaggi inutili in più del dovuto:
Quando si deve individuare una distanza lineare definita lungo una linea di profilo uso il comando divide con l’opzione lenght attiva e impostando il valore voluto, rhino a questo punto mi posiziona dei punti sulla linea selezionata con passo del valore specificato. Tutto ok ma mi devo cancellare tutte le volte tutti i punti successivi al primo che non mi servono
Mi sembrava che nella versione rhino2 ci fosse il comando divide by lenght che metteva un solo punto
Tra le opzioni del comando mi pare ci fosse la possibilità di dividere la curva senza generare i punti. Non ho rhino sottomano per verificare.
si Lucio è esatto, solo che nel mio caso preferirei solo inserire un punto alla distanza voluta anzichè trimmare o splittare la curva
ripeto è solo una richiesta per evitare due passaggi (raggruppare i punti deselezionare il primo e cancelare i restanti) perchè mi sembrava che anni fa (rhino 2) lo facesse
comunque grazie Lucio
Ciao Marco, mi sa che non se ne viene a capo.
Vuoi provare questo script?
"import Rhino
import scriptcontext
def ArcLengthPoint():
rc, objref = Rhino.Input.RhinoGet.GetOneObject(“Select curve”, True, Rhino.DocObjects.ObjectType.Curve)
if rc!=Rhino.Commands.Result.Success: return rc
crv = objref.Curve()
if not crv: return Rhino.Commands.Result.Failure
crv_length = crv.GetLength()
length = 0
rc, length = Rhino.Input.RhinoGet.GetNumber(“Length from start”, True, length, 0, crv_length)
if rc!=Rhino.Commands.Result.Success: return rc
pt = crv.PointAtLength(length)
if pt.IsValid:
scriptcontext.doc.Objects.AddPoint(pt)
scriptcontext.doc.Views.Redraw()
return Rhino.Commands.Result.Success
if name==“main”:
ArcLengthPoint()"
Dovrei avere uno script che fa al caso tuo. Lunedì quando rientro in ufficio te lo posto.
Ciao Marco
Aggiungo un altro script …
import rhinoscriptsyntax as rs
def main():
tup = rs.GetCurveObject( 'Curve ?' )
if not tup:
return
leng = rs.GetReal( 'Length along curve ?' )
if not leng:
return
rs.EnableRedraw( False )
gid, t1, t2, t3, uu, t4 = tup
u0, u1 = rs.CurveDomain( gid )
gi2 = rs.CopyObject( gid )
if abs( u0 -uu ) > abs( u1 - uu ):
rs.ReverseCurve( gi2 )
pts = rs.DivideCurveLength( gi2, leng )
rs.DeleteObject( gi2 )
rs.EnableRedraw( True )
if not pts or ( len( pts ) < 2 ):
return
rs.AddPoint( pts[ 1 ] )
main()
P.S.
Concordo che servirebbe la possibilita’ di scegliere quali punti disegnare.
E magari anche decidere il punto iniziale.
E per finire una bella preview …
… Ma cosa aspettano ad integrare Rhino e Grasshopper ?
Visto il bel tempo, non leggendoti, pensavo stessi facendo un gita fuori porta.
Stavo … sparando incomprensibili cavolate sul forum USA …
Letto.
Ti sei lamentato dei fillet, strano.
Bravi bravi e intanto io sotto il sole a faticare con il decespugliatore…
Mica siamo giovani come te … in particolare Emilio.
Fabio … patisci il caldo o hai esagerato col vino a pranzo ?
Entrambe le cose.
ma a questo punto perchè usare il comando dividi e districarti tra le varie opzioni quando puoi usare direttamente il comando punto in combinazione con Osnap “Da” e inserisci l’unico punto che ti serve?
Ragazzi! Siete fantastici! La complicità e L’umorismo di questo gruppo è unico!
ok non mi è chiaro, essendo che inizialmente si parlava di “distanza lineare”
Prova questo semplice script
Vittorio
PuntoDistanza.py (356 Byte)
Dai, Salvio !
Manca solo il tuo di script (contando quello che Lucio postera’ domani).
Scatena Python !
ahahahah sei tremendo Emilio
in verità tempo fa mi serviva anche a me uno script simile, poi optai per uso dei comandi “Dividi e SelUltimo” deselezionando il primo poi il resto li cancello. non so cosa posso fare di diverso tra tanti script già postati ma nel pomeriggio mi ci metto vedo un pochino quel resto di materia grigia rimasta cosa farà venire fuori ahahahah