Introducción a los scripts de automatización NX personalizados

Siemens NX es una poderosa plataforma CAD/CAM/CAE que va más allá del modelado manual exponiendo un rico conjunto de API para la automatización. Escribir scripts personalizados en Python o C# permite a ingenieros y desarrolladores eliminar el trabajo manual repetitivo, aplicar estándares de diseño e integrar NX en grandes tuberías de ingeniería. Ya sea que necesites forzar archivos de la transferencia de equipo, creación de geometría automatizada, o ejecutar simulaciones de usuario sin

Este artículo proporciona una guía ampliada y práctica para desarrollar scripts personalizados de automatización NX utilizando Python y C#. Aprenderás las diferencias entre los dos idiomas, cómo configurar tu entorno de desarrollo, escribir scripts listos para la producción y aplicar las mejores prácticas para evitar errores comunes.El objetivo es darte una base sólida para construir una automatización robusta que funcione sin problemas con tu flujo de trabajo NX.

Comprender el ecosistema de automatización NX

La automatización NX se construye en la NX Open API], una biblioteca completa que expone casi todas las funcionalidades disponibles en la interfaz de usuario de NX. La API está disponible en múltiples interfaces de programación:

  • NX Open for Python – Proporciona enlaces de Python para la API abierta NX. Ideal para scripting rápido, prototipado e integración con bibliotecas de ciencias de datos.
  • NX Open for .NET – Conjuntos .NET de características completas (C#, VB.NET) que le dan acceso a todo el modelo de objetos NX. Mejor para aplicaciones complejas y críticas de rendimiento con componentes UI.
  • NX Open C++] – Para desarrolladores que necesitan acceso directo a la memoria o necesitan vincularse con el código C++.
  • Journaling – NX puede registrar sus acciones manuales como un archivo de revistas (VB o C#). Estas revistas son un gran punto de partida para aprender la sintaxis de API.

Todas las API comparten un modelo de objeto similar, pero existen matices específicos para el lenguaje. La clave es entender que la automatización NX es impulsada por eventos; normalmente crea un objeto, luego utiliza su ], y varias clases de constructor para interactuar con el modelo.

Elegir entre Pitón y C#

La decisión entre Python y C# para la automatización NX depende de los requisitos de su proyecto, la experiencia del equipo y el entorno de implementación.

Python para la automatización NX

  • La facilidad de uso: La sintaxis limpia de Python hace que sea la manera más rápida de escribir scripts de automatización. Es ideal para ingenieros que no son desarrolladores a tiempo completo.
  • Rapid Prototyping: Puedes probar scripts de forma interactiva utilizando una consola Python incrustada dentro de NX (desde NX 12).
  • Integración de datos: El vasto ecosistema de Python (NumPy, Pandas, Matplotlib) le permite combinar la automatización NX con el análisis de datos y la visualización.
  • ]Performance: Python se interpreta; para asambleas muy grandes o lazos estrechos, puede ser más lento que C#. Sin embargo, para la mayoría de las tareas de scripting, la sobrecarga es insignificante.
  • Deployment:] Los scripts Python son archivos de texto simples. Pueden ejecutarse dentro de NX a través del File → Ejecute → NX Open o mediante el comando en la línea de comandos NX.

C# para la automatización NX

  • Acceso completo a .NET: C# le da todo el marco .NET, incluyendo Windows Forms o WPF para diálogos personalizados de interfaz de usuario, hilos de fondo y depuración avanzada en Visual Studio.
  • Escrito de forma estable: C# detecta muchos errores en el tiempo de compilación, facilitando el mantenimiento de grandes bases de código.
  • ]Integración con otras herramientas de Siemens: Muchos productos de Siemens PLM (como Teamcenter) proporcionan API nativas .NET que se combinan bien con la automatización C#.
  • Performance: El código compilado funciona más rápido que el interpretado Python, especialmente para las operaciones que se realizan sobre miles de caras o bordes.
  • Deployment: Los scripts C# deben ser compilados en DLLs o ejecutables. Pueden ser cargados como complementos NX a través de File → Utilities → Herramientas de usuario o colocando el DLL en la carpeta de inicio.

En la práctica, muchos equipos utilizan ambos: Python para tareas ad-hoc y pruebas de conceptos, y C# para herramientas críticas de misión que necesitan una interfaz pulida y un alto rendimiento.

Configuración de Python para la automatización NX

Prerrequisitos

  • Siemens NX (versión 12 o posterior se recomienda; el soporte de Python se mejoró en la serie NX 1926).
  • Python 3.x instalado en la misma máquina (NX no envía su propio Python; usted necesita instalar una versión compatible).
  • El paquete . Esto se incluye a menudo con la instalación NX, pero puede requerir variables de entorno.

Configuración del medio ambiente

Antes de escribir su primer script, asegúrese de que NX puede encontrar su intérprete Python. En Windows, agregue la carpeta de instalación Python a la variable entorno . Luego, dentro de NX, compruebe que ]File → Ejecute → NX Open → Python funciona sin errores.

Tu primer guión de pitón

