dxfgrabber读取CAD图并利用xlsxwrtier生成excel表格

        这次学习了dxfgrabber库和xlsxwriter库的基本使用方法。编写的程序基本功能是将CAD图的dwg转成dxf格式,利用dxfgrabber库读取dxf文件,程序遍历了图中文件中的线(Line)和块(Block),返回的是对应线的结点坐标并输出字典格式(方便excel中特定格式输出)。第二部分是利用xlsxwriter库指定格式输出CAD图中节点和线的信息。

一、dxfgrabber库的基本使用。

1.dxfgrabber库的安装。

CMD命令行输入:pip install dxfgrabber

1.1将CAD中的dwg文件另存为dxf文件,因为dxfgrabber库读取的是dxf文件。


CAD图dwg文件另存为DXF文件

2.dxfgrabber库遍历线(Line)

2.1遍历所有的线,返回所有节点坐标

注:没有去重,去重可以选择利用字典去重。

```

#coding=utf-8

import dxfgrabber

dxf = dxfgrabber.readfile("GWTS_500kV_5A2-J2_33m.dxf")

for e in dxf.entities:

        if e.dxftype =="LINE":

                #print(e.start,e.end)  #三维节点坐标

                node1, node2 = (round(e.start[0],3),round(e.start[1],3)),                            (round(e.end[0],3),round(e.end[1],3)) 

                #返回线段的初始节点坐标与终点坐标,保留3位小数

                print(node1, node2)

```

2.2遍历所有的线,返回所有线的颜色

线段的颜色返回的是一个 int 型,范围为1到255

其中 7 代表 白色,1 代表 红色。这是我试出来的。

```

#coding=utf-8

import dxfgrabber

dxf = dxfgrabber.readfile("GWTS_500kV_5A2-J2_33m.dxf")

for e in dxf.entities:

        if e.dxftype =="LINE":

                if e.color ==7:

                        print("这条线的颜色是白色")

                elif e.color ==1:

                        print("这条线的颜色是红色")

                else:

                        print("线的颜色需要查表")

```

3.dxfgrabber库遍历块

我遍历的是圆形块,返回的是圆形块的圆心坐标

```

#coding=utf-8

import dxfgrabber

dxf = dxfgrabber.readfile("GWTS_500kV_5A2-J2_33m.dxf")

for bin dxf.blocks:

        #print(b.name)

        for tyin b:

                #print(ty.dxftype)

                if ty.dxftype =="CIRCLE":

                #print(e.center)

                        yuanxin = ("%.3f" % ty.center[0],"%.3f" % ty.center[1])

                        print(yuanxin)

```

返回值如下:

```

('-9.760', '33.000')

('1.720', '40.000')

('7.740', '33.000')

('-6.000', '46.500')

('5.500', '46.500')

```

4.dxfgrabber的API文档网址

https://dxfgrabber.readthedocs.io/en/latest/

如果需要调用CAD图或者DXF图中的其他信息,可以查看以上文档。


二、xlsxwriter库的基本使用

1.xlsxwriter的安装

CMD命令行输入:pip install xlsxwriter

2.xlsxwriter的基本操作


运行结果

注意第一行是带筛选器,如果不需要可以将这行代码去掉。

worksheet1.autofilter('A1:D1')        #设置表头A1,B1,C1,D1有下拉筛选


3.xlsxwriter的API文档地址

https://xlsxwriter.readthedocs.io/#


你可能感兴趣的:(dxfgrabber读取CAD图并利用xlsxwrtier生成excel表格)