Neural Acceleration (MLP Surrogate): - Add run_nn_optimization.py with hybrid FEA/NN workflow - MLP architecture: 4-layer (64->128->128->64) with BatchNorm/Dropout - Three workflow modes: - --all: Sequential export->train->optimize->validate - --hybrid-loop: Iterative Train->NN->Validate->Retrain cycle - --turbo: Aggressive single-best validation (RECOMMENDED) - Turbo mode: 5000 NN trials + 50 FEA validations in ~12 minutes - Separate nn_study.db to avoid overloading dashboard Performance Results (bracket_pareto_3obj study): - NN prediction errors: mass 1-5%, stress 1-4%, stiffness 5-15% - Found minimum mass designs at boundary (angle~30deg, thick~30mm) - 100x speedup vs pure FEA exploration Protocol Operating System: - Add .claude/skills/ with Bootstrap, Cheatsheet, Context Loader - Add docs/protocols/ with operations (OP_01-06) and system (SYS_10-14) - Update SYS_14_NEURAL_ACCELERATION.md with MLP Turbo Mode docs NX Automation: - Add optimization_engine/hooks/ for NX CAD/CAE automation - Add study_wizard.py for guided study creation - Fix FEM mesh update: load idealized part before UpdateFemodel() New Study: - bracket_pareto_3obj: 3-objective Pareto (mass, stress, stiffness) - 167 FEA trials + 5000 NN trials completed - Demonstrates full hybrid workflow 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
5.9 KiB
NX Documentation Lookup Module
Overview
This module provides on-demand access to Siemens NX Open and Simcenter documentation via the Dalidou MCP server. Use these tools when building new extractors, NX automation scripts, or debugging NX-related issues.
CRITICAL: When to AUTO-SEARCH Documentation
You MUST call siemens_docs_search BEFORE writing any code that uses NX Open APIs.
Automatic Search Triggers
| User Request | Action Required |
|---|---|
| "Create extractor for {X}" | → siemens_docs_search("{X} NXOpen") |
| "Get {property} from part" | → siemens_docs_search("{property} NXOpen.Part") |
| "Extract {data} from FEM" | → siemens_docs_search("{data} NXOpen.CAE") |
| "How do I {action} in NX" | → siemens_docs_search("{action} NXOpen") |
Any code with NXOpen.* |
→ Search before writing |
Example: User asks "Create an extractor for inertia values"
STEP 1: Immediately search
→ siemens_docs_search("inertia mass properties NXOpen")
STEP 2: Review results, fetch details
→ siemens_docs_fetch("NXOpen.MeasureManager")
STEP 3: Now write code with correct API calls
DO NOT guess NX Open API names. Always search first.
When to Load
Load this module when:
- Creating new NX Open scripts or extractors
- Working with
NXOpen.*namespaces - Debugging NX automation errors
- User mentions "NX API", "NX Open", "Simcenter docs"
- Building features that interact with NX/Simcenter
Available MCP Tools
siemens_docs_search
Purpose: Search across NX Open, Simcenter, and Teamcenter documentation
When to use:
- Finding which class/method performs a specific task
- Discovering available APIs for a feature
- Looking up Nastran card references
Examples:
siemens_docs_search("get node coordinates FEM")
siemens_docs_search("CQUAD4 element properties")
siemens_docs_search("NXOpen.CAE mesh creation")
siemens_docs_search("extract stress results OP2")
siemens_docs_fetch
Purpose: Fetch a specific documentation page with full content
When to use:
- Need complete class reference
- Getting detailed method signatures
- Reading full examples
Examples:
siemens_docs_fetch("NXOpen.CAE.FemPart")
siemens_docs_fetch("Nastran Quick Reference CQUAD4")
siemens_auth_status
Purpose: Check if the Siemens SSO session is valid
When to use:
- Before a series of documentation lookups
- When fetch requests fail
- Debugging connection issues
siemens_login
Purpose: Re-authenticate with Siemens if session expired
When to use:
- After
siemens_auth_statusshows expired - When documentation fetches return auth errors
Workflow: Building New Extractor
When creating a new extractor that uses NX Open APIs:
Step 1: Search for Relevant APIs
→ siemens_docs_search("element stress results OP2")
Review results to identify candidate classes/methods.
Step 2: Fetch Detailed Documentation
→ siemens_docs_fetch("NXOpen.CAE.Result")
Get full class documentation with method signatures.
Step 3: Understand Data Formats
→ siemens_docs_search("CQUAD4 stress output format")
Understand Nastran output structure.
Step 4: Build Extractor
Following EXT_01 template, create the extractor with:
- Proper API calls based on documentation
- Docstring referencing the APIs used
- Error handling for common NX exceptions
Step 5: Document API Usage
In the extractor docstring:
def extract_element_stress(op2_path: Path) -> Dict:
"""
Extract element stress results from OP2 file.
NX Open APIs Used:
- NXOpen.CAE.Result.AskElementStress
- NXOpen.CAE.ResultAccess.AskResultValues
Nastran Cards:
- CQUAD4, CTRIA3 (shell elements)
- STRESS case control
"""
Workflow: Debugging NX Errors
When encountering NX Open errors:
Step 1: Search for Correct API
Error: AttributeError: 'FemPart' object has no attribute 'GetNodes'
→ siemens_docs_search("FemPart get nodes")
Step 2: Fetch Correct Class Reference
→ siemens_docs_fetch("NXOpen.CAE.FemPart")
Find the actual method name and signature.
Step 3: Apply Fix
Document the correction:
# Wrong: femPart.GetNodes()
# Right: femPart.BaseFEModel.FemMesh.Nodes
Common Search Patterns
| Task | Search Query |
|---|---|
| Mesh operations | siemens_docs_search("NXOpen.CAE mesh") |
| Result extraction | siemens_docs_search("CAE result OP2") |
| Geometry access | siemens_docs_search("NXOpen.Features body") |
| Material properties | siemens_docs_search("Nastran MAT1 material") |
| Load application | siemens_docs_search("CAE load force") |
| Constraint setup | siemens_docs_search("CAE boundary condition") |
| Expressions/Parameters | siemens_docs_search("NXOpen Expression") |
| Part manipulation | siemens_docs_search("NXOpen.Part") |
Key NX Open Namespaces
| Namespace | Domain |
|---|---|
NXOpen.CAE |
FEA, meshing, results |
NXOpen.Features |
Parametric features |
NXOpen.Assemblies |
Assembly operations |
NXOpen.Part |
Part-level operations |
NXOpen.UF |
User Function (legacy) |
NXOpen.GeometricUtilities |
Geometry helpers |
Integration with Extractors
All extractors in optimization_engine/extractors/ should:
- Search before coding: Use
siemens_docs_searchto find correct APIs - Document API usage: List NX Open APIs in docstring
- Handle NX exceptions: Catch
NXOpen.NXExceptionappropriately - Follow 20-line rule: If extraction is complex, check if existing extractor handles it
Troubleshooting
| Issue | Solution |
|---|---|
| Auth errors | Run siemens_auth_status, then siemens_login if needed |
| No results | Try broader search terms, check namespace spelling |
| Incomplete docs | Fetch the parent class for full context |
| Network errors | Verify Dalidou is accessible: ping dalidou.local |
Module Version: 1.0 MCP Server: dalidou.local:5000