Utilice una secuencia de comandos para controlar más de cerca la importación de datos de red desde archivos GIS o capas GIS cargadas anteriormente es una función avanzada.
Las secuencias de comandos solo las deben por usuarios expertos con alguna experiencia en programación con un lenguaje de secuencias de comandos.
Las secuencias de comandos de importación se pueden escribir con VBScript. Puede resultar útil buscar el Tutorial de VBScript o la Referencia de VBScript en Internet para obtener más información sobre lo que puede hacer en VBScript. Recuerde que VBScript no es lo mismo que Visual Basic, Visual Basic.NET, VBScript.NET ni Visual Basic For Applications.
Puede utilizar todas las funciones normales disponibles en VBScript para manipular los datos antes de la importación.
Nota: El componente VBScript ya no se instala como parte de la instalación de InfoWorks WS Pro. Se instala con Windows 10 y 11. En el futuro, Microsoft puede hacer de este un componente opcional, pero es posible que se active utilizando las características opcionales de Windows.
Descripción general de la secuencia de comandos
La secuencia de comandos contiene una serie de subrutinas públicas que presentan la forma:
OnBegin<tablename>
OnEnd<tablename>
OnBeginRecord<tablename>
OnEndRecord<tablename>
Se llaman de la siguiente manera:
-
OnBegin<tablename>: antes de importar la tabla
-
OnEnd<tablename>: después de importar la tabla
-
OnBeginRecord<tablename>: antes de que se procese cada registro. En concreto, se invoca DESPUÉS de leer los datos, pero antes de procesarlos. En este caso, el procesamiento implica la asignación normal de los datos de importación a los campos de InfoWorks WS Pro en función de la asignación de campos configurada en el Centro de importación de datos abiertos.
-
OnEndRecord<tablename> después de la asignación normal de los datos de importación a los campos de InfoWorks WS Pro PERO antes de que los datos se escriban en la base de datos.
La secuencia de comandos se ejecuta mediante Active Scripting Host. InfoWorks WS Pro busca en la lista de subrutinas cualquiera de las subrutinas públicas descritas anteriormente. Además de estas subrutinas públicas, puede:
- definir variables globales utilizadas por la norma
- defina otras subrutinas llamadas por las subrutinas públicas enumeradas anteriormente. Las subrutinas adicionales deben declararse como Privadas.
Nombres de tabla
Los nombres de tabla son los que aparecen en la lista Tabla para importar datos en la Centro de importación de datos abiertos, pero sin incluir espacios en el nombre. Por ejemplo
- Nodo
- Conducto
- FixedHead
- TransferNode
- Depósito
El método al que se llama después de importar cada registro de la tabla TransferNode sería OnEndRecordTransferNode.
Uso de las subrutinas públicas
-
OnBegin<tablename>: la finalidad principal de OnBegin es inicializar los valores de las variables globales de la secuencia de comandos que se utiliza después en el registro. También puede decidir, en función de ciertos criterios, abandonar la importación.
-
OnEnd<tablename>
-
OnBeginRecord<tablename> y OnEndRecord<tablename>: no hay mucha diferencia si realiza las cosas en OnBeginRecord o OnEndRecord, excepto que:
- Si sabe que vas a abandonar un registro, también puedes hacerlo en OnBeginRecord. Esto acelerará el proceso de importación.
- Si establece un campo con el comando que también se establece mediante la asignación de campos normal, debe hacerlo en OnEndRecord. De lo contrario, el campo se sobrescribirá con la asignación normal.
InfoWorks WS Pro Propiedades y métodos
Hay una serie de métodos y propiedades definidos por InfoWorks WS Pro que la secuencia de comandos puede llamar.
Al escribir la secuencia de comandos, las propiedades y los métodos que se describen a continuación deben ir precedidos de Importer. (por ejemplo, Importer.MsgBox("Hola")).
Propiedades
-
boolean Abandonedy boolean TableAbandoned: Abandoned y TableAbandoned prácticamente significan lo mismo. Si se establecen en True, se detendrá el procesamiento posterior de la tabla. Si establece cualquiera de estos en OnBegin, la tabla no se procesa. Si establece cualquiera de ellos en OnBeginRecord, el registro no se procesa y no se procesan más registros de la tabla. Si establece cualquiera de ellos en OnEndRecord, el registro se procesa, pero no se procesan más registros de la tabla. Estos valores se establecen en Falso antes de procesar cada tabla de importación.
-
boolean WriteRecord: si se establece en false, este registro no se escribe en la base de datos, pero continúa la importación general de la tabla. WriteRecord solo tiene algún propósito útil en OnBeginRecord y OnEndRecord. Si se establece en false en OnBeginRecord, no se realiza ningún procesamiento adicional para ese registro y no se llama a OnEndRecord. Si se establece en false en OnEndRecord, el registro no se escribe en la base de datos. Se establece en True al principio de cada registro.
-
boolean DeleteRecord: se utiliza para suprimir objetos. Si se establece en true, se interpreta como una solicitud de supresión, ya que es posible que el objeto no exista en InfoWorks WS Pro. Al actualizar en función del ID de activo, se comparan el ID de activo de los objetos del origen de datos externo y la tabla de InfoWorks WS Pro, de lo contrario se utiliza el ID de objeto. El valor de la propiedad DeleteRecord anula el valor de la propiedad WriteRecord.
Métodos
-
void MsgBox(BSTR text): MsgBox muestra la cadena en un cuadro de mensaje. No utilice esta opción si dispone de muchos registros. No se puede detener la secuencia de comandos antes de que se complete el procesamiento.
-
void OutputMessage(BSTR text, VARIANT messageType): OutputMessage registra el mensaje en la ventana de salida donde también aparecen errores o advertencias.
- text (obligatorio): el texto que se registra en la ventana de salida.
- messageType (opcional): los parámetros válidos son:
- E: un mensaje de error que prefija el texto con "Error:" e incrementa el número de errores de procesamiento.
- W: un mensaje de advertencia, que prefija el texto con "Advertencia:" e incrementa el número de errores de advertencia
- I: un mensaje informativo, que prefija el texto con "Info:"
-
VARIANT Field(BSTR fieldName): obtiene el valor de campo de la base de datos de origen externa, la capa GIS o el archivo CSV. La variable fieldName es el nombre del campo de origen externo. No se realiza ninguna conversión de unidades.
Métodos de asignación
-
Field(BSTR fieldName) = VARIANT newValue: define el valor en InfoWorks WS Pro. En este caso, fieldName es el nombre de campo de InfoWorks WS Pro. Los valores siempre se tratan como si estuvieran en unidades nativas de InfoWorks WS Pro.