🖥 NASSCAD is designed and optimized for a screen resolution of 1920×1080 or higher. Below that, panels and toolbars may overlap or be cut off.
| Booleans without MEDUSA | Union, Subtract and Intersect now run in the browser when MEDUSA is not running (Manifold WASM, loaded on the first boolean) — nothing to install, school computers included. With MEDUSA running they switch to native C++ on every core by themselves. The CSG panel shows which engine worked: Manifold C++ · MEDUSA or Manifold WASM. |
| Export the selection | 📤 Export ▾ › Include: All design or Selected shapes — every format, STEP, IFC, section and JSON project included. With a single shape, the file takes its name. |
| Hide the panels | ☰ Panels in the menubar, or the ✕ of each panel: Tools, Objects, Properties / CSG and NassScript, one by one. H hides them all and brings back exactly what was shown. |
| Solar System demo | A real-date Solar System to paste into ⚡ Script, at the end of the NassScript docs — nasscad.com/nasscript_doc.html |
| 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 — speed set by the camera buttons /5 /2 1× ×2 ×5 ×10 (see Toolbox below) |
| Single click on object | Select the object (drag to move it) |
| Double-click on object | Each double-click moves one step: ① resize handles (drag corners or top handle) → ② dimensions (X/Y/Z values) → ③ rotation rings (3 Cura-style rings) → back to nothing. Click on empty space to leave. |
| 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 | Magnetic snap — each press steps 1 → 0.5 → 0.1 → 0.01 → 0.001 mm → OFF. The toolbox buttons jump straight to a step. |
| N | Toggle light / dark theme |
| 1 · 2 · 3 · 4 · 5 | Camera views: 1 reset · 2 top · 3 front · 4 right · 5 reset |
| Esc | Deselect all / Cancel box-select / Close dialogs |
| H | Hide / show the panels — choose which ones in ☰ Panels, or with the ✕ of each panel |
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 |
| Roof | Triangular gable roof — 20mm base, ridge height 10mm |
| Hollow box | Open box — outer size and wall thickness set in its dialog |
| 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. |
Toolbox button or menubar 📥 Import ▾. Several files can be picked at once — they are read one after the other.
| 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 |
| IFC | IFC2X3 · IFC4 · IFC4X3 (BIM) — read locally, no engine needed — see the IFC section below |
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. |
IFC is the open exchange format of architecture and construction (ISO 16739). NASSCAD opens IFC models and writes IFC4 — both entirely on your machine, offline, with no engine to start.
| Import — Import ▾ › .IFC | |
| Schemas | IFC2X3, IFC4 and IFC4X3 — read by the bundled web-ifc engine, inside the browser |
| Elements | Every building element (wall, slab, window, beam…) arrives as its own object, under its IFC name, grouped under the file name in the object list |
| 🎨 Colors | The colour and transparency of each element are applied as written in the file |
| Positions & units | Real positions and dimensions, converted to millimetres whatever the file's unit. Survey coordinates far from the origin keep their precision. |
| Curves | Round shapes are tessellated at import (32 segments per circle) |
| ⚠ Geometry only | Property sets, materials and relationships (storeys, zones, systems…) are not kept. Re-exporting an imported model gives its geometry, not its BIM data. |
| Export — Export ▾ › .IFC | |
| Format | IFC4, units in millimetres, with the spatial structure the standard requires (Project › Site › Building › Storey) — files that strict BIM software accepts, not only permissive viewers |
| Objects | Each object of the scene becomes a building element under its NASSCAD name |
| Exact geometry | Cube, Cylinder, Tube, Hollow box, Sphere and Cone are written as true parametric shapes (extruded profiles, sphere, cone) — they open as editable solids with their real dimensions, not as triangles. A mirrored or unevenly stretched primitive falls back to triangles rather than being written wrong. |
| Everything else | Boolean results, generators and imported meshes are written as compact triangulated surfaces |
| 🎨 Colors per face | Kept on export — a multicolour part comes back multicolour when the file is read again |
| Round trip | Checked by re-reading NASSCAD's own IFC exports with the same engine used at import |
| ⚡ Engine | Booleans run in the NASSCAD Engine (MEDUSA) on your own machine — native Manifold C++, spread over every CPU core. Without MEDUSA, they run in the browser (Manifold WASM, loaded on the first boolean): same results, one core, slower on large models. The engine badge in the CSG panel shows which one is working. |
| 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 (19.5 M vertices) in ~3.6 s. |
| 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 — client-side dispatch thresholds only. The boolean itself is parallelised by the engine across all CPU cores. Applied immediately, no reload. |
Toolbox button Quick Fillet. 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 times (handles → dimensions → rings) — 3 Cura-style rings: ■ Y (blue) · ■ X (green) · ■ Z (red). Drag a ring to rotate. Snap 15°. Double-click again or click on empty space to exit. |
| 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 | Double-click an object once to show the 6 handles (1st step of the double-click cycle). 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. |
| Snap | Magnetic grid snap on/off. Each click steps 1 → 0.5 → 0.1 → 0.01 → 0.001 mm → OFF (key S). The five buttons beside it — 1 · .5 · ·1 · ·01 · ·001 — jump straight to a step. |
| Scale | Magnifier buttons /5 /2 1× ×2 ×5 ×10 — scale the selection uniformly. 1× = back to original size. A multi-selection scales around the group centre. |
| Zoom speed | Camera buttons /5 /2 1× ×2 ×5 ×10 — how far one notch of the scroll wheel moves the camera. The lit button is the current speed, 1× = normal. Remembered between sessions. |
| Measure | Shift+click two objects or more: shows the centre-to-centre distance and the real gap between each pair. On/off. |
| Views | Top · Front · Reset camera · Perspective (keys 1–5). |
| X-Ray | Every object semi-transparent, all edges visible through the material. On/off. |
| Feature edges | Draws the sharp (crease) edges of every object. On/off. |
| ⊕CG | Moves the pivot of the selection to its real centre of gravity. The part stays where it is. |
| Drop to ground | Puts the bottom of the selection exactly on Y=0. Works on multi-selection. |
| Recenter grid | Brings the grid and all objects back to the centre (after an Alt+right drag). |
| Pinned reset | Sends every pinned object (📌) back to its pinned position. |
| Frame | The camera fills the view with the selected object(s). |
| ☀ 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. |
| Build volume | Toolbox button — shows your printer's bed and build volume, sitting on the grid. Only the two walls behind the model are drawn, and they switch as you orbit, so nothing ever hides the part. Click to pick the printer among 28 best-selling models (Bambu Lab, Creality from the original Ender-3 to the K2 Plus, Prusa, Elegoo, Anycubic, Voron, Sovol), show the ceiling or hide it. If a part sticks out, the wall on that side turns red and the log says by how many mm. |
| World grid | A gridded room — floor, walls and ceiling — around your work, so depth and scale read at a glance. It sizes itself to the scene (1 m minimum, then 2 m, 5 m, 10 m…), with a cell of one tenth of the room. While the camera is inside, every face is drawn; zoom out beyond it and only the far walls stay. On/off in the same menu as the build volume. |
| Hide all | Button right of Build volume — one click hides the build volume and the world grid (the work grid stays). Click again to bring back what was shown. |
| 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. |
Toolbox button or menubar 📤 Export ▾. At the top of the menu, Include sets what goes into the file: All design, or only the Selected shapes — chosen by default when something is selected. Applies to every format, STEP, IFC, section and JSON project included.
| 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 IFC4 | BIM exchange — exact parametric primitives, per-face colours, millimetre units. See the IFC section. |
| 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'); |
| Documentation | Every function the console can reach, with ready-to-paste recipes: nasscad.com/nasscript_doc.html |
| ⚠ 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. |
Measured on 23/09/2026 with the built-in benchmark script, on an Intel Core i5-9400 (6 cores), 64 GB RAM, NVIDIA RTX 3050 8 GB, Firefox 152, 1920×1080, NASSCAD Engine 3.1. Booleans scale with the number of CPU cores, display with the graphics card. The boolean times below are with MEDUSA; without it, the same operations run in the browser on a single core — same results, slower on large models.
| Display — camera orbit, whole scene in view | ||
| ✅ 60 FPS | Up to 1,000 objects — even at 16.6 M vertices (1,000 spheres at 128 segs) | 500 spheres: 0.5 M vertices · 1,000 spheres: 1.1 M / 4.2 M / 16.6 M vertices |
| ⚠ 30 FPS | Around 2,000 objects — whatever their size (2.2 M or 33 M vertices gave the same ~30 FPS) | Still usable; the object count is the limit, not the triangles |
| 🔴 Beyond | More than 2,000 objects or more than ~33 M vertices | Not measured — expect below 30 FPS |
| Boolean operations — NASSCAD Engine, CSG⚡ 128 unless noted | ||
| ✅ Instant | Cube − cylinder · two spheres at CSG⚡ 64 | 0.15 – 0.4 s |
| ✅ Fast | Two spheres at CSG⚡ 128 · a 200 mm plate − 100 holes in one operation | 0.4 s · 0.8 s (preview after 0.1 – 0.25 s) |
| ✅ Fast path | Union of 200 spheres that do not touch — 19.5 M vertices, merged without the boolean engine | 3.6 s |
| ⚠ Slower | Two spheres at CSG⚡ 256 · CSG⚡ 512 (~1 M triangles in) | 1.1 s · 4.0 s (preview after 0.1 s) |
| 🔴 Heavy | Union of 100 overlapping spheres at 128 segs — 3.2 M triangles in, 1.2 M vertices out | 12.7 s (preview after 0.5 s) |
| Memory | ||
| Pool AUTO | Sized at startup from the RAM the engine reports as free — 2 GB (the maximum) on a 64 GB machine | Watch the MEM gauge at bottom right |
| 🔴 Saturation | Red MEM gauge — very large CSG history or heavy imports | Save, then ♻ Flush pool or reload the page |
| Practical tips | ||
|
· Too many objects? Union parts that do not touch — the fast path merges them into one object in seconds, and the object count is what limits the display · Heavy booleans: work at CSG⚡ 32 or 64, switch to 128 only for the final result — time grows 2 to 4× per step up · Complex CSG: union all the holes first, then subtract once — one operation instead of N · 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 · Large booleans: run the NASSCAD Engine (MEDUSA) — the same Manifold, native, on every CPU core instead of one · Big STEP assemblies: run the NASSCAD Engine — it is what gives you per-face colors and files above ~20 MB, not just speed · 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 · IFC read & write (IFC2X3/IFC4/IFC4X3 in, IFC4 out) · Import STL/OBJ/3MF/GLB/PLY/STEP/IFC · Export STL/OBJ/3MF/GLB/PLY/STEP AP242/IFC4/SVG/DXF · magnetic snap down to 0.001 mm · build volume (28 printers) & world grid · NassScript console | |
Third-party components — bundled locally, no third-party CDN:
In the browser
· three.js r128 (three.js authors) — MIT — 3D WebGL rendering
· OpenCASCADE Technology 7.4.0 via opencascade.js 1.1.1 (Open Cascade SAS / Sebastian Alff) — LGPL 2.1 with exception — B-Rep CAD kernel: fillet/chamfer, STEP assembly, colour and PMI reading
· occt-import-js (Viktor Kovács) — LGPL 2.1 — STEP import, embeds OpenCASCADE Technology
· web-ifc 0.0.77 (That Open Company) — MPL 2.0 — IFC import (IFC2X3 / IFC4 / IFC4X3)
· Draco 1.5.7 (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 8.0.1 (Open Cascade SAS) — LGPL 2.1 with exception — native STEP reading and tessellation, unmodified DLLs
· Manifold 3.5.3 (Emmett Lalish and contributors) — Apache 2.0 — boolean CSG engine
· oneTBB 2022.2.0 (Intel / UXL Foundation) — Apache 2.0 — multithreading
· Clipper2 1.5.4 (Angus Johnson) — Boost Software License 1.0 — 2D polygon clipping, used by Manifold
· hwloc 2.11.2 (Inria and the Open MPI project) — BSD 3-Clause — CPU topology detection, shipped with oneTBB
Web version only (nasscad.com)
· Google Analytics 4 (Google) — audience measurement, loaded only when NASSCAD is opened from nasscad.com — never when the file is opened locally, from a school portal (ClassLink, Clever, Google Classroom…), with ?edu=1, or when the browser sends Global Privacy Control / Do Not Track — Privacy
Source code of the LGPL / MPL components
· OCCT (tag V8_0_1) · opencascade.js (v1.1.1) · occt-import-js · web-ifc (0.77)
Each component remains under its own license. Full texts: MIT · Apache 2.0 · LGPL 2.1 · OCCT exception · MPL 2.0 · BSL 1.0 · BSD 3-Clause · SIL OFL 1.1
⚖ 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
This license covers NassLab code only — the third-party components listed above remain under their own licenses.
No implied warranty. The author cannot be held liable for any damage resulting from the use of this software.