| name | codex-origin-plot |
| description | Drive OriginLab Origin via COM automation to create publication-grade scientific figures. Handles combined-tool cutting force analysis (force, specific energy, synergistic coefficient) with grouped column and line+symbol charts. Supports Chinese + English labels. Designed for mechanical engineering / mining engineering research papers. When the user needs Origin figures (not matplotlib) for journal submission, or when the user says "画一张Origin图", "用Origin画", "Origin绘图", "COM自动化Origin", trigger this skill. |
codex-origin-plot — Codex驱动Origin科研绘图
直接通过 COM 自动化控制 OriginLab Origin,从数据到出版级图表一步完成。
概述
本技能解决的核心问题:在 Codex 中调用 Origin COM 接口,自动创建、格式化、导出科研图表。
与 matplotlib/seaborn 不同,Origin 是许多工程学科(机械、矿业、材料)的标准投稿工具。审稿人和导师往往要求 .opju 源文件 + Origin 原生图表。本技能让你在 Codex 对话中直接操控 Origin,无需手动点击。
定位:本技能专注于 Origin COM 自动化执行,不做数据剖析和图表类型推荐(这些由 scipilot-figure-skill 负责)。如果你不确定该画什么图,先走 scipilot-figure-skill 的流程。
何时使用
- 用户说"用Origin画图"、"Origin绘图"、"COM自动化Origin"
- 用户需要
.opju 源文件 + Origin 原生导出 PNG/PDF
- 用户在做组合刀具切削力分析(切刀/先行刀合力、比能、协同系数)
- 用户需要中文/英文双语标签的出版级图表
- 用户指定目标期刊需要 Origin 格式(而非 matplotlib)
- 用户已有数据,需要快速生成 Origin 图表预览
核心工作流(6 步)
0. 环境检查 —— 确认 Origin 安装路径、Python 环境、pywin32
↓
1. 准备数据 —— 从 CSV 或计算结果中整理数据
↓
2. 启动 Origin —— kill 残留进程 → COM Dispatch → Visible
↓
3. 创建图表 —— Workbook → 填数 → plotxy(逐个创建,逐个格式化)
↓
4. 格式化 —— 坐标轴标签/范围/标题,字体大小
↓
5. 导出 —— expGraph PNG(逐个导出;合并图用 merge_graph)
↓
6. 展示给用户 —— 用 view_image 展示 PNG,等待反馈
关键经验(避免踩坑)
稳定可用的
newproject, win -t wks, 填数据 ✅
plotxy 创建图表 ✅
- 设置坐标轴标签/范围/标题 ✅
- 逐个图表创建 + 逐个导出 ✅
会崩溃/静默失败的
save -i 保存项目 → COM 崩溃 (-2147417851) ❌
expGraph → 返回 True 但不生成文件 ❌(需多重回退方案)
merge_graph → 可能返回 False ❌(用独立导出代替)
echo %H → 始终返回 False ❌(COM 无法捕获 LabTalk 输出)
导出回退策略
- 优先:
expGraph type:=png filename:="D:/path/fig.png" width:=2400 height:=3600 tr1.unit:=2
- 回退:
page.export(type:=png, filename:=D:/path/fig.png)
- 回退:不带引号的 expGraph
- 兜底:截图 Origin 窗口
依赖
pywin32>=305 # COM automation (pip install pywin32)
OriginLab Origin # 2021/2022/2023 tested
Python 3.9+
Origin 安装路径检测(按优先级):
D:\Program Files\OriginLab\Origin2022\Origin64.exe
C:\Program Files\OriginLab\Origin2022\Origin64.exe
- 全盘搜索
Origin64.exe
参考文件
| 文件 | 用途 |
|---|
references/origin_com_ref.md | COM 自动化坑点大全 — 新建会话前必读 |
references/recipe_forces.md | 组合刀具切削力图谱 — 柱状图/折线图/多面板配方 |
scripts/origin_plot.py | 可独立运行的 Python 脚本 — 一键生成三面板图 |
每份文件开头都有目录,先查目录定位,再读对应小节。
常见任务示例
任务 A:用户给了一组贯入度数据,要画三面板图
流程:
- 读
references/recipe_forces.md 确认图表配方
- 读
references/origin_com_ref.md 确认 COM 要点
- 运行
scripts/origin_plot.py 或手动执行 COM 命令
- 导出 3 张 PNG →
view_image 展示给用户
- 根据用户反馈迭代(调坐标轴、字体、颜色)
任务 B:用户已有 CSV 原始数据(未计算合力/比能/协同系数)
流程:
- 先读取 CSV,按第三章方法计算:
- 合力 = sqrt(Fx² + Fy² + Fz²),取稳态阶段均值
- 切削比能 = 总合力 / 贯入度(或按用户公式)
- 协同切削系数 K = 切刀合力 / 先行刀合力
- 将计算结果整理成 Python dict
- 然后走任务 A 的流程
任务 C:用户要求多面板合并图
流程:
- 先逐个创建 3 张独立图表(按 Recipe 1-3)
- 尝试
merge_graph option:=2 row:=3 col:=1 keepsize:=0
- 如果 merge_graph 返回 False → 导出 3 张独立 PNG,告知用户手动合并
- 如果 merge_graph 成功 → 导出合并后的 MGraph1 为单张长图
图表类型映射
| 分析指标 | Origin plot type | template | iy 参数 |
|---|
| 合力对比 | Grouped Column (202) | Column | (1,2) |
| 切削比能 | Line + Symbol (201) | LineSymb | (1,3) |
| 协同系数 | Line + Symbol (201) | LineSymb | (1,4) |
Python 环境说明
Codex 的 Python 运行时路径:
C:\Users\admin\.cache\codex-runtimes\codex-primary-runtime\dependencies\python\python.exe
如果 pywin32 未安装:
& "C:\Users\admin\.cache\codex-runtimes\codex-primary-runtime\dependencies\python\python.exe" -m pip install pywin32
COM 会话模板
import win32com.client, time, pythoncom
pythoncom.CoInitialize()
origin = win32com.client.Dispatch("Origin.Application")
origin.Visible = True
time.sleep(3)
pythoncom.CoUninitialize()
每个 COM 会话必须配对 CoInitialize/CoUninitialize,否则资源泄漏。
注意事项
- 在开始前必须
taskkill /f /im Origin64.exe,避免残留进程干扰
- 不要尝试通过 COM 保存
.opju 项目文件(会崩溃),告知用户手动保存
- 每个图表创建后立即格式化和导出,不要在多个图表间跳转
- COM 返回值
True/False 不代表操作是否完成,需要检查实际文件是否生成
- 如果
expGraph 三次回退都失败,截图 Origin 窗口作为兜底方案