File size: 2,502 Bytes
6a2ea20
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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()