Lanzamiento NX, crea un nuevo archivo de parte (por ejemplo, ), luego abre el editor de NX Python (o usa un IDE externo como el código VS). Introduzca el siguiente script y ejecute desde el NX vía ]File → Ejecute → NX Open → Navega].

import NXOpen

def main():
 session = NXOpen.Session.GetSession()
 work_part = session.Parts.Work
 # Create a block
 body_feature = work_part.Features.CreateBlockBuilder(NXOpen.Features.BlockBuilder.Null)
 body_feature.BlockBuilder.SetOrigin(NXOpen.Point3d(0, 0, 0))
 body_feature.BlockBuilder.SetLengths(NXOpen.Point3d(100, 50, 30))
 nx_object = body_feature.Commit()
 body_feature.Destroy()
 print("Block created successfully!")

if __name__ == '__main__':
 main()

Cuando se ejecuta, este script crea un bloque de 100×50×30 mm en el origen. El patrón es el mismo para casi cualquier creación de geometría: conseguir un constructor, establecer parámetros, comprometer y destruir el constructor.

Módulos clave para saber

  • – El espacio de nombres principal para todos los objetos NX.
  • – Llamadas de función de usuario ( API más vieja, todavía se utilizan para algunas tareas de bajo nivel).
  • – Ayudadores para conversiones de unidades, matemáticas, etc.

Configuración C# para la automatización NX

Prerrequisitos

  • Siemens NX instalado.
  • Visual Studio (cualquier edición que apoye .NET Framework 4.7.2 o posterior).
  • NX Open .NET asambleas. Ellos se encuentran típicamente en (número de versión ajustada).

Creación de un proyecto de estudio visual

  1. Crear un nuevo proyecto de la Biblioteca C# Class (.NET Framework).
  2. Añádase referencias a las asambleas NX requeridas:
    • (opcional, para llamadas UF)
  3. Establecer el objetivo de la plataforma a x64 (NX es sólo 64 bits).
  4. Construye el proyecto para crear un DLL.

Tu primer script C#

Este ejemplo hace lo mismo que el Python: crear un bloque.

using NXOpen;

public class CreateBlockExample
{
 public static void Main()
 {
 Session session = Session.GetSession();
 Part workPart = session.Parts.Work;

 Features.BlockBuilder blockBuilder = workPart.Features.CreateBlockBuilder(null);
 blockBuilder.SetOrigin(new Point3d(0, 0, 0));
 blockBuilder.SetLengths(new Point3d(100, 50, 30));
 NXObject block = blockBuilder.Commit();
 blockBuilder.Destroy();

 session.ListingWindow.WriteLine("Block created.");
 }
}

Para probar este DLL, compilarlo y luego dentro de NX ir a File → Ejecute → NX Open → Navegar y seleccione el DLL. NX ejecutará el método ] automáticamente si lo marca como el punto de entrada (también puede utilizar el para lanzar un comando personalizado).

Debugging C# Scripts

Adjuntar Visual Studio al proceso NX (]Debug → Adjuntar al Proceso] → seleccionar ). Establecer puntos de rotura en su código C# y ejecutar el script desde el interior de NX. Esto le da una inspección variable completa y depuración paso a paso, una ventaja sobre las declaraciones más simples de Python .

Patrones de automatización de núcleos

Independientemente del idioma, cada script de automatización NX sigue un ciclo de vida similar:

  1. Obtenga la sesión actual – en ambos idiomas.
  2. Obtenga la parte de trabajo ] [o ] para la parte visible.
  3. Crear un constructor – Usar métodos como .
  4. Condiferencia ]: Usar los métodos del constructor (por ejemplo, , ).
  5. Commitir el constructor – Esto crea el objeto NX real y lo devuelve.
  6. Destruir el constructor] – Libera la memoria.
  7. Actualizar la parte – Normalmente sucede automáticamente, pero para algunas operaciones que necesita llamar .

Para operaciones que implican la selección (por ejemplo, el usuario elige una cara), utiliza la clase . Puede crear un diálogo de selección dentro del script o dejar que el usuario seleccione objetos de antemano utilizando métodos de selección interactivos.

Escribir un guión práctico: Piezas de exportación de lotes para el STEP

Construyamos una utilidad real: exportemos todos los archivos de parte abiertos al formato STEP. Esto es un requisito común para la colaboración con otros sistemas CAD. Proveemos tanto las versiones Python como C#.

Python Batch Export

import NXOpen
import os

def export_part_to_step(part, output_folder):
 part_fsa = part.FullPath # full file path
 if not part_fsa:
 print(f"Part {part.Name} has no file path, skipping.")
 return
 step_filename = os.path.join(output_folder, part.Name.replace(".prt", ".stp"))
 # Create step export builder
 step_builder = part.StepExportBuilder()
 step_builder.FileName = step_filename
 step_builder.Commit()
 step_builder.Destroy()
 print(f"Exported {part.Name} to {step_filename}")

def main():
 session = NXOpen.Session.GetSession()
 parts = session.Parts
 output = r"C:\temp\step_exports"
 if not os.path.exists(output):
 os.makedirs(output)
 for part in parts:
 # Skip display part and work part duplicates
 if part == parts.Display or part == parts.Work:
 continue
 export_part_to_step(part, output)

