GSG.
◆ DIgSILENT GmbH · PowerFactory

Python API Reference

Referencia completa de funciones, métodos, clases y variables de la interfaz Python (versión 2) de DIgSILENT PowerFactory 2021. Automatiza flujos de trabajo, accede a resultados y controla simulaciones desde scripts Python externos o internos.

📄 Fuente PythonReference_en.pdf
🐍 Python 3.x
⚡ Interface v2
📦 Páginas 554
01

Módulo powerfactory

Punto de entrada principal. Importar con import powerfactory.

Variable de módulo

Variable Tipo Descripción
powerfactory.__version__ str Versión instalada de PowerFactory, ej. "17.0.9"

Funciones de inicio

GetApplication()
powerfactory.GetApplication(
  [str username],
  [str password],
  [str commandLineArguments]
)
Crea y devuelve el objeto Application. Arranca PowerFactory si se llama desde externo. Mantener el objeto mientras se use PF.
→ Application | None
GetApplicationExt()
powerfactory.GetApplicationExt(
  [str username],
  [str password],
  [str commandLineArguments]
)
Igual que GetApplication() pero lanza powerfactory.ExitError (con .code) en caso de fallo. Recomendado para scripts de producción.
→ Application
Python
import sys
sys.path.append(r"C:\Program Files\DIgSILENT\PowerFactory 2021\Python\3.8")
import powerfactory

try:
    app = powerfactory.GetApplicationExt()
    # ... cálculos ...
except powerfactory.ExitError as error:
    print(f"Error código: {error.code}")
02

Application — Proyectos y Casos de Estudio

Gestión del proyecto activo, casos de estudio, escenarios y variaciones.

Método Retorna Descripción
ActivateProject(name) int Activa proyecto por nombre, nombre calificado o ruta. 0=éxito, 1=error.
GetActiveProject() DataObject Retorna el IntPrj activo o None.
CreateProject(projectName, gridName, [parent]) DataObject Crea nuevo proyecto copiando el proyecto por defecto. Retorna el IntPrj creado.
GetActiveStudyCase() DataObject Retorna IntCase activo o None.
GetActiveScenario() DataObject Retorna IntScenario activo o None.
GetActiveScenarioScheduler() DataObject Retorna IntScensched activo o None.
GetActiveNetworkVariations() list Lista de IntScheme activos en "Network Data".
GetActiveStages([variedFolder]) list Lista de IntSstage activos. Carpeta por defecto: "Network Data".
GetRecordingStage() DataObject Retorna el IntSstage de grabación activo o None.
SaveAsScenario(pName, iSetActive) DataObject Guarda datos como nuevo IntScenario. iSetActive=1 lo activa.
GetFromStudyCase(className) DataObject Retorna (o crea) el primer objeto de clase en el caso de estudio activo.
03

Application — Navegación de Base de Datos

Acceso a carpetas, selecciones, diagramas y objetos de la BD.

Método Retorna Descripción
GetProjectFolder(type, [create]) DataObject Carpeta del proyecto por tipo: "netdat", "study", "scen", etc.
GetDataFolder(classname, [iCreate]) DataObject Carpeta de datos de red para la clase dada. iCreate=1 la crea si no existe.
GetGlobalLibrary([ClassName]) DataObject Biblioteca global de tipos.
GetLocalLibrary([ClassName]) DataObject Biblioteca local del proyecto activo.
GetSummaryGrid() DataObject ElmNet con combinación de todas las redes activas.
GetCurrentDiagram() DataObject Objeto IntGrfnet del diagrama activo.
GetGraphicsBoard() DataObject Tablero gráfico activo.
SearchObjectByForeignKey(foreignKey) DataObject Busca objeto por clave foránea en el proyecto activo.
GetCurrentSelection() list Objetos marcados en Data Manager o diagrama activo.
GetBrowserSelection() list Objetos marcados en el Data Manager.
GetDiagramSelection() list Objetos marcados en el diagrama activo.
GetCalcRelevantObjects([nameFilter, includeOos, topoOnly, bAcSchemes]) list Objetos relevantes para el cálculo activo. Soporte wildcards: "*.ElmTerm", "A*.ElmTerm,*.ElmLod".
GetBorderCubicles(element) list Cubículos frontera (StaCubic) de la subestación del elemento.
MarkInGraphics(objects, [searchOpenedDiagramsOnly]) None Resalta objetos con sombreado en diagramas.
04

