Repository navigation
Releases: Z-415/dsh-geogebra
Releases · Z-415/dsh-geogebra
Release list
v0.1.0 —— 命令画图,出 PNG 或可编辑 .ggb
这是什么
DSH 宿主插件:让模型用一条 GeoGebra 命令列表画出真正的 GeoGebra 图形,直接落地成文件。
- PNG:只有坐标系与图形,没有代数区 / 工具栏 / 输入栏 / 虚拟键盘,可直接插讲义或 Word
.ggb:GeoGebra 可打开、可继续拖动改参数的可编辑构造文件(写.ggb时自动附一张同名.png)- 无窗口(无头 Edge)、不抢鼠标键盘、不改变前台窗口标题
- 命令写错会报错并点名那条命令,不会给你一张空白图
装法
dsh plugin --profile desktop add github:Z-415/dsh-geogebra
# 装完必须完全重启 DSH Desktop(托盘右键 → 退出 → 重开)要求:Windows + Microsoft Edge + 能访问 geogebra.org。零 npm 依赖,不需要 GeoGebra 桌面版。
两个工具
| 工具 | 作用 |
|---|---|
ggb_draw |
命令数组 → PNG / .ggb;out 写 .ggb 就产出可编辑构造文件 + 同名 PNG |
ggb_eval |
只执行命令并回读结果值,不出图(画图前自查数学用) |
例子:
ggb_draw(commands: ["f(x)=x^3-3x", "T=Tangent(1,f)", "A=(1,-2)"],
out: "C:\\Users\\<你>\\Desktop\\图.ggb")
为什么不用 getPNGBase64 + --dump-dom
任务书最初设想的路线在 GeoGebra 5.4.920 + 无头 Edge 上实测是坏的:
api.getPNGBase64(...)抛Unable to parse base64 string.api.getScreenshotBase64(cb)抛Class$S1671: Index: 22, Size: 7--screenshot+--virtual-time-budget:代数区文字照常渲染,canvas 内容永不提交,图里只有空坐标系(虚拟时间饿死了帧生产)
所以改成:无头 Edge 开 --remote-debugging-port,宿主用 CDP 实时等页面自报就绪,等两帧后
Page.captureScreenshot 按图形区矩形精确裁剪。.ggb 用 api.getBase64()(返回整份 ZIP 的 base64),
宿主解码、校验 PK 魔数后落盘。
质量门槛
contract.test.mjs:清单契约、两个工具注册、输出字段白名单与 schema 逐字段一致、
参数错误时字段不越界 —— 不联网、不起浏览器,几秒跑完e2e.test.mjs:真起无头 Edge,验数学判据(切线y = -2)、PNG 尺寸 = 宽高 × dpi/96、
.ggb是合法 ZIP 且含geogebra.xml、错误命令不留文件- CI 在
windows-latest上跑这两套(GitHub 的 Windows runner 自带 Edge)
已知限制
- 必须联网(首次要从 geogebra.org 拉约 30MB,20–40 秒;之后走缓存 2–4 秒)
- 只出 2D 图形视图,3D 未验证
.ggb目前只写不读:能产出给你打开,还不能把已有.ggb读进来继续加对象- 调用串行(同一时刻一个 Edge),并发调用自动排队
- 命令参数顺序按 GeoGebra 规矩:切线是
Tangent(横坐标, 函数)
许可
MIT。GeoGebra 是 International GeoGebra Institute 的商标,本插件只加载官方 Web 版 applet,
不打包、不分发 GeoGebra 的任何代码或资源。