> **本文回答**：`vjcad` 包对外导出的常用顶层符号包括：核心运行时（`MainView / initCadContainer / Engine / writeMessage / message / applyThemeColors`）、命令系统（`CommandDefinition / CommandRegistry / CommandOptions`）、输入系统（`InputStatusEnum / PointInputOptions / SelectionInputOptions / SelectionSetInputOptions / RealInputOptions / IntegerInputOptions / StringInputOptions / KeywordInputOptions`）、实体类（`EntityBase / LineEnt / CircleEnt / ArcEnt / PolylineEnt / TextEnt / MTextEnt / TextStyle / InsertEnt / EllipseEnt / SplineEnt / DotEnt / RayEnt / XLineEnt / HatchEnt / SolidEnt / ImageRefEnt / DimensionBase / MLeaderEnt / CustomEntityBase / BulgePoint / BulgePoints / Point2D`）、几何工具（`GeometryCalculator / distance / formatNumberEx / getAngleBetweenPoints / rotatePointAroundCenter / normalizeAngleAlt / polarToCartesian / ANGLE_90 / ANGLE_180 / ANGLE_270`）、撤销（`startUndoMark / endUndoMark`）、文件（`DrawingManagerService`）、地图整合（`CadEventManager / CadEvents`）、UI 模块（`RibbonBar / showConfirm / showInputDialog / showSelectDialog / NumberInputComponent / ButtonEle / LinetypeViewerDialog / ModalDialogBase / ModelessPanelBase / PreviewView / SidebarPanelManager / createFloatingToolbar / IconRegistry / setLocale / getLocale / initLocale / registerMessages / t`），等等。

## 一、按用法分组（最小列表，仅列文档/示例已确认存在的）

### 引擎入口

| 符号 | 来源 |
|---|---|
| `MainView`, `initCadContainer` | `vjcad/doc/guide/quick-start.md`、`vjcad/example/basic/01init.js` |
| `Engine` | `vjcad/doc/command/api-reference.md`、`vjcad/example/basic/02onload.js` |
| `writeMessage` | `vjcad/doc/command/api-reference.md` |
| `message` | `vjcad/doc/ui/controls.md`、`vjcad/example/basic/02onload.js` |
| `applyThemeColors` | `vjcad/example/ui/07theme.js`（见 [ui/theme-statusbar](../ui/theme-statusbar.md)；⚠️ 不是 `setTheme`，1.0.16 未导出该名） |

### 命令 / 输入

| 符号 | 来源 |
|---|---|
| `CommandDefinition`, `CommandRegistry`, `CommandOptions` | `vjcad/doc/command/api-reference.md`、`vjcad/example/command/02register.js` |
| `InputStatusEnum` | `vjcad/doc/command/api-reference.md` |
| `PointInputOptions`, `SelectionInputOptions`, `SelectionSetInputOptions`, `RealInputOptions`, `IntegerInputOptions`, `StringInputOptions`, `KeywordInputOptions` | `vjcad/doc/command/api-reference.md`、`vjcad/example/input/*.js` |
| `getPoint`, `getSelections`, `getEntity` | `vjcad/doc/command/api-reference.md`（也可走 `Engine.getPoint` 等） |
| `ssSetFirst` | `vjcad/doc/command/api-reference.md` |

### 实体

| 符号 | 来源 |
|---|---|
| `EntityBase` | `vjcad/doc/guide/architecture.md` |
| `LineEnt`, `CircleEnt`, `ArcEnt`, `PolylineEnt`, `BulgePoint`, `BulgePoints` | `vjcad/doc/guide/quick-start.md`、`vjcad/example/entity/all/01entities.js` |
| `TextEnt`, `MTextEnt`, `TextStyle` | `vjcad/example/entity/text/04fonts.js` |
| `InsertEnt`, `EllipseEnt`, `SplineEnt`, `DotEnt`, `RayEnt`, `XLineEnt`, `HatchEnt`, `SolidEnt`, `ImageRefEnt`, `DimensionBase` | `vjcad/doc/command/api-reference.md`（实体类型表）；vjcad@1.0.16 导出 |
| ⚠️ `ImageEnt` / `DimensionEnt` **不导出**：实体类型表里的 `ImageEnt` 真实导出名是 `ImageRefEnt`；标注基类是 `DimensionBase` | 包导出|
| `MLeaderEnt`, `CustomEntityBase` | `vjcad/doc/guide/architecture.md`、对应 entity 子目录示例 |

