| Left click | Select an object — stays instant even on very large scenes |
| Left click + drag | Move selected object on the XZ plane. On multi-selection: drags the entire group — relative positions preserved, single Undo step. |
| Shift + click | Multi-select (N objects) — for CSG, alignment |
| Left drag on empty zone | Box-select — draw a selection rectangle. Shift = add to selection. |
| Alt + left drag | Pan full 3D — drag horizontal → left/right (XZ camera-relative), drag vertical → up/down (Y) |
| Alt + right drag | Pan the grid + all objects — useful for large scenes |
| Right click + drag | Orbit camera around the scene |
| Middle click + drag | Pan camera |
| Scroll wheel | Zoom in / out |
| Single click on object | Select + show cotation mode — XYZ dimension handles, resize by dragging corners or top handle |
| Double-click on object | Switch to rotation mode — 3 Cura-style rings (X/Y/Z). Drag a ring to rotate. Single click returns to cotation mode. |
| Double-click on .gen object | Reopens the generator dialog pre-filled with current parameters — live edit in-place (Cubic/Cylind/Tore/Pipe/Gear/Screw/Nut/Sketch/CircularText) |
| Ctrl + Z | Undo — up to 200 levels |
| Ctrl + Y | Redo |
| Ctrl + D | Duplicate selection |
| Del / Backspace | Delete selection |
| Arrows ↑↓←→ | Move object 1 mm (XZ plane, camera-relative) |
| Alt + ↑ / ↓ | Move object up / down (Y axis) |
| Ctrl + A | Select all objects |
| Ctrl + C / Ctrl + V | Copy / Paste (offset +10mm X/Z) — geometry + transforms preserved |
| L | Show / hide 3D alignment handles |
| S | Enable / disable magnetic snap (0.001 / 0.01 / 0.1 / 0.5 / 1 mm) — toolbar buttons to set step |
| N | Toggle light / dark theme |
| 1 · 2 · 3 · 4 · 5 | Camera views: Perspective · Top · Front · Right · Reset |
| Esc | Deselect all / Cancel box-select / Close dialogs |
Every primitive is closed and watertight — ready to slice, ready for boolean operations, no repair step needed.
| Standard primitives (toolbox) | |
| Cube | Box 20×20×20 mm — 6 flat faces |
| Sphere ◎ | Configurable resolution 8–256 segs (slider in Properties) · export at 2× resolution, capped 512 · smooth shading built-in |
| Half-sphere ◑ | Flat-capped hemisphere — same slider as sphere |
| Cylinder | 64 segs display / 128 segs export |
| Cone | 64 segs / 128 export |
| Pyramid ▲ | 4-sided pyramid — square base + triangular faces |
| RoofArc ⌒ | Half-cylinder / vaulted roof — length W, radius H, closed caps |
| Tube ⊙ | Hollow cylinder — outer radius Ro, inner radius Ri, height H. Parameters editable in Properties. |
| Lathe ⌀ | Surface of revolution — 64 segs / 128 export · profile defined by spline points |
| 3D Text ✏ | Extruded text — 6 fonts (Helvetiker R/B, Optimer R/B, Gentilis R/B) · configurable depth, bevel |
| Wedge ▷ | Right-angle bevel — 20mm base, triangular cross-section |
| Generator primitives (.gen — parametric, double-click to edit) | |
| ⌾ Cylind.Gen | Truncated cylinder with double chamfer — Rt, Rb, H, top/bottom chamfer 1–48 segs, N facets 12–128 |
| ✦☐ Cubic.Gen | Chamfered / rounded cube — W×H×D, chamfer radius, 1–48 segments |
| ◎ Tore.Gen | Ultra-HD torus — ring R, tube r, N ring facets 12–256, M tube facets 6–128 — seamless |
| ◑ ArcSphere.Gen | Spherical sector — full angle phi 1–360°, capped, correct shading at both poles |
| ⌀ RevSolid.Gen | Revolved solid — arc angle 1–360°. Closed caps when angle < 360°. |
| 🟰 Pipe.Gen | Hollow pipe — straight segments + tangent bends (radius R_bend, real tube-bending). No section twist along the path. Outer wall + inner wall + sealed caps. |
| ⚙ Gear.Gen | ISO involute gears (20° pressure angle) — module 0.5–8 mm, straight / helical / herringbone. V-pulley and timing pulley. Configurable teeth, shaft bore. |
| 🔩 Screw.Gen | Parametric screw ISO 68-1 (M2–M24) / ASME UNC·UNF — head Hex/CHC/None · Coarse/Fine/Custom/Plain · lead-in and lead-out · 32–96 radial facets. Double-click to re-edit. |
| ⬡ Nut.Gen | Parametric nut ISO 4032/4033 · ASME B18.2.2 — M2–M24 / imperial UNC·UNF · ISO style 4032 / ISO 4033 Tall / Custom · optional 30° chamfer. Double-click to re-edit. |
| ✏ Sketch.Gen | 2D fullscreen sketcher — lines, circles, rectangles, arcs, Bézier. Extrude a closed contour into a solid. Trim tool, magnetic snap. Double-click to re-edit. |
| ◠ CircularText.Gen | Curved 3D text on arc — arch (∩) or smile (∪) · arc angle 0–340° · font size, depth, spacing · 6 fonts. Double-click to re-edit. |
| STL | Binary + ASCII — automatic centering, placed on floor |
| OBJ | Wavefront with vertex normals — compatible Blender, FreeCAD |
| 3MF | Bambu Studio / PrusaSlicer format — per-object colors, multi-body |
| GLB | Binary glTF 2.0 — multi-part assembly and colors preserved, Draco-compressed files supported |
| PLY | Stanford polygon format — point clouds, scanned meshes |
| STEP | AP203 · AP214 · AP242 — see the dedicated section below. Also accepts .stpz · .stpx · .stpxml · .p21 |
STEP is the exchange format of professional CAD. NASSCAD reads the real B-Rep geometry, not a mesh approximation — part names, assembly structure and colors come through as the author saved them.
| What comes in | |
| Protocols | AP203, AP214, AP242 — files from Fusion 360, SolidWorks, Inventor, CATIA, NX, Creo, FreeCAD, Onshape |
| Assemblies | Every part arrives as its own object, at its real position, under its real name. A 1200-part assembly gives 1200 named objects in the list. |
| 🎨 Colors per part | The color the designer assigned to each part is applied on import. |
| 🎨 Colors per face | A single part can carry several colors — a painted body with a bare machined face, a label on a housing, a two-tone casing. Each face keeps its own color. Requires the NASSCAD Engine companion (see Speed below): the in-browser engine does not expose per-face colors. |
| Which color wins | When a file gives a part one color and its faces another, the faces win — this is the STEP standard's own rule, and it is what FreeCAD, Fusion 360 and CAD Assistant do. Some exporters leave a stale color on the part itself; NASSCAD will not show it. |
| Color accuracy | Colors are displayed exactly as written in the file. Open the same file in FreeCAD or Fusion side by side — the shades match. |
| Units | The file's own unit is read and converted — millimetres, inches, metres. |
| Speed | |
| ⚡ NASSCAD Engine | The NASSCAD Engine companion reads STEP natively and in parallel on your machine — several times faster, and it is what delivers per-face colors and large assemblies. Detected automatically at import; nothing to configure. Recommended for any real CAD work. |
| In-browser fallback | Without the companion, STEP still opens with no install and no upload — but with two real limits, measured, not assumed: colors come per part only (the in-browser engine returns no per-face color at all), and large assemblies may produce no geometry. Files up to roughly 20 MB are comfortable; well beyond that, run the companion. |
| Instant re-import | A file you have already imported comes back immediately from the browser cache (up to 400 MB, oldest entries dropped first). Useful when iterating on a scene. |
| Very large files | With the companion, hundreds of MB are handled — the import is split and streamed, with live progress. A 350 MB assembly is normal work, not an edge case. In the browser alone, that class of file is out of reach. |
| Geometry quality | |
| Automatic repair | Surfaces are stitched with progressively looser tolerance, small gaps are closed, and each body is checked for watertightness. |
| ⚠ Non-manifold notice | Bodies that cannot be made watertight are reported after import (e.g. 2 non-manifold). They display normally — only boolean operations on them are restricted until repaired. |
| Smooth shading | Curved surfaces are smoothed while sharp edges stay sharp — no faceted look, no rounded-off corners. |
Modern AP242 files can carry the drawing information inside the 3D model: dimensions, datums and geometric tolerances. When a file has it, NASSCAD reads it and shows it — no 2D drawing needed.
| Dimensions | Linear, angular and diameter dimensions with their values and units |
| Datums | Reference frames (A, B, C…) identified and listed |
| Geometric tolerances | Flatness, perpendicularity, position, cylindricity… — the tolerance type is decoded and named |
| Graphical annotations | Feature control frames and notes drawn in 3D, placed on the part where the author put them |
| PMI panel | Opens automatically when a file carries PMI — a readable list beside the model. Overlays follow their part when you move it. |
| ⚠ Limits | PMI only appears if the file actually contains it — most AP203/AP214 files do not. On some files the numeric value of a geometric tolerance is not exposed and only its type is shown. Always check against the source drawing before manufacturing. |
| ∪ Union | Merges N objects into one solid. Shift+click to select N objects. |
| − Subtract | Subtracts holes from solids. Automatic hole-mode detection. |
| ∩ Intersect | Keeps only the volume common to all selected objects. |
| Hole Mode | Marks an object as a hole (transparent red). Union with a solid = automatic subtraction. |
| Progressive CSG | A coarse preview appears immediately, then the full-quality result replaces it silently in the background. The badge ⚡ Refining is shown in between. Sources look hidden during the first pass — that is normal. |
| Fast path | Objects that do not overlap are merged directly, without the boolean engine. Measured: 200 spheres (19M vertices) in ~2.6s. |
| 🌳 Tree | Displays the CSG construction tree — Union(A, Subtract(B, C))… |
| ↺ Re-run | Non-destructive — rebuilds the sources and replays the operation. Survives Save/Load and Undo/Redo. |
| ↺↺ Deep Re-run | Replays the whole tree from the leaves in one go. Shown only when the tree is at least 2 levels deep. Change a source, press Deep, everything downstream follows. |
| CSG⚡ quality | Buttons 32 / 64 / 128 in the menubar — how finely curves are resolved during booleans. Default 128. Does not change the display or the export quality. |
| Workers | ×4 / ×6 / ×8 in the menubar — how much work is dispatched in parallel. Applied immediately, no reload. |
Toolbar button ⌐. Rounds or bevels the edges of a solid — the real operation a mechanical CAD package performs, including the blended corners where three edges meet.
| ◉ Round / ✦ Chamfer | Rounded fillet or straight bevel — switch at any time before applying |
| Radius R | 0.1 – 50 mm, slider or numeric field |
| Segments | 8 / 16 / 32 / 48 / 96 / 192 — smoothness of the rounded surface. 32 is a good default. |
| ⬡ All edges | Fillets every edge of the object in one operation |
| 🖱 Pick edges | Click an edge to select it — hold and drag across several edges to paint-select them. Click again to deselect. Then ⬡ Selected fillets only those; the rest stay sharp. |
| ⬆ Top / ⬇ Bottom | One click adds every edge of the topmost or bottommost flat face — the two most common cases |
| Edge colors | ■ convex · ■ concave · ■ hovered · ■ picked |
| ⚠ If it fails | A radius larger than the local geometry allows will be refused — the operation is rejected rather than producing a broken solid. Reduce R, or pick fewer edges at once. |
Fullscreen 2D overlay. Draw a closed contour → Extrude → solid in the scene. Double-click a Sketch.Gen object to re-edit it in place.
| Drawing tools | |
| ⟡ Select (S) | Pick and move entities. Click background to deselect. |
| ╱ Line (L) | Click start, click end. Chain lines to form a polyline. |
| ▭ Rectangle (R) | Click two corners — generates 4 connected segments. |
| ○ Circle (C) | Click center, drag to set radius. |
| ◜ Arc (A) | 3-point arc: start → end → through-point. |
| ∿ Bézier (B) | Cubic Bézier curve. Click start, drag controls. |
| Trim | Click a segment to trim it at its intersections. |
| Extrusion | |
| H (mm) | Extrusion height — editable numeric field in top bar. |
| ⤴ Extrude → Scene | Closed contour → watertight solid added to the 3D scene. Multi-body supported. |
| UI & shortcuts | |
| F | Fit view to all entities |
| G | Toggle grid |
| T | Toggle light / dark theme inside sketcher |
| Del | Delete selected entity |
| Esc / ✕ Close | Exit sketcher and return to 3D view |
| Shape | ∩ arch (top arc) or ∪ smile (bottom arc) |
| Curve angle | 0–340° arc sweep. Negative values = smile. 0 = straight text. |
| Parameters | Font size, extrusion depth, letter spacing, bevel — 6 fonts |
| Double-click | Re-opens the dialog pre-filled to edit text or curve live |
| Rotation mode | Double-click an object — 3 Cura-style rings: ■ Y (blue) · ■ X (green) · ■ Z (red). Drag a ring to rotate. Snap 15°. Single click exits to cotation mode. |
| Ring size | Constant on screen — the rings keep the same apparent size whatever the zoom, exactly like Cura Slicer. |
| Angle display | Live angle shown during the drag. |
| Activate | Single-click an object to show 6 handles. Drag a handle to resize live. Undo-safe. |
| 4 corner handles | XZ plane resize — change Width and Depth together, keeping the opposite corner anchored. |
| Top square ■ | Y height handle — drag up/down to change object height. |
| Arrow ↑ (green) | Y lift/lower — moves object vertically. Floor-clamped at Y=0 (no underground). |
| ↧ Drop to ground | Toolbar button — snaps selection bottom face to Y=0. Works on multi-select. |
| Live dimensions | XYZ labels updated in real time during the drag, rotation-aware. |
| ☀ Light | Directional light intensity — 0 (dark) to 2 (very bright). Default 0.7. Global, not per-object. |
| Color | Click the swatch to open the OS color picker. Also reachable via 🎨 Recolor. |
| Opacity | 0 = transparent, 1 = opaque. Below 1 enables transparent rendering with correct depth sorting. |
| Solid / Hole | Toggle object mode. Hole = transparent red, auto-subtracted in CSG Union. |
| Pos / Rot / Dim | Direct numeric input. Pos Y = height of the bottom face above ground. Dim = real dimensions, rotation-aware. |
| ◎ Sphere resolution | Slider 8–256 segs, always visible. Live rebuild. Export at 2× capped 512. The ceiling is set by geometric accuracy (7.5 µm chord error on a 100 mm sphere — finer than any SLA printer), not by the graphics card. |
| X-Ray mode | Toolbar button — all objects semi-transparent. Reveals hidden or interior geometry. Toggle anytime. |
| Activate | Shift+click ≥ 2 objects → 📐 Align button or key L — colored 3D handles appear. Click a handle = immediate alignment. |
| X Axis | Left · Center · Right |
| Y Axis | Floor · Center · Top |
| Z Axis | Front · Center · Back |
| Object snap | Alt+drag on an object — snaps face-to-face to the nearest object. Active when Snap is enabled. |
| Ctrl+Z / Ctrl+Y | 200 levels, persisted in the browser — they survive a heavy session without slowing it down. |
| Scope | Add, delete, move, scale, rotate, CSG, duplicate, import, .gen edit, thread insert. Every change is undoable. |
| CSG stays coherent | The construction tree is part of each undo step — Re-run still works after Ctrl+Z. |
| Auto-purge | Oldest steps dropped when the limit is reached. Cleared on new project or file load. |
| Save | Exports a .json project — objects, positions, colors, CSG geometries and construction tree |
| Load | Reloads a NASSCAD .json project — restores the complete scene including generator parameters |
| Export STL Binary | Native slicer format (Cura, PrusaSlicer, Bambu) — Z-up. 4–5× more compact than ASCII. Quality: 128 / 256 / 512 segs |
| Export STL ASCII | Human-readable text — legacy tool compatibility |
| Export OBJ | Wavefront with normals — compatible Blender, FreeCAD |
| Export 3MF | Native format for Bambu Studio, PrusaSlicer, Cura — per-object colors, Z-up |
| Export GLB | Binary glTF 2.0 — colors and normals embedded. Draco-compressed variant available (≈ 4–8× smaller) |
| Export PLY | Stanford polygon format — for scanning or VFX pipelines |
| Export STEP AP242 | B-Rep STEP — opens in Fusion 360, FreeCAD, Autodesk Viewer, Siemens NX |
| Export Section SVG/DXF | Horizontal cross-section at Y = N mm → 2D contour as SVG (Inkscape) or DXF (AutoCAD/LibreCAD). Cut height chosen in the dialog. |
| STL Quality | Buttons 128 / 256 / 512 in the menubar — curve segments at export. 128 is enough for a 0.4 mm FDM nozzle. |
| 📂 IDB Projects | Named projects saved inside the browser — list, save, load, delete. Quota bar displayed. |
| 📁 Folder | Opens the folder containing the NASSCAD file (desktop only) |
| Access | Menubar button ⚡ Script — opens the script editor |
| Execution | Runs JavaScript against the scene — create objects, run booleans, batch repetitive work. Supports await. |
| Shortcuts | Ctrl+Enter = Run · Tab = 2 spaces · Ctrl+↑/↓ = history (20 entries) |
| Example | addPrimitive('cube'); nasLog('OK','done'); |
| ⚠ Power tool | Scripts run with full access to the application. Never paste code you have not read. |
NASSCAD reserves its own memory block at startup. Size chosen via 💾 Pool: 512MB / 1GB / 1.5GB / 2GB in the menubar (default 512 MB). Unused geometry is reclaimed automatically.
| 512 MB (default) | Comfortable for most sessions |
| 1 GB | Recommended for large scenes and big STEP assemblies |
| 2 GB (max) | For the heaviest work — desktop builds make the best use of it |
| MEM gauge | Bar at bottom right. Hover for detail. |
| ♻ Flush pool | Toolbar button — reclaims memory on demand and reports how much was freed. |
| Integrity check | Stored geometry is checksummed — silent corruption is detected on load rather than shown as a broken model. |
| Display (WebGL — graphics card) | |||
| ✅ Smooth | < 500 objects | < 3M vertices | No risk |
| ⚠ Slow | 500–1,000 objects | 3–8M vertices | FPS drop |
| 🔴 Risk | > 1,000 objects | > 8M vertices | Likely freeze |
| Boolean operations | |||
| ✅ Fast | < 10,000 triangles/object (cube, cone, pyramid…) | < 1 second | |
| ⚠ Slow | 10,000–50,000 triangles/object (sphere, half-sphere) | 1–10 seconds | |
| 🔴 Very slow | > 50,000 triangles/object — threaded parts in CSG | > 30 seconds | |
| Memory + Undo history | |||
| ✅ Safe | < 150 complex objects, < 50 active undo levels | Gauge < 50% | |
| 🔴 Saturation | > 300 objects or very large CSG history | Red MEM gauge | |
| Practical tips | |||
|
· Threaded parts in CSG: work at CSG⚡ 32 segs, switch to 128 only for the final export · Box-select: drag on an empty zone to select a group — then drag any selected object to move the whole group (snap-aware, single Undo) · Deep Re-run: change the sources, press ↺↺ Deep, the whole tree recomputes on its own · Complex CSG: reduce simple groups with Union first, then subtract · Big STEP assemblies: run the NASSCAD Engine companion — it is what gives you per-face colors and files above ~20 MB, not just speed · MEM gauge > 70%: save the project and reload the page to free memory · STL 128 segs: enough for a 0.4 mm FDM nozzle (printer resolution > 0.2 mm) |
|||
| Printable geometry | Every primitive and every generator produces a closed, watertight solid — checked, not assumed. What you export slices without repair. |
| Faithful colors | Imported colors match what the original CAD package shows, per part and per face. |
| Nothing leaves your machine | No account, no upload, no server. Files are read locally; the optional companion runs on your own computer and listens only to it. |
| Works offline | A single HTML file plus its companions. No CDN, no network needed once downloaded. |
| Nothing is destroyed | Boolean operations keep their construction tree — you can always go back, change a source, and replay. |
| NASSCAD V4.7.0 — August 2026 | |
| ✍ NASSER Architect & Tester |
CLIT · Electronics technician · 3D Maker Vision, direction, critical bug identification, quality standards, field testing, technology pivots. |
| 🤖 Claude Developer |
Artificial Intelligence · Anthropic Successive Claude models — native CSG engine, watertight primitives, STEP colour decoding verified against the file itself, surgical patches, systematic verification before delivery. |
| V4.7.0 highlights: native CSG engine (NASSCAD Engine companion, C++/multithreaded) · 18 watertight primitives · Sketch.Gen 2D sketcher · Screw.Gen & Nut.Gen (ISO / ASME) · Gear.Gen · Pipe.Gen · CircularText.Gen · real fillet & chamfer on picked or all edges · STEP AP203/214/242 import with per-part and per-face colours · PMI & GD&T reading · CSG construction tree with non-destructive Re-run · Undo/Redo 200 levels · Box-select · Face handles & rotation gizmo · X-Ray mode · Import STL/OBJ/3MF/GLB/PLY/STEP · Export STL/OBJ/3MF/GLB/PLY/STEP AP242/SVG/DXF · magnetic snap down to 0.001 mm · NassScript console | |
Third-party components — all local, zero CDN:
In the browser
· three.js (Mr.doob and contributors) — MIT — 3D WebGL rendering
· OpenCASCADE Technology (Open Cascade SAS) — LGPL 2.1 with exception — B-Rep CAD kernel: fillet/chamfer, STEP assembly, colour and PMI reading
· occt-import-js (Viktor Kovács) — MIT — browser bridge to OpenCASCADE for STEP import
· Draco (Google) — Apache 2.0 — mesh compression, glTF/GLB import and export
· helvetiker_regular / bold (MAGENTA Ltd, MgOpen Modata) — MgOpen License
· optimer_regular / bold (MAGENTA Ltd, MgOpen Cosmetica) — MgOpen License
· gentilis_regular / bold (J. Victor Gaultney / SIL International) — SIL OFL 1.1
· nasscad_logs.js (NassLab) — CC BY-NC 4.0 — structured logging module
In the NASSCAD Engine companion (optional, runs on your machine)
· OpenCASCADE Technology (Open Cascade SAS) — LGPL 2.1 with exception — native STEP reading and tessellation
· Manifold (Emmett Lalish and contributors) — Apache 2.0 — boolean CSG engine
· oneTBB (Intel / UXL Foundation) — Apache 2.0 — multithreading
· Clipper2 (Angus Johnson) — Boost Software License 1.0 — 2D polygon clipping, used by Manifold
· hwloc (Inria and the Open MPI project) — BSD 3-Clause — CPU topology detection, used by oneTBB
⚖ NASSCAD V4.7.0 License
© 2026 NassLab — Nasser, France
This software is distributed under the Creative Commons BY-NC 4.0 license:
· Personal and non-commercial use — free, redistribution allowed with attribution
· Commercial use — written agreement required from NassLab
No implied warranty. The author cannot be held liable for any damage resulting from the use of this software.