if __name__ == '__main__':
 main()

Este script se utiliza a través de todas las partes cargadas (excluyendo la parte de visualización) y exporta cada una a STEP utilizando .

C# Batch Export

using NXOpen;
using System.IO;

public class BatchStepExport
{
 public static void Main()
 {
 Session session = Session.GetSession();
 PartCollection parts = session.Parts;
 string outputFolder = @"C:\temp\step_exports";
 Directory.CreateDirectory(outputFolder);

 foreach (Part part in parts)
 {
 if (part == parts.Display || part == parts.Work) continue;

 string partPath = part.FullPath;
 if (string.IsNullOrEmpty(partPath)) continue;

 string stepFile = Path.Combine(outputFolder,
 Path.GetFileNameWithoutExtension(partPath) + ".stp");

 StepExportBuilder builder = part.StepExportBuilder();
 builder.FileName = stepFile;
 builder.Commit();
 builder.Destroy();

 session.ListingWindow.WriteLine($"Exported {part.Name} -> {stepFile}");
 }
 }
}

Ambos scripts suponen que usted tiene los permisos de exportación necesarios y que NX puede escribir a la carpeta de salida. El manejo de errores (in-comparación de entrada) debe ser añadido en código de producción.

Mejores prácticas para el desarrollo y el despliegue de scripts

Estructura del Código y Sostenibilidad

  • Modularización:) Rompe su script en funciones o clases. En C#, utilice archivos separados para diferentes grupos de características.
  • Consistent Naming:] Siga las convenciones de nominación de la API NX. Use en C# y en Python para variables locales.
  • Control de la Versión: Usa Git para rastrear los cambios. Los scripts NX evolucionan a medida que cambian sus diseños de piezas.

Manejo y registro de errores

  • Wrap API llama a probar-excepto (Python) o bloques de prueba (C#). Compruebe para errores específicos de NX.
  • Utilice NX para obtener información en tiempo real. Para los registros, escriba a un archivo de texto utilizando (C#) o la secuencia estándar de Python.
  • Destruir siempre a los constructores en un bloque o usar declaración (C#) para evitar las fugas de memoria.

Consideraciones de la ejecución

  • Minimizar el número de llamadas de API dentro de los bucles. Por ejemplo, si necesita acceder a la colección de características de una parte muchas veces, almacenarla en una variable.
  • Para grandes asambleas, utilice banderas para evitar la carga completa de componentes que no necesita.
  • Apaga las actualizaciones de pantalla durante las operaciones de lote. En C#, utilice y vuelva a ser posible después.
  • En Python, puede utilizar .

Pruebas

  • scripts de prueba en Sesión NX aislada (comenzar NX con una nueva parte vacía).
  • Crear partes de prueba con geometría conocida para validar salidas.
  • Para los DLLs de C#, escribir pruebas de unidad utilizando un marco de burla (como Moq) para simular objetos NX – aunque la prueba contra una instancia NX real es más confiable.

Despliegue

  • scripts Python: Distribuir como archivos. Asegúrese de que todos los usuarios tengan versiones compatibles de Python y NX.
  • scripts C#: Proveer un DLL compilado junto con un archivo manifiesto () que registra el complemento. Alternativamente, coloque el DLL en la carpeta bajo la instalación de NX para cargar auto.

Problemas comunes

Versión de API Mismatches

NX Open API es una versión específica. Un script escrito para NX 1926 puede no funcionar con NX 1980 sin modificaciones. Siempre revise la en tiempo de ejecución y ajuste los métodos llama en consecuencia. Consulte la Siemens NX API documentation para la versión correcta.

Errores de importación de pitón

Si ves , asegúrate de que está en tu camino de Python. El archivo suele estar en . Añade este camino a tu variable ambiente .

Constructor no cometido

Si su script no hace nada, verifique que usted llamó y no sólo . Además, compruebe que los parámetros del constructor son válidos (por ejemplo, longitudes negativas causan excepciones).

Permisos y acceso a archivos

Los scripts de exportación de lotes a menudo fallan porque NX no tiene acceso a la carpeta de salida. Ejecute NX como administrador o elija una carpeta en su perfil de usuario. Utilice para resolver caminos relativos.

Conclusión

Desarrollar scripts de automatización personalizadas con Python y C# desbloquea todo el potencial de Siemens NX, lo que le permite simplificar tareas repetitivas, aplicar estándares e integrarse con sistemas PLM más grandes. Python destaca en procesos de desarrollo rápido y de alto contenido de datos, mientras que C# ofrece un rendimiento robusto y capacidades avanzadas de interfaz de usuario.

Empieza pequeña: publica una operación manual, conviértela a un script Python, añada gradualmente complejidad. A medida que ganas confianza, explora las capacidades más profundas de la API — creación de características de átomos, automatización de simulación e incluso vincular NX con bases de datos externas. ]Siemens PLM Community es un excelente recurso para encontrar ejemplos y hacer preguntas.