Vai al contenuto
coren

L'if Il Mio Tallone Di Achille

Recommended Posts

insomma...... ho scritto lo script per la creazione delle banchine e delle persiane, solo che non mi funziona la parte delle persiane: io creo le finestre come pivotDoor, le persiane le creo come copia delle finestre(in questo modo ho già tutte le dimensioni giuste), l'unica cosa che devo fare è attivare il flag FlipSwing ed aprire la persiana di 180°.

quindi io creo una copia di tutte le finestre selezionate(in questo modo ottengo le persiane istanziate tra di loro esattamente come le finestre) assegnandogli un nome temporaneo, poi la mia idea era di scandire gli oggetti della scena e per quelli che si chiamavano col il nome prestabilito facevo le modifiche necessarie, tra le quali quella di assegnargli il nome finale. Solo che l'IF non viene mai verificato, qualcuno potrebbe spiegarmi come funziona esattamente l'IF?

Magari provate a far girare lo script sul vostro computer che magari va o magari scoprite perchè non va l'IF.

Grazie ancora

global Float nnn

global Float dep

for i in selection do( 

  --leggiamo la profondità della porta

  

  dep = i.depth

  dep = dep+6

  --leggiamo la larghezza della porta

  

  nnn = i.width

  nnn=nnn+6

  --leggiamo la posizione della porta

  

  ChamferBox Name:"banchina_temp" Length_Segments:1 Width_Segments:1 Height_Segments:1 Fillet_Segments:3 length:dep width:nnn height:5 Fillet:2.5 pos:[0,0,0]

  $banchina_temp.rotation.z_rotation=i.rotation.z_rotation

  $banchina_temp.pos=i.pos

  set coordsys local

  move $banchina_temp [((nnn/2)-3),-((dep/2)-3),-4.8]

  set coordsys world

  $banchina_temp.name=uniquename "banchina"


)

copy $ name:"persiana_temp"

for i in geometry do

(

	if i.name=="persiana_temp" then

	(  

  i.Flip_Swing=on

  i.Double_Doors=1

  i.Open__degrees=180

  i.Leaf_Thickness=5

  i.Stiles_Top_Rail=5

  i.Bottom_Rail=5

  i.Create_Frame=off

  i.name=uniquename "persiana"	

	)

)

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Ciao, allora nn son esperto di script so un pò di c++ e parlando anche con lauranncè siamo arrivati alla conclusione che nn dichiari mai la variabile i.name dove la vai a prendere nel listato nn si trova.

ciaooooooo

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

l'if verifica una condizione

la tua condizione è i.name=="persiana_temp"

se questa condizione restituisce il valore true l'if va avanti, altrimenti si ferma o va ad eseguire il codice presente nell' else ()

per verificare se la condizione è scritta correttamente e restituisce true puoi selezionare la tua persiana e digitare nel listener solo la condizione

ho fatto delle prove con un box che si chiamava Box01 e ho scoperto che le stringe sono case sensitive, ovvero tengono conto anche delle maiuscole quindi

$.name=="box01" restituisce false

$.name=="Box01" restituisce true

@lemmolo

se noti l'ultimo ciclo for trovi la riga for i in geometry

ovvero ad ogni ciclo la i assume il valore di un'entità presente in geometry (che è l'insieme delle entità presenti nella scena)

quando una variabile diventa uguale ad un'entità, a quest'entità sono associati dei valori

prendiamo un box chiamato cubo01

se i = $cubo01, possiamo leggere e cambiare le proprietà del cubo mediante la sintassi

i.width i.height etc etc tra queste proprietà c'è anche i.name ;)

mi spiace per il casino che ho scritto purtroppo non sono programmatore e non parlo utilizzando i termini adatti

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

ho provato in questo momento lo script e se la pivot door la chiamo persiana_temp senza lettere maiuscole l'if va avanti e modifica la finestra

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora

  • Navigazione recente   0 utenti

    Non ci sono utenti registrati da visualizzare in questa pagina.

×