L'uso di uno script per controllare più da vicino l'importazione dei dati di rete da file GIS o layer GIS caricati in precedenza è una funzione avanzata.
Gli script devono essere utilizzati solo da utenti esperti con una certa esperienza nella programmazione con un linguaggio di scripting.
Gli script di importazione possono essere scritti utilizzando VBScript. Per informazioni dettagliate sulle operazioni eseguibili in VBScript, può essere utile consultare VBScript Tutorial o VBScript Reference in Internet. Tenere presente che VBScript non è uguale a Visual Basic, Visual Basic.NET, VBScript.NET o Visual Basic For Applications.
È possibile utilizzare tutte le normali funzionalità disponibili in VBScript per manipolare i dati prima dell'importazione.
Nota: Il componente VBScript non viene più installato assieme a InfoWorks WS Pro. Viene installato con Windows 10 e 11. In futuro, Microsoft potrebbe renderlo un componente facoltativo, attivabile mediante le funzionalità opzionali di Windows.
Panoramica degli script
Lo script contiene una serie di subroutine pubbliche che assumono la forma:
OnBegin<tablename>
OnEnd<tablename>
OnBeginRecord<tablename>
OnEndRecord<tablename>
Sono chiamati come segue:
-
OnBegin<tablename>: prima di importare la tabella
-
OnEnd<tablename>: dopo l'importazione della tabella
-
OnBeginRecord<tablename>: prima dell'elaborazione di ogni record. Nello specifico, questo viene chiamato DOPO la lettura dei dati ma prima che venga eseguita qualsiasi elaborazione. In questo caso, per elaborazione si intende la normale assegnazione dei dati di importazione ai campi di InfoWorks WS Pro in base alla mappatura dei campi impostati in Apri Centro di importazione dati.
-
OnEndRecord<tablename>: dopo la normale assegnazione dei dati di importazione ai campi InfoWorks WS Pro, MA prima che i dati vengano scritti nel database.
Lo script viene eseguito utilizzando l'host di script attivo. In InfoWorks WS Pro viene esaminato l'elenco delle subroutine alla ricerca di una delle subroutine pubbliche sopra descritte. Oltre a queste subroutine pubbliche, è possibile:
- Definire le variabili globali utilizzate dal codice
- Definire altre subroutine richiamate dalle subroutine pubbliche elencate sopra. Le subroutine aggiuntive devono essere dichiarate private.
Nomi di tabella
I nomi di tabella sono i nomi che vengono visualizzati nell'elenco Tabella in cui importare i dati in Apri Centro di importazione dati, ma con eventuali spazi rimossi nel nome. Esempio
- Nodo
- Condotta
- FixedHead
- TransferNode
- Serbatoio
Il metodo chiamato dopo l'importazione di ogni record per la tabella TransferNode è OnEndRecordTransferNode.
Utilizzo di subroutine pubbliche
-
OnBegin<tablename>: lo scopo principale di OnBegin è inizializzare i valori nelle variabili globali di script che vengono utilizzate successivamente nel record. Potenzialmente è anche possibile decidere, in base a determinati criteri, di abbandonare l'importazione.
-
OnEnd<tablename>
-
OnBeginRecord<tablename> e OnEndRecord<tablename>: non fa molta differenza se si eseguono le operazioni in OnBeginRecord o OnEndRecord, tranne che:
- Se si sa che si intende abbandonare un record, allora è meglio farlo in OnBeginRecord. Questo consente di velocizzare il processo di importazione.
- Se si imposta un campo utilizzando lo script che viene impostato anche dalla normale mappatura del campo, è necessario eseguire questa operazione in OnEndRecord. In caso contrario, il campo verrà sovrascritto dall'assegnazione normale.
InfoWorks WS Pro: proprietà e metodi
Sono disponibili diversi metodi e proprietà definiti da InfoWorks WS Pro che possono essere richiamati dallo script.
Quando si scrive lo script, le proprietà e i metodi descritti di seguito devono essere preceduti da Importer. (ad esempio, Importer.MsgBox("Ciao")).
Proprietà
-
boolean Abandoned e boolean TableAbandoned: Abandoned e TableAbandoned hanno essenzialmente lo stesso significato. Se vengono impostati su True, l'elaborazione della tabella viene interrotta. Se si imposta uno di questi valori in OnBegin, la tabella non viene elaborata. Se si imposta uno dei due in OnBeginRecord, il record non viene elaborato e nessun altro record nella tabella viene elaborato. Se si imposta uno dei due in OnEndRecord, il record viene elaborato ma nessun altro record nella tabella viene elaborato. Questi sono impostati su False prima dell'elaborazione di ciascuna tabella di importazione.
-
WriteRecord booleano: se è impostato su false, questo record non viene scritto nel database, ma l'importazione complessiva della tabella continua. WriteRecord ha un'utilità solo in OnBeginRecord e OnEndRecord. Se è impostato su false in OnBeginRecord, non viene eseguita alcuna ulteriore elaborazione per il record e OnEndRecord non viene chiamato. Se impostato su false in OnEndRecord, il record non viene scritto nel database. Questo valore è impostato su True all'inizio di ogni record.
-
boolean DeleteRecord: utilizzato per eliminare oggetti. Se è impostato su true, questo viene interpretato come una richiesta di eliminazione, poiché l'oggetto potrebbe non esistere in InfoWorks WS Pro. Quando si esegue l'aggiornamento in base all'ID risorsa, vengono confrontati l'ID risorsa degli oggetti nella fonte dati esterna e la tabella InfoWorks WS Pro, altrimenti viene utilizzato l'ID oggetto. Il valore della proprietà DeleteRecord sostituisce il valore della proprietà WriteRecord.
Metodi
-
void MsgBox(BSTR text): MsgBox visualizza la stringa in una finestra di messaggio. Non utilizzare questa opzione se si dispone di molti record. Non è possibile interrompere lo script prima del completamento dell'elaborazione.
-
void OutputMessage(BSTR text, VARIANT messageType): OutputMessage registra il messaggio nella finestra di output dove compaiono anche errori o avvertimenti.
- text (obbligatorio): il testo da registrare nella finestra di output.
- messageType (facoltativo): i parametri validi sono:
- E - Un messaggio di errore, che precede il testo con il prefisso "Error:" e incrementa il numero di errori di elaborazione
- W - Un messaggio di avvertimento, che precede il testo con il prefisso "Warning:" e incrementa il numero di errori di avvertimento
- I - Un messaggio informativo, che precede il testo con "Info:"
-
VARIANT Field(BSTR fieldName): ottiene il valore del campo dal database esterno, dal layer GIS o dal file CSV. La variabile fieldName è il nome del campo di origine esterna. Non viene eseguita alcuna conversione di unità.
Metodi di assegnazione
-
Field(BSTR fieldName) = VARIANT newValue: imposta il valore in InfoWorks WS Pro. In questo caso, fieldName è il nome del campo InfoWorks WS Pro. I valori vengono sempre considerati come se fossero unità native di InfoWorks WS Pro.