Skip to the content.

v1.4 粗糙度与尺寸公差

本机验证范围:SolidWorks 2025 SP5.0(33.5.0),其他版本未验证。 只应用明确指定的工艺要求,不自动选公差等级或加工要求。形位公差不在本版范围。

Python

from swforge import add_surface_finish, add_surface_finishes, list_surface_edges, list_dimensions, set_tolerance

drawing = r'D:\项目\底板.SLDDRW'
# 工艺标注优先附着真实轮廓边;先枚举,再明确指定 view_name 和 edge_index。
edges = list_surface_edges(drawing, view_name='工程图视图1')
add_surface_finish(drawing, view_name=edges[0]['view'], edge_index=edges[0]['edge_index'], ra='3.2', leader=True)
# 以下坐标模式是独立图纸符号,不声明任何加工面关联。
add_surface_finish(drawing, x=0.30, y=0.23, ra='3.2', symbol_type='machining')
add_surface_finishes(drawing, [
    dict(view_name='工程图视图1', offset_x=0.008, offset_y=0.012, ra='1.6'),
    dict(x=0.35, y=0.23, ra='6.3', symbol_type='basic'),
])
rows = list_dimensions(drawing)
# 使用枚举得到的完整名称,避免多个视图中相同数值被误选。
name = rows[0]['name']
set_tolerance(drawing, dim_name=name, tol_type='symmetric', upper=0.1)
set_tolerance(drawing, dim_name=name, tol_type='bilateral', lower=-0.05, upper=0.2)
set_tolerance(drawing, dim_name=name, tol_type='limit', lower=-0.1, upper=0.1)
set_tolerance(drawing, dim_name=name, tol_type='fit', fit='H7/g6')
set_tolerance(drawing, dim_name=name, tol_type='none')

CLI / MCP

swforge surface-finish 底板.SLDDRW --ra 3.2 --x 0.30 --y 0.23 --save
swforge surface-edges 底板.SLDDRW --view 工程图视图1
swforge surface-finish 底板.SLDDRW --view 工程图视图1 --edge 0 --ra 3.2 --save
swforge surface-finish 底板.SLDDRW --view 工程图视图1 --edge 1 --leader --ra 3.2 --x 0.18 --y 0.22 --save
swforge dimensions 底板.SLDDRW
swforge tolerance 底板.SLDDRW --dim "完整名称(从 dimensions 复制)" --type symmetric --upper 0.1 --save
swforge tolerance 底板.SLDDRW --dim "完整名称" --type fit --fit H7/g6 --save

不传 --save 时保留在内存,CLI 失败返回非零退出码。 MCP 新工具:sw_add_surface_finish、sw_add_surface_finishes、sw_list_surface_edges、sw_list_dimensions、sw_set_tolerance;均通过现有 STA worker 串行执行。

实机验收入口

python -m pytest tests -q -m "not sw"
swforge selftest --work-dir F:\证据\swforge_selftest --keep
python examples/verify_annotations.py --work-dir F:\证据\新目录 --keep

验收脚本检查四类公差、名义值不变、同值拒绝猜选、五个附着符号、引线端点、视图移动10mm随动、连续20次插入、保存重开及 PDF 独立渲染。检查最终 PNG,确认符号与尺寸可见且没有重叠。示例 Ra 值仅用于功能验收,不代表对试块的生产工艺推荐。 --keep 成功时保留一个演示零件和一张工程图,失败时只关闭本轮拥有的文档。

实测发现

  1. InsertSurfaceFinishSymbol3 在本机忽略插入坐标,必须调用 Annotation.SetPosition2 并回读;否则符号堆在原点。
  2. 工程图参考尺寸 IDimension.GetType() 实测返回 0,使用 IDisplayDimension.Type2 判断线性或角度。
  3. 无公差尺寸 GetToleranceValues() 可返回 None,改从 Dimension.Tolerance.GetMinValue/GetMaxValue 回读。
  4. SetToleranceValues 使用米;H7/g6 使用 Dimension.Tolerance.SetFitValues('H7','g6') 并分别回读孔、轴代号。

官方接口参考:插入粗糙度、符号枚举。实际兼容性以本机验收为准。