Files
Atomizer/docs/05_API_REFERENCE/NXOPEN_INTELLISENSE_SETUP.md
Anto01 e3bdb08a22 feat: Major update with validators, skills, dashboard, and docs reorganization
- Add validation framework (config, model, results, study validators)
- Add Claude Code skills (create-study, run-optimization, generate-report,
  troubleshoot, analyze-model)
- Add Atomizer Dashboard (React frontend + FastAPI backend)
- Reorganize docs into structured directories (00-09)
- Add neural surrogate modules and training infrastructure
- Add multi-objective optimization support

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 19:23:58 -05:00

8.1 KiB

NXOpen Python Intellisense Setup

Status: Implemented (2025-11-17)

Enable intelligent code completion for NXOpen Python API using Siemens-provided stub files


Overview

Siemens NX 2412 includes Python stub files (.pyi) that provide full type hints for the NXOpen API. These enable:

  • Autocomplete: Suggestions for classes, methods, and properties
  • Type Hints: Parameter types and return values
  • Documentation: Inline docstrings and API descriptions
  • Error Detection: Type checking catches errors before runtime

This dramatically improves development speed and reduces NXOpen API lookup time.


Prerequisites

  • Siemens NX 2412 (or later) installed with Programming Tools
  • VSCode with Pylance extension (usually installed with Python extension)
  • Python 3.11 environment (required for NXOpen module compatibility)

Setup Instructions

Step 0: Ensure Python 3.11 Environment

NXOpen modules are compiled for Python 3.11. You must use Python 3.11:

# Check your Python version
python --version  # Should show: Python 3.11.x

# If using conda, upgrade atomizer environment:
conda install -n atomizer python=3.11 -y

Step 1: Add NXOpen to Python Path

Create a .pth file in your Python environment's site-packages to enable NXOpen imports:

# For atomizer environment:
# Create file: C:\Users\<username>\anaconda3\envs\atomizer\Lib\site-packages\nxopen.pth
# Contents:
C:\Program Files\Siemens\NX2412\NXBIN\python

This allows import NXOpen to work in your Python scripts!

Step 2: Verify Stub Files Exist

Check that stub files are installed:

# Windows path:
dir "C:\Program Files\Siemens\NX2412\UGOPEN\pythonStubs\NXOpen"

# Should show: __init__.pyi and many module folders (CAE, Assemblies, etc.)

If missing: Reinstall NX 2412 and ensure "Programming Tools" is checked during installation.

Step 3: Configure VSCode

Update .vscode/settings.json in your Atomizer project:

{
    "python.analysis.typeCheckingMode": "basic",
    "python.analysis.stubPath": "C:\\Program Files\\Siemens\\NX2412\\UGOPEN\\pythonStubs"
}

Note: Use double backslashes (\\) in Windows paths for JSON.

Step 4: Restart VSCode

Close and reopen VSCode to load the new stub files.

Step 5: Verify NXOpen Import and Intellisense Works

First, test that NXOpen can be imported:

python
>>> import NXOpen
>>> print("Success! NXOpen is available")
>>> exit()

Then test intellisense:

Open tests/test_nxopen_intellisense.py and verify:

  1. Import Autocomplete:

    • Type import NXOpen. → Should suggest: Part, Session, CAE, Assemblies, etc.
  2. Method Autocomplete:

    • Type session. → Should suggest: GetSession(), Parts, etc.
    • Type expressions. → Should suggest: FindObject, CreateExpression, etc.
  3. Parameter Hints:

    • Hover over CreateExpression() → Shows parameter types and documentation
  4. Documentation Tooltips:

    • Hover over any NXOpen class/method → Shows docstring

If working: Intellisense is configured correctly!


What You Get

Before Intellisense:

import NXOpen
session = NXOpen.Session.GetSession()
# ❌ No suggestions when typing "session."
# ❌ No parameter hints for methods
# ❌ Must look up API in documentation

After Intellisense:

import NXOpen
session = NXOpen.Session.GetSession()
# ✅ Type "session." → See: Parts, ListingWindow, LogFile, etc.
# ✅ Type "session.Parts." → See: Work, Display, FindObject, etc.
# ✅ Hover over methods → See parameter types and documentation
# ✅ Catch type errors before running code

