代码原理是新建空列表,打开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) #代码到此结束
明细表界面如下,可以自己随意调整,只要每一列数据属性和代码中对应即可。
以上代码来源互联网,经过拼接调试,亲试可以使用,通过修改其中部分代码还可以实现更多功能,本文仅作为自己学习编程的记录。