数据 (定位销/勾销缸/翻转缸/电缸 → Univer 真实数模)
- 新增 19 系列 1124 型号 (PIN 303 / HOK 73 / ROT 741 / ELEC 9)
- 命名规则取自官方图册 CODIFICATION KEY (pdftotext 提取), 非推测
- 解析用「官方值域校验 + 左对齐 DFS 填空」, 可处理省略空位的型号
- 参数组合唯一性门禁: 1124 型号全部通过 (避免选型静默错配)
- 占位/测试文件 (如 USP50J_0___K0 销径为空) 在解析阶段丢弃
- catalog.json 分类系列表同步; crossref 失效引用清理
手册页
- 全部 42 系列改为彩色 (此前脚本误写死 csGRAY 转灰度), 346 页
- 修复 UCBT 附图只有 1 页 (筛选条件写死 UCBT40 且漏 CLAMPING ARMS)
- gen-pending-series.py 改为扫描 manual 目录自动生成附件清单,
避免重跑脚本把多页附件覆盖回单页
网页版
- 首页改为系列缩略图网格 (40 张: 27 张真实产品图 + 13 张占位图),
按大类分组; 图放 web/series/<系列码>.webp, 覆盖同名文件即可替换
- 左侧树改手风琴 (默认收起, 一次展开一个), 父级带 SVG 图标,
悬停放大动画, 按钮间距随高度均匀分布; 可收起为图标窄条
- 修复分隔条被拖出容器后无法找回 (上限改为容器感知 + resize 重夹取
+ 双击复位); 同时阻止图片原生拖拽
- 购物车打包改取 .step.gz 副档 (传输量降至约 1/4.5), 无副档自动回退
- 修复搜索到型号后点结果内容区空白 (switchTab('dim') 已失效)
- OpcPackage 超大包 (>1.5GB) 改走临时文件, 绕过 MemoryStream 2GB 上限
工具
- gen-pending-series/manual, copy-pending-step, gen-step-gz,
gen-series-thumbs, scan-pending-series 等 11 个脚本
Co-Authored-By: Claude Code <noreply@anthropic.com>
53 lines
1.9 KiB
Python
53 lines
1.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
# 把 ONEBOT 手册 PDF 的系列页拆出渲染成图片 (供目录软件"尺寸图"窗口对照查看)
|
|
# 用法:
|
|
# python tools\render-manual-pages.py # 渲染全部系列
|
|
# python tools\render-manual-pages.py KC # 只渲染一个系列
|
|
# 输出: OnebotCatalog\onebot-data\catalog\manual\<系列>\p<物理页码>.png (灰度 PNG 110dpi, 源目录布局)
|
|
import fitz, os, sys
|
|
|
|
# 脚本位于 onebot-data/tools/,项目根即上两级
|
|
_ROOT = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
PDF = os.path.join(_ROOT, "ONEBOT - 直线气缸 - 中文.pdf")
|
|
OUT = os.path.join(_ROOT, "onebot-data", "catalog", "manual")
|
|
DPI = 110
|
|
|
|
# 系列 → 手册物理页码 (1-based, 含首尾); 依据: 手册印刷页码 = 物理页码 - 1
|
|
SERIES_PAGES = {
|
|
"KC": [2, 3, 4, 5, 6, 11, 12], # KC 全缸径: 32~125 (p2-6) + 125~320 (p11-12)
|
|
"KCB": [9, 10],
|
|
"KSB": [16, 17],
|
|
"KCS": [13],
|
|
"KS": [14, 15],
|
|
"KSU": [14, 15],
|
|
"M": [22, 23, 24, 25, 26, 27],
|
|
"MS": [28, 29, 30, 31, 32],
|
|
"MSC": [33, 34, 35],
|
|
"MAL": [36, 37, 38, 39, 40],
|
|
"MALC": [41, 42, 43],
|
|
}
|
|
|
|
def main():
|
|
only = sys.argv[1] if len(sys.argv) > 1 else None
|
|
doc = fitz.open(PDF)
|
|
todo = {k: v for k, v in SERIES_PAGES.items()} if only is None else {only: SERIES_PAGES.get(only, [])}
|
|
total = 0
|
|
for series, pages in todo.items():
|
|
if not pages:
|
|
print(f"[warn] 未知系列: {only}")
|
|
continue
|
|
d = os.path.join(OUT, series)
|
|
os.makedirs(d, exist_ok=True)
|
|
for p in pages:
|
|
out = os.path.join(d, f"p{p:02d}.png")
|
|
pix = doc[p - 1].get_pixmap(dpi=DPI)
|
|
pix.save(out)
|
|
kb = os.path.getsize(out) // 1024
|
|
total += kb
|
|
print(f"{series} p{p:02d} -> {kb} KB")
|
|
doc.close()
|
|
print(f"完成, 共 {total // 1024} MB")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|