这次学习了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文件。

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/#
