添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

python读取excel数据写入CAD指定位置

专栏 / python读取excel数据写入CAD指定位置

python读取excel数据写入CAD指定位置

2023年08月16日 09:25 --浏览 · --喜欢 · 肖冰的百宝箱
粉丝: 178 文章: 1

代码原理是新建空列表,打开excel文件,读取第一个工作簿的信息以键值对形式存入列表,打开cad,在指定位置(P1坐标)写入值的信息,或许源代码通过修改会有更好的用处,代码如下,可以直接复制进python自带编辑器:

#本程序可从excel中读取数据,再将数据写入cad文件指定位置。

import xlrd

from xlrd import xldate_as_tuple

import datetime     #导入需要读取的第一个Excel表格的路径

from pyautocad import Autocad, APoint

import re

import math

# 打开cad文件 自动连接上cad,只要cad是开着的,就创建了一个<pyautocad.api.Autocad> 对象。这个对象连接最近打开的cad文件。 如果此时还没有打开cad,将会创建一个新的dwg文件,并自动开启cad软件

acad = Autocad(create_if_not_exists=True)

# acad.prompt() 用来在cad控制台中打印文字

acad.prompt("Hello, Autocad from Python")

# acad.doc.Name储存着cad最近打开的图形名

print(acad.doc.Name)

data1 = xlrd.open_workbook(r'D:\\自编明细表.xls')

table = data1.sheets()[0]

tables = []  #创建一个空列表,存储Excel的数据

def import_excel(excel):     #将excel表格内容导入到tables列表中,定义一个import_excel函数,利用for循环导入表格数据

for rown in range(excel.nrows):

array = {'杆号':'','杆型':'','直耐终':'','转角度数':'','档距':''}

array['杆号'] = table.cell_value(rown,1)

array['杆型'] = table.cell_value(rown,2)

array['直耐终'] = table.cell_value(rown,3)

array['转角度数'] = table.cell_value(rown,4)

array['档距'] = table.cell_value(rown,5)

tables.append(array)

p1=APoint(1559.72,1103.63)  #杆号

p2=APoint(1569.44,1105.77)  #杆型

p3=APoint(1569.44,1101.26)  #转角度数

p4=APoint(1595.64,1098.31)  #档距

import_excel(table)

print(tables)

for i in range(1,22):

ganhao=tables[i]['杆号']

text = acad.model.AddText(ganhao, p1, 3)#增加文字,坐标,大小 # 画线用“acad.model.AddLine(p1, p2)”   # 画圆用“acad.model.AddCircle(p1, 10)”

p1.y -= 10  # P1的y坐标累加10


for i in range(1,22):

ganhao=tables[i]['杆型']

text = acad.model.AddText(ganhao, p2, 3)#增加文字,坐标,大小

p2.y -= 10  # P1的y坐标累加10

for i in range(1,22):

ganhao=tables[i]['转角度数']

text = acad.model.AddText(ganhao, p3, 3)#增加文字,坐标,大小

p3.y -= 10  # P1的y坐标累加10

for i in range(1,22):

ganhao=tables[i]['档距']

text = acad.model.AddText(ganhao, p4, 3)#增加文字,坐标,大小

p4.y -= 10  # P1的y坐标累加10


# !!!!!!!遍历cad图形对象以及访问/修改对象属性

for text in acad.iter_objects('Text'):

print('text: %s at: %s' % (text.TextString, text.InsertionPoint))

text.InsertionPoint = APoint(text.InsertionPoint) #代码到此结束

明细表界面如下,可以自己随意调整,只要每一列数据属性和代码中对应即可。

excel明细表截图

以上代码来源互联网,经过拼接调试,亲试可以使用,通过修改其中部分代码还可以实现更多功能,本文仅作为自己学习编程的记录。