Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -4,7 +4,6 @@ import gradio as gr
|
|
| 4 |
import cadquery as cq
|
| 5 |
from cadquery import exporters
|
| 6 |
import trimesh
|
| 7 |
-
import pyvista as pv
|
| 8 |
from io import BytesIO
|
| 9 |
import json
|
| 10 |
import atexit
|
|
@@ -22,17 +21,17 @@ def cleanup_temp_files():
|
|
| 22 |
atexit.register(cleanup_temp_files)
|
| 23 |
|
| 24 |
# Define 2D and 3D view generation functions with error handling
|
| 25 |
-
def generate_2d_view(
|
| 26 |
try:
|
| 27 |
-
model =
|
| 28 |
two_d_image = model.toSvg()
|
| 29 |
return two_d_image
|
| 30 |
except Exception as e:
|
| 31 |
return f"Error generating 2D view: {str(e)}"
|
| 32 |
|
| 33 |
-
def generate_3d_view(
|
| 34 |
try:
|
| 35 |
-
model =
|
| 36 |
mesh = trimesh.Trimesh(vertices=model.val().vertices(), faces=model.val().faces())
|
| 37 |
three_d_image = mesh.show()
|
| 38 |
return three_d_image
|
|
@@ -40,14 +39,29 @@ def generate_3d_view(step_file):
|
|
| 40 |
return f"Error generating 3D view: {str(e)}"
|
| 41 |
|
| 42 |
# Wrapper function to generate views
|
| 43 |
-
def generate_views(
|
| 44 |
try:
|
| 45 |
-
two_d_view = generate_2d_view(
|
| 46 |
-
three_d_view = generate_3d_view(
|
| 47 |
return two_d_view, three_d_view
|
| 48 |
except Exception as e:
|
| 49 |
return f"Error: {str(e)}", None
|
| 50 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 51 |
# APDL script generation
|
| 52 |
def generate_apdl_script(file, press_force, material_json):
|
| 53 |
try:
|
|
@@ -57,7 +71,7 @@ def generate_apdl_script(file, press_force, material_json):
|
|
| 57 |
|
| 58 |
# Use temporary file path for processing
|
| 59 |
step_file_path = file.name
|
| 60 |
-
model =
|
| 61 |
|
| 62 |
stl_file = step_file_path.replace(".stp", ".stl")
|
| 63 |
exporters.export(model, stl_file)
|
|
@@ -100,7 +114,10 @@ def main():
|
|
| 100 |
gr.Markdown("# Press Tool Design and APDL Script Generator")
|
| 101 |
|
| 102 |
with gr.Row():
|
| 103 |
-
step_input = gr.File(
|
|
|
|
|
|
|
|
|
|
| 104 |
|
| 105 |
with gr.Row():
|
| 106 |
two_d_output = gr.Textbox(label="2D View/Error Message", interactive=False)
|
|
|
|
| 4 |
import cadquery as cq
|
| 5 |
from cadquery import exporters
|
| 6 |
import trimesh
|
|
|
|
| 7 |
from io import BytesIO
|
| 8 |
import json
|
| 9 |
import atexit
|
|
|
|
| 21 |
atexit.register(cleanup_temp_files)
|
| 22 |
|
| 23 |
# Define 2D and 3D view generation functions with error handling
|
| 24 |
+
def generate_2d_view(file):
|
| 25 |
try:
|
| 26 |
+
model = process_cad_file(file)
|
| 27 |
two_d_image = model.toSvg()
|
| 28 |
return two_d_image
|
| 29 |
except Exception as e:
|
| 30 |
return f"Error generating 2D view: {str(e)}"
|
| 31 |
|
| 32 |
+
def generate_3d_view(file):
|
| 33 |
try:
|
| 34 |
+
model = process_cad_file(file)
|
| 35 |
mesh = trimesh.Trimesh(vertices=model.val().vertices(), faces=model.val().faces())
|
| 36 |
three_d_image = mesh.show()
|
| 37 |
return three_d_image
|
|
|
|
| 39 |
return f"Error generating 3D view: {str(e)}"
|
| 40 |
|
| 41 |
# Wrapper function to generate views
|
| 42 |
+
def generate_views(file):
|
| 43 |
try:
|
| 44 |
+
two_d_view = generate_2d_view(file)
|
| 45 |
+
three_d_view = generate_3d_view(file)
|
| 46 |
return two_d_view, three_d_view
|
| 47 |
except Exception as e:
|
| 48 |
return f"Error: {str(e)}", None
|
| 49 |
|
| 50 |
+
# Function to process different CAD file formats
|
| 51 |
+
def process_cad_file(file):
|
| 52 |
+
file_extension = os.path.splitext(file.name)[-1].lower()
|
| 53 |
+
if file_extension in [".stp", ".step"]:
|
| 54 |
+
model = cq.importers.importStep(file.name)
|
| 55 |
+
elif file_extension in [".iges", ".igs"]:
|
| 56 |
+
model = cq.importers.importStep(file.name) # Same as STEP for cadquery
|
| 57 |
+
elif file_extension == ".sldprt":
|
| 58 |
+
raise NotImplementedError("SLDPRT support is not yet implemented.")
|
| 59 |
+
elif file_extension == ".dwg":
|
| 60 |
+
raise NotImplementedError("DWG support is not yet implemented.")
|
| 61 |
+
else:
|
| 62 |
+
raise ValueError(f"Unsupported file format: {file_extension}")
|
| 63 |
+
return model
|
| 64 |
+
|
| 65 |
# APDL script generation
|
| 66 |
def generate_apdl_script(file, press_force, material_json):
|
| 67 |
try:
|
|
|
|
| 71 |
|
| 72 |
# Use temporary file path for processing
|
| 73 |
step_file_path = file.name
|
| 74 |
+
model = process_cad_file(file)
|
| 75 |
|
| 76 |
stl_file = step_file_path.replace(".stp", ".stl")
|
| 77 |
exporters.export(model, stl_file)
|
|
|
|
| 114 |
gr.Markdown("# Press Tool Design and APDL Script Generator")
|
| 115 |
|
| 116 |
with gr.Row():
|
| 117 |
+
step_input = gr.File(
|
| 118 |
+
label="Upload CAD File",
|
| 119 |
+
file_types=[".stp", ".step", ".iges", ".igs", ".sldprt", ".dwg"]
|
| 120 |
+
)
|
| 121 |
|
| 122 |
with gr.Row():
|
| 123 |
two_d_output = gr.Textbox(label="2D View/Error Message", interactive=False)
|