Mhdeusi's picture
Create app.py
6a2ea20 verified
Raw
History Blame Contribute Delete
2.5 kB
import gradio as gr
import pandas as pd
import os
def process_excel(file_obj):
try:
# مسیر فایل آپلود شده
input_path = file_obj.name
output_script = "mdb_auto_setup.scr"
# ۱. خواندن داده‌ها از اکسل
df_layers = pd.read_excel(input_path, sheet_name='Layers_Config')
df_geom = pd.read_excel(input_path, sheet_name='Title_Block_Geometry')
geom_data = dict(zip(df_geom['Parameter'], df_geom['Value']))
# ۲. تولید اسکریپت اتوکد
with open(output_script, 'w', encoding='utf-8') as f:
f.write("; --- Generated by MDB Data-Driven Engine ---\n")
# ساخت لایه‌ها
for _, row in df_layers.iterrows():
f.write(f'-LAYER M {row["LayerName"]} C {row["Color"]} \n')
# ترسیم کادر
bl = geom_data['Corner_Bottom_Left']
tr = geom_data['Corner_Top_Right']
f.write(f"LAYER S A-TITLE-BORDER \n")
f.write(f"RECTANG {bl} {tr}\n")
# نوشتن متون (نکته: در نسخه ابری، متن فارسی ممکن است نیاز به فونت خاص داشته باشد)
f.write(f"LAYER S A-TITLE-TEXT \n")
f.write(f"TEXT {bl} 2.5 0 {geom_data['Project_Name']}\n")
f.write(f"TEXT {bl} 5.0 0 {geom_data['Scale']}\n")
f.write("ZOOM E\n")
# بازگرداندن مسیر فایل برای دانلود توسط کاربر
return output_script
except Exception as e:
return f"Error: {str(e)}"
# ۳. طراحی رابط کاربری با Gradio
with gr.Blocks(title="MDB AutoCAD Generator") as demo:
gr.Markdown("# 🏗️ MDB Data-Driven Engine")
gr.Markdown("### فایل اکسل استاندارد خود را آپلود کنید تا اسکریپت اتوکد آماده شود.")
with gr.Row():
input_file = gr.File(label="Upload Excel (mdb_template_data.xlsx)", file_types=[".xlsx"])
output_file = gr.File(label="Download AutoCAD Script (.scr)")
btn = gr.Button("Generate Script 🚀", variant="primary")
btn.click(fn=process_excel, inputs=input_file, outputs=output_file)
gr.Markdown("---")
gr.Markdown("Developed by **Design by mhdeusi** | BIM & Data Modeling Specialist")
# اجرای برنامه
if __name__ == "__main__":
demo.launch()