SpiralCad Manual

Official manufacturer documentation · version 2026.16 · Spiralway SpA

Getting started

SpiralCad opens DWG drawings (R13, R14, R2000, R2004, R2010, R2013 and R2018) and ASCII DXF. Three ways to load a drawing:

The status bar shows the detected format and version, the total object count and the percentage of decoded geometry.

Measure, draw & edit

ToolUse
📏 MeasureClick two points: true distance in drawing units. The cursor snaps to nearby vertices and centers.
Line / Polyline / Circle / TextMarkup drawing over the plan. The polyline closes on double-click; text prompts for its content when placed.
SelectClick an object: move it (drag), or delete it with Del.
↶ UndoCtrl+Z reverts the last action (draw, delete or move).

Command console

The command line lives at the bottom of the viewer (the ; key focuses it). It accepts commands and SpiralScript (anything that starts with (). History with /.

CommandWhat it does
LINE 0,0 100,50 @0,40Lines between points. x,y absolute; @dx,dy relative to the previous point.
CIRCLE 50,50 25Circle: center and radius.
PLINE 0,0 40,0 40,30 CPolyline; a trailing C closes it.
TEXT 10,20 2.5 REVIEWEDText: point, height and content.
CAPA REVISION · COLOR 1Current layer and color for what you draw next (the layer is created in the DWG if missing).
ALIAS L LINEYour own aliases, persisted in ~/.spiralcad/spiralcad.pgp (acad.pgp syntax — your AutoCAD file copies over as-is).
LOTEOSubdivides the parcel (selected closed polyline) into lots by target area with minimum frontage — with an optional internal street.
ESTILOLists and edits the drawing's TEXT styles (width factor, fixed height, oblique, font) with native DWG write-back.
ACOTESTILOLists and edits the drawing's DIMENSION styles (DIMXXX=value fields: DIMSCALE, DIMASZ, DIMTXT, DIMDEC…).
XREFAttaches an external reference to the drawing (the resulting DWG downloads).
AYUDA · LIMPIARCommand summary · clears the output.
NAMEA bare name runs the routine (defun c:name ...) if defined.

Save DWG & export

Sample drawings and uploaded files are processed by content, not by extension: a .dxf renamed .dwg (or vice versa) is detected all the same.

Works modules

Civil road works (the complete municipal flow)

Customization

The Workshop: the parametric part

The Workshop (Taller button in the toolbar, or /taller) is the MCAD bench: it designs 3D parts to print, cut and machine, with its own B-rep kernel (OCCT) — exact booleans, fillets and chamfers, not breakable meshes. The part is not drawn: it is built as an operation tree (box → hole → fillet → polar pattern…) that stays editable step by step: change the radius of hole 4 and the whole part regenerates, with volume and watertight solid verified at every step.

Part copilot

The Workshop chat edits the part's HISTORY in natural language: «hazle 2 mm más gruesa la base», «ponle 6 pernos en vez de 4», «filete en la cara que marqué». Click a face in the 3D view to hand it over as context. The copilot also sizes: ask for «una caja para un ESP32» or «un soporte que aguante 500 N» and it proposes a verified part, not just a drawn one. Replies render with formatting (bold, code, lists) and the history persists across sessions. Local LLM (Ollama): nothing leaves the machine.

FEA verification

Fabrication: from part to machine

OutputWhat you get
3D printingSTL and own 3MF with suggested print orientation (minimizes overhang) and printability (bed, overhang, supports). No own slicer, on purpose: the 3MF opens straight in Bambu Studio or OrcaSlicer.
Multi-object bedFrom an assembly, ONE 3MF with each part named, in its suggested orientation and laid out in a row on the bed — never in the assembled pose.
CAM 2.5DDrilling, contour and pocket with tabs on the final pass, swappable posts and G-code verified with an independent parser and geometric backplot.
Sheet metalFold/unfold with real BA = θ·(r + K·t); the DXF/DWG carries a separate PLIEGUE layer for the brake.
Laser / cuttingTangential lead-in on contours and DXF/SVG cut sheets with exact dimensions (the kernel is B-rep: dimensions are for machining, not approximating).
Topology (SIMP)Topology optimization via invariants: the classic MBB beam drops −79.7% compliance; the result is sewn back into an editable solid and returns to the tree.
Cutting platePart nesting on plate with measured yield (62.8% vs 17.5% freehand on the test bench).

Assemblies with mates

Import & GVCS Library

The Workshop is part of SpiralCad Suite (SpiralFusion in the desktop installer): it runs 100% local — neither the part nor the copilot leave the machine.

SpiralScript reference

SpiralScript is SpiralCad's routine engine: a LISP-style language with the CAD industry's standard syntax, meant to automate repetitive drawing. It runs in a server sandbox: no file or network access, with an operation limit.

Semantics worth knowing (faithful to classic CAD LISP):

Special forms

FormDescription
(setq var value ...)Assigns (variable/value pairs).
(defun name (args / locals) ...)Defines a function. c:name makes it a console command.
(lambda (args) ...)Anonymous function.
(if c then [else]) · (cond (c ...) ...)Conditionals.
(while c ...) · (repeat n ...) · (foreach v list ...)Iteration.
(and ...) · (or ...) · (progn ...) · (quote x) / 'xLogic, sequencing, quoting.

Functions

CategoryFunctions
Arithmetic+ - * / rem 1+ 1- abs min max sqrt expt exp log sin cos atan float fix
Comparison & predicates= /= < <= > >= eq equal not null atom listp numberp zerop minusp
Listslist cons car cdr nth length last reverse append member assoc subst mapcar apply
Stringsstrcat strlen substr strcase itoa atoi atof rtos chr ascii (substr is 1-based)
Geometry(polar pt angle dist) · (distance p1 p2) · (angle p1 p2) — angles in radians, pi available
Text outputprinc prin1 print terpri (shows in the console)
Drawing variables(setvar "CLAYER" "REVISION") · (setvar "CECOLOR" 1) · getvar

CAD bridge: entmake & command

entmake creates an entity from an association list with the standard DXF group codes:

EntitySupported codes
LINE(10 x y) start · (11 x y) end
CIRCLE(10 x y) center · (40 . radius)
ARCcenter, radius, (50 . a0) and (51 . a1) in radians
TEXT(10 x y) · (40 . height) · (1 . "text")
LWPOLYLINE(10 x y) repeated · (70 . 1) = closed
Common(8 . "LAYER") · (62 . aci_color)

command accepts the classic simplified form: (command "line" '(0 0) '(100 0) "") · (command "circle" '(50 50) 25) · (command "pline" '(0 0) '(10 0) '(10 8) "c") · (command "text" '(5 5) 2.5 "HELLO").

Complete examples

; sheet border as your own command
(defun c:marco ()
  (command "pline" '(0 0) '(297 0) '(297 210) '(0 210) "c"))

; grid of vertical axes with labels
(defun c:ejes (/ i)
  (setq i 0)
  (repeat 5
    (entmake (list '(0 . "LINE") (list 10 (* i 600) 0) (list 11 (* i 600) 3000)))
    (entmake (list '(0 . "TEXT") (list 10 (+ (* i 600) 50) 3050)
                   '(40 . 120.0) (cons 1 (strcat "AXIS " (itoa (1+ i))))))
    (setq i (1+ i))))

; golden spiral (the brand mark): 299 computed segments
(defun c:espiral (/ b i ang r p q)
  (setq b 0.3063489 i 0 q nil)
  (repeat 300
    (setq ang (* i 0.06)
          r   (* 1.5 (exp (* b ang)))
          p   (list (* r (cos ang)) (* r (sin ang))))
    (if q (entmake (list '(0 . "LINE") (cons 10 q) (cons 11 p) '(62 . 2))))
    (setq q p i (1+ i))))

Define the routine by pasting it into the console (once per session), then run it by typing its name: MARCO, EJES, ESPIRAL.

Sandbox limits

Official manual issued by the manufacturer — Spiralway SpA, RUT 77.221.577-0, Baquedano 50, Antofagasta, Chile · contacto@spiralway.cl · © 2026. SpiralCad is a trademark of Spiralway SpA.