Add AC/BC RTCP programs and 3D machine manager

This commit is contained in:
2026-09-20 12:31:12 +08:00
parent 1c1e5f9672
commit 8aab531b02
363 changed files with 53213 additions and 58 deletions

View File

@@ -0,0 +1,70 @@
# 五轴 RTCP 与工件坐标:初学者完整讲义
[打开完整 PDF](五轴RTCP与工件坐标-初学者完整讲义.pdf) · [可编辑 HTML](handbook.html) · [逐页目录](outline.json)
本版是面向初学者重新组织的 **72 页 A4 完整讲义**,不是只在原投影片后附几页补充。原 [31 页投影课件](../rtcp-five-axis/五轴机床与RTCP-教学课件.pdf) 保留为概要。本讲义适合独立阅读、打印及分 4–6 次授课。
## 新增重点
- 从原点、方向、单位、右手规则、点与增量讲起;区分物理机床参考 M、工件 W、关节 J、运动学输入 K 和刀具 T。
- 工件原点如何选择、测量;为什么一个点不能确定方向;机械找正与初始坐标旋转分别解决什么。
- 分开说明“固连零件的物理坐标架”“G54偏置表”“动态RTCP变换”;G54不是独立完成五轴跟随的开关。
- 详细解释G54/G55、G10 L2/L20、G90/G91、G20/G21、省略轴与模态;说明G52/G92/G53、圆弧字、进给方式、刀补索引的边界。
- 对同一份BC程序逐字、逐行计算工件XYZ、K输入XYZ、角度、实际关节位置,给出完整对照表和连续轨迹图。
- 实验、排错、限位、术语、练习和答案;把数学推导放在附录,不要求初学者先会矩阵。
## 章节与 PDF 页码
| PDF 页码 | 内容 |
| --- | --- |
| 1–3 | 封面、阅读方法、可点击目录 |
| 4–9 | 坐标基础、点与增量、五轴结构、关节与反馈 |
| 10–14 | 各参考系、回零、工件坐标、随动原点、G54表与物理坐标架 |
| 15–20 | 零位参考、原点选择与测量、方向确定、完整点变换 |
| 21–26 | G54/G55、偏置、G10 L2/L20、G52/G92/G53 |
| 27–33 | 非RTCP/RTCP、方向合成、AC/BC、结构参数与刀长 |
| 34–43 | 地址字、模态、单位、G90/G91、G0/G1、圆弧、F及其他字的解析 |
| 44–53 | 完整程序、N10–N110逐行实算、结果表与模式切换 |
| 54–57 | 连续轨迹、姿态、模型显示与分层准备 |
| 58–62 | 三个实验、排错、行程/动力学/碰撞边界 |
| 63–67 | 常见问答、两组练习与答案 |
| 68–72 | 术语、公式、软件实验范围、资料来源与复现 |
正文编号01–69为“节号”,与PDF页码相差封面/导读/目录三页;内部引用按节号,目录按PDF页码。
## 核心实算
主例:XYZBC,零旋转中心/轴间偏置/刀长差,G54零位偏置 `(40,20,10)` mm,初始方向对齐。
| 程序段 | 工件 XYZ | K 输入 XYZ | B/C | 关节 XYZ |
| --- | --- | --- | --- | --- |
| `N50 G1 X10 Y0 Z5 B0 C0 F600` | 10,0,5 | 50,20,15 | 0/0 | 50,20,15 |
| `N60 C90` | 10,0,5 | 50,20,15 | 0/90 | -20,50,15 |
| `N70 G91 X10` | 20,0,5 | 60,20,15 | 0/90 | -20,60,15 |
| `N80 G90 X20 Y0 Z5 B30 C90 F300` | 20,0,5 | 60,20,15 | 30/90 | -9.821,60,22.990 |
| `N90 X0 Y10` | 0,10,5 | 40,30,15 | 30/90 | -18.481,40,27.990 |
这些数值来自 [实际 WASM 验证](gcode-evidence.json),包括11个主程序段、11个额外单位/坐标设置段;N10–N90加M2通过真实Session/解释器/TP完整执行,记录53个轨迹样本,并核对最终关节。下载模型自带非零参数,不能不改条件就要求得到这张表的相同数值。
## 验证与范围
- [版面报告](verification/layout.json):72页图文边界、图片加载、标题和正文检查。
- [PDF核验](verification/acceptance.json):页数、A4尺寸、逐页中文文本、内嵌字体、书签、文件与资产SHA256。
- `verification/` 保留逐页截图及实际PDF的独立渲染总览。
- 9张新增原创坐标示意图,复用此前11张原创原理图/模型图;不是许可不明的网络插画。
- 依据LinuxCNC官方坐标/G代码/五轴/切换资料和当前仓库代码;最后一页有直接链接。
- 当前WASM解释器属于功能切片。通用G52/G92、任意坐标方向变换、完整G43/H刀表、所有进给模式并未在本次全面验收;正文明确标出,不能把“解析接受”当作完整功能正确性。
- 本讲义不修改应用功能,不宣称真实机床的探测/碰撞/硬件安全流程已被验证。
## 重新生成
```bash
node scripts/generate_rtcp_beginner_data.mjs
PYTHONPATH=/tmp/rtcp-course-deps python3 scripts/generate_rtcp_beginner_figures.py
python3 scripts/generate_rtcp_beginner_html.py
PYTHONPATH=/tmp/rtcp-course-deps python3 scripts/subset_rtcp_beginner_fonts.py
PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.mjs node scripts/render_rtcp_beginner_pdf.mjs
PYTHONPATH=/tmp/rtcp-course-deps python3 scripts/verify_rtcp_beginner_pdf.py
```
生成工具依赖临时安装的Matplotlib/PyPDF/fontTools、Chrome、Playwright和Noto CJK字体;PDF成品不需要这些工具,可以离线阅读。HTML需与同目录assets一起保留。中文字体按本书实际字符制作子集,避免同形部首导致复制/搜索文字不同;字体许可证在assets/font-license.txt。

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

View File

