Ottimo, Alex, come sempre.
fatti i supporti... li ho piazzati uno all'inizio e uno alla fine (nel caso di 2 elementi coincidono... )
Anche io ero giunto alla stessa conclusione. Il programma mette un gancio dopo il primo elemento e uno prima dell'ultimo. Se il radiatore è composto da due soli elementi, i due ganci vengono messi sovrapposti, entrambi in mezzo (anche se è facile mettere un'istruzione tipo
IF elementi > 2 THEN e far posizionare il secondo gancio solo quando gli elementi sono più di due). La cosa simpatica è che se si mette un solo elemento, i ganci sono giustamente due, posizionati all'esterno. E sono "invertiti" perché il "primo" sta alla "fine" e l'"ultimo" sta all'"inizio".
Nel mio oggetto il gruppo "gancio" è definito in questo modo:
GROUP "Gancio"
MATERIAL mat2
RESOL res*2
sgancio = .003
rgancio = inter/2+sgancio
ADD a/2-raggio, passo/2, zzyzx-diam
ADD rgancio*SIN(60), 0, -rgancio*COS(60)
ROTy 180+30
ELBOW inter/2+0.003 , 120, 0.003
ROTy 180
ELBOW inter/4+sgancio , 60, sgancio
ADDx (inter/4+sgancio )*COS(60)
ADDz (inter/4+sgancio )*SIN(60)
ROTy 60
CYLIND dam+.00175+(inter/2)*(colonne-2), sgancio
RESOL res
DEL 7
ENDGROUPIo non ho messo la ghiera di rifinitura, che forse sarebbe bene aggiungere.
Il posizionamento è realizzato da queste istruzioni:
PLACEGROUP "Gancio"
ADDy passo*(elementi-2)
PLACEGROUP "Gancio"
DEL 1
IF elementi > 15 then
ADDy passo*INT((elementi-2)/2)
PLACEGROUP "Gancio"
DEL 1
ENDIFIn effetti bisognerebbe trovare qualcosa di più efficace. Per ora mi sono limitato a mettere una condizione che, quando gli elementi sono più di 15, mette un terzo gancio al centro. Ovviamente bisogna evitare che, quando gli elementi sono dispari, il gancio coincida con l'elemento centrale. La posizione quindi è calcolata dalla funzione INT(), che prende solo la parte intera di un numero decimale. Divido per due il numero di elementi e, per decidere di quanto spostatrmi lo divido per due. Nel caso gli elementi siano 20, per esempio, il gancio andrà dopo 10 elementi. Nel caso siano 21, otterrò 10,5, ma la funzione INT(10.5) mi restituisce il valore intero (10) e anche in questo caso il gancio verrà posizionato dopo il decimo elemento.