Newsgroup: it.comp.software.cad
Titolo: VB.NET: ElementScanCriteria di Microstation

Devo scrivere, in Vb.Net 2010, un codice che deve scansionare un file dgn 
(Microstation) alla ricerca di alcuni testi
disegnati su livelli differenti.
Ad esempio, "pippo"  su livello 1, "pluto" su livello 2, "topolino" su 
livello 3.
Per fare questo, ho due modi di scansionare il file.
Impostare la scansione su tutti i livelli, e quindi ottenere un insieme di 
tre testi (pippo, pluto e topolino),
oppure impostare la scansione per livello (cerco il solo testo pippo sul 
livello 1, successivamente il testo pluto sul livello 2 ecc).
Quale dei due metodi è più veloce l'esecuzione del codice?
nero23


ma perche' non imposti la ricerca per i tre livelli che ti
interessano?
comunque non ti preoccupare la ricerca viene fatta nella dgncache,
cambia poco

ma perche' non imposti la ricerca per i tre livelli che ti
interessano?
Perchè i testi sono uguali con la sola differenza che quelli che stanno su 
un livello mi indicano un parametro e quelli che stanno su un  secondo 
livello, mi indica un altro parametro ( i files mi arrivano cosi....).
Ad esempio il testo #33 presente sul livello 2, mi indica la lunghezza, il 
testo #33, presente sul livello 5, mi indica la profondità (lo so, poca 
fantasia nel fissare questi parametri... ma è lungo da spiegare).
Se facessi la scansione contemporaneamente su entrambi i livelli, "sommerei" 
le due informazioni.
Ciao
nero23 

 livello, mi indica un altro parametro ( i files mi arrivano cosi....).
per ogni elemento che trovi rileggi il livello e capisci cos'e'

>per ogni elemento che trovi rileggi il livello e capisci cos'e'
ora mi metti in crisi.
Mi fai un esempio?
Riporto parte del codice.
Ciao, come al solito, sei sempre disponibile.
Imports MicroStationDGN
Public Class Form1
Private Sub Button35_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles Button35.Click
'**************************************************************************************************
'Pulsante che avvia la scansione del dgn
'**************************************************************************************************
Dim ustn As New MicroStationDGN.Application()
'apro il file progetto.dgn
ustn.OpenDesignFile("D:\progetto.dgn")
'setto i dati per la scansione sul file dgn
Dim FiltroTesto As New ElementScanCriteria
'resetto la variabile da dati memorizzati precedentemente
FiltroTesto.Reset()
Dim TestoElemento As Element
Dim TxEnum As ElementEnumerator
'escludo tutti i tipi (testo, nodo di testo ecc.) dalla selezione
FiltroTesto.ExcludeAllTypes()
'escludo tutti i livelli dalla selezione
FiltroTesto.ExcludeAllLevels()
' tipo di testo da includere nella selezione
FiltroTesto.IncludeType(MsdElementType.msdElementTypeText)
'includo il livello 5 per la  ricerca
FiltroTesto.IncludeLevel(ustn.ActiveDesignFile.Levels(5))
'includo il livello 16 per la ricerca
FiltroTesto.IncludeLevel(ustn.ActiveDesignFile.Levels(16))
TxEnum = ustn.ActiveModelReference.Scan(FiltroTesto)
'avvio elaborazione
While TxEnum.MoveNext
TestoElemento = TxEnum.Current
Select Case TestoElemento.Type
Case MsdElementType.msdElementTypeText
Dim myText As TextElement
myText = TestoElemento
'testo rilevato dal dgn
Dim TxDgn As String = myText.Text
'''''''
'registro il dato TxDgn  su un file xml...
'''''''
End Select
End While
End Sub
End Class