HOME OGGETTI 3D LIBRI CORSI TUTORIAL FORUM SHOP CONTATTI   LOGIN









Autore Topic: polilinea dinamica con hotspot2  (Letto 1892 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

alemanda

  • Newbie
    ...sono qui da poco, il mio miglior amico è il pulsante RICERCA
  • *
  • Post: 144
polilinea dinamica con hotspot2
« il: 13 Febbraio 2010, 01:22 »
Ciao a tutti.
Mi sto cimentando nella costruzione di un oggetto che mi servirà per lo sviluppo di altri oggetti ...
trattasi di una polilinea dinamica per mezzo di hotspot ...
In sostanza vorrei fare in modo che cliccando sull'hotspot nella mezzeria di ciascun segmento costituente la polilinea si aggiunga un altro nodo alla polilinea mantenendo fermi tutti quelli precedentemente definiti ...
Per capire un po' meglio potete vedere il video relativo al rivestimento muri in questo link
http://4dlibrary.com.au/library/downloads/

Di segutio riporto il codice ...
non riesco ad ottenere il risultato ...
forse mi manca qualche nozione sugli hotspot2 ... credo si faccia confusione tra le coordinate dei vari vertici ...
L'oggetto è molto importante per futuri sviluppi di oggetti basati su poligoni editabili.


Codice: [Seleziona]
unid=0
pen         41

line_property       0

for  I=1 TO nv
unid=unid+1: hotspot2 0,vertici[i][2],unid,vertici[i][1],129
unid=unid+1: hotspot2 vertici[i][1],vertici[i][2],unid,vertici[i][1],2
unid=unid+1: hotspot2 -1,vertici[i][2],unid,vertici[i][1],3

unid=unid+1: hotspot2 vertici[i][1],0,unid,vertici[i][2],129
unid=unid+1: hotspot2 vertici[i][1],vertici[i][2],unid,vertici[i][2],2
unid=unid+1: hotspot2 vertici[i][1],-1,unid,vertici[i][2],3

if i>=2 then
verticim[i-1][1] =(vertici[i][1]+vertici[i-1][1])/2
verticim[i-1][2] =(vertici[i][2]+vertici[i-1][2])/2

unid=unid+1: hotspot2 verticim[i-1][1],verticim[i-1][2]+deltay[i-1],unid,deltax[i-1],129
unid=unid+1: hotspot2 verticim[i-1][1]+deltax[i-1],verticim[i-1][2]+deltay[i-1],unid,deltax[i-1],2
unid=unid+1: hotspot2 verticim[i-1][1]-1,verticim[i-1][2]+deltay[i-1],unid,deltax[i-1],3

unid=unid+1: hotspot2 verticim[i-1][1]+deltax[i-1],verticim[i-1][2],unid,deltay[i-1],129
unid=unid+1: hotspot2 verticim[i-1][1]+deltax[i-1],verticim[i-1][2]+deltay[i-1],unid,deltay[i-1],2
unid=unid+1: hotspot2 verticim[i-1][1]+deltax[i-1],verticim[i-1][2]-1,unid,deltay[i-1],3

if deltax[i-1]<>0 or deltay[i-1]<>0 then
! if glob_modpar_name = "deltax" or glob_modpar_name= "deltay" then
nv=nv+1
vertici[i+1][1]=vertici[i][1]
vertici[i+1][2]=vertici[i][2]
vertici[i][1]=verticim[i-1][1]+deltax[i-1]
vertici[i][2]=verticim[i-1][2]+deltay[i-1]

deltax[i-1]=0
deltay[i-1]=0

verticim[i-1][1] =(vertici[i][1]+vertici[i-1][1])/2
verticim[i-1][2] =(vertici[i][2]+vertici[i-1][2])/2

unid=unid+1: hotspot2 verticim[i-1][1],verticim[i-1][2]+deltay[i-1],unid,deltax[i-1],129
unid=unid+1: hotspot2 verticim[i-1][1]+deltax[i-1],verticim[i-1][2]+deltay[i-1],unid,deltax[i-1],2
unid=unid+1: hotspot2 verticim[i-1][1]-1,verticim[i-1][2]+deltay[i-1],unid,deltax[i-1],3

unid=unid+1: hotspot2 verticim[i-1][1]+deltax[i-1],verticim[i-1][2],unid,deltay[i-1],129
unid=unid+1: hotspot2 verticim[i-1][1]+deltax[i-1],verticim[i-1][2]+deltay[i-1],unid,deltay[i-1],2
unid=unid+1: hotspot2 verticim[i-1][1]+deltax[i-1],verticim[i-1][2]-1,unid,deltay[i-1],3

i=i+1
deltax[i-1]=0
deltay[i-1]=0

verticim[i-1][1] =(vertici[i][1]+vertici[i-1][1])/2
verticim[i-1][2] =(vertici[i][2]+vertici[i-1][2])/2

unid=unid+1: hotspot2 verticim[i-1][1],verticim[i-1][2]+deltay[i-1],unid,deltax[i-1],129
unid=unid+1: hotspot2 verticim[i-1][1]+deltax[i-1],verticim[i-1][2]+deltay[i-1],unid,deltax[i-1],2
unid=unid+1: hotspot2 verticim[i-1][1]-1,verticim[i-1][2]+deltay[i-1],unid,deltax[i-1],3

unid=unid+1: hotspot2 verticim[i-1][1]+deltax[i-1],verticim[i-1][2],unid,deltay[i-1],129
unid=unid+1: hotspot2 verticim[i-1][1]+deltax[i-1],verticim[i-1][2]+deltay[i-1],unid,deltay[i-1],2
unid=unid+1: hotspot2 verticim[i-1][1]+deltax[i-1],verticim[i-1][2]-1,unid,deltay[i-1],3

i=0
endif
endif
next i

for i=1 to nv-1
line2 vertici[i][1],vertici[i][2],vertici[i+1][1],vertici[i+1][2]
text2 vertici[i][1],vertici[i][2],str("%0.0",i)+": "+str("%0.2",vertici[i][1])+","+str("%0.2",vertici[i][2])
circle2 vertici[i][1],vertici[i][2],0.1

next i
text2 vertici[i][1],vertici[i][2],str("%0.0",i)+": "+str("%0.2",vertici[i][1])+","+str("%0.2",vertici[i][2])
circle2 vertici[i][1],vertici[i][2],0.1

hotspot2 0,0
text2 0,0,nv
« Ultima modifica: 13 Febbraio 2010, 01:25 da alemanda »
Archicad 21 (ultima hotfix) & Cinerender (ex Maxwell render & Artlantis 3.0.5)
Xeon 2x14Cores + 32 GB RAM
WIN 7 PRO 64bit

claudio-aster

  • MODERATOR
    ...non tutti i supereroi indossano il mantello
  • *
  • Post: 880
Re: polilinea dinamica con hotspot2
« Risposta #1 il: 13 Febbraio 2010, 11:46 »

alemanda

  • Newbie
    ...sono qui da poco, il mio miglior amico è il pulsante RICERCA
  • *
  • Post: 144
Re: polilinea dinamica con hotspot2
« Risposta #2 il: 13 Febbraio 2010, 12:41 »
ok! Grazie ... ho dato uno sguardo e .... quanto tempo ho perso ... strada già battuta e battuta meglio ... grazie ancora
Archicad 21 (ultima hotfix) & Cinerender (ex Maxwell render & Artlantis 3.0.5)
Xeon 2x14Cores + 32 GB RAM
WIN 7 PRO 64bit