Skip to main content

codex-origin-plot

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.

来源信息

仓库
guoleizhen717/codex-origin-plot
最近来源活动
2026年6月30日 12:28
检测到的 SKILL.md 语言
中文
星标
19
Forks
0

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
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 输出) ### 导出回退策略 1. 优先:`expGraph type:=png filename:="D:/path/fig.png" width:=2400 height:=3600 tr1.unit:=2` 2. 回退:`page.export(type:=png, filename:=D:/path/fig.png)` 3. 回退:不带引号的 expGraph 4. 兜底:截图 Origin 窗口 ## 依赖 ``` pywin32>=305 # COM automation (pip install pywin32) OriginLab Origin # 2021/2022/2023 tested Python 3.9+ ``` Origin 安装路径检测(按优先级): 1. `D:\Program Files\OriginLab\Origin2022\Origin64.exe` 2. `C:\Program Files\OriginLab\Origin2022\Origin64.exe` 3. 全盘搜索 `Origin64.exe` ## 参考文件 | 文件 | 用途 | |------|------| | `references/origin_com_ref.md` | COM 自动化坑点大全 — 新建会话前必读 | | `references/recipe_forces.md` | 组合刀具切削力图谱 — 柱状图/折线图/多面板配方 | | `scripts/origin_plot.py` | 可独立运行的 Python 脚本 — 一键生成三面板图 | 每份文件开头都有目录,先查目录定位,再读对应小节。 ## 常见任务示例 ### 任务 A:用户给了一组贯入度数据,要画三面板图 **流程**: 1. 读 `references/recipe_forces.md` 确认图表配方 2. 读 `references/origin_com_ref.md` 确认 COM 要点 3. 运行 `scripts/origin_plot.py` 或手动执行 COM 命令 4. 导出 3 张 PNG → `view_image` 展示给用户 5. 根据用户反馈迭代(调坐标轴、字体、颜色) ### 任务 B:用户已有 CSV 原始数据(未计算合力/比能/协同系数) **流程**: 1. 先读取 CSV,按第三章方法计算: - 合力 = sqrt(Fx² + Fy² + Fz²),取稳态阶段均值 - 切削比能 = 总合力 / 贯入度(或按用户公式) - 协同切削系数 K = 切刀合力 / 先行刀合力 2. 将计算结果整理成 Python dict 3. 然后走任务 A 的流程 ### 任务 C:用户要求多面板合并图 **流程**: 1. 先逐个创建 3 张独立图表(按 Recipe 1-3) 2. 尝试 `merge_graph option:=2 row:=3 col:=1 keepsize:=0` 3. 如果 merge_graph 返回 False → 导出 3 张独立 PNG,告知用户手动合并 4. 如果 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 未安装: ```powershell & "C:\Users\admin\.cache\codex-runtimes\codex-primary-runtime\dependencies\python\python.exe" -m pip install pywin32 ``` ## COM 会话模板 ```python import win32com.client, time, pythoncom pythoncom.CoInitialize() origin = win32com.client.Dispatch("Origin.Application") origin.Visible = True time.sleep(3) # ... send LabTalk commands via origin.Execute(cmd) ... pythoncom.CoUninitialize() ``` 每个 COM 会话必须配对 `CoInitialize/CoUninitialize`,否则资源泄漏。 ## 注意事项 - 在开始前必须 `taskkill /f /im Origin64.exe`,避免残留进程干扰 - 不要尝试通过 COM 保存 `.opju` 项目文件(会崩溃),告知用户手动保存 - 每个图表创建后立即格式化和导出,不要在多个图表间跳转 - COM 返回值 `True/False` 不代表操作是否完成,需要检查实际文件是否生成 - 如果 `expGraph` 三次回退都失败,截图 Origin 窗口作为兜底方案
在 GitHub 查看