Newsgroup: it.comp.lang.visual-basic
Titolo: trasformazioni

Premetto che non sono un programmatore .
Tuttavia dovrei risolvere questo problema.
Ad esempio supponiamo di avere il segente file:
#VRML V2.0 utf8
DirectionalLight {
 direction 1 0 -1
}
DirectionalLight {
 direction 0 -1 0
}
Transform {
translation -1 0 0
children Shape {
appearance Appearance {
material DEF Blue_Plastic Material {
ambientIntensity 0.2
diffuseColor 0.00200167 0.0121456 0.8
emissiveColor 0 0 0
shininess 0.2
specularColor 1 1 1
transparency 0
}
}
geometry Cone {
}
}
}
Transform {
translation 1 0 0
children Shape {
appearance Appearance {
material DEF Orange_Plastic Material {
ambientIntensity 0.2
diffuseColor 0.9 0.55237 0.00733938
emissiveColor 0 0 0
shininess 0.2
specularColor 1 1 1
transparency 0
}
}
geometry Cylinder {
}
}
}
Questo file lo vorrei inserire in una TreeView.
Come devo procedere?
Grazie.

 wrote:
Per quale motivo?
Ciao


L'ho detto , per vedere i nodi in una treeview.
Grazie

 L'ho detto , per vedere i nodi in una treeview.
Devi parsare il file, individuare i nodi e i child, se ho ben capito con le
graffe.
Non mi viene un modo automatico alternativo.

"Andrea [Work]" <nos...@invalid.invalid> ha scritto nel messaggio 
news:1mb311j4gi5p4$.w9jcywj4egi8$.dlg@40tude.net...

Ieri pensavo una cosa simile per i css... o si pensa a un parser e si sta lě 
a definire come si trova una voce o ricorri alle regex (che odio) e le 
trovi: la butto lě
(?<tag>\w+)\s*(?<values>\{.*\})
Visto cosě va, non so perň perchč deve stare tutto il tag su una riga e la 
regex ignora l'invio :(
Ciao

Scusa io non sono un informatico, perciň quello che hai detto č.... arabo.
Come dovrei fare?
Programmo in VB6
Grazie

 Programmo in VB6
In realtà è un vero casino proprio per il fato che vi sono dei nodi 
contenuti in altri nodi...
Ciao 

 contenuti in altri nodi...
Io sono arrivato a costruire un TreeView a partire da degli elementi
scritti:
01AA---
01AA1--
01AA2--
01AA21-
01AA22-
Ovvero:
01AA---
	01AA1--
	01AA2--
		01AA21-
		01AA22-
Il che è abbastanza banale però :)

 Grazie.
Ciao,
per poter risolvere il tuo problema bisogna conoscere alcuni particolari,
ad esempio come identifichi un nodo?
dall'esempio che hai postato tu si direbbe che lo si può identificare 
perchè l'ultimo carattere è sempre la partesi graffa aperta, ma siamo 
sicuri che sia SEMPRE così?
Altrimenti lo si potrebbe identificare perchè ci sono dei numeri, ma 
siamo sicuri che non ci sia un nodo che non si chiami XYZ 23?
Senza sapere il formato esatto, procedendo potremmo prendere cantonate.
Se non sei certo che il formato sia quello (uno basti che sia, 
l'importante è poter individuare i nodi in modo univoco) si potrebbe 
andare incontro a risultati non corretti.
Una volta appurato questo dobbiamo costruirci la procedura che 
costruisca la treeview, qui si possono fare diverse scelta ma credo che 
la più logica sia una procedura ricorsiva.
Posta un po' di informazioni e poi si cerca di ragionare assieme.
ciao
stefano

 Il che è abbastanza banale però :)
Allora fai vedere come hai fatto :)
Ciao 

 Posta un po' di informazioni e poi si cerca di ragionare assieme.