Application — Cálculos y Resultados

Verificación de validez de resultados y gestión de transacciones de BD.

Método Retorna Descripción
GetActiveCalculationStr() str String del cálculo activo. Ver tabla de valores abajo.
IsLdfValid() int 0 si no hay resultados de flujo de potencia válidos.
IsRmsValid() int 0 si no hay resultados RMS válidos.
IsShcValid() int 0 si no hay resultados de cortocircuito válidos.
IsSimValid() int 0 si no hay resultados de simulación válidos.
ResetCalculation() None Resetea todos los cálculos y elimina resultados visibles en el SLD.
CommitTransaction() None Escribe cambios pendientes a la BD durante ejecución del script.
SetWriteCacheEnabled(enabled) None Activa (1) / desactiva (0) caché de escritura para optimización.
IsWriteCacheEnabled() int Estado actual de la caché de escritura.
WriteChangesToDb() None Vacía caché y guarda todos los cambios en la BD.

Valores de GetActiveCalculationStr()

NoneSin cálculo
ldfAC Load Flow
dcldfDC Load Flow
acsensAC Sensitivities
accontAC Contingency
dcsensDC Sensitivities
dccontDC Contingency
shcVDE/IEC Short-Circ.
shcfullComplete Short-Circ.
shcansiANSI Short-Circ.
shc61363IEC 61363
rmsRMS Simulation
emtEMT Simulation
modalModal Analysis
harmHarmonics / PQ
fsweepFrequency Sweep
opfOptimal Power Flow
dcopfDC OPF
estState Estimation
relReliability
genrelGeneral Adequacy
motstartMotor Starting
arcflashArc Flash
topoTie Open Point Opt.
05

Application — Entorno y GUI

Control de la interfaz gráfica, progreso y comportamiento durante ejecución.

Método Retorna Descripción
EchoOff() None Congela la interfaz de usuario. Usar junto con EchoOn().
EchoOn() None Reactiva la interfaz. Se llama automáticamente al finalizar el script.
SetGuiUpdateEnabled(enabled) int Activa/desactiva actualizaciones de la ventana GUI. Retorna estado previo.
SetProgressBarUpdatesEnabled(enabled) int Activa/desactiva la barra de progreso. Alto impacto en performance para scripts con muchos pasos.
SetGraphicUpdate(enabled) None Activa/desactiva actualización del SLD. 0=desactivado.
SetUserBreakEnabled(enabled) None Activa/desactiva el botón "Break" en la barra de herramientas.
SetAutomaticCalculationResetEnabled(enabled) None Controla el reset automático de cálculos al modificar atributos.
SetFinalEchoOnEnabled(enabled) None Controla el EchoOn() automático al finalizar ComDpl o ComPython.
Show() / Hide() None Muestra/oculta la ventana de PowerFactory. Show() requiere licencia completa.
ExecuteCmd(command) None Ejecuta un comando como si se escribiera en el Input Window. Solo para pruebas.
PostCommand(command) None Encola un comando para ejecutar tras finalizar el script actual.
Rebuild([iMode]) None Redibuja el SLD o gráfico visible. iMode: 0=solo dibujar, 1=leer+dibujar, 2=leer+recalcular+dibujar.
06

Application — Matemáticas y Números Aleatorios

Generadores de números aleatorios, inversión de matrices y utilidades numéricas.

