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()