dsh-cad-plugin

August 26, 2026 · View on GitHub

English · 中文

Read-only DWG/DXF tools for DeepSeek Harness: inspect, extract and export CAD drawings — including SVG/PNG previews and DWG-to-DXF conversion — without ever modifying the input file.

License: MIT

  • Three native toolscad_inspect, cad_extract, cad_export.
  • Read-only by design — the source drawing is never edited; outputs go to a separate directory.
  • Resource-guarded — file size, entity, vertex, image and output-byte limits, plus worker-thread isolation and hard timeouts.
  • Round-trip validated — DXF output is reopened and checked for text, entity-type and layer mismatches.

Installation

From the dsh-market plugin market: open the market, find dsh-cad-plugin and click install. Or install by name from the command line:

dsh plugin --profile <your-profile> add dsh-cad-plugin

To install from a local checkout (development):

dsh plugin --profile dshcadtest add .
dsh --profile dshcadtest --dump-config

Usage

Once installed, the three CAD tools are available to the model. Put a .dwg or .dxf file in the profile's workspace (the session working directory) and ask about it in natural language — the model resolves the file path and calls the right tool for you:

"Inspect plan.dwg and summarize its layers and blocks." "Extract all texts from ./drawings/floorplan.dxf to CSV." "Render an SVG preview of plan.dwg (Model layout, white background)."

Paths may be absolute (C:\drawings\plan.dwg) or relative to the workspace (plan.dwg, ./plan.dwg).

Note on attaching files: the DeepSeek Harness Web composer's attachment button currently accepts images only. To work with a CAD file, reference it by path or filename as shown above rather than attaching it.

Tools

ToolPurpose
cad_inspectDrawing metadata, units, bounds, layers, blocks and entity statistics.
cad_extractExtract texts, layers, blocks or entities; optional JSON/CSV report.
cad_exportSVG or PNG preview, or DXF conversion.

All tools return JSON: a successful result, or { ok:false, error:{ code, message, details } }.

Parameters

  • cad_inspectpath (required).
  • cad_extractpath, section (texts|layers|blocks|entities, required); optional layers, entityTypes, limit, offset, search, handle, window, nearest, summary, saveAs (json|csv), outputName.
  • cad_exportpath, format (svg|png|dxf, required); optional layers, layout, width, height, background, outputName.

Examples

{"path":"./plan.dwg"}

cad_inspect returns version/unit objects, header and actual bounds, layer flags, model/paper-space and block statistics, resource counts and a bounded warning summary.

{"path":"./plan.dwg","section":"texts","limit":200,"saveAs":"csv","bom":true}

cad_extract supports texts, layers, blocks and entities; filters and limits are applied before records are returned. CSV cells beginning with =, +, - or @ are protected against formula injection.

{"path":"./plan.dwg","format":"svg","layout":"Model","background":"#ffffff"}

cad_export supports SVG, PNG and validated Unicode binary DXF. SVG/PNG results include output bytes, SHA-256, bounds, source/expanded/rendered/skipped counts, unsupported-type counts and preview completeness. DXF conversion reopens the output and compares text, entity types and layers; severe mismatches return CONVERSION_VALIDATION_FAILED.

Configuration

All values are optional; the defaults below apply unless overridden in the plugin config.

KeyDefaultMeaning
outputDir./cad-outputDirectory for exported reports and previews.
maxFileSizeMB50Maximum input file size.
maxEntities200000Maximum parsed entities.
maxExtractItems500Default record limit for extraction.
maxImageDimension8192Maximum PNG width/height in pixels.
maxImagePixels64000000Maximum total PNG pixels.
maxWarningSamples50Warning samples returned per run.
maxBlockDepth16Maximum nested-block expansion depth.
maxBlockInstances10000Maximum expanded block instances.
maxConcurrent2Maximum concurrent CAD jobs.
maxWorkerTimeMs30000Hard timeout for worker-isolated parse/render.
maxSvgBytes20000000Maximum SVG output bytes.
maxCsvBytes20000000Maximum CSV output bytes.
maxTextLength1000000Maximum single text length.
maxTotalVertices5000000Maximum total vertices.
maxEntityVertices500000Maximum vertices per entity.
allowedInputRoots(unset)Optional allow-list of input roots; when set, paths outside it return INPUT_OUTSIDE_ALLOWED_ROOTS.

Outputs are isolated from inputs, and existing files are never overwritten.

Error codes

Input and access — FILE_NOT_FOUND, PERMISSION_DENIED, NOT_A_FILE, READ_FAILED, UNSUPPORTED_FORMAT, INPUT_OUTSIDE_ALLOWED_ROOTS.

Limits — FILE_TOO_LARGE, ENTITY_LIMIT_EXCEEDED, TEXT_LIMIT_EXCEEDED, GEOMETRY_LIMIT_EXCEEDED, RENDER_LIMIT_EXCEEDED, OUTPUT_LIMIT_EXCEEDED, OUTPUT_EXISTS.

Arguments and parse — INVALID_ARGUMENT, LAYOUT_NOT_FOUND, PARSE_FAILED.

Conversion and export — CONVERSION_FAILED, CONVERSION_VALIDATION_FAILED, EXPORT_FAILED, OUTPUT_FAILED.

Runtime — CANCELLED, TIMEOUT.

Preview fidelity

The SVG/PNG preview renders lines, circles, arcs, ellipses, splines, hatches, polylines (including closed/bulge paths), text/MText/attributes, inserts with nested transforms and arrays, points, solids and leaders. Raster images, wipeouts, meshes and unsupported proxy entities are reported in unsupportedEntityTypes. Paper Space is selected with layout; Model is the default.

License

MIT