Método Retorna Descripción
RndSetup(seedAutomatic, [seed, rngType, rngNum]) None Inicializa generador. rngType: 0=Mersenne Twister (recomendado), 1=Linear Congruential, 2=Additive Lagged Fibonacci. rngNum=0: generador global.
RndUnifReal(min, max, [rngNum]) float Número aleatorio uniforme continuo en [min, max].
RndUnifInt(min, max, [rngNum]) int Número aleatorio uniforme entero en {min,...,max}.
RndNormal(mean, stddev, [rngNum]) float Número aleatorio distribución normal.
RndExp(rate, [rngNum]) float Número aleatorio distribución exponencial con tasa rate.
RndWeibull(shape, scale, [rngNum]) float Número aleatorio distribución Weibull.
RndGetSeed([rngNum]) int Retorna la semilla actual del generador rngNum.
RndGetMethod([rngNum]) str Nombre del método del generador rngNum.
InvertMatrix(realPart, [imaginaryPart]) int Invierte matriz real o compleja (Gauss-Jordan). 0=éxito, 1=singular. Resultado en la matriz de entrada.
GetMem([calculateDelta, inMegaByte]) int Consumo de memoria del proceso. Delta desde última llamada si calculateDelta=1.
07

Application / OutputWindow — Ventana de Salida

Impresión de mensajes, guardado y control de la ventana de salida.

Métodos de Application

Método Descripción
PrintInfo(message) Mensaje de información (ícono azul).
PrintWarn(message) Mensaje de advertencia (ícono amarillo).
PrintError(message) Mensaje de error (ícono rojo).
PrintPlain(message) Texto plano sin clasificación.
ClearOutputWindow() Limpia toda la ventana de salida.
GetOutputWindow() Retorna objeto OutputWindow para uso avanzado.
SetOutputWindowState(newState) 0=minimizar, 1=maximizar, -1=restaurar.

Clase OutputWindow

Método Descripción
Print(message) Imprime como texto plano.
Print(MessageType, message) Tipos: Plain, Info, Warn, Error.
Clear() Limpia la ventana.
GetContent([filter]) Lista de textos (filtrado opcional por MessageType).
Save(filePath) Guarda contenido en .html, .txt o .out.
SetState(newState) 0=min, 1=max, -1=restaurar.
Python
ow = app.GetOutputWindow()
ow.Print(powerfactory.OutputWindow.MessageType.Info, "Hello World!")
# Guardar log
ow.Save(r"C:\logs\output.html")
08

Application — Sistema de Archivos, Usuarios y Diálogos

Sistema de Archivos

Método Descripción
GetInstallationDirectory() Ruta completa de instalación de PowerFactory.
GetTemporaryDirectory() Directorio temporal de PowerFactory.
GetWorkspaceDirectory() Directorio del workspace activo.
GetStudyTimeObject() Retorna SetTime del caso de estudio (para características y escenarios).
GetSettings(key) Lee configuración: username, installationdir, workingdir, tempdir, sessionid, db driver, logfile.
GetLanguage() Código idioma: en, de, es, fr, ru, cn, tr.
ImportDz(target, dzFilePath) Importa archivo .dz. Retorna [errorCode, importedObjects].
ImportSnapshot(dzsFilePath) Importa snapshot .dzs. Retorna [errorCode, importedObjects].

Diálogos de UI

Método Descripción
ShowModalBrowser(objects, [detailMode, title, page]) Browser modal para listar objetos. No soportado en modo sin GUI.
ShowModalSelectBrowser(objects, [title, classFilter, page]) Browser modal con selección. Retorna lista de objetos seleccionados.
ShowModelessBrowser(objects, [detailMode, title, page]) Browser no modal (sin bloqueo).
GetTableReports() Lista todos los reportes de tabla abiertos.
CloseTableReports() Cierra todos los reportes de tabla.
UpdateTableReports() Actualiza todos los reportes de tabla.
SplitLine(Line, [percent, createSwitchSide0, createSwitchSide1]) Divide línea en posición %. Retorna terminal insertado o 0=error.
09

DataObject — Acceso a Atributos

Métodos comunes a todos los objetos de la BD para lectura y escritura de atributos.

