# @crystaldesign/planner-2d-core 中文文档

规范地址：https://npmcn.com/package/%40crystaldesign/planner-2d-core/

版本：26\.12\.4
npm 元数据更新时间：2026-10-23T14:54:47.114Z
中文译文更新时间：2026-11-11T02:57:54.963Z
软件包许可：COMMERCIAL

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40crystaldesign/planner-2d-core
原文对照：https://npmcn.com/package/%40crystaldesign/planner-2d-core/?lang=original

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：354 kB，80 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：1 个
- 首次发布：2026-08-24T12:41:32.438Z
- 最新版本发布：2026-10-23T14:54:46.935Z
- 近 30 天下载量：6198（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：134（近 12 个月 134 个）

## 中文简介

浏览器无2D平面图核心: 第SVG条解析,对接逻辑,对接转换数学和相撞几何.

## 安装

```sh
npm install @crystaldesign/planner-2d-core
```

也可以使用：`pnpm add @crystaldesign/planner-2d-core`、`yarn add @crystaldesign/planner-2d-core`、`bun add @crystaldesign/planner-2d-core`

## README

# @ crystaldesign/planner-2d-core (英语)

2D规划器的无浏览器核心: 第SVG条解析,对接逻辑,码头转换数学和相撞几何. 没有织物.js,没有引擎,没有目录 API——在浏览器和平地节点运行(后端服务,单位测试,代理测试床).

采掘概念和阶段计划: [docs/2d -- -- 规划人员 -- -- 重新工作/国家环境保护委员会](https://npmcn.com/package/docs/2d-planner-rework/CONCEPT.md)。 。 。 . 移植逻辑是一种行为诚实的提取 `web-planner-logic`是因为 `DockingPointHandler`无织物 `SVGUtils` 方法和对接数学 `DivaStandardPlanner.updateWorldPos` (P1阶段——网络规划员-记录员仍保留) 携带自己的副本,直到P2将其切换到这个包.

## 模块

| 模块 | 目录 |
| --- | --- |
| `svg/` | `getDockingPointLines`, (中文(简体) ), `getPolygonPoints`, (中文(简体) ), `getOltGeometry`编号 :`getOlfGeometry`, (中文(简体) ), `removeOlf`编号 :`removeMask`, (中文(简体) ), `getMinBorder` (基于DOM,节点安全), `pathBoundingBox` (完整的指令集 ML H V C S Q T A Z incl.). Bezier extrema and arcs) 红外线和红外线 |
| `stretch/` | `stretchArticleSvg` ——同步的SAH/SAV拉伸引擎,行为忠实地重写后遗症 `ccCheckStretchAreas` (OLT-then-OLF双通,圆形规则,全局尺度模式) 有轴取出元件/路径变压器和 a `warnings[]` 报告; 偏差: 未知路径命令存活, 不支持的拉伸区域被忽略, 视图框缩放被精确应用一次 |
| `docking/` | `DockingPoint`, (中文(简体) ), `DockingPointHandler` (补偿规则, `checkDPsDoMatch` 公共、狭义 `PlannerElement2D` 接口 |
| `transform/` | `computeDockedTransform` ——对接元素的纯世界变数 |
| `collision/` | `segmentsIntersect` (结构等同),多边形相交/闭合, `outlinesCollide` |
| `testbed/` | `DockingScene` + 键 `SimplePlannerElement` —— SVG 出入口、对接点/铺设/世界位置 |

## 节点使用

解析器需要一个DOM. 在浏览器中不需要什么; 在节点中, jsdom窗口被懒得装入回落 (单位:千美元)`configureDom(new JSDOM('').window)` 仅在使用自定义 DOM 时:

```ts
import { DockingScene } from '@crystaldesign/planner-2d-core';

const scene = new DockingScene();
const sofa = scene.addArticle(sofaSvg, { layer: 20 });
const extension = scene.addArticle(extensionSvg, { layer: 20 });
const result = scene.tryDock(extension, sofa); // -> { docked, dockingType, rotDeg, worldPosCorner }
```

日志默认为禁用;通过 `setPlanner2DLogger` (例如DivaUtils/diva-后端-commons日志).

## 测试

```
ctra test @crystaldesign/planner-2d-core
```

套房在下面运行 `testEnvironment: node` 带有明确配置的jsdom——在每次运行时证明无浏览器合同.

## 常见问题

### @crystaldesign/planner-2d-core 是什么？

浏览器无2D平面图核心: 第SVG条解析,对接逻辑,对接转换数学和相撞几何\.

### 如何安装 @crystaldesign/planner-2d-core？

在项目目录运行 npm install @crystaldesign/planner-2d-core，或使用 pnpm add / yarn add / bun add。

### @crystaldesign/planner-2d-core 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @crystaldesign/planner-2d-core 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @crystaldesign/planner-2d-core 可以商用吗？

@crystaldesign/planner-2d-core 使用 COMMERCIAL 许可。声明的许可为 COMMERCIAL，请阅读许可原文确认使用条件。以上为概括，不构成法律意见，请以许可原文为准。

### @crystaldesign/planner-2d-core 的下载量有多少？

根据 npm 官方下载统计，@crystaldesign/planner-2d-core 在 2026/10/11 – 2026/11/09 这 30 天内被下载 6,198 次，日均约 207 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @crystaldesign/planner-2d-core 还在维护吗？

最新版本 26\.12\.4 发布于 2026/10/23（18 天前）；至今共发布 134 个版本，其中过去 12 个月发布了 134 个；首次发布于 2026/08/24。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

