56 lines
1.9 KiB
Python
56 lines
1.9 KiB
Python
|
|
"""Simple expression lister - writes to file regardless of print issues"""
|
||
|
|
import NXOpen
|
||
|
|
import os
|
||
|
|
import json
|
||
|
|
|
||
|
|
session = NXOpen.Session.GetSession()
|
||
|
|
output_lines = []
|
||
|
|
results = {'expressions': [], 'success': False}
|
||
|
|
|
||
|
|
try:
|
||
|
|
# Get all open parts and find M1_Blank
|
||
|
|
for part in session.Parts:
|
||
|
|
part_name = part.Name if hasattr(part, 'Name') else str(part)
|
||
|
|
if 'M1_Blank' in part_name and '_fem' not in part_name.lower() and '_i' not in part_name.lower():
|
||
|
|
output_lines.append(f"Found part: {part_name}")
|
||
|
|
|
||
|
|
for expr in part.Expressions:
|
||
|
|
try:
|
||
|
|
name = expr.Name
|
||
|
|
# Skip internal expressions (p0, p1, etc.)
|
||
|
|
if name.startswith('p') and len(name) > 1:
|
||
|
|
rest = name[1:].replace('.', '').replace('_', '')
|
||
|
|
if rest.isdigit():
|
||
|
|
continue
|
||
|
|
|
||
|
|
value = expr.Value
|
||
|
|
units = expr.Units.Name if expr.Units else ''
|
||
|
|
rhs = expr.RightHandSide if hasattr(expr, 'RightHandSide') else ''
|
||
|
|
|
||
|
|
results['expressions'].append({
|
||
|
|
'name': name,
|
||
|
|
'value': value,
|
||
|
|
'units': units,
|
||
|
|
'rhs': rhs
|
||
|
|
})
|
||
|
|
output_lines.append(f"{name}: {value} {units}")
|
||
|
|
except:
|
||
|
|
pass
|
||
|
|
|
||
|
|
results['success'] = True
|
||
|
|
break
|
||
|
|
|
||
|
|
except Exception as e:
|
||
|
|
output_lines.append(f"Error: {str(e)}")
|
||
|
|
results['error'] = str(e)
|
||
|
|
|
||
|
|
# Write to file
|
||
|
|
output_path = r"C:\Users\antoi\Atomizer\_expressions_output.json"
|
||
|
|
with open(output_path, 'w') as f:
|
||
|
|
json.dump(results, f, indent=2)
|
||
|
|
|
||
|
|
# Also write text version
|
||
|
|
text_path = r"C:\Users\antoi\Atomizer\_expressions_output.txt"
|
||
|
|
with open(text_path, 'w') as f:
|
||
|
|
f.write('\n'.join(output_lines))
|