Método Retorna Descripción
GetAttribute(name) any Valor del atributo en unidades mostradas. Lanza excepción si nombre inválido.
SetAttribute(name, value) None Establece valor de atributo.
HasAttribute(name) int 1 si el atributo existe en el objeto.
GetAttributeType(name) AttributeType INTEGER, DOUBLE, STRING, OBJECT, *_VEC, *_MAT, INTEGER64, INVALID.
GetAttributeUnit(name) str Unidad del atributo, ej. "km", "MW". None si nombre inválido.
GetAttributeDescription(name, [short]) str Descripción larga (short=0) o corta (short=1).
GetAttributeLength(name) int Longitud de vector/matriz (filas). -1 si nombre inválido.
SetAttributeLength(name, length) None Redimensiona un vector.
GetAttributeShape(name) [int, int] Forma [rows, cols]. [-1, 0] si inválido.
SetAttributeShape(name, rows, cols) None Cambia forma de atributo matricial.
GetAttributes() list Valores de atributos de transferencia (definidos con DefineTransferAttributes).
SetAttributes(values) None Establece múltiples atributos de transferencia.
ℹ️ Para acceder a atributos en unidades internas (no mostradas), usar app.SetAttributeModeInternal(1) antes de las llamadas. Usar app.DefineTransferAttributes(classname, "attr1,attr2") para configurar acceso en bloque con GetAttributes/SetAttributes.
10

DataObject — Gestión de Objetos

Creación, copia, eliminación, navegación y consulta de objetos en la BD.

Método Retorna Descripción
CreateObject(className, [nameParts...]) DataObject Crea nuevo objeto de clase className en este contenedor.
AddCopy(objectToCopy, [nameParts...]) DataObject Copia un objeto en este contenedor. Para múltiples: AddCopy(list).
PasteCopy(source) DataObject Pega copia desde otro proyecto adaptando referencias automáticamente.
CopyData(source) int Copia parámetros (excepto nombre/contenedor) desde source.
Delete() int Mueve a papelera de reciclaje. 0=éxito.
Move(target) None Mueve el objeto al contenedor target.
GetContents([Name, recursive]) list Objetos almacenados. Soporte wildcards en Name. recursive=1 incluye subdirectorios.
GetChildren(hiddenMode, [filter, subfolders]) list Como GetContents pero accede a objetos ocultos por esquemas. hiddenMode: 0=solo visibles, 1=todos, 2=solo ocultos.
GetParent() DataObject Objeto contenedor padre.
GetFullName([type]) str Ruta completa en la BD. type=0: formato clickable en Output Window.
GetClassName() str Nombre de la clase del objeto, ej. "ElmTerm".
SearchObject(name) DataObject Busca objeto por nombre dentro de este contenedor.
IsDeleted() int 1 si el objeto fue eliminado.
ShowEditDialog() None Abre el diálogo de edición.
WriteChangesToDb() None Escribe cambios de este objeto en la BD.
11

DataObject — Estado Eléctrico

Control de conexión, energización y consultas de estado.

Método Retorna Descripción
SwitchOn() int Conecta el elemento.
SwitchOff() int Desconecta el elemento.
Energize([resetRA]) [int, list] Energiza: elimina puestas a tierra + conecta. resetRA=1 resetea Running Arrangements bloqueantes.
Isolate() int Aísla el elemento eléctricamente.
IsEnergized() int 1 si el elemento está energizado.
IsOutOfService() int 1 si el elemento está fuera de servicio.
IsEarthed() int 1 si está puesto a tierra.
IsShortCircuited() int 1 si está en cortocircuito.
IsCalcRelevant() int 1 si es relevante para el cálculo actual.
IsObjectActive(scenario) int 1 si el objeto está activo en el escenario dado.
IsObjectModifiedByVariation() int 1 si fue modificado por una variación activa.
IsReducible() int 1 si puede ser reducido topológicamente.
IsNode() int 1 si el elemento es un nodo.
IsHidden() int 1 si está oculto por gestión de esquemas.
12

DataObject — Consultas Eléctricas

