ParamManagerScripts/backend/script_groups/TwinCat/ejemplo_conversion.py

71 lines
2.5 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Ejemplo de uso del convertidor LAD a pseudocódigo estructurado
"""
from lad_to_pseudocode_converter import LadToStructuredConverter
def convertir_input_exp():
"""Ejemplo de conversión del archivo INPUT.EXP"""
# Crear instancia del convertidor
converter = LadToStructuredConverter()
try:
# Cargar y parsear el archivo LAD
print("Parseando archivo INPUT.EXP...")
converter.parse_file(".example/INPUT.EXP")
# Convertir a código estructurado
print("Convirtiendo a pseudocódigo estructurado...")
structured_code = converter.convert_to_structured()
# Guardar resultado
output_file = "INPUT_pseudocode.txt"
converter.save_to_file(output_file)
# Mostrar estadísticas
print(f"\n=== Estadísticas de conversión ===")
print(f"Redes procesadas: {len(converter.networks)}")
print(f"Archivo de salida: {output_file}")
# Mostrar las primeras líneas como ejemplo
print(f"\n=== Primeras líneas del resultado ===")
lines = structured_code.split('\n')
for i, line in enumerate(lines[:30]):
print(f"{i+1:3d}: {line}")
if len(lines) > 30:
print("...")
print(f"(Total de {len(lines)} líneas)")
return True
except Exception as e:
print(f"Error durante la conversión: {e}")
return False
def mostrar_detalles_red(converter, network_id):
"""Muestra los detalles de una red específica"""
if network_id <= len(converter.networks):
network = converter.networks[network_id - 1]
print(f"\n=== Detalles de Red {network_id} ===")
print(f"Comentario: {network.comment}")
print(f"Elementos: {len(network.elements)}")
for i, element in enumerate(network.elements):
print(f" {i+1}. {element.element_type.value}: {element.name}")
if element.expression:
print(f" Expresión: {element.expression}")
if element.parameters:
print(f" Parámetros: {element.parameters}")
if __name__ == "__main__":
print("=== Convertidor LAD a Pseudocódigo Estructurado ===")
print("Procesando archivo INPUT.EXP de TwinCAT...")
if convertir_input_exp():
print("\n✓ Conversión completada exitosamente!")
else:
print("\n✗ Error en la conversión")