03.01 常用 Python 库

从 import 开始使用工程工具箱

本节不只列出库名,还要讲清楚:库是什么、怎么安装、怎么导入、导入后如何调用最小代码完成一个工程动作。

import 别名导入 数据处理 几何运算 渲染与出图
本节库清单

先掌握这些基础库

这些库覆盖课程早期需要的矩阵计算、图表、表格、科学计算、三维渲染、CAD 内核、DXF 出图和二维几何运算。

numpy ↗

数组、向量、矩阵

matplotlib ↗

二维绘图与图表

pandas ↗

工程表格处理

openpyxl ↗

Excel 文件读写

scipy ↗

科学计算扩展

pyvista ↗

三维网格渲染

build123d ↗

参数化 CAD 实体建模

ezdxf ↗

DXF 图纸生成

shapely ↗

二维几何计算

import 的作用

导入库,就是把别人写好的工具接入当前脚本

Python 本身只提供基础能力。工程计算、图形绘制、Excel、DXF、三维渲染都需要通过第三方库扩展。`import` 的作用就是把这些库加载到当前程序中。

安装是把库放到环境里;导入是把库拿到当前脚本里使用。
pip install
安装到环境
import
导入到脚本
调用函数
解决问题
import 基本语法

三种常见写法

初学阶段先掌握三种写法:完整导入、别名导入、从库中导入某个对象。别名写法能让代码更短,但必须保持团队习惯一致。

# 1. 完整导入
import math
print(math.sqrt(9))

# 2. 使用别名,常见于 numpy / pandas
import numpy as np
import pandas as pd

# 3. 只导入一个函数或类
from pathlib import Path
project = Path(".")
安装和导入

先安装,再 import

如果库没有安装,`import` 会报错。遇到 `ModuleNotFoundError`,不要先改代码,先检查当前解释器和虚拟环境是否正确。

# 命令行:安装库
pip install numpy pandas matplotlib openpyxl scipy pyvista ezdxf shapely

# 脚本中:导入库
import numpy as np
import pandas as pd

# 常见错误
ModuleNotFoundError: No module named 'numpy'
numpy

向量、矩阵、坐标计算的基础

`numpy` 是几何计算最常用的基础库。坐标点、方向向量、矩阵变换都可以用数组表达。

常用导入方式:`import numpy as np`。
import numpy as np

p1 = np.array([0.0, 0.0, 0.0])
p2 = np.array([6000.0, 3000.0, 0.0])

vector = p2 - p1
length = np.linalg.norm(vector)

print("梁轴线长度:", length, "mm")
matplotlib

把二维工程数据画出来

`matplotlib` 适合画折线图、散点图、二维轴网和简单工程图表。它常用的子模块是 `matplotlib.pyplot`。

常用导入方式:`import matplotlib.pyplot as plt`。
import matplotlib.pyplot as plt

x = [0, 6000, 12000]
y = [0, 0, 0]

plt.plot(x, y, marker="o")
plt.title("Grid Line A")
plt.xlabel("X / mm")
plt.ylabel("Y / mm")
plt.axis("equal")
plt.show()
pandas

处理梁表、柱表、管线表

`pandas` 用来处理表格数据。工程构件清单、碰撞报告、Excel 数据导入后都可以变成 `DataFrame`。

常用导入方式:`import pandas as pd`。
import pandas as pd

beams = pd.DataFrame({
    "id": ["B1", "B2"],
    "length_m": [6.0, 7.5],
    "width_m": [0.3, 0.3],
    "height_m": [0.6, 0.7],
})

beams["volume_m3"] = (
    beams["length_m"] * beams["width_m"] * beams["height_m"]
)
print(beams)
openpyxl

读写 Excel 工作簿

`openpyxl` 适合直接操作 `.xlsx` 文件,例如写入单元格、保存工程量表。它也常作为 `pandas` 写 Excel 的底层引擎。

常用导入方式:`from openpyxl import Workbook`。
from openpyxl import Workbook

wb = Workbook()
ws = wb.active
ws.title = "工程量"

ws["A1"] = "构件"
ws["B1"] = "体积 m3"
ws.append(["梁 B1", 1.08])
ws.append(["柱 C1", 1.30])

wb.save("quantity.xlsx")
scipy

更专业的科学计算工具

`scipy` 是 `numpy` 的扩展,提供优化、插值、距离、线性代数等工具。早期课程可先用它做距离矩阵或简单数值计算。

常见写法:从子模块导入具体函数。
import numpy as np
from scipy.spatial.distance import cdist

columns = np.array([
    [0, 0],
    [6000, 0],
    [6000, 6000],
])

dist = cdist(columns, columns)
print(dist)
pyvista

把三维几何显示出来

`pyvista` 用于三维渲染和网格可视化。它可以帮助学生直观看到几何体、坐标轴和空间关系。

常用导入方式:`import pyvista as pv`。
import pyvista as pv

beam = pv.Cube(
    center=(3000, 0, 300),
    x_length=6000,
    y_length=300,
    z_length=600,
)

plotter = pv.Plotter()
plotter.add_mesh(beam, color="tan", show_edges=True)
plotter.add_axes()
plotter.show()
build123d

用 Python 创建参数化 CAD 实体

`build123d` 基于 OpenCASCADE,适合用脚本创建梁、柱、板、墙等工程实体。这里先用一个 Box 表达梁形构件。

它让学生先用清晰的参数定义实体,再在后续课程中理解 B-Rep、Mesh 转换和三维渲染。
from build123d import Box, export_stl

beam = Box(6000, 300, 600)

export_stl(beam, "beam.stl")

print(type(beam))
ezdxf

生成可被 CAD 打开的 DXF 图纸

`ezdxf` 可以创建 DXF 文件,适合讲轴线、柱网、文字标注和简单结构平面图自动生成。

常用导入方式:`import ezdxf`。
import ezdxf

doc = ezdxf.new("R2010")
msp = doc.modelspace()

msp.add_line((0, 0), (12000, 0))
msp.add_circle((6000, 0), radius=300)
msp.add_text("Grid A", height=250).set_placement((0, 400))

doc.saveas("grid.dxf")
shapely

二维几何关系判断

`shapely` 用来表达二维点、线、面,并判断相交、包含、距离等关系。它适合处理平面图中的管线、墙线和洞口。

常用导入方式:`from shapely.geometry import LineString`。
from shapely.geometry import LineString, Polygon

pipe = LineString([(0, 0), (8000, 0)])
wall = Polygon([
    (3000, -200),
    (5000, -200),
    (5000, 200),
    (3000, 200),
])

print(pipe.intersects(wall))
print(pipe.intersection(wall).length)
导入习惯

把 import 写在文件开头

通常把所有导入语句放在 Python 文件顶部,先标准库、再第三方库、再本项目模块。这样别人一眼能看出脚本依赖什么工具。

# 标准库
from pathlib import Path

# 第三方库
import numpy as np
import pandas as pd
import pyvista as pv

# 本项目模块,后续课程会逐步创建
from core.geometry import Point3D
本节收束

库是工具,import 是拿起工具的动作

本节的重点不是背库名,而是理解“安装、导入、调用”的完整链条。后续每学一个工程问题,都会选择合适的库来表达、计算和输出结果。

下一步:安装这些库,并逐个运行最小案例。

课堂练习

  1. 在同一个脚本中导入 `numpy` 和 `pandas`。
  2. 用 `numpy` 计算一条梁轴线长度。
  3. 用 `pandas` 创建一个构件清单。
  4. 任选一个库,解释它的导入方式和用途。