### 几何

| 符号 | 来源 |
|---|---|
| `Point2D` | `vjcad/doc/command/api-reference.md` |
| `GeometryCalculator` | 同上 |
| `distance`, `formatNumberEx`, `getAngleBetweenPoints`, `rotatePointAroundCenter`, `normalizeAngleAlt`, `polarToCartesian` | 同上 |
| `ANGLE_90`, `ANGLE_180`, `ANGLE_270` | 同上 |

### 撤销 / 事件

| 符号 | 来源 |
|---|---|
| `startUndoMark`, `endUndoMark` | `vjcad/doc/command/api-reference.md`、`vjcad/doc/ui/controls.md` |
| `CadEventManager`, `CadEvents` | `vjcad/example/basic/03viewermode.js`、`vjcad/doc/event/event-usage.md` |

### 文件 / 服务

| 符号 | 来源 |
|---|---|
| `DrawingManagerService` | `vjcad/example/file/01openfromserver.js`、`vjcad/example/basic/04viewerremote.js` |

### UI

| 符号 | 来源 |
|---|---|
| `RibbonBar`, `showConfirm`, `showInputDialog`, `showSelectDialog` | `vjcad/example/ui/01ribbon.js`、`vjcad/example/ui/04yesnodialog.js`、`vjcad/example/ui/05inputdialog.js`（⚠️ 导出名是 `RibbonBar`，`Ribbon` 未导出） |
| `ModalDialogBase`, `ModelessPanelBase`, `PreviewView` | `vjcad/example/ui/12modaldialogbase.js`、`vjcad/example/ui/13modelesspanelbase.js`、`vjcad/example/ui/03previewview.js` |
| `NumberInputComponent`, `ButtonEle`, `LinetypeViewerDialog` | `vjcad/doc/ui/controls.md`（⚠️ 导出名是 `LinetypeViewerDialog`，`LinetypePreview` 未导出） |
| `SidebarPanelManager` | `vjcad/example/ui/14sidebarpanel.js` |
| `createFloatingToolbar` | `vjcad/example/ui/15floatingtoolbar.js`（⚠️ 导出名是 `createFloatingToolbar`，`FloatingToolbar` 未导出） |
| `IconRegistry` | `vjcad/doc/ui/icons.md` |
| `LitElement, html, css` | `vjcad/doc/ui/controls.md`（vjcad 重新导出 lit） |

### i18n

| 符号 | 来源 |
|---|---|
| `initLocale`, `setLocale`, `getLocale`, `registerMessages`, `t` | `vjcad/doc/guide/quick-start.md`、`vjcad/example/basic/06locale.js` |

## 二、动态查询

实际包出口随版本演进，最稳的方法是在 `node_modules/vjcad/dist` 里看 `*.d.ts`、或在浏览器里 `console.log(Object.keys(require('vjcad')))`；本 skill 不依赖某次具体打包的导出表。

## 反例

- 假定 `vjcad` 导出了 `Service / Map`：那是 vjmap 的 API，不是 vjcad。
- 大量 `import` 时把 `lit` 单独装包：vjcad 已 re-export `LitElement / html / css`，直接从 `vjcad` 引入即可（见 `vjcad/doc/ui/controls.md` 的示例）。

## 参考（官方文档 MCP）

- 文档：`vjcad/doc/command/api-reference.md`、`vjcad/doc/guide/architecture.md`、`vjcad/doc/guide/quick-start.md`、`vjcad/doc/ui/controls.md`、`vjcad/doc/event/event-usage.md`
- 示例：见各行单独引用
