Spaces:
Build error
Build error
| import os | |
| import gradio as gr | |
| import FreeCAD | |
| import Part | |
| def generate_apdl_from_freecad(freecad_file_path): | |
| """ | |
| Generate an APDL script from a FreeCAD file. | |
| Parameters: | |
| freecad_file_path: Path to the FreeCAD file (.FCStd). | |
| Returns: | |
| Path to the generated APDL script. | |
| """ | |
| # Open the FreeCAD file | |
| doc = FreeCAD.openDocument(freecad_file_path) | |
| obj = doc.Objects[0] # Assuming a single object in the file | |
| # Extract bounding box dimensions | |
| bbox = obj.Shape.BoundBox | |
| length = bbox.XLength | |
| width = bbox.YLength | |
| height = bbox.ZLength | |
| # Generate APDL script | |
| apdl_script = f""" | |
| /prep7 | |
| block, 0, {length:.4f}, 0, {width:.4f}, 0, {height:.4f} | |
| /mesh | |
| esize, 10 | |
| vmesh, all | |
| allsel, all | |
| /solu | |
| antype, static | |
| d, 1, ux, 0 | |
| d, 1, uy, 0 | |
| d, 1, uz, 0 | |
| f, 2, fy, -1000 | |
| solve | |
| /exit | |
| """ | |
| apdl_path = "/tmp/generated_apdl.txt" | |
| with open(apdl_path, "w") as f: | |
| f.write(apdl_script) | |
| # Close the FreeCAD document | |
| FreeCAD.closeDocument(doc.Name) | |
| return apdl_path | |
| def process_freecad_file(freecad_file): | |
| """ | |
| Process the FreeCAD file and generate an APDL script. | |
| Parameters: | |
| freecad_file: Uploaded FreeCAD file (.FCStd). | |
| Returns: | |
| Path to the generated APDL script. | |
| """ | |
| apdl_script_path = generate_apdl_from_freecad(freecad_file.name) | |
| return apdl_script_path | |
| # Gradio Interface | |
| app = gr.Interface( | |
| fn=process_freecad_file, | |
| inputs=gr.File(label="Upload FreeCAD File (.FCStd)"), | |
| outputs=gr.File(label="Download Generated APDL Script"), | |
| live=True, | |
| ) | |
| if __name__ == "__main__": | |
| app.launch() | |