利用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)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,449评论 0 10
  • 公瑾,见信安。 数年不见,甚是想念。 吾听闻汝率三军战曹操于赤壁,大获全胜。 吾甚欣悦。 料当年舒城少年长为风华将...
    白衣渡川__阅读 405评论 0 0
  • 晚上和爸爸给steven洗澡,一大盆水,小家伙坐里面泡的特别开心,玩会小鸭子玩会水再伸只手到盆外面划拉地上的水。 ...
    jewelliu阅读 563评论 0 0
  • 第一章 我们有什么机会? 我的名字叫做Efrat。我习惯将我父亲的稿子大声读给他听,他声称我的评论,甚至我的身体语...
    发现好物阅读 488评论 0 0
  • 2017年12月20日 星期三 亲子日记第25篇 二年级五班付梦雅 今天,...
    非常完美音乐飞扬阅读 153评论 0 0