@mlightcad/cad-svg-plugin
v1.5.5
Published
SVG **export** plugin and rendering engine for [`@mlightcad/cad-simple-viewer`](../cad-simple-viewer). Registers one system command:
Readme
@mlightcad/cad-svg-plugin
SVG export plugin and rendering engine for @mlightcad/cad-simple-viewer. Registers one system command:
| Command | Description |
|---------|-------------|
| csvg | Export the current drawing to SVG |
The plugin is designed for lazy loading so the SVG renderer bundle is only downloaded when a user runs csvg.
Key features
- Vector SVG export — renders model-space entities to SVG via
AcSvgRenderer - Plugin API — implements
AcApPlugin; register once withregisterLazySvgPlugin - Reusable renderer —
AcSvgRendereris also used by@mlightcad/cad-pdf-pluginfor PDF export - Framework-agnostic — no Vue/React dependency; works anywhere
cad-simple-viewerruns
Installation
pnpm add @mlightcad/cad-svg-pluginPeer dependencies:
@mlightcad/cad-simple-viewer@mlightcad/data-model@mlightcad/mtext-parser
Build
pnpm --filter @mlightcad/cad-svg-plugin buildUsage
Lazy registration (recommended)
Register the plugin with the document manager's plugin manager. The module chunk loads on first use of csvg:
import { AcApDocManager } from '@mlightcad/cad-simple-viewer'
import { registerLazySvgPlugin } from '@mlightcad/cad-svg-plugin'
registerLazySvgPlugin(AcApDocManager.instance.pluginManager)Equivalent manual registration:
import {
createSvgPlugin,
SVG_PLUGIN_NAME,
SVG_PLUGIN_TRIGGERS
} from '@mlightcad/cad-svg-plugin'
AcApDocManager.instance.pluginManager.registerLazyPlugin({
name: SVG_PLUGIN_NAME,
triggers: [...SVG_PLUGIN_TRIGGERS],
loader: createSvgPlugin
})Eager loading
import { AcApSvgPlugin } from '@mlightcad/cad-svg-plugin'
await AcApDocManager.instance.pluginManager.loadPlugin(new AcApSvgPlugin())Using the renderer directly
import { AcSvgRenderer } from '@mlightcad/cad-svg-plugin'
AcSvgRenderer.prepareExport()
const renderer = new AcSvgRenderer()
// ... configure and draw entities ...
const svg = await renderer.exportAsync()Public API
| Export | Description |
|--------|-------------|
| registerLazySvgPlugin | One-line lazy registration helper |
| createSvgPlugin | Async factory used by lazy loader |
| SVG_PLUGIN_NAME, SVG_PLUGIN_TRIGGERS | Plugin metadata constants |
| AcApSvgPlugin | AcApPlugin implementation |
| AcApConvertToSvgCmd | csvg command class |
| AcApSvgConvertor | SVG export workflow |
| AcSvgRenderer | Core SVG rendering engine |
Package layout
| Path | Role |
|------|------|
| src/registerLazySvgPlugin.ts | Lazy plugin registration API |
| src/AcApSvgPlugin.ts | Plugin lifecycle (onLoad / onUnload) |
| src/AcApConvertToSvgCmd.ts | csvg command |
| src/AcApSvgConvertor.ts | Export orchestration |
| src/AcSvgRenderer.ts | Main SVG renderer implementation |
| src/AcSvg*.ts | Entity-specific SVG renderers |
Role in MLightCAD
This package extends cad-simple-viewer with optional SVG export. It keeps the SVG renderer out of the core viewer bundle through lazy loading, while still exposing AcSvgRenderer for other packages such as cad-pdf-plugin.