Available Modules

The stub files cover all NXOpen modules:

Core Modules:

  • NXOpen.Session - NX session management
  • NXOpen.Part - Part objects and operations
  • NXOpen.Assemblies - Assembly operations

CAE Modules:

  • NXOpen.CAE - Finite element analysis
  • NXOpen.CAE.FemPart - FEM models
  • NXOpen.CAE.SimSolution - Solutions and solver control

Design Modules:

  • NXOpen.Features - Parametric features
  • NXOpen.Sketches - Sketch operations
  • NXOpen.Modeling - Modeling operations

And many more: Drafting, Display, Motion, Optimization, etc.


Example: Using Intellisense During Development

Scenario: Update Part Expression

Without Intellisense (manual lookup required):

# 1. Google: "NXOpen get expression"
# 2. Find documentation
# 3. Copy method signature
# 4. Hope you got it right
work_part.Expressions.FindObject("tip_thickness")

With Intellisense (guided development):

# 1. Type "work_part.Exp" → Autocomplete suggests "Expressions"
# 2. Type "work_part.Expressions." → See all methods
# 3. Select "FindObject" → See parameter types
# 4. Hover for documentation
work_part.Expressions.FindObject("tip_thickness")  # ✅ Correct!

Benefits for Atomizer Development

1. Faster Development

  • No context switching to documentation
  • Discover APIs as you type
  • Reduce typos and API misuse

2. Better Code Quality

  • Type checking catches errors early
  • Method signatures documented inline
  • Parameter validation before runtime

3. LLM-Assisted Coding

When using Claude Code to develop Atomizer:

  • Claude can "see" NXOpen API structure via stub files
  • Better code generation suggestions
  • Reduced hallucination of API methods

4. Onboarding

  • New contributors learn NXOpen API faster
  • Inline documentation reduces learning curve
  • Explore API without leaving IDE

Integration with Atomizer Workflow

Journal Script Development

When writing NX journal scripts (optimization_engine/solve_simulation.py):

import NXOpen

theSession = NXOpen.Session.GetSession()
workPart = theSession.Parts.Work

# Intellisense shows:
# - workPart.Expressions.FindObject(...)
# - workPart.Expressions.EditWithUnits(...)
# - workPart.Update()
# - workPart.Save(...)

LLM Code Generation

When LLM generates NXOpen code, stub files help:

  • Validate generated code against actual API
  • Suggest corrections for API misuse
  • Provide parameter type hints

Future: NXOpen Documentation Integration

This is Step 1 of NXOpen integration. Future work:

  1. Stub files for intellisense (current)
  2. 🔜 Documentation scraping for LLM knowledge base
  3. 🔜 Authenticated docs access for latest API references
  4. 🔜 LLM-generated journal scripts with validation

Troubleshooting

Intellisense Not Working

Problem: No autocomplete suggestions appear

Solutions:

  1. Check Pylance Extension: VSCode → Extensions → Search "Pylance" → Ensure installed
  2. Verify Settings: .vscode/settings.json has correct stub path
  3. Check Python Interpreter: VSCode bottom-left → Select correct Python environment
  4. Restart VSCode: Close all windows and reopen
  5. Check Stub Path: Ensure path exists and contains NXOpen folder

Wrong Suggestions

Problem: Autocomplete shows incorrect or outdated methods

Solution: Ensure stub files match your NX version:

  • NX 2412 → Use NX2412\ugopen\pythonStubs
  • Different NX version → Update stub path in settings

Type Errors Shown

Problem: Pylance shows type errors for valid code

Solutions:

  1. Set "python.analysis.typeCheckingMode": "basic" (not "strict")
  2. Add # type: ignore for false positives
  3. Update stub files if using newer NX version

References


Next Steps

Now that intellisense is configured:

  1. Try It: Open tests/test_nxopen_intellisense.py and explore
  2. Develop Faster: Use autocomplete when writing journal scripts
  3. Contribute: Help improve Atomizer's NXOpen integration

See: DEVELOPMENT_GUIDANCE.md for strategic roadmap including NXOpen documentation access.


Implemented By: Antoine Letarte Date: 2025-11-17 NX Version: 2412 Status: Production Ready