Buongiorno a tutti, ho approntato un script per congiungere alcuni punti di una superficie in uno unico.
In pratica dovrebbe far apparire i punti di controllo, far selezionare quelli che mi servono, unirli, chiedere il punto di arrivo e spostarli tutti su quel punto…
Funziona tutto a meraviglia, tranne l’ultimo passaggio in cui proprio non riesco a capire l’errore.
Qualcuno sarebbe così gentile da darmi un piccolo aiuto?
Lo script è questo:
Sub Congiungi_Punti
Dim Surf, i, arrGrip, arrPoint, arrStart, arrEnd, arrTranslation
'richiede superficie
Surf = Rhino.GetObject("Select Surface ", 8)
If IsNull(Surf) Then
rhino.print "Operazione annullata"
Exit Sub
End If
'mostra punti di controllo
Rhino.EnableObjectGrips Surf
'richiede punti
arrGrip = Rhino.GetObjectGrips("Seleziona Punti ")
'congiunge tutti i punti
If isarray(arrGrip) Then
For i=0 To ubound(arrGrip)
Rhino.ObjectGripLocation Surf, arrGrip(i)(1), Rhino.ObjectGripLocation(Surf, arrGrip(0)(1))
Next
End If
'chiede punto di arrivo
arrEnd= Rhino.GetPoint("Point to move to")
'sposta tutti i punti di controllo al punto di arrivo
arrStart= Rhino.ObjectGripLocation(Surf, arrGrip(0)(1))
If isarray(arrEnd)Then
arrTranslation= Rhino.VectorCreate(arrEnd, arrStart)
Rhino.MoveObjects arrGrip, arrTranslation
End If
Per spostare i grip usi la array arrGrip, che pero’ e’ stata ottenuta all’inizio dello script.
Ma nel frattempo i grip sono stati spostati.
Credo che arrGrip contenga ancora le posizioni iniziali.
'chiede punto di arrivo
arrEnd = Rhino.GetPoint("Point to move to")
'congiunge tutti i punti
If isarray(arrGrip) Then
For i=0 To ubound(arrGrip)
Rhino.ObjectGripLocation Surf, arrGrip(i)(1), arrEnd
Next
Else
Exit Sub
End If
guarda, (a parte le indicazioni di Emilio che per esperianza è sempre meglio seguire)
se ci pensi il codice comunque funzionerebbe, mettendo prima “chiede punto di arrivo”
e poi successivamente la parte del “congiunge tutti i punti” così lo script si conclude.
per quello che hai chiesto che debba fare il codice,
era superfluo la congiunzione dei punti, poi se
comunque ritieni che ti possa servire per altro allora
dopo aver congiunto i punti e richiesto il punto finale
ripeti la stessa riga come mostrato avendo come
destinazione arrEnd. ho aggiunto anche un Exit Sub
ps
quando posti un codice premi prima il pulsante evidenziato nel cerchio rosso
in modo che viene formattato diventando più chiara la lettura per chi legge.
Era l’idea che avevo all’inizio, e ci avevo anche provato, ma sicuramente sbagliavo qualcosa nella sintassi perchè non ero riuscito a farlo funzionare…
Grazie per il supporto e per il suggerimento…