Created
October 12, 2025 11:40
-
-
Save stephensmitchell/63715994ee55d99e95e8d6d6ce2af39e to your computer and use it in GitHub Desktop.
AlibreX and Alibre Script API export script with STEP AP242 for IronPython (Alibre Script addon) access
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
Alibre Export Script | |
""" | |
import clr | |
import sys | |
from System import Environment, IO | |
try: | |
clr.AddReference('AlibreX') | |
import AlibreX | |
ALIBREX_AVAILABLE = True | |
except: | |
ALIBREX_AVAILABLE = False | |
print("Warning: AlibreX not available. OBJ and AP242 export will not work.") | |
try: | |
import AlibreScript | |
ALIBRESCRIPT_AVAILABLE = True | |
except: | |
ALIBRESCRIPT_AVAILABLE = False | |
print("Warning: AlibreScript not available.") | |
class ExportError(Exception): | |
"""Custom exception for export errors""" | |
pass | |
class AlibreExporter(object): | |
""" | |
Comprehensive exporter supporting both AlibreScript and AlibreX APIs | |
""" | |
def __init__(self, part=None): | |
""" | |
Initialize the exporter | |
Args: | |
part: Optional AlibreScript Part object. If None, will use CurrentPart() | |
""" | |
self.alibrescript_part = None | |
self.alibrex_session = None | |
if part is not None: | |
self.alibrescript_part = part | |
else: | |
try: | |
self.alibrescript_part = CurrentPart() | |
except: | |
raise ExportError("Unable to access current part via AlibreScript API") | |
if ALIBREX_AVAILABLE and ALIBRESCRIPT_AVAILABLE: | |
try: | |
root = AlibreScript.API.Global.Root | |
self.alibrex_session = root.TopmostSession | |
if self.alibrex_session is None: | |
print("Warning: AlibreX session not available") | |
except Exception as e: | |
print("Warning: Could not access AlibreX session: " + str(e)) | |
def export_STEPAP203(self, filepath): | |
if not self.alibrescript_part: | |
raise ExportError("AlibreScript Part not available") | |
try: | |
self.alibrescript_part.ExportSTEP203(filepath) | |
return True | |
except Exception as e: | |
raise ExportError("STEP 203 export failed: " + str(e)) | |
def export_STEPAP214(self, filepath): | |
if not self.alibrescript_part: | |
raise ExportError("AlibreScript Part not available") | |
try: | |
self.alibrescript_part.ExportSTEP214(filepath) | |
return True | |
except Exception as e: | |
raise ExportError("STEP 214 export failed: " + str(e)) | |
def export_STEPAP242(self, filepath): | |
if not self.alibrex_session: | |
raise ExportError("AlibreX session not available for AP242 export") | |
try: | |
self.alibrex_session.ExportAP242(filepath) | |
return True | |
except Exception as e: | |
raise ExportError("STEP AP242 export failed: " + str(e)) | |
def export_IGES(self, filepath): | |
if not self.alibrescript_part: | |
raise ExportError("AlibreScript Part not available") | |
try: | |
self.alibrescript_part.ExportIGES(filepath) | |
return True | |
except Exception as e: | |
raise ExportError("IGES export failed: " + str(e)) | |
def export_STL(self, filepath): | |
if not self.alibrescript_part: | |
raise ExportError("AlibreScript Part not available") | |
try: | |
self.alibrescript_part.ExportSTL(filepath) | |
return True | |
except Exception as e: | |
raise ExportError("STL export failed: " + str(e)) | |
def export_OBJ(self, filepath): | |
if not self.alibrex_session: | |
raise ExportError("AlibreX session not available for OBJ export") | |
try: | |
self.alibrex_session.ExportOBJ(filepath) | |
return True | |
except Exception as e: | |
raise ExportError("OBJ export failed: " + str(e)) | |
def export_SAT(self, filepath, version=7, save_colors=True): | |
if not self.alibrescript_part: | |
raise ExportError("AlibreScript Part not available") | |
try: | |
self.alibrescript_part.ExportSAT(filepath, version, save_colors) | |
return True | |
except Exception as e: | |
raise ExportError("SAT export failed: " + str(e)) | |
def export_BIP(self, filepath): | |
if not self.alibrescript_part: | |
raise ExportError("AlibreScript Part not available") | |
try: | |
self.alibrescript_part.ExportBIP(filepath) | |
return True | |
except Exception as e: | |
raise ExportError("BIP export failed: " + str(e)) | |
desktop_path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\" + "exports" + "\\" | |
print("Exporting all formats to Desktop...") | |
print("Destination folder: " + desktop_path + "\n" + "exports" + "\n" ) | |
try: | |
exporter = AlibreExporter() | |
step203_path = IO.Path.Combine(desktop_path, "exported_part_STEP203") | |
step214_path = IO.Path.Combine(desktop_path, "exported_part_STEP214") | |
ap242_path = IO.Path.Combine(desktop_path, "exported_part_STEPAP242") | |
iges_path = IO.Path.Combine(desktop_path, "exported_part") | |
stl_path = IO.Path.Combine(desktop_path, "exported_part.stl") | |
obj_path = IO.Path.Combine(desktop_path, "exported_part.obj") | |
sat_path = IO.Path.Combine(desktop_path, "exported_part.sat") | |
bip_path = IO.Path.Combine(desktop_path, "exported_part.bip") | |
results = [] | |
try: | |
exporter.export_STEPAP203(step203_path) | |
results.append("✅ STEP 203 exported: " + step203_path) | |
except Exception as e: | |
results.append("❌ STEP 203 failed: " + str(e)) | |
try: | |
exporter.export_STEPAP214(step214_path) | |
results.append("✅ STEP 214 exported: " + step214_path) | |
except Exception as e: | |
results.append("❌ STEP 214 failed: " + str(e)) | |
try: | |
exporter.export_STEPAP242(ap242_path) | |
results.append("✅ STEP AP242 exported: " + ap242_path) | |
except Exception as e: | |
results.append("❌ STEP AP242 failed: " + str(e)) | |
try: | |
exporter.export_IGES(iges_path) | |
results.append("✅ IGES exported: " + iges_path) | |
except Exception as e: | |
results.append("❌ IGES failed: " + str(e)) | |
try: | |
exporter.export_STL(stl_path) | |
results.append("✅ STL exported: " + stl_path) | |
except Exception as e: | |
results.append("❌ STL failed: " + str(e)) | |
try: | |
exporter.export_OBJ(obj_path) | |
results.append("✅ OBJ exported: " + obj_path) | |
except Exception as e: | |
results.append("❌ OBJ failed: " + str(e)) | |
try: | |
exporter.export_SAT(sat_path) | |
results.append("✅ SAT exported: " + sat_path) | |
except Exception as e: | |
results.append("❌ SAT failed: " + str(e)) | |
try: | |
exporter.export_BIP(bip_path) | |
results.append("✅ BIP exported: " + bip_path) | |
except Exception as e: | |
results.append("❌ BIP failed: " + str(e)) | |
print("\n--- Export Summary ---") | |
for line in results: | |
print(line) | |
except Exception as e: | |
print("❌ Batch export failed: " + str(e)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment