HOME OGGETTI 3D LIBRI CORSI TUTORIAL FORUM SHOP CONTATTI   LOGIN









Autore Topic: Cilindro con direttrice manuale  (Letto 1420 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

marcomasetti

  • Newbie
    ...sono qui da poco, il mio miglior amico è il pulsante RICERCA
  • *
  • Post: 183
Cilindro con direttrice manuale
« il: 19 Settembre 2012, 15:59 »
Nella primitiva del cilindro è possibile inserire anche un contorno realizzato manualmente nella pianta 2D.
Lo script dei vertici di tale primitiva cilindrica è:

for j=0 to nz
for i=0 to nr-1
VERT r*cos(i*360/nr), r*sin(i*360/nr), j*h/nz
next i
next j

Con lo strumento polilinea, in pianta, si deve disegnare una linea chiusa tracciata in senso antiorario, poi da:
 archivio-Librerie e Oggetti-Salva Progetto come,
si ricava un oggetto gsm nel cui script 2D compare una forma poly2.

Questa forma presenta un elenco di n punti 2D.
All’inizio dello script in 3D va posto:
nr=n
Si copia quindi l’elenco dei vertici in 2D e si incolla in 3D al posto della sequenza:
for i=0 to nr-1
VERT  r*cos(i*360/nr), r*sin(i*360/nr), j*h/nz
next i
Alle due coordinate di ogni punto si fa precedere VERT, poi si aggiunge a queste, dopo una virgola, il valore  j*h/nz.
Il vantaggio di avere il contorno in questa forma, piuttosto che in una semplice estrusione, è che risulta possibile applicare trasformazioni ai vertici.

Ad esempio:
nr=n
for j=0 to nz
for i=0 to nr-1
mul p*j, p*j, 1
VERT  x1,  y1, j*h/nz

VERT  xn,  yn, j*h/nz
del 1
next i
next j
ingrandisce ogni sezione successive del fattore p.

Oppure:
for j=0 to nz
for i=0 to nr-1
roty an*j
VERT  x1,  y1, j*h/nz

VERT  xn,  yn, j*h/nz
del 1
next i
next j
inclina la sezione successive di an: la base superiore finale, per j=nz, risulterà inclinata di an*nz.

In maniera analoga sostituendo  roty an*j  con rotz an*j si avrà una torsione della forma, con rotazione finale pari a:  an*nz.

Sono possibili molte altre deformazione: per esempio i centri della figura possono seguire una determinata linea, man mano che si sale di livello. In questo caso occorre ritoccare lo script in questo modo, aggiungendo x0 e y0 ad ogni coordinata x e y dei vertici:
for j=0 to nz
x0=x0(j)
y0=y0(j)
VERT  x1+x0,  y1+y0, j*h/nz

VERT  xn+x0,  yn+y0, j*h/nz
next j

Ponendo ad esempio:
x0=r*cos(360/nz*j)
y0=r*sin(360/nz*j)
si ottiene un andamento ad elica: infatti mentre le quote crescono linearmente, la generatrice ruota.

Lo script dei vertici potrebbe essere riscritto in questo modo:
for j=0 to nz
x0=x0(j)
y0=y0(j)
z0= z0(j)
VERT  x1+x0,  y1+y0, z0

VERT  xn+x0,  yn+y0,  z0
next j

In tal caso:
x0=x0(j)
y0=y0(j)
z0= z0(j)
deve esprimere una curva parametrica spaziale con  z0(z2) > z0(z1) per z2>z1.

L’oggetto di riferimento dell’esercizio è:
cilind modulare es.gsm

Prima di concludere mi rimane da chiedere una cosa agli esperti:
utilizzare Polilinea crea linee formate da trattini piuttosto discontinue.
Spline, che realizza curve continue, trasformata in oggetto.gsm, non fornisce nell’elenco 2D le coordinate dei singoli punti. Stessa cosa per gli archi disegnati a mano in 2D (Diventano arc2).
E’ possibile importare da altri programmi linee continue 2D che vengano lette da un oggetto gsm come poly2 (quindi come elenco dei vertici 2D) ?
Ancora: è possibile tracciare manualmente linee piane in 3D? In questo caso dovrebbe essere possibile ricavare uno script 3D con elenco delle coordinate dei vertici.