Table of Contents
Inleiding tot aangepaste NX Automatisering Scripts
Siemens NX is een krachtig CAD/CAM/CAE platform dat verder gaat dan handmatige modellering door het blootstellen van een rijke set API's voor automatisering. Het schrijven van aangepaste scripts in Python of C# stelt ingenieurs en ontwikkelaars in staat om repetitieve handmatige werk te elimineren, af te dwingen ontwerpnormen, en NX te integreren in grotere engineering pijpleidingen. Of u nu batch-export bestanden, automatiseer geometrie creatie, of uitvoeren simulaties zonder tussenkomst van de gebruiker, mastering NX scripting is een kracht multiplier voor elk ontwerpteam.
Dit artikel biedt een uitgebreide, praktische handleiding voor het ontwikkelen van aangepaste NX-automatiseringsscripts met behulp van zowel Python als C#. U leert de verschillen tussen de twee talen, hoe u uw ontwikkelomgeving kunt instellen, productie-ready scripts kunt schrijven en best practices kunt toepassen om gemeenschappelijke valkuilen te voorkomen. Het doel is om u een solide basis te geven voor robuuste automatisering die naadloos werkt met uw NX-workflow.
Het begrijpen van het NX-automatiseringsecosysteem
NX automatisering is gebouwd op de NX Open API, een uitgebreide bibliotheek die bijna elke functionaliteit beschikbaar in de NX-gebruikersinterface blootlegt. De API is beschikbaar in meerdere programmeerinterfaces:
- NX Open voor Python . . Biedt Python bindingen voor de NX Open API. Ideaal voor snelle scripting, prototyping en integratie met data science bibliotheken.
- NX Open voor .NET . . .Volledig .NET assemblages (C#, VB.NET) die u toegang geven tot het gehele NX-objectmodel. Beste voor complexe, prestatiekritische toepassingen met UI-componenten.
- NX Open C++
- Journaling
Alle API's delen een soortgelijk objectmodel, maar taalspecifieke nuances bestaan. De sleutel is om te begrijpen dat NX-automatisering een gebeurtenisgestuurd object is; je maakt meestal een object, gebruik dan , , en verschillende bouwersklassen om met het model in interactie te treden.
Kiezen tussen Python en C#
De beslissing tussen Python en C# voor NX automatisering hangt af van uw projectvereisten, teamexpertise en implementatieomgeving. Hieronder vindt u een gedetailleerde vergelijking:
Python voor NX-automatisering
- Gebruiksgemak: Python maakt het de snelste manier om automatiseringsscripts te schrijven. Het is ideaal voor ingenieurs die geen fulltime ontwikkelaars zijn.
- Snelle Prototyping: Je kunt scripts interactief testen met behulp van een ingebouwde Python-console binnen NX (sinds NX 12).
- Gegevensintegratie: Python.Het uitgestrekte ecosysteem (NumPy, Pandas, Matplotlib) laat u toe NX-automatisering te combineren met data-analyse en visualisatie.
- Prestatie: Python wordt geïnterpreteerd; voor zeer grote assemblages of strakke lussen, kan het langzamer zijn dan C#. Echter, voor de meeste scriptingtaken is de overhead verwaarloosbaar.
- Implementatie: Python scripts zijn platte tekstbestanden. Ze kunnen binnen NX worden uitgevoerd via het File → Execute → NX Open menu of door het commando te gebruiken in de NX commandoregel.
C# voor NX-automatisering
- Volledige toegang tot .NET: C# geeft u het hele .NET-kader, inclusief Windows-formulieren of WPF voor aangepaste UI-dialogen, achtergrondthreads en geavanceerde debuggen in Visual Studio.
- Sterk getypt: C# vangt veel fouten op compilatietijd, waardoor het gemakkelijker wordt om grote codebases te behouden.
- Integratie met andere Siemens Tools: Veel Siemens PLM producten (zoals Teamcenter) bieden inheemse .NET API's die goed aansluiten bij C# automatisering.
- Prestatie: De samengestelde code loopt sneller dan Python, vooral voor operaties die over duizenden gezichten of randen itereren.
- Implementatie: C# scripts moeten worden gecompileerd in DLL's of uitvoerbare bestanden. Ze kunnen worden geladen als NX-add-ons via Bestand → Hulpmiddelen → Gebruikershulpmiddelen of door het plaatsen van de DLL in de opstartmap.
In de praktijk gebruiken veel teams beide: Python voor ad-hoctaken en proof-of-concepten, en C# voor missiekritische tools die een gepolijste interface en hoge prestaties vereisen.
Python instellen voor NX-automatisering
Vereisten
- Siemens NX (versie 12 of later wordt aanbevolen; Python ondersteuning werd versterkt in NX 1926 Series).
- Python 3.x geïnstalleerd op dezelfde machine (NX niet zijn eigen Python, u moet een compatibele versie installeren).
- Het pakket. Dit wordt vaak opgenomen bij de NX installatie, maar kan omgevingsvariabelen instellen vereisen.
Omgevingsconfiguratie
Voordat je je eerste script schrijft, zorg ervoor dat NX je Python-interpreter kan vinden. In Windows, voeg de Python-installatiemap toe aan de omgevingsvariabele . Controleer dan binnen NX of Bestand → Uitvoeren → NX Open → Python werkt zonder fouten. Als je een ..Niet in staat om Python-bericht te laden, controleer dan of de variabele wijst naar je Python-wortelmap.
Uw eerste Python Script
Start NX, maak een nieuw deel bestand (bijv. ), open dan de NX Python editor (of gebruik een externe IDE zoals VS Code). Voer het volgende script in en voer het uit vanuit NX via Bestand → Uitvoeren → NX Open → Bladeren.
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()
Wanneer uitgevoerd, dit script maakt een 100×50×30 mm blok bij de oorsprong. Het patroon is hetzelfde voor bijna elke geometrie creatie: krijg een bouwer, stel parameters in, commit, en vernietig de bouwer.
Sleutel Python-modules om te weten
- .. Gebruikersfunctie aanroepen (oudere API, nog steeds gebruikt voor een aantal low-level taken).
- .. Helpers voor eenheid conversies, wiskunde, enz.
C# instellen voor NX-automatisering
Vereisten
- Siemens NX geïnstalleerd.
- Visual Studio (een editie die .NET Framework 4.7.2 of later ondersteunt).
- NX Open .NET assemblages. Ze zijn meestal gelegen in (versienummer aanpassen).
Een visueel Studio Project aanmaken
- Maak een nieuw C# Class Library (.NET Framework) project aan.
- Voeg verwijzingen toe naar de vereiste NX-assemblages:
- (facultatief, voor UF-oproepen)
- Stel het platformdoel in op x64 (NX is 64-bits).
- Bouw het project om een DLL te maken.
Uw eerste C# Script
Dit voorbeeld doet hetzelfde als de Python één: maak een blok.
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.");
}
}
Om deze DLL te testen, compileer het en ga dan naar Bestand → Uitvoeren → NX Open → Bladeren en selecteer de DLL. NX zal de methode automatisch uitvoeren als je het markeert als het invoerpunt (u kunt ook de gebruiken om een aangepaste opdracht te starten).
Debuggen van C#-scripts
Bevestig Visual Studio aan het NX-proces (Debug → Bevestig aan Proces → selecteer ]). Stel breekpunten in je C#-code in en voer het script uit vanuit NX. Dit geeft je volledige variabele inspectie en stap-door debuggen, een voordeel ten opzichte van Python... eenvoudiger statements.
Kern Automatiseringspatronen
Ongeacht taal volgt elk NX automatiseringsscript een vergelijkbare levenscyclus:
- Haal de huidige sessie
- Haal het werkdeel
- Maak een bouwer .Gebruik methoden zoals .
- Instellen van parameters
- Commit de bouwer
- Vernietig de bouwer . . .
- Het deel bijwerken
Voor operaties die selectie omvatten (bijvoorbeeld een gebruiker kiest een gezicht), gebruik je de klasse . Je kunt een selectiedialoog aanmaken in het script of je kunt de gebruiker objecten vooraf laten selecteren door middel van interactieve selectiemethoden.
Een praktisch script schrijven: Batch Delen exporteren naar STAP
Laat ons een real-world utility bouwen: exporteer alle open part bestanden naar STEP formaat. Dit is een gemeenschappelijke eis voor samenwerking met andere CAD systemen. We .ll bieden zowel Python en C# versies.
Python-Batchexport
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()
Dit script itereert door alle geladen delen (met uitzondering van het displaygedeelte) en exporteert elk naar STEP met behulp van de .
C# Batch exporteren
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}"); } } }Beide scripts gaan ervan uit dat je de nodige exportrechten hebt en dat NX naar de uitvoermap kan schrijven. Foutafhandeling (try-catch) moet worden toegevoegd aan de productiecode.
Beste praktijken voor Scriptontwikkeling en implementatie
Codestructuur en handhaving
- Modularisatie: Breek je script in functies of klassen. Gebruik in C# aparte bestanden voor verschillende groepen functies.
- Consistente naamgeving: Volg de NX API-naamgevingsconventies. Gebruik in C# en in Python voor lokale variabelen.
- Versiecontrole: Gebruik Git om wijzigingen te volgen. NX-scripts evolueren naarmate je onderdeel verandert.
Fout bij het verwerken en loggen
- Wrap API-oproepen in try-except (Python) of try-catch (C#) blokken. Controleer op specifieke NX-fouten.
- Gebruik NX
- Vernietig altijd bouwers in een blok of gebruik statement (C#) om geheugenlekken te voorkomen.
Prestatieoverwegingen
- Minimaliseer het aantal API-aanroepen binnen loops. Bijvoorbeeld, als u meerdere malen toegang moet hebben tot een part ..Functiecollectie, sla het dan op in een variabele.
- Gebruik voor grote assemblages vlaggen om te voorkomen dat u componenten volledig laadt die u niet nodig hebt.
- Schakel schermupdates uit tijdens batchbewerkingen. In C#, gebruik en heractiveer daarna.
- In Python kun je gebruiken.
Testen
- Testscripts in Geïsoleerde NX-sessie (start NX met een nieuw leeg onderdeel).
- Maak testonderdelen met bekende geometrie om outputs te valideren.
- Voor C# DLLs, schrijf unit testen met behulp van een spottende framework (zoals Moq) om NX objecten te simuleren . . Hoewel testen tegen een echte NX instantie is betrouwbaarder.
Inzet
- Python scripts: Distribute as bestanden. Zorg ervoor dat alle gebruikers compatibel Python en NX versies hebben.
- C# scripts: Zorg voor een gecompileerde DLL samen met een manifest bestand ([) dat de invoegtoepassing registreert. Als alternatief, plaats de DLL in de map onder NX installatie om automatisch te laden.
Problemen oplossen van gemeenschappelijke problemen
API-versie komt niet overeen
NX Open API is versiespecifiek. Een script geschreven voor NX 1926 kan niet werken met NX 1980 zonder wijzigingen. Controleer altijd de op runtime en pas de methode aan. Raadpleeg de Siemens NX API documentatie voor de juiste versie.
Python-importfouten
Als je ziet, zorg dan dat in je Python pad zit. Het bestand bevindt zich meestal in ]. Voeg dit pad toe aan je omgevingsvariabele.
Bouwer niet ingeschakeld
Als je script niets doet, controleer dan of je hebt gebeld en niet alleen . Controleer ook of de parameters van de bouwer geldig zijn (bijv. negatieve lengtes veroorzaken uitzonderingen).
Rechten en Bestandstoegang
Batch export scripts vaak falen omdat NX geen schrijftoegang heeft tot de uitvoermap. Voer NX uit als beheerder of kies een map in uw gebruikersprofiel. Gebruik om relatieve paden op te lossen.
Conclusie
Het ontwikkelen van aangepaste automatiseringsscripts met Python en C# ontsluit het volledige potentieel van Siemens NX, zodat u repetitieve taken kunt stroomlijnen, normen kunt handhaven en integreren met grotere PLM-systemen. Python blinkt uit in snelle ontwikkeling en data-rijke processen, terwijl C# robuuste prestaties en geavanceerde UI-mogelijkheden biedt. Door het begrijpen van de NX Open API, het correct instellen van uw omgeving, en het volgen van beste praktijken voor foutverwerking en prestaties, kunt u scripts bouwen die betrouwbaar en onderhoudbaar zijn in NX-versies.
Start klein: journaal een handmatige bewerking, zet het om naar een Python script, voeg vervolgens geleidelijk complexiteit toe. Als je vertrouwen krijgt, verken je de diepere mogelijkheden van de API