Topología, impedancias, tensiones nominales y relaciones eléctricas.

Método Retorna Descripción
GetConnectedElements([rBrk, rDis, rOut]) list Elementos conectados. Flags para considerar interruptores (rBrk), seccionadores (rDis) y fuera de servicio (rOut).
GetConnectionCount() int Número de conexiones eléctricas.
GetNode(side) DataObject Terminal en el extremo side.
GetCubicle(side) DataObject Cubículo StaCubic en el extremo side.
GetControlledNode(bus, [check]) [DataObject, float] Terminal controlada y tensión objetivo (pu) para reguladores de tensión.
GetImpedance(refVoltage, [i3Trf]) [int, float, float] Impedancia secuencia positiva [error, real, imag] en Ohm a tensión de referencia.
GetZeroImpedance(refVoltage, [i3Trf]) [int, float, float] Impedancia secuencia cero [error, real, imag] en Ohm.
GetInom(side) float Corriente nominal del elemento en kA.
GetUnom(side) float Tensión nominal del elemento en kV.
GetSystemGrounding(terminal) int Tipo de puesta a tierra del sistema en el terminal.
GetSupplyingSubstations([volt_level]) list Subestaciones que alimentan al objeto.
GetSupplyingTransformers([volt_level]) list Transformadores que alimentan al objeto.
IsInFeeder(feeder, checkExact) int 1 si el objeto pertenece al alimentador.
GetReferences(recursive) list Objetos que referencian a este objeto.
HasResults(iBranch) int 1 si hay resultados de cálculo para este objeto.
13

ElmRes — Archivo de Resultados

Gestión completa de archivos de resultados de simulación: escritura, lectura e iteración.

Ciclo de Escritura

Método Descripción
AddVariable(element, varname) Agrega variable de element a monitorear. Alias: AddVars.
InitialiseWriting() Prepara el archivo para escritura manual.
Write(time, value) Escribe un valor en el tiempo dado.
WriteDraw() Escribe un "draw" (marca de actualización gráfica).
FinishWriting() Finaliza escritura. Alias: Close.
Flush() Vuelca buffer de memoria a disco. Necesario antes de leer si ya se escribió.
Clear() Limpia datos del archivo (mantiene definiciones de variables).

Ciclo de Lectura

Método Retorna Descripción
Load() int Carga datos del archivo en memoria para lectura.
Release() None Libera datos cargados en memoria.
GetNumberOfRows() int Número total de filas (instantes de tiempo).
GetNumberOfColumns() int Número total de columnas (variables monitoreadas).
FindColumn(obj, [varName / startCol]) int Índice de columna para objeto/variable. <0=no encontrado.
GetValue(obj, col, row) [int, float] Valor en fila/columna. Retorna [error, value].
GetObjectValue(row, col) float Valor en posición fila/columna directa.
GetObject(col) DataObject Objeto asociado a la columna col.
GetVariable(col) str Nombre de variable de la columna col.
GetUnit(col) str Unidad de la columna col.
GetDescription([col, short]) str Descripción de la columna.
FindMaxInColumn(column) [int, float] Máximo de la columna: [row, maxValue].
FindMinInColumn(column) [int, float] Mínimo de la columna: [row, minValue].
FindMaxOfVariableInRow(variable, row) [int, float] Máximo de variable en fila: [col, maxValue].
FindMinOfVariableInRow(variable, row) [int, float] Mínimo de variable en fila: [col, minValue].
SortAccordingToColumn(col) int Ordena filas según columna col.
SetAsDefault() None Establece como archivo de resultados por defecto.

Iteración (GetFirstValid / GetNextValid)

