jithenderchoudary commited on
Commit
831d9df
·
verified ·
1 Parent(s): 9a2a93e

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +87 -0
app.py ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import cadquery as cq
2
+ import numpy as np
3
+ import matplotlib.pyplot as plt
4
+ import gradio as gr
5
+
6
+ # Function for Progressive Die Design
7
+ def generate_die(length, width, thickness):
8
+ plate = cq.Workplane("XY").box(length, width, thickness)
9
+ punch = cq.Workplane("XY").rect(10, 10).extrude(5).translate((length/4, width/4, thickness/2))
10
+ die = plate.cut(punch)
11
+ filename = "progressive_die.step"
12
+ cq.exporters.export(die, filename)
13
+ return f"Progressive die design saved as {filename}"
14
+
15
+ # Function for Stress Analysis
16
+ def stress_analysis(force, die_width, die_height, material_strength):
17
+ stress = force / (die_width * die_height)
18
+ safety_factor = material_strength / stress
19
+
20
+ fig, ax = plt.subplots()
21
+ ax.bar(["Stress", "Material Strength"], [stress, material_strength])
22
+ ax.set_ylabel("Stress (MPa)")
23
+ plt.title("Stress Analysis")
24
+ plt.close(fig)
25
+
26
+ return f"Safety Factor: {round(safety_factor, 2)}", fig
27
+
28
+ # Function for Tool Optimization
29
+ def optimize_tool(speed, feed_rate, depth_of_cut, material):
30
+ tool_life = 1000 / (speed * feed_rate * depth_of_cut)
31
+ recommended_speed = 0.8 * speed
32
+ recommended_feed_rate = 0.9 * feed_rate
33
+
34
+ return {
35
+ "Estimated Tool Life (hrs)": round(tool_life, 2),
36
+ "Recommended Speed (m/min)": round(recommended_speed, 2),
37
+ "Recommended Feed Rate (mm/rev)": round(recommended_feed_rate, 2)
38
+ }
39
+
40
+ # Gradio interface functions
41
+ def progressive_die_interface(length, width, thickness):
42
+ return generate_die(length, width, thickness)
43
+
44
+ def stress_analysis_interface(force, width, height, material_strength):
45
+ return stress_analysis(force, width, height, material_strength)
46
+
47
+ def tool_optimization_interface(speed, feed_rate, depth_of_cut, material):
48
+ return optimize_tool(speed, feed_rate, depth_of_cut, material)
49
+
50
+ # Create the Gradio Interface
51
+ with gr.Blocks() as app:
52
+ gr.Markdown("## Press Tool AI Suite")
53
+ gr.Markdown("Select a tool below to get started:")
54
+
55
+ with gr.Tabs():
56
+ with gr.Tab("Progressive Die Design"):
57
+ gr.Markdown("### Enter Dimensions for Progressive Die")
58
+ length = gr.Number(label="Length (mm)", value=100)
59
+ width = gr.Number(label="Width (mm)", value=50)
60
+ thickness = gr.Number(label="Thickness (mm)", value=10)
61
+ die_output = gr.Textbox(label="Output")
62
+ die_button = gr.Button("Generate Die")
63
+ die_button.click(progressive_die_interface, inputs=[length, width, thickness], outputs=die_output)
64
+
65
+ with gr.Tab("Stress Analysis"):
66
+ gr.Markdown("### Enter Parameters for Stress Analysis")
67
+ force = gr.Number(label="Force (N)", value=10000)
68
+ die_width = gr.Number(label="Width (m)", value=0.05)
69
+ die_height = gr.Number(label="Height (m)", value=0.01)
70
+ material_strength = gr.Number(label="Material Strength (MPa)", value=250)
71
+ safety_factor_output = gr.Textbox(label="Safety Factor")
72
+ stress_chart = gr.Plot()
73
+ stress_button = gr.Button("Analyze Stress")
74
+ stress_button.click(stress_analysis_interface, inputs=[force, die_width, die_height, material_strength], outputs=[safety_factor_output, stress_chart])
75
+
76
+ with gr.Tab("Tool Optimization"):
77
+ gr.Markdown("### Enter Machining Parameters for Tool Optimization")
78
+ speed = gr.Number(label="Cutting Speed (m/min)", value=100)
79
+ feed_rate = gr.Number(label="Feed Rate (mm/rev)", value=0.2)
80
+ depth_of_cut = gr.Number(label="Depth of Cut (mm)", value=1.0)
81
+ material = gr.Dropdown(choices=["Steel", "Aluminum", "Titanium"], label="Material", value="Steel")
82
+ optimization_results = gr.JSON(label="Optimization Results")
83
+ optimize_button = gr.Button("Optimize Tool")
84
+ optimize_button.click(tool_optimization_interface, inputs=[speed, feed_rate, depth_of_cut, material], outputs=optimization_results)
85
+
86
+ # Launch the app
87
+ app.launch()