利用pyautocad模块批量画点位

某次遇到批量数据画到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)

利用pyautocad模块批量画点位_第1张图片
利用pyautocad模块批量画点位_第2张图片

你可能感兴趣的:(利用pyautocad模块批量画点位)