Método Descripción
GetFirstValidObject(row, [classNames, variableName, limit, limitOperator, limit2, limitOperator2]) Primera columna válida de un objeto en la fila. Soporta filtros por clase, variable y rango.
GetNextValidObject([classNames, variableName, limit...]) Siguiente columna válida (iterador interno).
GetFirstValidVariable(row, [variableNames]) Primera variable válida en la fila.
GetNextValidVariable([variableNames]) Siguiente variable válida.
GetFirstValidObjectVariable([variableNames]) Primera variable válida del objeto apuntado por el iterador.
GetNextValidObjectVariable([variableNames]) Siguiente variable válida del objeto actual.
ℹ️ Los operadores de límite: 0=todos válidos, 1=<, 2=≤, 3=>, 4=≥. Para limitOperator2: positivo=AND, negativo=OR.
14

Elementos de Red (Elm*)

Clases de elementos eléctricos del sistema de potencia.

ElmTerm
Terminal / Barra
ElmLne
Línea de transmisión / distribución
ElmTr2
Transformador 2 devanados
ElmTr3
Transformador 3 devanados
ElmTr4
Transformador 4 devanados
ElmTrfstat
Estación de transformadores
ElmSym
Máquina síncrona (generador)
ElmGenstat
Generador estático (inversor)
ElmPvsys
Sistema fotovoltaico
ElmAsm
Motor asíncrono
ElmAsmsc
Motor asíncrono c. corto
ElmBmu
Battery Management Unit
ElmShnt
Shunt (reactancia / C)
ElmSvs
SVC (Static VAr Compensator)
ElmFilter
Filtro de armónicos
ElmXnet
Red externa (equivalente)
ElmVac
Fuente de tensión AC
ElmVoltreg
Regulador de tensión
ElmRelay
Relé de protección
ElmRes
Archivo de resultados
ElmNet
Red eléctrica (contenedor)
ElmSubstat
Subestación
ElmFeeder
Alimentador
ElmArea
Área de la red
ElmZone
Zona de la red
ElmBoundary
Frontera de red
ElmDsl
Modelo de control DSL
ElmComp
Elemento compuesto
ElmCoup
Acoplador de barra
ElmLnesec
Sección de línea
ElmFile
Archivo de datos externo
ElmGndswt
Interruptor de tierra
15

Elementos de Estación (Sta*)

StaCubic
Cubículo de estación (conexión terminal↔elemento)
StaCt
Transformador de corriente
StaSwitch
Interruptor / seccionador
StaExtbrkmea
Medición externa de interruptor
StaExtcmdmea
Medición externa de comando
StaExtdatmea
Medición externa de dato
StaExtfmea
Medición externa de frecuencia
StaExtimea
Medición externa de corriente
StaExtpfmea
Medición externa de fp
StaExtpmea
Medición externa de P
StaExtqmea
Medición externa de Q
StaExtsmea
Medición externa de S
StaExttapmea
Medición externa de tap
StaExtv3mea
Medición externa de V trifásico
StaExtvmea
Medición externa de tensión
StaExtfuelmea
Medición externa de combustible
16

Comandos (Com*)

Obtener con app.GetFromStudyCase("ComXxx") y ejecutar con .Execute().

Comandos de Cálculo Principales

Clase Cálculo Parámetros clave
ComLdf Flujo de Potencia AC/DC iopt_net: 0=AC, 1=DC; iopt_at, iopt_pq
ComShc Cortocircuito VDE/IEC iopt_mde: norma; iopt_shc: 0=3f, 1=2f, 2=1f, 3=2f-tierra
ComInc Condiciones Iniciales Necesario antes de ComSim
ComSim Simulación Dinámica RMS/EMT tstop, dtgrd, iopt_sim: 0=RMS, 1=EMT
ComRes Gestión de Resultados Exportación y manejo de archivos de resultados
ComContingency Análisis de Contingencias Configuración N-1, N-2
ComOutage Interrupciones Gestión de eventos de interrupción
ComCapo Ubic. óptima de capacitores Capacitor placement optimization
ComMot Arranque de Motores Motor starting analysis
ComRed Reducción de Red Network reduction

Comandos de Datos y Scripting

