☰
OpenCADStudio Python插件实战:用opencad-python模板为你的CAD添加自定义命令
2026/10/4 16:18:32 网站建设 项目流程

OpenCADStudio Python插件实战:用opencad-python模板为你的CAD添加自定义命令

【免费下载链接】OpenCADStudioA CAD application built with Rust — 2D/3D drawing, DWG/DXF support, and GPU-accelerated rendering项目地址: https://gitcode.com/gh_mirrors/op/OpenCADStudio

OpenCADStudio 是一款用 Rust 打造的开源 CAD 软件,支持 2D/3D 绘图、DWG/DXF 格式和 GPU 加速渲染。除了内置命令,它还自带了一个opencad-python 插件:内置 RustPython 解释器,让你在 CAD 里直接用 Python 脚本创建图形、批量编辑实体、驱动原生绘图命令,快速为自己的工作流添加自定义命令。🐍

1️⃣ opencad-python 是什么?

简单说,它是 OpenCADStudio 的第一方 Python 脚本插件,位于 plugins/opencad-python/。它的核心能力:

  • 内置 RustPython 解释器:无需安装 Python 环境,脚本直接在插件进程内运行;
  • ocs模块:一个预绑定的原生模块,直接对接 CAD 文档——读实体、写实体、管理图层、样式、块、布局;
  • 崩溃隔离:插件运行在独立进程中,Python 脚本出错也不会拖垮主编辑器;
  • 一条撤销步:整个脚本的所有修改合并为一次undo,回退非常省心。

插件的元信息定义在 plugins/opencad-python/plugin.toml,其中command_prefixes = ["PY_"]决定了所有 Python 相关命令都以PY_开头。

2️⃣ 快速上手:两个核心命令

插件提供两条自定义命令,覆盖"随手试一下"和"跑完整脚本"两种场景:

命令作用示例
PY_EVAL <表达式>求值单个 Python 表达式,把结果打印到命令行PY_EVAL 1 + 1
PY_RUN <脚本路径>运行一个.py脚本文件(支持多行语句)PY_RUN my_script.py

除了命令行输入,Ribbon 选项卡上还提供了两个图形按钮:Eval 1+1(一键冒烟测试)和Run Script…(打开原生文件选择器挑选.py文件执行)。按钮定义可见 plugins/opencad-python/src/lib.rs。

💡 小贴士:PY_EVAL只接受单个表达式,适合调试取值;完整脚本请用PY_RUN。

3️⃣ 你的第一个 Python 脚本

ocs模块在脚本中已自动绑定,不需要 import。最基础的用法——画一条直线和一个圆:

ocs.add_line(0, 0, 10, 10) # 添加一条 2D 直线,返回句柄 ocs.add_circle(5, 5, 3) # 添加一个圆,返回句柄 handles = ocs.selection() # 读取当前选中的实体句柄

读数据同样简单:ocs.get(handle)返回实体的{handle, kind, layer, point}信息,ocs.layers()可列出所有图层。完整的函数清单(40 多个读写函数)收录在 plugins/opencad-python/PLUGIN.md。

4️⃣ 进阶:文档模型与事务编辑

API v7 构建中,脚本还能拿到完整的文档模型(doc = ocs.active_document),像操作对象一样增删改查 43 种画布实体:

doc = ocs.active_document line = doc.create_entity("Line", start={"x": 0, "y": 0, "z": 0}, end={"x": 10, "y": 0, "z": 0}) with doc.transaction("Move line"): # 事务内修改,一次撤销即可还原 line.end = (15, 5, 0)

模型层还提供了一系列"绘制表"管理器,全部由宿主校验、一步撤销:

  • doc.layers:创建/改名/删除图层,设置颜色、线型、线宽;
  • doc.text_styles/doc.dim_styles:管理文字样式与标注样式;
  • doc.blocks:把现成实体打包成块并支持后续插入;
  • doc.linetypes/doc.layouts:自定义线型、创建图纸布局。

官方示例脚本演示了画矩形、三角形、圆弧,并用PCONSTRAINT/TCONSTRAINT施加真实持久的几何约束——拖一条线,与之平行的那条会跟着动。代码见 plugins/opencad-python/examples/example.py。

5️⃣ 用脚本驱动原生 CAD 命令

脚本不只是"画东西",还能调用 OpenCADStudio 自己的命令引擎,行为与在命令行敲入完全一致(同样的提示、几何和撤销):

  • doc.command("CIRCLE 5,5 3"):一行执行整条命令;
  • doc.start_command("OFFSET"):逐步应答交互式提示;
  • doc.modify:常用修改工具的纯函数式封装——offset、trim、extend、fillet、chamfer、move、rotate、scale、mirror、矩形/环形/路径阵列、explode、join等一应俱全。

这让"批量圆角""沿路径复制 100 个孔位"这类重复劳动,变成了十几行 Python 的活。

6️⃣ 安全沙箱:脚本碰不到你的文件系统

很多新手担心脚本安全。这个插件做了认真的安全审计:RustPython 以禁用标准库方式编译,os、socket、subprocess、open()等全部被屏蔽——脚本唯一能调用的就是ocs模块。即使脚本里写了import os,得到的也只是ModuleNotFoundError。审计细节记录在 plugins/opencad-python/PLUGIN.md。

7️⃣ 想自己扩展?从这里看起 📚

  • 插件设计与分期计划:plugins/opencad-python/ROADMAP.md
  • 完整命令与ocs模块参考:plugins/opencad-python/PLUGIN.md
  • 插件入口与 Ribbon 按钮源码:plugins/opencad-python/src/lib.rs
  • Python 文档模型实现:plugins/opencad-python/src/document_model.py
  • 从零开发自己的插件模板:docs/plugin-template/README.md
  • 插件宿主 API(Rust 侧):crates/ocs_plugin_api/
  • 插件架构总览:docs/plugin-architecture.md

总结

OpenCADStudio 的 opencad-python 插件把"脚本化 CAD"的门槛降到了极致:打开软件即可用PY_EVAL试算,PY_RUN跑脚本,几十行 Python 就能创建实体、编辑图层、批量修改几何,还自带沙箱保护和一步撤销。如果你有批量出图、自动标注或参数化建图的诉求,这套 Python 插件模板值得今天就试起来!

【免费下载链接】OpenCADStudioA CAD application built with Rust — 2D/3D drawing, DWG/DXF support, and GPU-accelerated rendering项目地址: https://gitcode.com/gh_mirrors/op/OpenCADStudio

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询