Inizio Pipe differente da versioni precedenti

In rh7 e rh8, nel comando pipe, ho notato che quando si seleziona una curva, l’inizio della pipe fa sempre riferimento all’inizio “matematico” della curva.
Nelle versioni precendenti (non ricordo rh6 perchè non l’ho praticamente mai usato), invece considerava come inizio della curva, l’estremità più vicina al punto cliccato.
Sinceramente mi sembrava molto più comodo nelle versioni precedenti.

Anche in Rh6 è così…

C’è un motivo per cui è stato cambiato? sono l’unico che lo ha notato e a cui da fastidio?

Essendo prima di Rhino 6 non ricordo… e mai fatto caso onestamente.
Se la riga di comando chiede Inizio mi pare logico esporre l’inizio…

Lavorando su modelli complessi, spesso mi capita di zoomare per selezionare una curva, e trovarmi che l’inizio della pipe è fuori dall’inquadratura… se si sanno i valori da impostare non cambia niente, ma se devo fare una pipe variabile ad occhio o agganciata ad uno snap, bisogna zoomare indietro e poi ri-zommare… Mi sembrava più intuitivo e veloce il vecchio metodo… A volte mi chiedo perchè vengano cambiate cose che hanno sempre funzionato bene…

si, ma chi lo sa qual’è l’inizio della curva senza fare un’analisi? col vecchio metodo l’inizio era vicino all’estremita selezionata… intuitivo…

esempio classico…
clicco vicino ad un’estremità, e la pipe parte dall’altra… :face_with_symbols_over_mouth:

Non ti voglio convincere… ma manco voglio essere convinto…
Il comando in Rh6 e successivo quando lo lanci chiede il raggio a inizio curva e ti ci mette anche il cursore con il raggio presente. Non capisco cosa ci sia da indovinare… vedi un punto e metti il numero che ti serve.

Per l’esatto opposto del motivo per cui un utente non vuole stare con il mouse a cliccare una estremità e magari vuole scriptare dei valori.

Magari possiamo inserire flip come opzione di comando

Piuttosto che il flip come opzione, che sarebbe da cliccare ogni volta, inserirei due opzioni che restano in memoria tipo (Pipestart = line start / closest end)

Bisogna capire come gestire quando si selezionano più curve e l’opzione non ha più senso, Aperte e chiuse… gli script, insomma un comando che funzioni sempre e con un senso compiuto.

Nel caso si selezionino più curve non concatenate o curve chiuse, l’opzione non ha più senso, ed infatti si disattiva anche la possibilità di fare pipe variabili.
Nel caso si selezionino curve concatenate, sarebbe da considerare la prima come partenza (attualmente prende in considerazione solo la direzione della prima ignorando l’andamento delle altre).

esempio che mi fa incavolare:
voglio che la pipe (sulla curva rossa) prenda il raggio (che non so e non mi interessa sapere) utilizzando lo snap sulla fine della curva bianca:

la situazione che si presenta è questa: (indipendentemente da dove clicco la curva rossa)

mentre nelle versioni precedenti bastava cliccare vicino a dove si voleva la partenza ed il gioco era fatto:

Semplice, veloce e efficace…

sui comandi interni di Rhino non ci possiamo fare nulla
ma se non ti da fastidio utilizzare RhinoScript
volendo puoi utilizzare questo codice:

Call PipeStartEnd()
Sub PipeStartEnd()
	Dim strCurve, arrDomain, dblRadStart, dblRadEnd
	strCurve = Rhino.GetObject("Sel Crv", 4, True)
	
	dblRadStart = Rhino.GetReal("Rad Start")
	dblRadEnd = Rhino.GetReal("Rad End")

	If Not IsNull(strCurve) Then
		arrDomain = Rhino.CurveDomain(strCurve)
		Call Rhino.AddPipe(strCurve, Array(arrDomain(0), arrDomain(1)), Array(dblRadStart, dblRadEnd))
	End If
End Sub

(nel caso si potrebbe abbinarlo ad un pulsante)

a parte che sparisce la possibilità di decidere a mano il raggio, non risolve il “problema” della partenza…

e si vero, era un mio script che però serviva proprio al modo opposto
(in pratica come funziona adesso nelle ultime versioni)
avevo apportato alcune modifiche e pubblicato
poi ripensandoci a te serviva incontrario
che inizia in corrispondenza dove clicchi

se hai un po di pazienza lo correggo.

Call PipeStartEnd()
Sub PipeStartEnd()
	Dim strCurve, arrDomain, arrPoint, dblParam, dblRadStart, dblRadEnd, t, tStart, tEnd
	
	strCurve = Rhino.GetObject("Sel Crv", 4, True)
	If IsNull(strCurve) Then Exit Sub

	arrDomain = Rhino.CurveDomain(strCurve)
	
	arrPoint = Rhino.GetPointOnCurve(strCurve)
	If Not IsArray(arrPoint) Then Exit Sub
	
	dblParam = Rhino.CurveClosestPoint(strCurve, arrPoint)
	If IsNull(dblParam) Then Exit Sub
	
	dblRadStart = Rhino.GetReal("Rad Start")
	If IsNull(dblRadStart) Then Exit Sub
	
	dblRadEnd = Rhino.GetReal("Rad End")
	If IsNull(dblRadEnd) Then Exit Sub
	
	If dblParam <= (arrDomain(1) / 2) Then   
		tStart = arrDomain(0)
		tEnd = arrDomain(1)
	Else
		tStart = arrDomain(1)
		tEnd = arrDomain(0)
	End If
	
	Call Rhino.AddPipe(strCurve, Array(tStart, tEnd), Array(dblRadStart, dblRadEnd))
End Sub

vedi così dovrebbe andare. . .

Grazie per l’impegno, ma la procedura diventa quasi più complicata che fare un controllo preventivo della direzione della curva… e manca la possibilità di impostare il raggio ad occhio…

ok se in questo modo hai risolto tanto meglio
mi evito aggiunta della distanza manualmente :+1:

1 Mi Piace

In alternativa.
img1
In ogni caso nelle versioni precedenti (5 e 6) non ho trovato l’opzione che inizi il pipe su un punto qualunque della curva.