ComDpl
Ejecución de script DPL interno
ComPython
Ejecución de script Python
ComTasks
Tareas de cálculo encadenadas
ComMerge
Fusión de redes
ComImport
Importación general de datos
ComTransfer
Transferencia de datos
ComCimdbexp
Exportación CIM
ComCimdbimp
Importación CIM
ComCimvalidate
Validación modelo CIM
ComUcte
Importación UCTE
ComUcteexp
Exportación UCTE
ComWktimp
Importación datos de trabajo
ComSvgexport
Exportación gráficos SVG
ComSvgimport
Importación SVG
ComPfdimport
Import. archivo PowerFactory
ComFlickermeter
Cálculo de flicker
ComAmpacity
Capacidad de corriente
ComCoordreport
Reporte de coord. protecciones
ComAddon
Gestión de add-ons
ComHostcap
Capacidad de alojamiento
17

Configuraciones (Set*)

SetSelect
Selecciones de objetos
SetTime
Fecha y hora del estudio
SetUser
Configuración del usuario
SetPath
Rutas del sistema de archivos
SetColscheme
Esquema de colores SLD
SetDesktop
Configuración del escritorio
SetDeskpage
Página del escritorio
SetDataext
Datos externos
SetFilt
Filtros de datos
SetCluster
Configuración de cluster
SetParalman
Gestión de paralelización
SetLevelvis
Visibilidad por niveles
SetVipage
Página de visualización
SetTboxconfig
Config. caja de herramientas
SetDistrstate
Estado de distribución
18

Objetos Internos (Int* / Vis* / Typ* / Blk* / Scn*)

Proyectos, Casos y Variaciones

IntPrj
Proyecto PowerFactory
IntPrjfolder
Carpeta de proyecto
IntCase
Caso de estudio
IntScenario
Escenario operacional
IntScensched
Programador de escenarios
IntScheme
Variación / esquema
IntSstage
Etapa de esquema
IntVersion
Versión de datos
IntSubset
Subconjunto de datos
IntDataset
Dataset

Resultados y Vectores

IntMon
Monitor de variables
IntVec
Vector numérico
IntVecobj
Vector de objetos
IntMat
Matriz: SetValue/GetValue/NSize/MSize
IntDplmap
Mapa DPL (diccionario)
IntDplvec
Vector DPL
IntComtrade
Archivo COMTRADE
IntComtradeset
Conjunto COMTRADE
IntPlot
Gráfico de curvas
PltDataseries
Serie de datos para gráfico
PltLinebarplot
Gráfico de barras/líneas

Gráficos y Visualizaciones

IntGrf
Objeto gráfico en diagrama
IntGrfnet
Diagrama de red
IntGrfgroup
Grupo gráfico
IntGrflayer
Capa gráfica
GrpPage
Página de gráficos
VisPlot
Panel gráfico de curvas (VI)
VisPlot2
Panel gráfico mejorado
VisXyplot
Gráfico X-Y
VisHrm
Gráfico de armónicos
VisBdia
Diagrama de bloques
VisOcplot
Curva de sobrecorriente
VisVec
Diagrama vectorial
VisDraw
Herramienta de dibujo
VisPath
Ruta visual

Tipos de Equipos (Typ*) · Bloques DSL (Blk*) · Escenarios Cálculo (Scn*)

TypLne
Tipo de línea eléctrica
TypTr2
Tipo de transformador 2W
TypAsmo
Tipo de motor asíncrono
TypCtcore
Tipo de núcleo TC
TypQdsl
Tipo DSL-Q
BlkDef
Definición de bloque DSL
BlkSig
Señal de bloque DSL
ScnFreq
Escenario de frecuencia
ScnFrt
Escenario FRT
ScnVolt
Escenario de tensión
ScnVar
Escenario variable
ScnSpeed
Escenario de velocidad
19

Tipos de Datos y Atributos

