0

0

基于毫米坐标的可打印圆形定位图生成教程

聖光之護

聖光之護

发布时间:2026-02-22 16:38:02

|

200人浏览过

|

来源于php中文网

原创

基于毫米坐标的可打印圆形定位图生成教程

本文介绍如何使用 python 自动绘制符合真实物理尺寸(毫米级精度)的圆形定位图,并导出为 a4 尺寸 pdf,确保打印后图形尺寸严格准确,适用于钻孔定位等工业场景。

本文介绍如何使用 python 自动绘制符合真实物理尺寸(毫米级精度)的圆形定位图,并导出为 a4 尺寸 pdf,确保打印后图形尺寸严格准确,适用于钻孔定位等工业场景。

在机械加工、PCB 打样或木工定位等实际作业中,常需将设计点位以真实比例(如毫米)精确呈现在纸质图纸上,用于目视对齐与钻孔。传统依赖 Excel 手动绘图易引入缩放误差、单元格尺寸失真及打印缩放干扰,导致最终纸面坐标与物理尺寸偏差显著。本文提供一种专业、可靠、零误差的解决方案:用 Python 生成物理尺寸精准的矢量 PDF 图形

核心思路是绕过像素单位陷阱,直接在「毫米坐标系」中建模,并通过高保真 PDF 输出锁定绝对尺寸。关键在于两点:

  • 坐标系统统一为毫米(mm):所有输入(x, y, diameter)均以毫米为单位;
  • 输出设备参数严格匹配 A4 物理规格:A4 纸张尺寸为 210 mm × 297 mm,需在绘图时显式设置 figsize(英寸)与 dpi,使 matplotlib 的渲染逻辑与物理尺寸对齐。

以下为完整实现代码(已优化鲁棒性与实用性):

畅图
畅图

AI可视化工具

下载
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
from matplotlib.backends.backend_pdf import PdfPages

def draw_circles_to_a4_pdf(circle_data, output_path="drill_template.pdf", 
                           margin_mm=5, grid_step_mm=10, show_grid=True):
    """
    在 A4 尺寸 PDF 中绘制毫米级精度的圆形定位图

    Args:
        circle_data: List[Tuple[x_mm, y_mm, diameter_mm]],所有坐标单位为毫米
        output_path: 输出 PDF 路径
        margin_mm: 图形边界留白(毫米),避免被打印机裁切
        grid_step_mm: 网格线间距(毫米),默认 10 mm
        show_grid: 是否显示辅助网格
    """
    # A4 尺寸(毫米)→ 转换为英寸(matplotlib 使用英寸 + DPI)
    width_inch = 210 / 25.4
    height_inch = 297 / 25.4
    dpi = 100  # DPI 不影响 PDF 矢量精度,但影响栅格元素(如网格)渲染质量

    fig, ax = plt.subplots(figsize=(width_inch, height_inch), dpi=dpi)

    # 设置坐标范围:留出边距,单位为毫米
    xlim = (0, 210)
    ylim = (0, 297)
    ax.set_xlim(xlim)
    ax.set_ylim(ylim)

    # 绘制辅助网格(可选)
    if show_grid:
        for x in range(0, 211, grid_step_mm):
            ax.axvline(x=x, color='lightgray', linewidth=0.4)
        for y in range(0, 298, grid_step_mm):
            ax.axhline(y=y, color='lightgray', linewidth=0.4)

    # 绘制用户输入的每个圆(注意:radius = diameter/2)
    for x, y, d in circle_data:
        if not (0 <= x <= 210 and 0 <= y <= 297):
            print(f"警告:圆心 ({x:.1f}, {y:.1f}) 超出 A4 边界,将被部分截断")
        circle = Circle((x, y), d/2, fill=False, edgecolor='black', linewidth=0.8)
        ax.add_patch(circle)

    # 关键设置:保持横纵坐标等比例,避免椭圆变形
    ax.set_aspect('equal')

    # 隐藏坐标轴刻度与标签,保留干净图纸
    ax.set_xticks([])
    ax.set_yticks([])
    ax.spines['top'].set_visible(False)
    ax.spines['right'].set_visible(False)
    ax.spines['bottom'].set_visible(False)
    ax.spines['left'].set_visible(False)

    # 保存为 PDF(矢量格式,无缩放失真)
    with PdfPages(output_path) as pdf:
        pdf.savefig(fig, bbox_inches='tight', pad_inches=0)

    plt.close(fig)
    print(f"✅ 已生成精准 A4 PDF:{output_path}(尺寸 210×297 mm)")