@@ -0,0 +1,327 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: noto-cjk
Upstream-Contact: https://github.com/notofonts/noto-cjk/issues
Source: https://github.com/notofonts/noto-cjk
Files-Excluded:
.gitattributes
.gitignore
Sans/Mono/NotoSansMonoCJKhk-Bold.otf
Sans/Mono/NotoSansMonoCJKhk-Regular.otf
Sans/Mono/NotoSansMonoCJKjp-Bold.otf
Sans/Mono/NotoSansMonoCJKjp-Regular.otf
Sans/Mono/NotoSansMonoCJKkr-Bold.otf
Sans/Mono/NotoSansMonoCJKkr-Regular.otf
Sans/Mono/NotoSansMonoCJKsc-Bold.otf
Sans/Mono/NotoSansMonoCJKsc-Regular.otf
Sans/Mono/NotoSansMonoCJKtc-Bold.otf
Sans/Mono/NotoSansMonoCJKtc-Regular.otf
Sans/OTF/Japanese/NotoSansCJKjp-Black.otf
Sans/OTF/Japanese/NotoSansCJKjp-Bold.otf
Sans/OTF/Japanese/NotoSansCJKjp-DemiLight.otf
Sans/OTF/Japanese/NotoSansCJKjp-Light.otf
Sans/OTF/Japanese/NotoSansCJKjp-Medium.otf
Sans/OTF/Japanese/NotoSansCJKjp-Regular.otf
Sans/OTF/Japanese/NotoSansCJKjp-Thin.otf
Sans/OTF/Korean/NotoSansCJKkr-Black.otf
Sans/OTF/Korean/NotoSansCJKkr-Bold.otf
Sans/OTF/Korean/NotoSansCJKkr-DemiLight.otf
Sans/OTF/Korean/NotoSansCJKkr-Light.otf
Sans/OTF/Korean/NotoSansCJKkr-Medium.otf
Sans/OTF/Korean/NotoSansCJKkr-Regular.otf
Sans/OTF/Korean/NotoSansCJKkr-Thin.otf
Sans/OTF/SimplifiedChinese/NotoSansCJKsc-Black.otf
Sans/OTF/SimplifiedChinese/NotoSansCJKsc-Bold.otf
Sans/OTF/SimplifiedChinese/NotoSansCJKsc-DemiLight.otf
Sans/OTF/SimplifiedChinese/NotoSansCJKsc-Light.otf
Sans/OTF/SimplifiedChinese/NotoSansCJKsc-Medium.otf
Sans/OTF/SimplifiedChinese/NotoSansCJKsc-Regular.otf
Sans/OTF/SimplifiedChinese/NotoSansCJKsc-Thin.otf
Sans/OTF/TraditionalChinese/NotoSansCJKtc-Black.otf
Sans/OTF/TraditionalChinese/NotoSansCJKtc-Bold.otf
Sans/OTF/TraditionalChinese/NotoSansCJKtc-DemiLight.otf
Sans/OTF/TraditionalChinese/NotoSansCJKtc-Light.otf
Sans/OTF/TraditionalChinese/NotoSansCJKtc-Medium.otf
Sans/OTF/TraditionalChinese/NotoSansCJKtc-Regular.otf
Sans/OTF/TraditionalChinese/NotoSansCJKtc-Thin.otf
Sans/OTF/TraditionalChineseHK/NotoSansCJKhk-Black.otf
Sans/OTF/TraditionalChineseHK/NotoSansCJKhk-Bold.otf
Sans/OTF/TraditionalChineseHK/NotoSansCJKhk-DemiLight.otf
Sans/OTF/TraditionalChineseHK/NotoSansCJKhk-Light.otf
Sans/OTF/TraditionalChineseHK/NotoSansCJKhk-Medium.otf
Sans/OTF/TraditionalChineseHK/NotoSansCJKhk-Regular.otf
Sans/OTF/TraditionalChineseHK/NotoSansCJKhk-Thin.otf
Sans/SubsetOTF/HK/NotoSansHK-Black.otf
Sans/SubsetOTF/HK/NotoSansHK-Bold.otf
Sans/SubsetOTF/HK/NotoSansHK-DemiLight.otf
Sans/SubsetOTF/HK/NotoSansHK-Light.otf
Sans/SubsetOTF/HK/NotoSansHK-Medium.otf
Sans/SubsetOTF/HK/NotoSansHK-Regular.otf
Sans/SubsetOTF/HK/NotoSansHK-Thin.otf
Sans/SubsetOTF/JP/NotoSansJP-Black.otf
Sans/SubsetOTF/JP/NotoSansJP-Bold.otf
Sans/SubsetOTF/JP/NotoSansJP-DemiLight.otf
Sans/SubsetOTF/JP/NotoSansJP-Light.otf
Sans/SubsetOTF/JP/NotoSansJP-Medium.otf
Sans/SubsetOTF/JP/NotoSansJP-Regular.otf
Sans/SubsetOTF/JP/NotoSansJP-Thin.otf
Sans/SubsetOTF/KR/NotoSansKR-Black.otf
Sans/SubsetOTF/KR/NotoSansKR-Bold.otf
Sans/SubsetOTF/KR/NotoSansKR-DemiLight.otf
Sans/SubsetOTF/KR/NotoSansKR-Light.otf
Sans/SubsetOTF/KR/NotoSansKR-Medium.otf
Sans/SubsetOTF/KR/NotoSansKR-Regular.otf
Sans/SubsetOTF/KR/NotoSansKR-Thin.otf
Sans/SubsetOTF/SC/NotoSansSC-Black.otf
Sans/SubsetOTF/SC/NotoSansSC-Bold.otf
Sans/SubsetOTF/SC/NotoSansSC-DemiLight.otf
Sans/SubsetOTF/SC/NotoSansSC-Light.otf
Sans/SubsetOTF/SC/NotoSansSC-Medium.otf
Sans/SubsetOTF/SC/NotoSansSC-Regular.otf
Sans/SubsetOTF/SC/NotoSansSC-Thin.otf
Sans/SubsetOTF/TC/NotoSansTC-Black.otf
Sans/SubsetOTF/TC/NotoSansTC-Bold.otf
Sans/SubsetOTF/TC/NotoSansTC-DemiLight.otf
Sans/SubsetOTF/TC/NotoSansTC-Light.otf
Sans/SubsetOTF/TC/NotoSansTC-Medium.otf
Sans/SubsetOTF/TC/NotoSansTC-Regular.otf
Sans/SubsetOTF/TC/NotoSansTC-Thin.otf
Sans/SuperOTC/NotoSansCJK.ttc.zip
Sans/Variable/OTC/NotoSansCJK-VF.ttf.ttc
Sans/Variable/OTC/NotoSansMonoCJK-VF.ttf.ttc
Sans/Variable/OTF/Mono/NotoSansMonoCJKhk-VF.otf
Sans/Variable/OTF/Mono/NotoSansMonoCJKjp-VF.otf
Sans/Variable/OTF/Mono/NotoSansMonoCJKkr-VF.otf
Sans/Variable/OTF/Mono/NotoSansMonoCJKsc-VF.otf
Sans/Variable/OTF/Mono/NotoSansMonoCJKtc-VF.otf
Sans/Variable/OTF/NotoSansCJKhk-VF.otf
Sans/Variable/OTF/NotoSansCJKjp-VF.otf
Sans/Variable/OTF/NotoSansCJKkr-VF.otf
Sans/Variable/OTF/NotoSansCJKsc-VF.otf
Sans/Variable/OTF/NotoSansCJKtc-VF.otf
Sans/Variable/OTF/Subset/NotoSansHK-VF.otf
Sans/Variable/OTF/Subset/NotoSansJP-VF.otf
Sans/Variable/OTF/Subset/NotoSansKR-VF.otf
Sans/Variable/OTF/Subset/NotoSansSC-VF.otf
Sans/Variable/OTF/Subset/NotoSansTC-VF.otf
Sans/Variable/TTF/Mono/NotoSansMonoCJKhk-VF.ttf
Sans/Variable/TTF/Mono/NotoSansMonoCJKjp-VF.ttf
Sans/Variable/TTF/Mono/NotoSansMonoCJKkr-VF.ttf
Sans/Variable/TTF/Mono/NotoSansMonoCJKsc-VF.ttf
Sans/Variable/TTF/Mono/NotoSansMonoCJKtc-VF.ttf
Sans/Variable/TTF/NotoSansCJKhk-VF.ttf
Sans/Variable/TTF/NotoSansCJKjp-VF.ttf
Sans/Variable/TTF/NotoSansCJKkr-VF.ttf
Sans/Variable/TTF/NotoSansCJKsc-VF.ttf
Sans/Variable/TTF/NotoSansCJKtc-VF.ttf
Sans/Variable/TTF/Subset/NotoSansHK-VF.ttf
Sans/Variable/TTF/Subset/NotoSansJP-VF.ttf
Sans/Variable/TTF/Subset/NotoSansKR-VF.ttf
Sans/Variable/TTF/Subset/NotoSansSC-VF.ttf
Sans/Variable/TTF/Subset/NotoSansTC-VF.ttf
Serif/OTF/Japanese/NotoSerifCJKjp-Black.otf
Serif/OTF/Japanese/NotoSerifCJKjp-Bold.otf
Serif/OTF/Japanese/NotoSerifCJKjp-ExtraLight.otf
Serif/OTF/Japanese/NotoSerifCJKjp-Light.otf
Serif/OTF/Japanese/NotoSerifCJKjp-Medium.otf
Serif/OTF/Japanese/NotoSerifCJKjp-Regular.otf
Serif/OTF/Japanese/NotoSerifCJKjp-SemiBold.otf
Serif/OTF/Korean/NotoSerifCJKkr-Black.otf
Serif/OTF/Korean/NotoSerifCJKkr-Bold.otf
Serif/OTF/Korean/NotoSerifCJKkr-ExtraLight.otf
Serif/OTF/Korean/NotoSerifCJKkr-Light.otf
Serif/OTF/Korean/NotoSerifCJKkr-Medium.otf
Serif/OTF/Korean/NotoSerifCJKkr-Regular.otf
Serif/OTF/Korean/NotoSerifCJKkr-SemiBold.otf
Serif/OTF/SimplifiedChinese/NotoSerifCJKsc-Black.otf
Serif/OTF/SimplifiedChinese/NotoSerifCJKsc-Bold.otf
Serif/OTF/SimplifiedChinese/NotoSerifCJKsc-ExtraLight.otf
Serif/OTF/SimplifiedChinese/NotoSerifCJKsc-Light.otf
Serif/OTF/SimplifiedChinese/NotoSerifCJKsc-Medium.otf
Serif/OTF/SimplifiedChinese/NotoSerifCJKsc-Regular.otf
Serif/OTF/SimplifiedChinese/NotoSerifCJKsc-SemiBold.otf
Serif/OTF/TraditionalChinese/NotoSerifCJKtc-Black.otf
Serif/OTF/TraditionalChinese/NotoSerifCJKtc-Bold.otf
Serif/OTF/TraditionalChinese/NotoSerifCJKtc-ExtraLight.otf
Serif/OTF/TraditionalChinese/NotoSerifCJKtc-Light.otf
Serif/OTF/TraditionalChinese/NotoSerifCJKtc-Medium.otf
Serif/OTF/TraditionalChinese/NotoSerifCJKtc-Regular.otf
Serif/OTF/TraditionalChinese/NotoSerifCJKtc-SemiBold.otf
Serif/OTF/TraditionalChineseHK/NotoSerifCJKhk-Black.otf
Serif/OTF/TraditionalChineseHK/NotoSerifCJKhk-Bold.otf
Serif/OTF/TraditionalChineseHK/NotoSerifCJKhk-ExtraLight.otf
Serif/OTF/TraditionalChineseHK/NotoSerifCJKhk-Light.otf
Serif/OTF/TraditionalChineseHK/NotoSerifCJKhk-Medium.otf
Serif/OTF/TraditionalChineseHK/NotoSerifCJKhk-Regular.otf
Serif/OTF/TraditionalChineseHK/NotoSerifCJKhk-SemiBold.otf
Serif/SubsetOTF/HK/NotoSerifHK-Black.otf
Serif/SubsetOTF/HK/NotoSerifHK-Bold.otf
Serif/SubsetOTF/HK/NotoSerifHK-ExtraLight.otf
Serif/SubsetOTF/HK/NotoSerifHK-Light.otf
Serif/SubsetOTF/HK/NotoSerifHK-Medium.otf
Serif/SubsetOTF/HK/NotoSerifHK-Regular.otf
Serif/SubsetOTF/HK/NotoSerifHK-SemiBold.otf
Serif/SubsetOTF/JP/NotoSerifJP-Black.otf
Serif/SubsetOTF/JP/NotoSerifJP-Bold.otf
Serif/SubsetOTF/JP/NotoSerifJP-ExtraLight.otf
Serif/SubsetOTF/JP/NotoSerifJP-Light.otf
Serif/SubsetOTF/JP/NotoSerifJP-Medium.otf
Serif/SubsetOTF/JP/NotoSerifJP-Regular.otf
Serif/SubsetOTF/JP/NotoSerifJP-SemiBold.otf
Serif/SubsetOTF/KR/NotoSerifKR-Black.otf
Serif/SubsetOTF/KR/NotoSerifKR-Bold.otf
Serif/SubsetOTF/KR/NotoSerifKR-ExtraLight.otf
Serif/SubsetOTF/KR/NotoSerifKR-Light.otf
Serif/SubsetOTF/KR/NotoSerifKR-Medium.otf
Serif/SubsetOTF/KR/NotoSerifKR-Regular.otf
Serif/SubsetOTF/KR/NotoSerifKR-SemiBold.otf
Serif/SubsetOTF/SC/NotoSerifSC-Black.otf
Serif/SubsetOTF/SC/NotoSerifSC-Bold.otf
Serif/SubsetOTF/SC/NotoSerifSC-ExtraLight.otf
Serif/SubsetOTF/SC/NotoSerifSC-Light.otf
Serif/SubsetOTF/SC/NotoSerifSC-Medium.otf
Serif/SubsetOTF/SC/NotoSerifSC-Regular.otf
Serif/SubsetOTF/SC/NotoSerifSC-SemiBold.otf
Serif/SubsetOTF/TC/NotoSerifTC-Black.otf
Serif/SubsetOTF/TC/NotoSerifTC-Bold.otf
Serif/SubsetOTF/TC/NotoSerifTC-ExtraLight.otf
Serif/SubsetOTF/TC/NotoSerifTC-Light.otf
Serif/SubsetOTF/TC/NotoSerifTC-Medium.otf
Serif/SubsetOTF/TC/NotoSerifTC-Regular.otf
Serif/SubsetOTF/TC/NotoSerifTC-SemiBold.otf
Serif/Variable/OTC/NotoSerifCJK-VF.ttf.ttc
Serif/Variable/OTF/NotoSerifCJKhk-VF.otf
Serif/Variable/OTF/NotoSerifCJKjp-VF.otf
Serif/Variable/OTF/NotoSerifCJKkr-VF.otf
Serif/Variable/OTF/NotoSerifCJKsc-VF.otf
Serif/Variable/OTF/NotoSerifCJKtc-VF.otf
Serif/Variable/OTF/Subset/NotoSerifHK-VF.otf
Serif/Variable/OTF/Subset/NotoSerifJP-VF.otf
Serif/Variable/OTF/Subset/NotoSerifKR-VF.otf
Serif/Variable/OTF/Subset/NotoSerifSC-VF.otf
Serif/Variable/OTF/Subset/NotoSerifTC-VF.otf
Serif/Variable/TTF/NotoSerifCJKhk-VF.ttf
Serif/Variable/TTF/NotoSerifCJKjp-VF.ttf
Serif/Variable/TTF/NotoSerifCJKkr-VF.ttf
Serif/Variable/TTF/NotoSerifCJKsc-VF.ttf
Serif/Variable/TTF/NotoSerifCJKtc-VF.ttf
Serif/Variable/TTF/Subset/NotoSerifHK-VF.ttf
Serif/Variable/TTF/Subset/NotoSerifJP-VF.ttf
Serif/Variable/TTF/Subset/NotoSerifKR-VF.ttf
Serif/Variable/TTF/Subset/NotoSerifSC-VF.ttf
Serif/Variable/TTF/Subset/NotoSerifTC-VF.ttf
Files: *
Copyright: 2010-2012, Google Corporation
License: SIL-1.1
Files: debian/*
Copyright: 2013, Vasudev Kamath <kamathvasudev@gmail.com>
2013-2015, Jonas Smedegaard <dr@jones.dk>
2015-2022, ChangZhuo Chen (陳昌倬) <czchen@debian.org>
License: GPL-3+
License: SIL-1.1
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
.
PREAMBLE
.
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font
creation efforts of academic and linguistic communities, and to provide
a free and open framework in which fonts may be shared and improved in
partnership with others.
.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply to
any document created using the fonts or their derivatives.
.
DEFINITIONS
.
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
.
"Original Version" refers to the collection of Font Software components
as distributed by the Copyright Holder(s).
.
"Modified Version" refers to any derivative made by adding to,
deleting, or substituting -- in part or in whole -- any of the
components of the Original Version, by changing formats or by porting
the Font Software to a new environment.
.
"Author" refers to any designer, engineer, programmer, technical writer
or other person who contributed to the Font Software.
.
PERMISSION & CONDITIONS
.
Permission is hereby granted, free of charge, to any person obtaining a
copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
.
1) Neither the Font Software nor any of its individual components, in
Original or Modified Versions, may be sold by itself.
.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the
corresponding Copyright Holder. This restriction only applies to the
primary font name as presented to the users.
.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
.
5) The Font Software, modified or unmodified, in part or in whole, must
be distributed entirely under this license, and must not be distributed
under any other license. The requirement for fonts to remain under this
license does not apply to any document created using the Font Software.
.
TERMINATION
.
This license becomes null and void if any of the above conditions are
not met.
.
DISCLAIMER
.
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.
License: GPL-3+
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
.
On Debian systems, the complete text of the GNU General
Public License version 3 can be found in "/usr/share/common-licenses/GPL-3".

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View File

@@ -0,0 +1,12 @@
; Teaching fixture only: XYZBC, P=D=tool-offset=0, known initial state.
; Work origin (40,20,10) mm; this is not a production machining program.
N10 G21 G90 G94 G17
N20 G10 L2 P1 X40 Y20 Z10
N30 G54
N40 M428
N50 G1 X10 Y0 Z5 B0 C0 F600
N60 C90
N70 G91 X10
N80 G90 X20 Y0 Z5 B30 C90 F300
N90 X0 Y10
M2

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,362 @@
[
{
"page": 1,
"chapter": "封面 · 完整讲义 / 2026.09",
"title": "五轴 RTCP 与工件坐标"
},
{
"page": 2,
"chapter": "导读",
"title": "怎样使用这份讲义"
},
{
"page": 3,
"chapter": "学习地图",
"title": "内容索引"
},
{
"page": 4,
"chapter": "第1章 · 坐标基础",
"title": "01 坐标是“按照约定量出来的位置”"
},
{
"page": 5,
"chapter": "第1章 · 坐标基础",
"title": "02 一套坐标系至少要规定什么?"
},
{
"page": 6,
"chapter": "第1章 · 坐标基础",
"title": "03 同一个点,可以有两套不同的坐标"
},
{
"page": 7,
"chapter": "第1章 · 坐标基础",
"title": "04 点坐标与移动增量不是一回事"
},
{
"page": 8,
"chapter": "第1章 · 机床结构",
"title": "05 五轴机床里,到底是哪五根轴?"
},
{
"page": 9,
"chapter": "第1章 · 机床结构",
"title": "06 关节位置,不等于工件坐标"
},
{
"page": 10,
"chapter": "第2章 · 参考系",
"title": "07 先认识 M、W、J,再引入 K 和 T"
},
{
"page": 11,
"chapter": "第2章 · 机床参考",
"title": "08 回零解决什么?工件对刀又解决什么?"
},
{
"page": 12,
"chapter": "第2章 · 工件参考",
"title": "09 工件坐标 W 代表什么?"
},
{
"page": 13,
"chapter": "第2章 · 工件随动",
"title": "10 工件转了,原点与方向一起转"
},
{
"page": 14,
"chapter": "第2章 · 最重要的区分",
"title": "11 “物理工件坐标架”和“G54表”不是同一对象"
},
{
"page": 15,
"chapter": "第3章 · 原点与方向的确定",
"title": "12 先约定机床零姿态,再谈工件装在哪里"
},
{
"page": 16,
"chapter": "第3章 · 原点选择",
"title": "13 工件原点放在哪里比较合适?"
},
{
"page": 17,
"chapter": "第3章 · 原点测量",
"title": "14 怎样把选好的原点告诉控制器?"
},
{
"page": 18,
"chapter": "第3章 · 方向测量",
"title": "15 一个原点不能确定三维方向"
},
{
"page": 19,
"chapter": "第3章 · 初始方向与动态方向",
"title": "16 装夹方向和转台姿态,要分开处理"
},
{
"page": 20,
"chapter": "第3章 · 原点和方向合起来",
"title": "17 一个点怎样从工件坐标换算到机床空间?"
},
{
"page": 21,
"chapter": "第4章 · G54与偏置",
"title": "18 G54究竟做了什么?"
},
{
"page": 22,
"chapter": "第4章 · 偏置的物理含义",
"title": "19 G54的40、20、10代表什么?"
},
{
"page": 23,
"chapter": "第4章 · 设置方法一",
"title": "20 G10 L2:把已知偏置写入坐标表"
},
{
"page": 24,
"chapter": "第4章 · 设置方法二",
"title": "21 G10 L20:让当前位置具有指定工件坐标"
},
{
"page": 25,
"chapter": "第4章 · 两个坐标系",
"title": "22 换G54/G55为什么可能只改数字、不动机床?"
},
{
"page": 26,
"chapter": "第4章 · 附加偏置与基础坐标",
"title": "23 G52、G92、G53:先学会不混用"
},
{
"page": 27,
"chapter": "第5章 · 非RTCP与RTCP",
"title": "24 非RTCP:“独立”的准确含义"
},
{
"page": 28,
"chapter": "第5章 · 非RTCP与RTCP",
"title": "25 RTCP控制的是相对目标关系"
},
{
"page": 29,
"chapter": "第5章 · RTCP工件原点",
"title": "26 用G54例子看“原点随动”"
},
{
"page": 30,
"chapter": "第5章 · RTCP方向",
"title": "27 沿工件X前进,哪些电机会动?"
},
{
"page": 31,
"chapter": "第5章 · 倾转与结构顺序",
"title": "28 加入B或A后,方向可以进入三个维度"
},
{
"page": 32,
"chapter": "第5章 · 三类偏置",
"title": "29 G54、旋转中心、轴间偏置各管什么?"
},
{
"page": 33,
"chapter": "第5章 · 刀具参考",
"title": "30 为什么必须知道刀尖究竟在哪里?"
},
{
"page": 34,
"chapter": "第6章 · 读懂G代码",
"title": "31 一行G代码由“地址字”组成"
},
{
"page": 35,
"chapter": "第6章 · 模态状态",
"title": "32 没有写出来的内容,可能沿用上一行"
},
{
"page": 36,
"chapter": "第6章 · 单位",
"title": "33 G20/G21改变长度单位,不把角度变成长度"
},
{
"page": 37,
"chapter": "第6章 · 绝对目标",
"title": "34 G90 X10:去当前编程系的X=10"
},
{
"page": 38,
"chapter": "第6章 · 相对增量",
"title": "35 G91 X10:在当前编程方向增加10"
},
{
"page": 39,
"chapter": "第6章 · 运动方式",
"title": "36 G0/G1分别如何产生运动?"
},
{
"page": 40,
"chapter": "第6章 · 圆弧地址",
"title": "37 G2/G3里的I、J、K不是三根新电机轴"
},
{
"page": 41,
"chapter": "第6章 · 进给",
"title": "38 F到底是速度、时间,还是每转进给?"
},
{
"page": 42,
"chapter": "第6章 · 其他常见字",
"title": "39 不是每个数字都代表位置"
},
{
"page": 43,
"chapter": "第6章 · 从文本到运动",
"title": "40 控制器不是从左到右逐个字移动"
},
{
"page": 44,
"chapter": "第7章 · 完整实算程序",
"title": "41 统一实验条件与完整程序"
},
{
"page": 45,
"chapter": "第7章 · 第一步",
"title": "42 N10–N30:设置模式与工件参考"
},
{
"page": 46,
"chapter": "第7章 · 第二步",
"title": "43 N40 M428:先切模式,不凭空移动"
},
{
"page": 47,
"chapter": "第7章 · 第三步",
"title": "44 N50:把第一个工件点送到刀尖"
},
{
"page": 48,
"chapter": "第7章 · 第四步",
"title": "45 N60 C90:XYZ字没出现,XYZ关节却动了"
},
{
"page": 49,
"chapter": "第7章 · 第五步",
"title": "46 N70 G91 X10:沿转后的工件方向走"
},
{
"page": 50,
"chapter": "第7章 · 第六步",
"title": "47 N80:工件点不变,B倾转带来X/Z补偿"
},
{
"page": 51,
"chapter": "第7章 · 第七步",
"title": "48 N90:省略的Z、B、C保持当前目标"
},
{
"page": 52,
"chapter": "第7章 · 全过程汇总",
"title": "49 把五组数字同时放在一张表里"
},
{
"page": 53,
"chapter": "第7章 · 再切回直接模式",
"title": "50 N100/N110:同一刀尖位置,坐标解释改变"
},
{
"page": 54,
"chapter": "第8章 · 中间轨迹",
"title": "51 RTCP要在运动过程中持续计算"
},
{
"page": 55,
"chapter": "第8章 · 姿态与刀轴",
"title": "52 RTCP不自动决定刀轴该朝哪里"
},
{
"page": 56,
"chapter": "第8章 · 三维显示",
"title": "53 预览画面中的三个对象要分开看"
},
{
"page": 57,
"chapter": "第8章 · 参数准备",
"title": "54 准备数据时,按三层顺序核对"
},
{
"page": 58,
"chapter": "第9章 · 课堂实验",
"title": "55 实验一:观察“转动后的坐标方向”"
},
{
"page": 59,
"chapter": "第9章 · 课堂实验",
"title": "56 实验二:G54与G90/G91的逐行记录"
},
{
"page": 60,
"chapter": "第9章 · 课堂实验",
"title": "57 实验三:原点移动,程序几何不改"
},
{
"page": 61,
"chapter": "第9章 · 排错",
"title": "58 位置不对时,从哪一层开始查?"
},
{
"page": 62,
"chapter": "第9章 · 限位与边界",
"title": "59 RTCP跟得上,还必须到得了"
},
{
"page": 63,
"chapter": "第10章 · 常见问答",
"title": "60 初学者最容易问错的八个问题"
},
{
"page": 64,
"chapter": "第10章 · 练习",
"title": "61 练习A:原点、模式和地址字"
},
{
"page": 65,
"chapter": "第10章 · 练习",
"title": "62 练习B:从工件点推到物理关节"
},
{
"page": 66,
"chapter": "第10章 · 参考答案",
"title": "63 练习A答案"
},
{
"page": 67,
"chapter": "第10章 · 参考答案",
"title": "64 练习B答案"
},
{
"page": 68,
"chapter": "附录A · 术语",
"title": "65 把常见名词翻译成容易理解的话"
},
{
"page": 69,
"chapter": "附录B · 可选数学",
"title": "66 用最少公式描述完整坐标链"
},
{
"page": 70,
"chapter": "附录B · 可选数学",
"title": "67 反过来:从当前物理位置求工件坐标"
},
{
"page": 71,
"chapter": "附录C · 软件实验范围",
"title": "68 这份讲义验证了什么,没有声称什么?"
},
{
"page": 72,
"chapter": "附录D · 来源与复现",
"title": "69 官方资料、验证数据与自学路径"
}
]

View File

@@ -0,0 +1,502 @@
{
"report_id": "rtcp-beginners-pdf-v1",
"status": "verified",
"page_count": 72,
"pdf": "五轴RTCP与工件坐标-初学者完整讲义.pdf",
"bytes": 2187858,
"sha256": "e88f1a796b15c3e0c4af59f6bab5dcfd3c5ee19a80343147ee4edc57068981e7",
"pages": [
{
"page": 1,
"characters": 350,
"title": "五轴 RTCP 与工件坐标"
},
{
"page": 2,
"characters": 473,
"title": "怎样使用这份讲义"
},
{
"page": 3,
"characters": 414,
"title": "内容索引"
},
{
"page": 4,
"characters": 332,
"title": "01 坐标是“按照约定量出来的位置”"
},
{
"page": 5,
"characters": 444,
"title": "02 一套坐标系至少要规定什么?"
},
{
"page": 6,
"characters": 357,
"title": "03 同一个点,可以有两套不同的坐标"
},
{
"page": 7,
"characters": 359,
"title": "04 点坐标与移动增量不是一回事"
},
{
"page": 8,
"characters": 349,
"title": "05 五轴机床里,到底是哪五根轴?"
},
{
"page": 9,
"characters": 416,
"title": "06 关节位置,不等于工件坐标"
},
{
"page": 10,
"characters": 500,
"title": "07 先认识 M、W、J,再引入 K 和 T"
},
{
"page": 11,
"characters": 453,
"title": "08 回零解决什么?工件对刀又解决什么?"
},
{
"page": 12,
"characters": 350,
"title": "09 工件坐标 W 代表什么?"
},
{
"page": 13,
"characters": 354,
"title": "10 工件转了,原点与方向一起转"
},
{
"page": 14,
"characters": 528,
"title": "11 “物理工件坐标架”和“G54表”不是同一对象"
},
{
"page": 15,
"characters": 465,
"title": "12 先约定机床零姿态,再谈工件装在哪里"
},
{
"page": 16,
"characters": 484,
"title": "13 工件原点放在哪里比较合适?"
},
{
"page": 17,
"characters": 479,
"title": "14 怎样把选好的原点告诉控制器?"
},
{
"page": 18,
"characters": 336,
"title": "15 一个原点不能确定三维方向"
},
{
"page": 19,
"characters": 478,
"title": "16 装夹方向和转台姿态,要分开处理"
},
{
"page": 20,
"characters": 415,
"title": "17 一个点怎样从工件坐标换算到机床空间?"
},
{
"page": 21,
"characters": 447,
"title": "18 G54究竟做了什么?"
},
{
"page": 22,
"characters": 421,
"title": "19 G54的40、20、10代表什么?"
},
{
"page": 23,
"characters": 404,
"title": "20 G10 L2:把已知偏置写入坐标表"
},
{
"page": 24,
"characters": 483,
"title": "21 G10 L20:让当前位置具有指定工件坐标"
},
{
"page": 25,
"characters": 505,
"title": "22 换G54/G55为什么可能只改数字、不动机床?"
},
{
"page": 26,
"characters": 471,
"title": "23 G52、G92、G53:先学会不混用"
},
{
"page": 27,
"characters": 374,
"title": "24 非RTCP:“独立”的准确含义"
},
{
"page": 28,
"characters": 372,
"title": "25 RTCP控制的是相对目标关系"
},
{
"page": 29,
"characters": 381,
"title": "26 用G54例子看“原点随动”"
},
{
"page": 30,
"characters": 370,
"title": "27 沿工件X前进,哪些电机会动?"
},
{
"page": 31,
"characters": 415,
"title": "28 加入B或A后,方向可以进入三个维度"
},
{
"page": 32,
"characters": 457,
"title": "29 G54、旋转中心、轴间偏置各管什么?"
},
{
"page": 33,
"characters": 465,
"title": "30 为什么必须知道刀尖究竟在哪里?"
},
{
"page": 34,
"characters": 521,
"title": "31 一行G代码由“地址字”组成"
},
{
"page": 35,
"characters": 473,
"title": "32 没有写出来的内容,可能沿用上一行"
},
{
"page": 36,
"characters": 501,
"title": "33 G20/G21改变长度单位,不把角度变成长度"
},
{
"page": 37,
"characters": 456,
"title": "34 G90 X10:去当前编程系的X=10"
},
{
"page": 38,
"characters": 541,
"title": "35 G91 X10:在当前编程方向增加10"
},
{
"page": 39,
"characters": 485,
"title": "36 G0/G1分别如何产生运动?"
},
{
"page": 40,
"characters": 466,
"title": "37 G2/G3里的I、J、K不是三根新电机轴"
},
{
"page": 41,
"characters": 528,
"title": "38 F到底是速度、时间,还是每转进给?"
},
{
"page": 42,
"characters": 509,
"title": "39 不是每个数字都代表位置"
},
{
"page": 43,
"characters": 491,
"title": "40 控制器不是从左到右逐个字移动"
},
{
"page": 44,
"characters": 569,
"title": "41 统一实验条件与完整程序"
},
{
"page": 45,
"characters": 456,
"title": "42 N10–N30:设置模式与工件参考"
},
{
"page": 46,
"characters": 449,
"title": "43 N40 M428:先切模式,不凭空移动"
},
{
"page": 47,
"characters": 450,
"title": "44 N50:把第一个工件点送到刀尖"
},
{
"page": 48,
"characters": 513,
"title": "45 N60 C90:XYZ字没出现,XYZ关节却动了"
},
{
"page": 49,
"characters": 498,
"title": "46 N70 G91 X10:沿转后的工件方向走"
},
{
"page": 50,
"characters": 507,
"title": "47 N80:工件点不变,B倾转带来X/Z补偿"
},
{
"page": 51,
"characters": 477,
"title": "48 N90:省略的Z、B、C保持当前目标"
},
{
"page": 52,
"characters": 737,
"title": "49 把五组数字同时放在一张表里"
},
{
"page": 53,
"characters": 511,
"title": "50 N100/N110:同一刀尖位置,坐标解释改变"
},
{
"page": 54,
"characters": 336,
"title": "51 RTCP要在运动过程中持续计算"
},
{
"page": 55,
"characters": 408,
"title": "52 RTCP不自动决定刀轴该朝哪里"
},
{
"page": 56,
"characters": 514,
"title": "53 预览画面中的三个对象要分开看"
},
{
"page": 57,
"characters": 497,
"title": "54 准备数据时,按三层顺序核对"
},
{
"page": 58,
"characters": 478,
"title": "55 实验一:观察“转动后的坐标方向”"
},
{
"page": 59,
"characters": 491,
"title": "56 实验二:G54与G90/G91的逐行记录"
},
{
"page": 60,
"characters": 505,
"title": "57 实验三:原点移动,程序几何不改"
},
{
"page": 61,
"characters": 497,
"title": "58 位置不对时,从哪一层开始查?"
},
{
"page": 62,
"characters": 473,
"title": "59 RTCP跟得上,还必须到得了"
},
{
"page": 63,
"characters": 434,
"title": "60 初学者最容易问错的八个问题"
},
{
"page": 64,
"characters": 429,
"title": "61 练习A:原点、模式和地址字"
},
{
"page": 65,
"characters": 466,
"title": "62 练习B:从工件点推到物理关节"
},
{
"page": 66,
"characters": 434,
"title": "63 练习A答案"
},
{
"page": 67,
"characters": 419,
"title": "64 练习B答案"
},
{
"page": 68,
"characters": 472,
"title": "65 把常见名词翻译成容易理解的话"
},
{
"page": 69,
"characters": 477,
"title": "66 用最少公式描述完整坐标链"
},
{
"page": 70,
"characters": 500,
"title": "67 反过来:从当前物理位置求工件坐标"
},
{
"page": 71,
"characters": 525,
"title": "68 这份讲义验证了什么,没有声称什么?"
},
{
"page": 72,
"characters": 731,
"title": "69 官方资料、验证数据与自学路径"
}
],
"embedded_fonts": {
"/AAAAAA+RtcpHandbookCJK-Bold": true,
"/BAAAAA+RtcpHandbookCJK-Regular": true,
"/CAAAAA+NotoSans-Regular": true,
"/DAAAAA+DejaVuSansMono": true
},
"bookmarks": 81,
"numeric_report": "rtcp-beginners-gcode-v1",
"executed_program_status": "completed",
"wasm_sha256": "aa0f5d551e42859eef3b37aee9079f09ae04e668819da4e62aee2b74522e8bc6",
"evidence": [
{
"path": "handbook.html",
"sha256": "525cddf7836d4da6464595fa606d4292dcd14028d24a5686dfff343c00b836d5"
},
{
"path": "outline.json",
"sha256": "a2d61e7fb27f5876be867d95fcd4049cd1dde279813228375e037da508d2ae08"
},
{
"path": "gcode-evidence.json",
"sha256": "57b65da107b22cbfa70bdda6659217d2f854317be3f8e54a9e150b4762f82114"
},
{
"path": "verification/layout.json",
"sha256": "e9345f5594854e9f52168cb7b0bfbe65303e6c3b7c75124ab8fb4004ef9d11f4"
},
{
"path": "assets/absolute-incremental.png",
"sha256": "36099f3c97af8e0d84fb6223bf1a14ed9c45608266aa87314fd7c4d4c9038777"
},
{
"path": "assets/arc-chord.png",
"sha256": "947bfc50ca994ae58b63ed0b198048854690c402a8a2b48d72e306920bf5a93b"
},
{
"path": "assets/arc-words.png",
"sha256": "38c4caf5f8d61b1de510a1946aec58768a468f27bd897a596270605a91e66bdb"
},
{
"path": "assets/bc-frame.png",
"sha256": "b6c467d33eff25e4e02bd04b601388ee4beca460c47426cb906c2ce628dd1eb0"
},
{
"path": "assets/continuous-joints.png",
"sha256": "2aaaa964d93e6e25e654eb239b2baca25f5be43c839f64c8ac37285cf5ede6c0"
},
{
"path": "assets/coordinate-grid.png",
"sha256": "587bbd6ba95422cb96fb07b447bfae0b7c3cd82ca4b96b65b1504909c8cd1e7f"
},
{
"path": "assets/datum-choice.png",
"sha256": "22bcd771e42fbacd5f142a8810670195e760dc9a7722af5daf210c5a16f517e6"
},
{
"path": "assets/font-license.txt",
"sha256": "849f4ea9c214fa4ac3593b770c699f387534b11ce671264c1b10d85bdcb5997b"
},
{
"path": "assets/handbook-bold.otf",
"sha256": "e891f0e63d907ab6b15052fc9a31914bc024b59cf00f55eb4a9dad5920eb5379"
},
{
"path": "assets/handbook-regular.otf",
"sha256": "3a6330ebd1c859e95c3afa190e2845a9826c5c42c33f63ef815cb0365df25dd4"
},
{
"path": "assets/hierarchy.png",
"sha256": "cf76f72ffd315ad17567bf6de507d16c283d3a1882c6f70a9398a04434ccc989"
},
{
"path": "assets/identity-no-follow.png",
"sha256": "1ecb07bdeb7a5015b6c17b32fb3611bec78d8067fb93057d39d5f408eb166f80"
},
{
"path": "assets/machine-ac.png",
"sha256": "ec538e0c0ebe016a1f464ce519875b3338dd60867627ffad2e0a7cdfc425a0ab"
},
{
"path": "assets/machine-bc.png",
"sha256": "46c37c21ef8dbaad203d2aa930796cc96278d9371d28584ac7aade5064b39308"
},
{
"path": "assets/moving-origin.png",
"sha256": "687d10f564f5c7da5c9f8385d6eb536038e3d0c2258441f3e658160d6a517c7b"
},
{
"path": "assets/offset-pipeline.png",
"sha256": "75a7ad25ce9f5f1c677589d824ce607f1b36c7ee379599fa0aa0ead9bd4afb7c"
},
{
"path": "assets/orientation-measure.png",
"sha256": "3b89e366c8d4f058c3758b310735f55608c74215fe22b99fc6dadc4412512c1a"
},
{
"path": "assets/orientation.png",
"sha256": "56e9a6df913e805e07bd00a350f8da9eab4def2cfedaa3ce0cf1b191e65def74"
},
{
"path": "assets/pivot-offset.png",
"sha256": "fc378a8bf7aaf6b8969889bbd4a8f763bc71b01505d063402c0ea4251f06abcd"
},
{
"path": "assets/rotated-direction.png",
"sha256": "9fe171e5e6c95c5f81dd0b395a24351972da7e5d18a37d33e19a6ed9d0a0f645"
},
{
"path": "assets/same-point.png",
"sha256": "79df6b907d4582f82fb45cf03effdf41f2040fe0382e7ee043d34a3e15ec2460"
},
{
"path": "assets/tcp-follow.png",
"sha256": "875eba48ea1cb7b9f990ddc556d38cb4e855af77a3c29130f8c6c249fd3817c8"
},
{
"path": "assets/tool-length.png",
"sha256": "168941e33624f883b09c1cdf54b36ed6e31ba260c7f1abdc495fee3b54cc834a"
},
{
"path": "verification/pdf-contact-1.png",
"sha256": "5434a7798a6d4384d0fc2ff4dacbbc4c93888674e8935d2499569e1e77ec8d46"
},
{
"path": "verification/pdf-contact-2.png",
"sha256": "388a72f9a4ef62fe48e786ca6bbc40aee9ad42fb7a63263be755174b902f01cf"
},
{
"path": "verification/pdf-contact-3.png",
"sha256": "d37d45aba09f2080a43306c31193216011fab37115210f9acf40f7106d2aad92"
}
]
}

View File

@@ -0,0 +1,759 @@
{
"report_id": "rtcp-beginners-layout-v1",
"pages": [
{
"page": 1,
"title": "五轴 RTCP 与工件坐标",
"violations": [],
"overflow": false,
"title_right": 316.921875,
"images": [
{
"src": "assets/machine-bc.png",
"loaded": true
}
],
"characters": 255
},
{
"page": 2,
"title": "怎样使用这份讲义",
"violations": [],
"overflow": false,
"title_right": 262,
"images": [],
"characters": 388
},
{
"page": 3,
"title": "内容索引",
"violations": [],
"overflow": false,
"title_right": 154,
"images": [],
"characters": 350
},
{
"page": 4,
"title": "01 坐标是“按照约定量出来的位置”",
"violations": [],
"overflow": false,
"title_right": 509.859375,
"images": [
{
"src": "assets/coordinate-grid.png",
"loaded": true
}
],
"characters": 250
},
{
"page": 5,
"title": "02 一套坐标系至少要规定什么?",
"violations": [],
"overflow": false,
"title_right": 455.859375,
"images": [],
"characters": 360
},
{
"page": 6,
"title": "03 同一个点,可以有两套不同的坐标",
"violations": [],
"overflow": false,
"title_right": 509.859375,
"images": [
{
"src": "assets/same-point.png",
"loaded": true
}
],
"characters": 274
},
{
"page": 7,
"title": "04 点坐标与移动增量不是一回事",
"violations": [],
"overflow": false,
"title_right": 455.859375,
"images": [
{
"src": "assets/absolute-incremental.png",
"loaded": true
}
],
"characters": 280
},
{
"page": 8,
"title": "05 五轴机床里,到底是哪五根轴?",
"violations": [],
"overflow": false,
"title_right": 482.859375,
"images": [
{
"src": "assets/hierarchy.png",
"loaded": true
}
],
"characters": 267
},
{
"page": 9,
"title": "06 关节位置,不等于工件坐标",
"violations": [],
"overflow": false,
"title_right": 428.859375,
"images": [],
"characters": 335
},
{
"page": 10,
"title": "07 先认识 M、W、J,再引入 K 和 T",
"violations": [],
"overflow": false,
"title_right": 497.859375,
"images": [],
"characters": 405
},
{
"page": 11,
"title": "08 回零解决什么?工件对刀又解决什么?",
"violations": [],
"overflow": false,
"title_right": 563.859375,
"images": [],
"characters": 366
},
{
"page": 12,
"title": "09 工件坐标 W 代表什么?",
"violations": [],
"overflow": false,
"title_right": 384.828125,
"images": [
{
"src": "assets/datum-choice.png",
"loaded": true
}
],
"characters": 261
},
{
"page": 13,
"title": "10 工件转了,原点与方向一起转",
"violations": [],
"overflow": false,
"title_right": 455.859375,
"images": [
{
"src": "assets/moving-origin.png",
"loaded": true
}
],
"characters": 267
},
{
"page": 14,
"title": "11 “物理工件坐标架”和“G54表”不是同一对象",
"violations": [],
"overflow": false,
"title_right": 655.578125,
"images": [],
"characters": 422
},
{
"page": 15,
"title": "12 先约定机床零姿态,再谈工件装在哪里",
"violations": [],
"overflow": false,
"title_right": 563.859375,
"images": [],
"characters": 367
},
{
"page": 16,
"title": "13 工件原点放在哪里比较合适?",
"violations": [],
"overflow": false,
"title_right": 455.859375,
"images": [],
"characters": 383
},
{
"page": 17,
"title": "14 怎样把选好的原点告诉控制器?",
"violations": [],
"overflow": false,
"title_right": 482.859375,
"images": [],
"characters": 373
},
{
"page": 18,
"title": "15 一个原点不能确定三维方向",
"violations": [],
"overflow": false,
"title_right": 428.859375,
"images": [
{
"src": "assets/orientation-measure.png",
"loaded": true
}
],
"characters": 246
},
{
"page": 19,
"title": "16 装夹方向和转台姿态,要分开处理",
"violations": [],
"overflow": false,
"title_right": 509.859375,
"images": [],
"characters": 378
},
{
"page": 20,
"title": "17 一个点怎样从工件坐标换算到机床空间?",
"violations": [],
"overflow": false,
"title_right": 590.859375,
"images": [
{
"src": "assets/moving-origin.png",
"loaded": true
}
],
"characters": 319
},
{
"page": 21,
"title": "18 G54究竟做了什么?",
"violations": [],
"overflow": false,
"title_right": 345.09375,
"images": [],
"characters": 352
},
{
"page": 22,
"title": "19 G54的40、20、10代表什么?",
"violations": [],
"overflow": false,
"title_right": 467.671875,
"images": [
{
"src": "assets/offset-pipeline.png",
"loaded": true
}
],
"characters": 313
},
{
"page": 23,
"title": "20 G10 L2:把已知偏置写入坐标表",
"violations": [],
"overflow": false,
"title_right": 490.75,
"images": [],
"characters": 311
},
{
"page": 24,
"title": "21 G10 L20:让当前位置具有指定工件坐标",
"violations": [],
"overflow": false,
"title_right": 587.6875,
"images": [],
"characters": 378
},
{
"page": 25,
"title": "22 换G54/G55为什么可能只改数字、不动机床?",
"violations": [],
"overflow": false,
"title_right": 649.4375,
"images": [],
"characters": 396
},
{
"page": 26,
"title": "23 G52、G92、G53:先学会不混用",
"violations": [],
"overflow": false,
"title_right": 501.53125,
"images": [],
"characters": 362
},
{
"page": 27,
"title": "24 非RTCP:“独立”的准确含义",
"violations": [],
"overflow": false,
"title_right": 458.03125,
"images": [
{
"src": "assets/identity-no-follow.png",
"loaded": true
}
],
"characters": 275
},
{
"page": 28,
"title": "25 RTCP控制的是相对目标关系",
"violations": [],
"overflow": false,
"title_right": 444.53125,
"images": [
{
"src": "assets/tcp-follow.png",
"loaded": true
}
],
"characters": 269
},
{
"page": 29,
"title": "26 用G54例子看“原点随动”",
"violations": [],
"overflow": false,
"title_right": 426.09375,
"images": [
{
"src": "assets/moving-origin.png",
"loaded": true
}
],
"characters": 281
},
{
"page": 30,
"title": "27 沿工件X前进,哪些电机会动?",
"violations": [],
"overflow": false,
"title_right": 472.796875,
"images": [
{
"src": "assets/rotated-direction.png",
"loaded": true
}
],
"characters": 283
},
{
"page": 31,
"title": "28 加入B或A后,方向可以进入三个维度",
"violations": [],
"overflow": false,
"title_right": 545.5625,
"images": [
{
"src": "assets/bc-frame.png",
"loaded": true
}
],
"characters": 316
},
{
"page": 32,
"title": "29 G54、旋转中心、轴间偏置各管什么?",
"violations": [],
"overflow": false,
"title_right": 561.078125,
"images": [
{
"src": "assets/pivot-offset.png",
"loaded": true
}
],
"characters": 365
},
{
"page": 33,
"title": "30 为什么必须知道刀尖究竟在哪里?",
"violations": [],
"overflow": false,
"title_right": 509.859375,
"images": [
{
"src": "assets/tool-length.png",
"loaded": true
}
],
"characters": 347
},
{
"page": 34,
"title": "31 一行G代码由“地址字”组成",
"violations": [],
"overflow": false,
"title_right": 448.21875,
"images": [],
"characters": 426
},
{
"page": 35,
"title": "32 没有写出来的内容,可能沿用上一行",
"violations": [],
"overflow": false,
"title_right": 536.859375,
"images": [],
"characters": 384
},
{
"page": 36,
"title": "33 G20/G21改变长度单位,不把角度变成长度",
"violations": [],
"overflow": false,
"title_right": 622.4375,
"images": [],
"characters": 386
},
{
"page": 37,
"title": "34 G90 X10:去当前编程系的X=10",
"violations": [],
"overflow": false,
"title_right": 491.71875,
"images": [],
"characters": 355
},
{
"page": 38,
"title": "35 G91 X10:在当前编程方向增加10",
"violations": [],
"overflow": false,
"title_right": 512.859375,
"images": [],
"characters": 449
},
{
"page": 39,
"title": "36 G0/G1分别如何产生运动?",
"violations": [],
"overflow": false,
"title_right": 428.5625,
"images": [],
"characters": 397
},
{
"page": 40,
"title": "37 G2/G3里的I、J、K不是三根新电机轴",
"violations": [],
"overflow": false,
"title_right": 552.34375,
"images": [
{
"src": "assets/arc-words.png",
"loaded": true
}
],
"characters": 348
},
{
"page": 41,
"title": "38 F到底是速度、时间,还是每转进给?",
"violations": [],
"overflow": false,
"title_right": 552.65625,
"images": [],
"characters": 440
},
{
"page": 42,
"title": "39 不是每个数字都代表位置",
"violations": [],
"overflow": false,
"title_right": 401.875,
"images": [],
"characters": 421
},
{
"page": 43,
"title": "40 控制器不是从左到右逐个字移动",
"violations": [],
"overflow": false,
"title_right": 482.859375,
"images": [],
"characters": 369
},
{
"page": 44,
"title": "41 统一实验条件与完整程序",
"violations": [],
"overflow": false,
"title_right": 401.875,
"images": [],
"characters": 442
},
{
"page": 45,
"title": "42 N10–N30:设置模式与工件参考",
"violations": [],
"overflow": false,
"title_right": 493.71875,
"images": [],
"characters": 372
},
{
"page": 46,
"title": "43 N40 M428:先切模式,不凭空移动",
"violations": [],
"overflow": false,
"title_right": 530.90625,
"images": [],
"characters": 358
},
{
"page": 47,
"title": "44 N50:把第一个工件点送到刀尖",
"violations": [],
"overflow": false,
"title_right": 480.953125,
"images": [],
"characters": 348
},
{
"page": 48,
"title": "45 N60 C90:XYZ字没出现,XYZ关节却动了",
"violations": [],
"overflow": false,
"title_right": 606.53125,
"images": [],
"characters": 423
},
{
"page": 49,
"title": "46 N70 G91 X10:沿转后的工件方向走",
"violations": [],
"overflow": false,
"title_right": 539.21875,
"images": [],
"characters": 409
},
{
"page": 50,
"title": "47 N80:工件点不变,B倾转带来X/Z补偿",
"violations": [],
"overflow": false,
"title_right": 570.265625,
"images": [],
"characters": 417
},
{
"page": 51,
"title": "48 N90:省略的Z、B、C保持当前目标",
"violations": [],
"overflow": false,
"title_right": 533.59375,
"images": [],
"characters": 352
},
{
"page": 52,
"title": "49 把五组数字同时放在一张表里",
"violations": [],
"overflow": false,
"title_right": 455.859375,
"images": [
{
"src": "assets/continuous-joints.png",
"loaded": true
}
],
"characters": 647
},
{
"page": 53,
"title": "50 N100/N110:同一刀尖位置,坐标解释改变",
"violations": [],
"overflow": false,
"title_right": 629.34375,
"images": [],
"characters": 399
},
{
"page": 54,
"title": "51 RTCP要在运动过程中持续计算",
"violations": [],
"overflow": false,
"title_right": 471.53125,
"images": [
{
"src": "assets/arc-chord.png",
"loaded": true
}
],
"characters": 255
},
{
"page": 55,
"title": "52 RTCP不自动决定刀轴该朝哪里",
"violations": [],
"overflow": false,
"title_right": 471.53125,
"images": [
{
"src": "assets/orientation.png",
"loaded": true
}
],
"characters": 318
},
{
"page": 56,
"title": "53 预览画面中的三个对象要分开看",
"violations": [],
"overflow": false,
"title_right": 482.859375,
"images": [],
"characters": 426
},
{
"page": 57,
"title": "54 准备数据时,按三层顺序核对",
"violations": [],
"overflow": false,
"title_right": 455.859375,
"images": [],
"characters": 411
},
{
"page": 58,
"title": "55 实验一:观察“转动后的坐标方向”",
"violations": [],
"overflow": false,
"title_right": 536.859375,
"images": [],
"characters": 369
},
{
"page": 59,
"title": "56 实验二:G54与G90/G91的逐行记录",
"violations": [],
"overflow": false,
"title_right": 538.65625,
"images": [],
"characters": 390
},
{
"page": 60,
"title": "57 实验三:原点移动,程序几何不改",
"violations": [],
"overflow": false,
"title_right": 509.859375,
"images": [],
"characters": 401
},
{
"page": 61,
"title": "58 位置不对时,从哪一层开始查?",
"violations": [],
"overflow": false,
"title_right": 482.859375,
"images": [],
"characters": 418
},
{
"page": 62,
"title": "59 RTCP跟得上,还必须到得了",
"violations": [],
"overflow": false,
"title_right": 444.53125,
"images": [],
"characters": 384
},
{
"page": 63,
"title": "60 初学者最容易问错的八个问题",
"violations": [],
"overflow": false,
"title_right": 455.859375,
"images": [],
"characters": 353
},
{
"page": 64,
"title": "61 练习A:原点、模式和地址字",
"violations": [],
"overflow": false,
"title_right": 446.171875,
"images": [],
"characters": 327
},
{
"page": 65,
"title": "62 练习B:从工件点推到物理关节",
"violations": [],
"overflow": false,
"title_right": 474.25,
"images": [],
"characters": 358
},
{
"page": 66,
"title": "63 练习A答案",
"violations": [],
"overflow": false,
"title_right": 230.171875,
"images": [],
"characters": 344
},
{
"page": 67,
"title": "64 练习B答案",
"violations": [],
"overflow": false,
"title_right": 231.25,
"images": [],
"characters": 317
},
{
"page": 68,
"title": "65 把常见名词翻译成容易理解的话",
"violations": [],
"overflow": false,
"title_right": 482.859375,
"images": [],
"characters": 386
},
{
"page": 69,
"title": "66 用最少公式描述完整坐标链",
"violations": [],
"overflow": false,
"title_right": 428.859375,
"images": [],
"characters": 384
},
{
"page": 70,
"title": "67 反过来:从当前物理位置求工件坐标",
"violations": [],
"overflow": false,
"title_right": 536.859375,
"images": [],
"characters": 389
},
{
"page": 71,
"title": "68 这份讲义验证了什么,没有声称什么?",
"violations": [],
"overflow": false,
"title_right": 563.859375,
"images": [],
"characters": 439
},
{
"page": 72,
"title": "69 官方资料、验证数据与自学路径",
"violations": [],
"overflow": false,
"title_right": 482.859375,
"images": [],
"characters": 626
}
],
"errors": []
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Some files were not shown because too many files have changed in this diff Show More