Tipo Python AttributeType Descripción
int AttributeType.INTEGER Entero.
int (64-bit) AttributeType.INTEGER64 Entero de 64 bits.
float AttributeType.DOUBLE Punto flotante.
str AttributeType.STRING Cadena de texto.
DataObject AttributeType.OBJECT Referencia a objeto de BD.
list[int] AttributeType.INTEGER_VEC Vector de enteros.
list[float] AttributeType.DOUBLE_VEC Vector de flotantes.
list[list[float]] AttributeType.DOUBLE_MAT Matriz de flotantes.
list[str] AttributeType.STRING_VEC Vector de cadenas.
list[DataObject] AttributeType.OBJECT_VEC Vector de objetos.
None AttributeType.INVALID Atributo no existe / error.
⚠️ Las funciones ResGet* (ej. ResGetData, ResGetIndex) están deprecadas. Usar los métodos equivalentes en ElmRes o IntComtrade.
20

Ejemplos de Uso Frecuente

Script externo — inicio básico

Python
import sys
sys.path.append(r"C:\Program Files\DIgSILENT\PowerFactory 2021\Python\3.8")
import powerfactory

app = powerfactory.GetApplication()
app.EchoOff()

app.ActivateProject("Mi_Proyecto")

# Obtener todos los terminales relevantes
terms = app.GetCalcRelevantObjects("*.ElmTerm")
for t in terms:
    uknom = t.GetAttribute("uknom")
    app.PrintInfo(f"{t.GetFullName()}{uknom} kV")

app.EchoOn()

Ejecutar flujo de potencia

Python
ldf = app.GetFromStudyCase("ComLdf")
ldf.iopt_net = 0   # 0=AC, 1=DC
ierr = ldf.Execute()
if ierr == 0:
    app.PrintInfo("✓ Flujo de potencia exitoso")
else:
    app.PrintError("✗ Error en flujo de potencia")

Leer resultados de simulación dinámica

Python
res = app.GetFromStudyCase("ElmRes")
res.Load()

gen = app.GetCalcRelevantObjects("Gen1.ElmSym")[0]
col_p = res.FindColumn(gen, "s:P1")  # columna de potencia activa
col_t = res.FindColumn(res, "b:tnow")  # columna de tiempo

nrows = res.GetNumberOfRows()
for row in range(nrows):
    t = res.GetObjectValue(row, col_t)
    p = res.GetObjectValue(row, col_p)
    print(f"t={t:.3f}s  P={p:.4f}MW")

res.Release()

Modificar atributos con caché de escritura

Python
# Aumentar carga 10% con caché habilitada (más rápido)
app.SetWriteCacheEnabled(1)

for load in app.GetCalcRelevantObjects("*.ElmLod"):
    p_actual = load.GetAttribute("plini")
    load.SetAttribute("plini", p_actual * 1.10)

app.WriteChangesToDb()
app.SetWriteCacheEnabled(0)

Cortocircuito y lectura de resultados

Python
shc = app.GetFromStudyCase("ComShc")
shc.iopt_mde = 0   # VDE 0102
shc.iopt_shc = 0   # 3-fase
shc.Execute()

if app.IsShcValid():
    for bus in app.GetCalcRelevantObjects("*.ElmTerm"):
        ikss = bus.GetAttribute("m:Ikss")  # corriente de cc en kA
        app.PrintInfo(f"{bus.loc_name}: Ikss = {ikss:.3f} kA")

Simulación dinámica completa (RMS)

Python
# 1. Flujo de potencia inicial
ldf = app.GetFromStudyCase("ComLdf")
ldf.Execute()

# 2. Condiciones iniciales
inc = app.GetFromStudyCase("ComInc")
inc.Execute()

# 3. Simulación
sim = app.GetFromStudyCase("ComSim")
sim.tstop  = 10.0   # [s]
sim.dtgrd  = 0.01   # paso de integración [s]
sim.iopt_sim = 0   # 0=RMS, 1=EMT
sim.Execute()

app.PrintInfo("Simulación completada.")

Usar IntMat para matrices

Python
folder = app.GetProjectFolder("netdat")
mat = folder.CreateObject("IntMat", "MiMatriz")
mat.SetAttributeShape("val", 3, 3)
mat.SetAttribute("val", [[1,0,0],[0,2,0],[0,0,3]])
val = mat.GetAttribute("val")  # retorna lista 2D