某次遇到批量数据画到cad图上,数量一多来回看容易错不说。
现在有了python,来看看怎么帮忙自动处理。
好了,闲话不多说,现在有这样一个xlsx文件,
名称 north east z
1 -3xxxx.xxxx 3yyy.yyyy 3.zzz
恕我已经忘记North,East对应的x,y了
假设North=x,East=y,不对的话换一下也很简单。
先读取xlsx,然后写到cad里,因为cad里点找不到的,那就以点为圆心画圆,旁边标注上高程Z就行了。数据格式用的还不熟练,边学边做。
===============我是分割线=============
# 导入openpyxl模块的load_workbook函数
from openpyxl import load_workbook
#导入pyautocad模块的autocad和apiont函数
from pyautocad import Autocad, APoint
#取得cad软件现在打开的窗口,如果没有则创建一个
acad = Autocad(create_if_not_exists=True)
#测量数据文件
path="aaa.xlsx"
#导入aaa.xlsx里面的工作簿
wb = load_workbook(filename=path)
#取得工作簿里的当前工作表
ws = wb.active
#初始化需要用的数据
list = []
p = []
#对工作簿中所有行进行迭代
for row in ws.rows:
#做一个临时列表
temp = []
#对每一行里的每个单元格进行迭代
for cell in row:
#把每一个单元格的数据添加到临时列表中
temp.append([cell.value])
#将每一行的数据添加到list中
list.append(temp)
#对list去掉第一行标题行,然后迭代
for l,i in zip(list[1:],range(1,len(list))):
#拿到每一行中x,y,z
x = l[1][0]
y = l[2][0]
print(i)
print(x)
print(y)
#用xy坐标画点,如果xy反了,就颠倒一下
p=APoint(x, y)
#点旁边备注的文字格式为[点号]标高,字体高度为1
text = acad.model.AddText(u'%s' % "["+str(l[0][0])+"]"+str(l[3][0]), p, 1)
#画圆圈,半径为1 acad.model.AddCircle(p, 1)