# ✅ 示例:定义钻孔位置(单位:毫米)
circles = [
    (45.0, 62.5, 8.0),   # 第1个孔:x=45mm, y=62.5mm, 直径8mm
    (120.3, 185.0, 6.5), # 第2个孔:带小数,体现高精度支持
    (185.0, 40.0, 12.0), # 第3个孔:靠近右边界
]

# 一键生成可打印图纸
draw_circles_to_a4_pdf(
    circle_data=circles,
    output_path="drill_layout_A4.pdf",
    margin_mm=3,
    grid_step_mm=5
)

? 重要注意事项

  • 打印设置必须为「实际大小」或「100% 缩放」:在 Adobe Acrobat 或系统打印对话框中,务必取消勾选“适应页面”、“缩放以适合”等自动缩放选项,否则会破坏毫米精度;
  • 验证打印精度:首次使用前,建议用游标卡尺实测 PDF 中某圆直径或两点间距,确认误差
  • 扩展性提示:该脚本可轻松集成至 Tkinter/PyQt GUI,接收用户输入并实时预览;亦可读取 CSV/Excel 表格批量导入坐标;
  • 不推荐使用 reportlab 直接绘图:虽然可行,但 matplotlib 提供更直观的几何对象(Circle、Rectangle)和成熟坐标管理,且 PDF 输出天然支持矢量缩放与高 DPI 渲染。

通过本方案,您彻底摆脱 Excel 单元格拟合误差与打印机驱动缩放干扰,获得一份即打即用、毫米级可信的物理定位模板——这是自动化制造准备环节中不可或缺的精度基石。

全能打印神器
全能打印神器

全能打印神器是一款非常好用的打印软件,可以在电脑、手机、平板电脑等设备上使用。支持无线打印和云打印,操作非常简单,使用起来也非常方便,有需要的小伙伴快来保存下载体验吧!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
PHP 命令行脚本与自动化任务开发
PHP 命令行脚本与自动化任务开发

本专题系统讲解 PHP 在命令行环境(CLI)下的开发与应用,内容涵盖 PHP CLI 基础、参数解析、文件与目录操作、日志输出、异常处理,以及与 Linux 定时任务(Cron)的结合使用。通过实战示例,帮助开发者掌握使用 PHP 构建 自动化脚本、批处理工具与后台任务程序 的能力。

58

2025.12.13

excel对比两列数据异同
excel对比两列数据异同

Excel作为数据的小型载体,在日常工作中经常会遇到需要核对两列数据的情况,本专题为大家提供excel对比两列数据异同相关的文章,大家可以免费体验。

1438

2023.07.25

excel重复项筛选标色
excel重复项筛选标色

excel的重复项筛选标色功能使我们能够快速找到和处理数据中的重复值。本专题为大家提供excel重复项筛选标色的相关的文章、下载、课程内容,供大家免费下载体验。

424

2023.07.31

excel复制表格怎么复制出来和原来一样大
excel复制表格怎么复制出来和原来一样大

本专题为大家带来excel复制表格怎么复制出来和原来一样大相关文章,帮助大家解决问题。

570

2023.08.02

excel表格斜线一分为二
excel表格斜线一分为二

在Excel表格中,我们可以使用斜线将单元格一分为二。本专题为大家带来excel表格斜线一分为二怎么弄的相关文章,希望可以帮到大家。

1257

2023.08.02

excel斜线表头一分为二
excel斜线表头一分为二

excel斜线表头一分为二的方法有使用合并单元格功能方法、使用文本框功能方法、使用自定义格式方法。本专题为大家提供excel斜线表头一分为二相关的各种文章、以及下载和课程。

374

2023.08.02

绝对引用的输入方法
绝对引用的输入方法

绝对引用允许在公式中引用一个固定的单元格,而不会随着公式的复制和粘贴而改变引用的单元格。本专题为大家提供绝对引用相关内容的文章,大家可以免费体验。

4549

2023.08.09

java导出excel
java导出excel

在Java中,我们可以使用Apache POI库来导出Excel文件。本专题提供java导出excel的相关文章,大家可以免费体验。

437

2023.08.18

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

1030

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号