Spaces:
Runtime error
Runtime error
| 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() | |