Ciao,
posso dire che leggerti sei sempre esplicito, ma mi sembri un po' logorroico 
:) ci vuole una fatica a starti dietro...
Mi pare ovvio che il problema sia fare una treeview su sintassi del tipo
nodo
{
    subnodo
    {
        subnodo
        ...
    }
    subnodo
    ...
}
dove i subnodi sono opzionali.
Ciao 

 Posta un po' di informazioni e poi si cerca di ragionare assieme.
Da un paio di ricerche che ho fatto su google mi è sembrato di capire 
che il tuo è un file VRML e il separatore dei nodi è la {
faccio qualche verifica.
ciao
stefano

 }
Detta in pseudo-pseudo codice e supponendo il file formattato come
sopra..
SET NODO = NEW NODO_ROOT
:START
SELECT CASE $RIGA
  CASE '{'
    SET NODO = NEW CHILD
  CASE '}'
    SET NODO = NODO.PARENT
  CASE ELSE
    SET NODO = NEW NODO
    NODO = $RIGA
END SELECT
IF EOF = FALSE THEN GOTO :START
Sperando di non aver detto cavolate!
Ciao.
Daniele.

 Allora fai vedere come hai fatto :)
Do Until Rs.EOF
  'Dal record corrente verifico se esiste un nodo padre controllando i "--"
  'E' importante l'ORDER della SELECT
  NodoPadre = CercaNodoPadre(Rs("CODINDICE").Value)
  Set myNode = tvw1.Nodes.Add(NodoPadre, tvwChild, Rs("CODINDICE").Value,
myDescr)
Loop
CercaNodoPadre č una routine che mi cerca un elemento nel treeview
considerando i -, cerca se esiste un livello superiore es.
01AA1---
Cerca prima
01AA----
Se non lo trova va avanti con:
01A-----, 01------ ecc.
Cerca i nodi con una cosa del genere:
  If tvw1.Nodes(NodeKey) Is Nothing Then
    False
  Else
    True
  End If
La base dell'albero ce l'ho fissa e sicuramente.

 dove i subnodi sono opzionali.
Si, certo lo davo per scontato, il mio "problema" era capire se posso 
identificare al primo colpo un nodo.
In effetti rileggendo il mio post mi rendo conto di essere stato un po' 
precipitoso.
E' ovvio che la { mi identifica un nodo ma se sta sulla stessa linea so 
subito se quello è un nodo o meno, altrimenti per verificare devo andare 
alla line successiva.
Non che cambi molto ... però ...
Ok mi sto arrampicando sugli specchi? ;-)
Cmq se può servire:
http://www.lucia.it/vrml/links/links2.html
http://www.calypso.it/web1/presenta/virtual.htm
ciao
stefano
p.s.
una domanda che mi frulla da un po'
Ma tempo fa il tuo nick era Zanna?
Fabio Zanetta, MVP nel 2002 (poi dopo non so)?


In effetti la mia idea è di inserire in una TreView i nodi di un file vrml.
Il file vrml non è detto però che sia formattato come per esempio con TAB.
Ho intenzione di scriverlo ...libero.
In effetti scrivendo un file vrml in modo libero e poi facendolo eseguire da
Cortona,
lo legge ugualmente bene.
E' ovvio che se il file lo scrivo fornattandolo ad esempio con  spazi TAB ,
allora il problema è
relativamente semplice.
Ma meglio sarebbe poterlo scrivere in modo libero.
Grazie per la gentile risposta.

Oops.....scusa.
Ci sono dei nodi con numeri.
Ad esempio  Box { size 1.3  1.5  2.6}
e i numeri sono separati da spazi.
Ciao

 Fabio Zanetta, MVP nel 2002 (poi dopo non so)?
Sì, sono io.
Non ho più partecipato con Ms per mancanza di tempo e credo che mi abbiano 
rimosso dagli MVP :)
Ciao 

 Ciao 
ecco, mi sembrava di averti già letto sotto altro nick.
ciao
stefano