设置与要求
Python 版本
LinkCAD 11 随附嵌入式 Python 3.12 解释器。不需要单独安装 Python。
插件位置
将 Python 插件文件(.py)放入以下目录之一:
- 用户插件:
%APPDATA%\LinkCAD\plugins\ - 系统插件:
<LinkCAD install dir>\plugins\
LinkCAD 会在启动时扫描这些目录,并注册找到的所有插件。
访问控制台
从菜单打开交互式 Python 控制台:
- View → Python Console (Ctrl+Shift+P)
该控制台提供对 linkcad 包和当前已加载图纸的完整访问。
控制台和脚本编辑器都定义了一个名为 drawing 的全局变量,它始终指向 LinkCAD 中当前打开的图纸;未加载任何文件时为 None。该图纸由应用程序拥有——可以读取和修改,但绝不要对它调用 destroy()。
if drawing is not None: print(drawing.name, len(drawing.cells), "cells")你自己创建的图纸必须释放,否则解释器会在退出时崩溃。请将其用作上下文管理器:
from linkcad.v1.db import Drawing
with Drawing("scratch") as dwg: ...脚本编辑器
LinkCAD 包含内置脚本编辑器:
- View → Python Script Editor (Ctrl+Shift+E)
- 使用 F5 运行当前脚本
- 使用 Ctrl+↵ 运行所选文本
包结构
linkcad 和 linkcad.v1 只发布 API 的模块,除此之外别无他物:
| 模块 | 用途 |
|---|---|
linkcad.v1.plugin | 插件框架——装饰器、选项、基类 |
linkcad.v1.db | 图纸数据库——单元、图层、形状、事务 |
linkcad.v1.geom | 几何基元——点、向量、变换、边界 |
linkcad.v1.edit | 几何任务——合并、展平、对齐到网格、连接、分解 |
linkcad.v1.env | 选项与日志——持久设置、事件日志 |
linkcad.v1.conv | 文件格式转换——加载和保存图纸 |
linkcad.v1.libgraph | 布尔几何——并集、交集、差集 |
linkcad.v1.controller | 高层转换流程控制器 |
名称存在于定义它的模块里,因此请先取模块,再取模块中的名称:
from linkcad import db, geom # or: from linkcad.v1 import db, geomfrom linkcad.v1.db import Drawing, Cell, Layerfrom linkcad.v1.geom import Point, Vector顶层没有任何名称:from linkcad import Drawing 不可用,from linkcad.v1 import Drawing 同样不可用。
这是刻意为之,而非疏漏。各模块的内容会互相冲突。FillRule 在 db、edit 和 libgraph 中是三个不同的枚举;HolesMode 在 edit 和 libgraph 之间并不相同;CellContext 和 FormatInfo 各自指向两个互不相关的类型。扁平命名空间只能各挑一个——而且是按导入顺序挑选,这不是任何人能预测的规则。
模块列表由包目录发现,而不是写死在某处,因此永远不会落后。它取代的那份手工列表只列出十二个类,遗漏了 Arc、Ellipse、Donut、Nurbs、Text、Ref、Shape、Object、Property、全部枚举,以及整个 linkcad.geom。
API 版本管理
请优先使用 linkcad.v1.* 子模块。每个子模块都会完整镜像对应顶层模块的公开命名空间,因此对象完全相同;使用 v1 可将脚本固定到稳定的 API 表面,使其在 LinkCAD Python API 演进后仍能继续工作。
import linkcad
print(linkcad.API_VERSION) # "v1"print(linkcad.__version__) # e.g. "11.0.27" — read from the loaded LinkCAD build__version__ 不是包内的字面量:它来自 linkcad.env.program_version(),因此始终是实际加载的二进制文件的版本。
编辑器支持
该包附带类型存根,并以 py.typed(PEP 561)标记,因此编辑器或类型检查器无需你做任何配置即可理解 linkcad.*:
cell.和drawing.的补全,给出真实的成员列表- 签名提示——
cell.add_polygon(layer, vertices)会显示两个参数及其类型 - 把
cell.shapes()当作方法调用、在应传Layer处传了str、以及未处理drawing.cell(name)可能返回的None,都会出现红色波浪线
存根在构建时由已构建的模块生成,而不是提交到仓库,因此不会与它们所描述的绑定产生偏差。只要把编辑器指向 LinkCAD 附带的解释器,或把其 site-packages 目录加入项目路径,以上功能都无需额外设置即可使用。
安装其他包
你可以在 LinkCAD Python 环境中使用 pip 安装其他 Python 包:
import subprocesssubprocess.check_call(["pip", "install", "numpy"])