Ciao Leopoldo.
Ok per la versione 6, il comportamento del Pipe è quello attuale.
Ma nella versione 5 a me il pipe lo fa partire dall’estremità della curva più vicina al punto di clic, indipendentemente dalla direzione della curva.
io avevo inteso (infatti in Rh5 funzionava così per questo avevo fatto il codice che partisse da 0)
che quando clicchi in corrispondenza di una parte estrema della curva inizia da quella estremità.
Sì certo.
Forse ho frainteso ma mi sembrava che la richiesta di Thomas fosse quella di far partire il pipe da un punto qualunque della curva.
Infatti è quello che piaceva a me… e che trovavo anche logico per come lavora rhino su altri comandi… cioè la pipe parte dall’estremità più vicina al punto selezionato sulla curva, “fregandosene” della direzione effettiva della curva stessa
in questi casi, credo che più utenti hanno invece proposto di cambiare,
e ovviamente è stato deciso di fare in questo modo con la modalità attuale.
Forse ho frainteso io.
Io ho capito che serve fare partire il Pipe dal punto iniziale o finale più vicino al punto di selezione della curva … come nelle vecchie versioni.
Ma forse hai ragione tu.
Thomas??
Ciao Thomas, sempre se ho capito quello che ti serve, prova questo script Python:
# -*- coding: utf-8 -*-
import rhinoscriptsyntax as rs
def flip_curve_if_needed(curve_id, click_point):
param = rs.CurveClosestPoint(curve_id, click_point)
point_on_curve = rs.EvaluateCurve(curve_id, param)
start_point = rs.CurveStartPoint(curve_id)
end_point = rs.CurveEndPoint(curve_id)
dist_to_start = rs.Distance(point_on_curve, start_point)
dist_to_end = rs.Distance(point_on_curve, end_point)
if dist_to_end < dist_to_start:
rs.ReverseCurve(curve_id)
def main():
while True:
curve_id = rs.GetObject("Seleziona una curva", rs.filter.curve)
if not curve_id:
return
if not rs.IsCurve(curve_id):
print("L'oggetto selezionato non è una curva.")
continue
click_point = rs.GetCursorPos()[0]
flip_curve_if_needed(curve_id, click_point)
rs.UnselectAllObjects()
rs.SelectObject(curve_id)
rs.Command("_Pipe")
break
if __name__ == "__main__":
main()
Questo funziona esattamente come le vecchie versioni … cioè come io trovo più comodo …
L’unico upgrade che vedo, sarebbe quello di poter selezionare anche una curva di bordo di una superfice…
ottimo Fabio
nello specifico come funziona GetCursorPos mi sfugge la funzionalità
si avevo letto ed eseguito il codice, ma come dicevo non riesco a collegarlo al tuo script
nel senso che funzione ha, e a cosa è servito nell’esecuzione del codice?
eseguendo lo script della guida mi compaiono dei punti nello spazio in base alla vista. è corretto?
Salvio, sai bene che io di script non ci capisco nulla.
Volevo solo capire se la mia idea fosse buona e,fedele al motto “chi fa da sé fa per tre”, ho chiesto a IA.
L’ìdea è:
- seleziono una curva e trovo il punto della curva più vicino al mio clic
- Calcolo la distanza del punto dall’inizio e dalla fine della curva
- se la distanza dall’inizio è maggiore di quella dalla fine faccio un flip
- seleziono la curva e lancio pipe
Di sicuro se mette mano allo script Emilio, o un’altra persona esperta, avrebbe parecchio da dire e da modificare.
Ma visto lo scopo penso possa andare bene lo stesso.
Ciao Thomas, ambasciator non porta pena … vedi la mia riposta a Salvio.
Vedi se vuoi cimentarti pure tu con IA.
Ti avverto che, in barba al nome, è un po’ di coccio … o magari sono io che non mi spiego.
Sennò dovremmo sperare nell’itervento di qualcuno esperto di scripting.
grande eeee quindi bisogna farsi capire bene, questo mi ricorda una certa persona ahahahah
vabbè comunque importante è la riuscita