鱼C论坛

 找回密码
 立即注册
查看: 551|回复: 1

根据excel中坐标信息,自动插入图块到autocad

[复制链接]
发表于 2024-10-2 21:22:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
根据excel中坐标信息,自动插入图块到autocad
需求如下
1、根据一个excel的内容中的坐标信息,X,Y坐标,按照excel中所有的坐标插入指定的图块到指定的cad图纸中。
2、excel文件,作为插入图块的cad图纸,生成插入图块的cad图文件夹,都用tkinter的用户界面指定,用户界面上有明确的指示,选中后能在面板看到引用的文件信息。
3、excel中的信息如下图,指定了仪表位号,坐标点的X,Y信息,根据这些信息,通过tkinter指定插入图块,和用于插入图块的文件夹信息,完成插入。
仪表号        POS_X        POS_Y        POS_Z
/XV-5310038        26600        7300        11800
/TE-5310015        27000        10000        15000
/PG-5310043        27000        9600        15200
/FT-5310017        33200        -1200        5100
4、在用户界面,指定生成图纸的Z坐标的最小值和最大值,将符合Z坐标区间的,生成一个文件名为“{Z最小值}-{Z最大值}”.dwg的CAD文件,插入图块,并保存在用户界面指定的保存文件的文件夹。


converted_excel.zip

12.69 KB, 下载次数: 1

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-10-2 21:33:29 | 显示全部楼层
这个需求可以通过Python中的`Tkinter`库和`pyautocad`库来实现,这里简单说明一下实现步骤:

1. **安装需要的库**:
  
  1. pip install pyautocad pandas openpyxl
复制代码


2. **实现用户界面**:使用`tkinter`来实现文件选择界面:

  
  1. import tkinter as tk
  2.    from tkinter import filedialog
  3.    import pandas as pd
  4.    from pyautocad import Autocad, APoint

  5.    class CADInserterApp:
  6.        def __init__(self, root):
  7.            self.root = root
  8.            self.root.title('CAD 插入图块工具')

  9.            self.excel_file = tk.StringVar()
  10.            self.save_folder = tk.StringVar()

  11.            tk.Label(root, text="选择Excel文件:").pack()
  12.            tk.Entry(root, textvariable=self.excel_file).pack()
  13.            tk.Button(root, text="选择文件", command=self.select_excel_file).pack()

  14.            tk.Label(root, text="选择保存文件夹:").pack()
  15.            tk.Entry(root, textvariable=self.save_folder).pack()
  16.            tk.Button(root, text="选择文件夹", command=self.select_save_folder).pack()

  17.            tk.Label(root, text="Z坐标最小值:").pack()
  18.            self.z_min = tk.Entry(root)
  19.            self.z_min.pack()

  20.            tk.Label(root, text="Z坐标最大值:").pack()
  21.            self.z_max = tk.Entry(root)
  22.            self.z_max.pack()

  23.            tk.Button(root, text="插入图块", command=self.insert_blocks).pack()

  24.        def select_excel_file(self):
  25.            file_path = filedialog.askopenfilename(filetypes=[('Excel Files', '*.xlsx')])
  26.            self.excel_file.set(file_path)

  27.        def select_save_folder(self):
  28.            folder_path = filedialog.askdirectory()
  29.            self.save_folder.set(folder_path)

  30.        def insert_blocks(self):
  31.            excel_path = self.excel_file.get()
  32.            save_folder = self.save_folder.get()
  33.            z_min = float(self.z_min.get())
  34.            z_max = float(self.z_max.get())

  35.            df = pd.read_excel(excel_path)
  36.            df_filtered = df[(df['POS_Z'] >= z_min) & (df['POS_Z'] <= z_max)]

  37.            acad = Autocad(create_if_not_exists=True)
  38.            for index, row in df_filtered.iterrows():
  39.                block_name = row['仪表号']
  40.                pos_x = row['POS_X']
  41.                pos_y = row['POS_Y']
  42.                insert_point = APoint(pos_x, pos_y, 0)
  43.                acad.model.InsertBlock(insert_point, block_name, 1, 1, 1, 0)

  44.            acad.doc.SaveAs(f"{save_folder}/{z_min}-{z_max}.dwg")

  45.    if __name__ == "__main__":
  46.        root = tk.Tk()
  47.        app = CADInserterApp(root)
  48.        root.mainloop()
复制代码


3. **运行程序**:执行上述代码,会弹出一个界面,根据界面提示选择对应的Excel文件和保存文件夹,并输入Z坐标的区间,最后点击“插入图块”按钮即可完成操作。

注意:这里简化了很多步骤和错误处理,需要根据具体的需求自行调整细节,比如:
- 确保Autocad已经启动并打开需要处理的文件。
- CAD中已经存在指定的图块。
- 添加更多的错误处理和信息提示。

希望这个示例可以帮助你完成需求。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-20 00:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表