diff --git a/atomizer-dashboard/backend/api/routes/optimization.py b/atomizer-dashboard/backend/api/routes/optimization.py index e1234f64..ec924f4b 100644 --- a/atomizer-dashboard/backend/api/routes/optimization.py +++ b/atomizer-dashboard/backend/api/routes/optimization.py @@ -4662,8 +4662,31 @@ async def run_baseline_simulation(study_id: str): # Try to run the solver try: from optimization_engine.nx.solver import NXSolver + from pathlib import Path as P + + # Try to get NX settings from spec + spec_file = study_dir / "atomizer_spec.json" + nx_install_path = None + if spec_file.exists(): + with open(spec_file) as f: + spec_data = json.load(f) + nx_install_path = ( + spec_data.get("model", {}).get("nx_settings", {}).get("nx_install_path") + ) + + # Default to common installation path if not in spec + if not nx_install_path: + for candidate in [ + "C:/Program Files/Siemens/DesigncenterNX2512", + "C:/Program Files/Siemens/NX2506", + "C:/Program Files/Siemens/NX2412", + ]: + if P(candidate).exists(): + nx_install_path = candidate + break solver = NXSolver( + nx_install_dir=P(nx_install_path) if nx_install_path else None, nastran_version="2512", timeout=600, use_journal=True,