Profile
Back to NewsBack
Hacker News 35 min
Reader Mode
Show HN: Nasscad โ€“ local-first 3D CAD for browser and Windows

Show HN: Nasscad โ€“ local-first 3D CAD for browser and Windows

12 hours ago

๐Ÿ–ฅ 1920ร—1080 or higher is recommended for a spacious workspace. On smaller screens, move, resize or hide panels with โ˜ฐ Panels or H. The compact Performances โ–พ menu groups the advanced settings; the space available for modelling depends on the panels you keep open.

๐Ÿš€ Getting started
๐Ÿš€ Start๐Ÿš€ Start in the menubar (left of โ˜ฐ Panels) opens the welcome card: Interactive tutorial, Import a model, Open project or NassScript demo. Click ๐Ÿš€ Start again, the ร— or Esc to close it.
Choose a demoNassScript demo offers Solar system and Four-cylinder engine. Only the chosen script is downloaded when launched. Your unfinished text in the Script editor is preserved.
Stop and editOpen โšก Script and press Stop to stop a running script. In the engine demo, Stop freezes the visible parts so you can select and edit them. The demoโ€™s close/restore control cleans up its scene.
Save your workUse Save project as for a NASSCAD JSON project; Load project reopens it. Export โ–พ writes a model for other tools.
STEP import and export - current workflow
Import and browse assembliesUse Import to open a STEP AP203, AP214 or AP242 file. When the reader exposes the source assembly structure, the Objects panel groups parts into assembly folders. Expand folders to browse the model; click a folder to select its parts. Part names, placements and available colours are retained. MEDUSA adds per-face colours and native processing for large assemblies; it is included in Windows Setup and Portable.
Surface quality and large filesThe current import pipeline improves tessellation topology and keeps available OCCT surface normals on eligible bodies. This gives smoother curved faces while preserving sharp boundaries. Bodies that need repair or lack usable source normals use a fallback. Native STEP streaming and the Turbo path support large assemblies; runtime and memory use still depend on the file, its complexity and the machine. A faster cached import does not measure the first-import cost.
PMI and assembly historySupported AP242 files can expose graphical annotations and semantic PMI / GD&T in the PMI panel. The information must be present in the source and supported by the reader. The assembly tree describes parts and instances; it does not recover the original sketches, constraints, extrusions or modelling feature history. Imported PMI display is not a promise that all annotations will survive export.
Export STEP in three protocolsUse Export > STEP, check the export scope (the selected objects or the whole design), then choose AP203, AP214 or AP242. Export can write separate named bodies as components, with supported body and face colours. The exported component structure need not reproduce every level of the original assembly hierarchy. MEDUSA performs native export in the Windows edition; the browser has a JavaScript fallback when the native export service is unavailable.
Reuse an intact source B-RepFor eligible STEP bodies imported through MEDUSA and kept geometrically unchanged, native export can reuse the referenced source B-Rep with its supported placement transform, instead of rebuilding the body from display triangles. If MEDUSA restarted and the source file remains available in the session, NASSCAD can reload the source B-Rep before export. Read the log to confirm which bodies used this path. If a reference or source cannot be recovered, export falls back to the mesh representation.
Export after editing a meshCSG results, edited meshes and bodies without a usable source B-Rep export from their current geometry. Supported analytic primitives can use analytic representations; connected coplanar triangles can become planar B-Rep faces when compact. Other geometry can use AP242 tessellation or AP203/AP214 faceted B-Rep. The Exact / Robust / Faceted option controls the writer strategy and declared accuracy: Exact does not reconstruct lost analytic surfaces or the original CAD history. Keep the original STEP, and reopen important exports in the receiving CAD tool to check body count, dimensions, placement and appearance.
Updates and fixes - 26 October 2026
Preview fillets and chamfersSelect one solid, then open Quick Fillet. Choose Round or Chamfer and set the finish size. Use Preview all for every sharp edge, or Pick edges followed by Preview selection for selected edges and groups. Inspect the separate 3D window, then choose Apply to commit or Back to adjust. Preview does not replace the source object. If a requested finish cannot be built, read the status and any adjusted value before applying.
Finished objects and surface displayA committed fillet or chamfer remains selectable for further work and Undo. Quick Fillet now keeps flat faces visually flat and preserves the smooth surface normals of curved faces. STEP import and native MEDUSA booleans also preserve available surface normals; repaired or unsupported geometry uses a fallback. These are display improvements, not a guarantee that an imported model has been healed.
Coplanar through-cutsBoolean operands are now evaluated in one shared local frame. This prevents tiny transform-rounding residues from leaving a membrane when a cutting tool ends on the same plane as the solid. The change is shared by Union, Subtract, Intersect and CSG-tree evaluation; it is not tied to one model. A Union action that includes objects marked Hole still subtracts those objects.
Recalculate an older resultUpdating NASSCAD does not rewrite geometry already saved in a project. Keep a copy of the project, select the old CSG result and use Re-run to recalculate its operation, or Deep to evaluate its construction tree. If the source operands are no longer available, return to an earlier project or re-import the source. Previously baked fillets need their source solid and edge selection again.
Check the actual solidFor a through-hole, inspect both sides and use another view or export to confirm that it is open. A manifold result alone does not prove the intended shape: an unintended thin membrane can still be manifold. Intentional blind holes and thin floors are retained; this correction does not automatically extend cutters or erase thin details.
Gear dialog and desktop updateGear.Gen / Pulley.Gen opens within the workspace and keeps its expanded mating-gear controls accessible. Use the dialog scroll area on a smaller screen. Windows users should install the refreshed Setup or replace the Portable executable; updating the website alone does not update an installed application. Setup and Portable include MEDUSA and its dependencies.
๐Ÿ†• Latest tools ยท 21 October 2026
๐Ÿš€ StartOpen the welcome card from the menubar, to the left of โ˜ฐ Panels. It no longer appears automatically on an empty scene. Choose the tutorial, import, open a project or a NassScript demo. Click Start again, ร— or Escape to close the card. Opening the card does not clear your scene.
Clear STEP import cacheIn Tools โ†’ Files ยท Utils, use Clear STEP import cache and confirm. This clears both cached parsing results (NSTP) and final geometry (NSPG) from IndexedDB. Your current scene, saved projects and original files are kept. The next import is processed again and may take longer. This does not clear native MEDUSA B-Rep data held in memory.
MEDUSA progressIn the Windows desktop edition, open the MEDUSA status/log panel. Progress bars adapt to the panel width; percentages remain visible and long details are shortened. Hover a progress row to read its full text. Drag, resize or maximize the panel and use Aโˆ’ / A+ for its text size. The standalone engine uses its own console.
๐Ÿ’ฌ FeedbackUse Send feedback to report a bug or suggest an improvement without an account or email. An internet connection is required. No project or diagnostic log is attached automatically; avoid confidential information.
๐Ÿ“– Illustrated user manual

Read the complete English guide: Open HTML manual ยท Open PDF manual. Both documents are included in the desktop package for offline reading.

๐Ÿงญ Interactive tutorial

Learn the main tools in the real interface: highlighted controls, hands-on exercises and the four-state double-click cycle. Choose French or English. Practice starts from an empty scene; a control tour is also available with your current model.

๐Ÿ†• What's new
Windows All-in-OneThe Electron desktop app bundles NASSCAD, MEDUSA and their runtime dependencies. Choose Setup to install or Portable to run without installation. MEDUSA starts with NASSCAD and stops when NASSCAD closes.
Performances menuPerformances โ–พ groups STL, CSG, Pool, Watchdog and Workers. The controls, values and Auto modes are unchanged; the ฯ€ control remains beside CSG resolution.
Copies and materialsDuplicate and Copy/Paste retain Hollow box size and wall thickness. NASSCAD projects and Undo/Redo retain material identity, specular colour and shininess; Copy/Paste also retains face colour palettes.
Browser booleansUnion, Subtract and Intersect use Manifold WASM when no MEDUSA engine is connected. With MEDUSA, they use native C++ with CPU parallelism. The CSG panel shows 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.
NassScript demosLaunch the real-date Solar system or our original four-cylinder engine from ๐Ÿš€ Start in the menubar. Complete scripts and explanations are also in the NassScript docs โ€” nasscad.com/nasscript_doc.html
๐Ÿ–ฅ Windows x64 โ€” Electron All-in-One
SetupRun NASSCAD-4.7.0-Setup-x64.exe. All users is selected by default; Windows may request administrator permission. The installer lets you choose the installation folder and creates application shortcuts.
PortableRun NASSCAD-4.7.0-Portable-x64.exe without installing the app. Runtime dependencies and MEDUSA are bundled. No BAT launcher or separate DLL installation is needed.
MEDUSA lifecycleOpening NASSCAD starts its own MEDUSA process automatically. Closing NASSCAD also stops that process. The desktop app communicates with MEDUSA through an internal process pipe, without a local HTTP server.
Status and logsClick the MEDUSA status button to view its logs. The CSG panel shows which boolean engine was used. Native MEDUSA computations use the CPU; the graphics card renders the 3D view.
๐ŸŒ Browser edition โ€” optional MEDUSA companion
Without MEDUSAUnion, Subtract and Intersect work through Manifold WASM inside the browser. No companion installation is required for these operations.
Optional Windows engineMedusa_Engine_3.1.zip contains Nasscad_Medusa_Engine_3.1.exe with bundled DLLs. Run it separately while using the browser edition if you want native engine support. The automatic start/close and internal pipe described above belong to the Electron app.
๐Ÿ–ฑ 3D View Navigation
Left clickSelect an object โ€” stays instant even on very large scenes
Left click + dragMove selected object on the XZ plane. On multi-selection: drags the entire group โ€” relative positions preserved, single Undo step.
Shift + clickMulti-select (N objects) โ€” for CSG, alignment
Left drag on empty zoneBox-select โ€” draw a selection rectangle. Shift = add to selection.
Alt + left dragPan full 3D โ€” drag horizontal โ†’ left/right (XZ camera-relative), drag vertical โ†’ up/down (Y)
Alt + right dragPan the grid + all objects โ€” useful for large scenes
Right click + dragOrbit camera around the scene
Middle click + dragPan camera
Scroll wheelZoom in / out โ€” speed set by the camera buttons /5 /2 1ร— ร—2 ร—5 ร—10 (see Toolbox below)
Single click on objectSelect the object (drag to move it)
Double-click on objectEach 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 objectReopens the generator dialog pre-filled with current parameters โ€” live edit in-place (Cubic/Cylind/Tore/Pipe/Gear/Screw/Nut/Sketch/CircularText)
โŒจ Keyboard Shortcuts
Ctrl + ZUndo โ€” up to 200 levels
Ctrl + YRedo
Ctrl + DDuplicate selection
Del / BackspaceDelete selection
Arrows โ†‘โ†“โ†โ†’Move object 1 mm (XZ plane, camera-relative)
Alt + โ†‘ / โ†“Move object up / down (Y axis)
Select allSelect all objects using the EDIT toolbar button
Ctrl + C / Ctrl + VCopy / Paste โ€” offset along X; geometry, transforms, generator parameters, materials and face colour palettes retained
LShow / hide 3D alignment handles
SMagnetic snap โ€” each press steps 1 โ†’ 0.5 โ†’ 0.1 โ†’ 0.01 โ†’ 0.001 mm โ†’ OFF. The toolbox buttons jump straight to a step.
NToggle light / dark theme
1 ยท 2 ยท 3 ยท 4 ยท 5Camera views: 1 reset ยท 2 top ยท 3 front ยท 4 right ยท 5 reset
EscDeselect all / Cancel box-select / Close dialogs
HHide / show the panels โ€” choose which ones in โ˜ฐ Panels, or with the โœ• of each panel
๐Ÿ”ท 3D Primitives โ€” 19 watertight

Primitives are designed as closed solids for modelling and slicing. Check the exported geometry in your target slicer or CAD tool, especially after complex edits or operations on imported models.

Standard primitives (toolbox)
CubeBox 20ร—20ร—20 mm โ€” 6 flat faces
SphereConfigurable resolution 8โ€“256 segs (slider in Properties) ยท export at 2ร— resolution, capped 512 ยท smooth shading built-in
Half-sphereFlat-capped hemisphere โ€” same slider as sphere
Cylinder64 segs display / 128 segs export
Cone64 segs / 128 export
Triangular pyramidTetrahedron โ€” isosceles triangular base + 3 triangular sides. Dim X/Z set base width/depth, Dim Y sets height. Apex above the base centroid; not a regular tetrahedron by default.
Pyramid4-sided pyramid โ€” square base + triangular faces
RoofArcHalf-cylinder / vaulted roof โ€” length W, radius H, closed caps
TubeHollow cylinder โ€” outer radius Ro, inner radius Ri, height H. Parameters editable in Properties.
LatheSurface of revolution โ€” 64 segs / 128 export ยท profile defined by spline points
3D TextExtruded text โ€” 6 fonts (Helvetiker R/B, Optimer R/B, Gentilis R/B) ยท configurable depth, bevel
WedgeRight-angle bevel โ€” 20mm base, triangular cross-section
RoofTriangular gable roof โ€” 20mm base, ridge height 10mm
Hollow boxOpen box โ€” outer size and wall thickness set in its dialog
Generator primitives (.gen โ€” parametric, double-click to edit)
Cylind.GenTruncated cylinder with double chamfer โ€” Rt, Rb, H, top/bottom chamfer 1โ€“48 segs, N facets 12โ€“128
Cubic.GenChamfered / rounded cube โ€” Wร—Hร—D, chamfer radius, 1โ€“48 segments
Tore.GenUltra-HD torus โ€” ring R, tube r, N ring facets 12โ€“256, M tube facets 6โ€“128 โ€” seamless
ArcSphere.GenSpherical sector โ€” full angle phi 1โ€“360ยฐ, capped, correct shading at both poles
RevSolid.GenRevolved solid โ€” arc angle 1โ€“360ยฐ. Closed caps when angle < 360ยฐ.
Pipe.GenHollow pipe โ€” straight segments + tangent bends (radius R_bend, real tube-bending). No section twist along the path. Outer wall + inner wall + sealed caps.
Gear.GenISO involute gears (20ยฐ pressure angle) โ€” module 0.5โ€“8 mm, straight / helical / herringbone. V-pulley and timing pulley. Configurable teeth, shaft bore.
Screw.GenParametric 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.GenParametric 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.Gen2D 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.GenCurved 3D text on arc โ€” arch (โˆฉ) or smile (โˆช) ยท arc angle 0โ€“340ยฐ ยท font size, depth, spacing ยท 6 fonts. Double-click to re-edit.
๐Ÿ“ฅ Import โ€” STL ยท OBJ ยท 3MF ยท GLB ยท PLY ยท STEP ยท IFC

Toolbox button or menubar ๐Ÿ“ฅ Import โ–พ. Several files can be picked at once โ€” they are read one after the other.

STLBinary + ASCII โ€” automatic centering, placed on floor
OBJWavefront with vertex normals โ€” compatible Blender, FreeCAD
3MFBambu Studio / PrusaSlicer format โ€” per-object colors, multi-body
GLBBinary glTF 2.0 โ€” multi-part assembly and colors preserved, Draco-compressed files supported
PLYStanford polygon format โ€” point clouds, scanned meshes
STEPAP203 ยท AP214 ยท AP242 โ€” see the dedicated section below. Also accepts .stpz ยท .stpx ยท .stpxml ยท .p21
IFCIFC2X3 ยท IFC4 ยท IFC4X3 (BIM) โ€” read locally, no engine needed โ€” see the IFC section below
๐Ÿงฉ STEP Viewer โ€” assemblies, names and colours

STEP is a CAD exchange format. NASSCAD reads CAD geometry and tessellates it for viewing, with assembly information, names and colours where present. Imported STEP models are treated as viewer data; import does not certify that every body is a closed, editable solid.

What comes in
ProtocolsAP203, AP214, AP242 โ€” files from Fusion 360, SolidWorks, Inventor, CATIA, NX, Creo, FreeCAD, Onshape
AssembliesEvery 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, in the file's own tree: in Objects, each sub-assembly is a folder (โ–ธ unfolds it), and a part made of several solids is a folder of its bodies. Click a folder to select all its parts โ€” they move together: drag one of them in the view, use the arrow keys, or type a position in Properties, which shows the assembly's name, position and size. Click a part to edit it alone. MEDUSA reads the whole tree; the in-browser fallback keeps its first level.
๐ŸŽจ Colors per partThe color the designer assigned to each part is applied on import.
๐ŸŽจ Colors per faceA 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 MEDUSA (bundled in the Electron app; optional companion in the browser): the in-browser STEP fallback does not expose per-face colours.
Which color winsWhen 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 accuracyColors are displayed exactly as written in the file. Open the same file in FreeCAD or Fusion side by side โ€” the shades match.
UnitsThe file's own unit is read and converted โ€” millimetres, inches, metres.
Speed
โšก NASSCAD EngineMEDUSA reads and tessellates STEP natively on your machine, with support for per-face colours and large assemblies. The Electron app starts it automatically. Import time depends on the file and machine; a first import of a stress model can take a long time.
In-browser fallbackWithout 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-importPreviously imported files may reopen faster from local cache. Availability and loading time depend on file size, stored geometry and available storage; a cached model can still take time to load.
Very large filesMEDUSA supports streamed imports of large assemblies with progress reporting. Available RAM, geometry complexity and file structure determine practical limits. Keep the application open while a long import finishes.
Geometry quality
Import processingThe importer processes and tessellates the source geometry for display. It may attempt stitching, but it does not guarantee repair or watertightness. Open or defective source bodies can remain open after import.
โš  Non-manifold noticeOpen or non-manifold bodies may be reported after import and can still be viewed. A visible model is not proof of a closed solid. Validate imported geometry in a suitable external CAD tool before using it for booleans or manufacturing.
Smooth shadingCurved surfaces are smoothed while sharp edges stay sharp โ€” no faceted look, no rounded-off corners.
๐Ÿ“ PMI & GD&T โ€” manufacturing data from AP242

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.

DimensionsLinear, angular and diameter dimensions with their values and units
DatumsReference frames (A, B, Cโ€ฆ) identified and listed
Geometric tolerancesFlatness, perpendicularity, position, cylindricityโ€ฆ โ€” the tolerance type is decoded and named
Graphical annotationsFeature control frames and notes drawn in 3D, placed on the part where the author put them
PMI panelOpens automatically when a file carries PMI โ€” a readable list beside the model. Overlays follow their part when you move it.
โš  LimitsPMI 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 Viewer โ€” geometry and exchange options

IFC is an exchange format for architecture and construction (ISO 16739). NASSCAD views imported IFC geometry locally through bundled web-ifc. IFC4 export remains available as a geometry exchange option; it does not preserve a complete BIM authoring model.

Import โ€” Import โ–พ โ€บ .IFC
SchemasIFC2X3, IFC4 and IFC4X3 โ€” read by the bundled web-ifc engine, inside the browser
ElementsEvery building element (wall, slab, window, beamโ€ฆ) arrives as its own object, under its IFC name, grouped under the file name in the object list
๐ŸŽจ ColorsThe colour and transparency of each element are applied as written in the file
Positions & unitsReal positions and dimensions, converted to millimetres whatever the file's unit. Survey coordinates far from the origin keep their precision.
CurvesRound shapes are tessellated at import (32 segments per circle)
โš  Geometry onlyProperty 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
FormatIFC4, units in millimetres, with a Project โ€บ Site โ€บ Building โ€บ Storey hierarchy. Check compatibility and geometry in the destination BIM software.
ObjectsEach object of the scene becomes a building element under its NASSCAD name
Exact geometrySupported Cube, Cylinder, Tube, Hollow box, Sphere and Cone shapes can use parametric IFC geometry (extruded profiles, sphere, cone). Mirrored or unevenly stretched primitives fall back to triangulated geometry. Interpretations and editability depend on the receiving software.
Everything elseBoolean results, generators and imported meshes are written as compact triangulated surfaces
๐ŸŽจ Colors per faceKept on export โ€” a multicolour part comes back multicolour when the file is read again
Round tripReopening a NASSCAD IFC export checks its geometry with the bundled importer. This does not certify preservation of BIM properties, relationships or compatibility with every external tool.
โš™ CSG Operations โ€” Union ยท Subtract ยท Intersect
โšก EngineBooleans 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.
UnionMerges N objects into one solid. Shift or Ctrl+click to select N objects.
SubtractSubtracts holes from solids. Automatic hole-mode detection.
IntersectKeeps only the volume common to all selected objects.
๐ŸŽจ ColoursUnion keeps the colour of every element, face by face: a multicolour STEP body stays multicolour. Subtract keeps the target's colours, and the cut faces take the target's own colour. Intersect gives an amber result. Re-run, Deep Re-run, Explode, Undo/Redo and Save/Load keep the colours. Needs MEDUSA: the in-browser engine gives a single colour. Picking a colour for the result paints it in that one colour.
Hole ModeMarks an object as a hole (transparent red). Union with a solid = automatic subtraction.
Progressive CSGA 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 pathObjects that do not overlap are merged directly, without the boolean engine. Measured: 200 spheres (19.5 M vertices) in ~3.6 s.
TreeConstruction tree โ€” every CSG result unfolds in Objects (โ–ธ) into its operands, nested groups included; Tree opens it. Click an operand: a ghost shows it in the view and Properties edits it โ€” name, position, rotation, size, solid/hole, colour โ€” or Suppress, Remove or Extract it. Each change recomputes the result in place and is one Undo step. With the view focused, the arrow keys move the operand, Esc returns to the object and Del removes the operand. Giving an operand a colour shows the operands' own colours in the result.
Re-runNon-destructive โ€” rebuilds the sources where the result now stands and replays the operation. Suppressed operands stay suppressed. Survives Save/Load and Undo/Redo.
Deep Re-runReplays the whole tree from the leaves in one go; the result stays where you placed it. Change a source, press Deep, everything downstream follows.
๐Ÿ’ฅ ExplodeRestores the immediate operands of the selected CSG result, including any nested compounds and suppressed operands. Their placement follows the current result transform. Undo returns to the assembled result.
๐Ÿ’ฅ๐Ÿ’ฅ X-DeepRecursively restores the original source shapes at their transformed positions, without spacing them apart. Cutter shapes also reappear: X-Deep disassembles the construction, rather than replaying its booleans. Undo returns to the CSG result.
WatchdogPerformances โ–พ โ€บ Watchdog: Auto / 60s / 120s / 300s sets the base timeout for CSG work. Auto selects a timeout from the input size; heavy operations can receive an adaptive timeout.
CSGโšก qualityPerformances โ–พ โ€บ CSG offers 32 / 64 / 128 / 256 / 512 curve segments. Lower values compute faster; higher values give smoother curved results. It is separate from STL export quality; saved settings are restored.
WorkersPerformances โ–พ โ€บ Workers: Auto / ร—4 / ร—6 / ร—8 sets client-side dispatch thresholds. Auto uses CPU information reported by MEDUSA when available. MEDUSA/TBB manages native boolean parallelism; this selector does not make one browser WASM boolean multithreaded. Manual changes apply immediately.
โŒ Fillet & Chamfer โ€” real CAD edges

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 / โœฆ ChamferRounded fillet or straight bevel โ€” switch at any time before applying
Radius R0.1 โ€“ 50 mm, slider or numeric field
Segments8 / 16 / 32 / 48 / 96 / 192 โ€” smoothness of the rounded surface. 32 is a good default.
โฌก All edgesFillets every edge of the object in one operation
๐Ÿ–ฑ Pick edgesClick an edge to select it โ€” hold and drag across several edges to paint-select them. Click again to deselect. Then use Preview selection to inspect the result, or Apply selection to commit it; the rest stay sharp.
โฌ† Top / โฌ‡ BottomOne click adds every edge of the topmost or bottommost flat face โ€” the two most common cases
Edge colorsโ–  convex ยท โ–  concave ยท โ–  hovered ยท โ–  picked
โš  If it failsA 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.
โœ Sketch.Gen โ€” 2D Sketcher โ†’ Extruded Solid

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.
TrimClick a segment to trim it at its intersections.
Extrusion
H (mm)Extrusion height โ€” editable numeric field in top bar.
โคด Extrude โ†’ SceneClosed contour โ†’ watertight solid added to the 3D scene. Multi-body supported.
UI & shortcuts
FFit view to all entities
GToggle grid
TToggle light / dark theme inside sketcher
DelDelete selected entity
Esc / โœ• CloseExit sketcher and return to 3D view
โ—  CircularText.Gen โ€” Curved 3D Text
Shapeโˆฉ arch (top arc) or โˆช smile (bottom arc)
Curve angle0โ€“340ยฐ arc sweep. Negative values = smile. 0 = straight text.
ParametersFont size, extrusion depth, letter spacing, bevel โ€” 6 fonts
Double-clickRe-opens the dialog pre-filled to edit text or curve live
๐Ÿ”„ Rotation Gizmo
Rotation modeDouble-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 sizeConstant on screen โ€” the rings keep the same apparent size whatever the zoom, exactly like Cura Slicer.
Angle displayLive angle shown during the drag.
๐Ÿ“ Dimensions and rotation
Stable spatial guidesDimension guides remain parallel to world X/Y/Z and show occupied size. Resize handles use the same world axes; rotation gizmos retain their existing behaviour.
Part dimensionsThe Dim fields show the partโ€™s intrinsic X/Y/Z size. Editable viewport labels show occupied size along world X/Y/Z. Rotating a 20 mm cube keeps these values at 20 mm. Editing a Dim value scales that local dimension. Editing a viewport label stretches occupied size in that world direction. An oblique stretch becomes a mesh; Undo restores its parametric source.
World bounding boxThe separate Bbox row is read-only. It shows the partโ€™s occupied size along world axes and can change when the part rotates.
Display unitsUnit: mm / in / ft changes display and numeric entry for positions, dimensions and measurements. Internal geometry remains stored in millimeters.
๐Ÿ“ Face Handles โ€” Interactive Resize
ActivateDouble-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 handlesXZ 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 groundToolbar button โ€” snaps selection bottom face to Y=0. Works on multi-select.
Live dimensionsX/Y/Z part dimensions update during resizing. Dimension guides use the workplane axes; resize handles use those same axes.
๐Ÿงฐ Toolbox โ€” Snap ยท View
SnapMagnetic 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.
ScaleMagnifier 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 speedCamera 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.
MeasureShift or Ctrl+click two objects or more: shows the centre-to-centre distance and the real gap between each pair. On/off.
ViewsTop ยท Front ยท Reset camera ยท Perspective (keys 1โ€“5).
X-RayEvery object semi-transparent, all edges visible through the material. On/off.
Feature edgesDraws the sharp (crease) edges of every object. On/off.
โŠ•CGMoves the pivot of the selection to its real centre of gravity. The part stays where it is.
Drop to groundPuts the bottom of the selection exactly on Y=0. Works on multi-selection.
Recenter gridBrings the grid and all objects back to the centre (after an Alt+right drag).
Pinned resetSends every pinned object (๐Ÿ“Œ) back to its pinned position.
FrameThe camera fills the view with the selected object(s).
๐ŸŽ› Properties Panel
โ˜€ LightDirectional light intensity โ€” 0 (dark) to 2 (very bright). Default 0.7. Global, not per-object.
ColorClick the swatch to open the OS color picker. Also reachable via ๐ŸŽจ Recolor.
Opacity0 = transparent, 1 = opaque. Below 1 enables transparent rendering with correct depth sorting.
Solid / HoleHole marks a subtractive volume, shown with orange diagonal hatching. When combined with solids using Union, holes are subtracted. Opacity changes appearance only: a transparent Solid remains solid, and a Hole remains a hole at any opacity. Hole mode initially sets opacity to 45%.
Pos / Rot / DimDirect numeric input. Pos Y = height of the bottom face above ground. Dim = intrinsic part dimensions, unchanged by rotation; Bbox = read-only world bounding box.
โ—Ž Sphere resolutionSlider 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 modeToolbar button โ€” all objects semi-transparent. Reveals hidden or interior geometry. Toggle anytime.
Build volumeToolbox 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 gridA 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 allButton 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.
๐Ÿ“ Alignment
ActivateShift or Ctrl+click โ‰ฅ 2 objects โ†’ ๐Ÿ“ Align button or key L โ€” colored 3D handles appear. Click a handle = immediate alignment.
X AxisLeft ยท Center ยท Right
Y AxisFloor ยท Center ยท Top
Z AxisFront ยท Center ยท Back
Object snapAlt+drag on an object โ€” snaps face-to-face to the nearest object. Active when Snap is enabled.
โ†ฉ Undo / Redo
Ctrl+Z / Ctrl+Y200 levels, persisted in the browser โ€” they survive a heavy session without slowing it down.
ScopeSupports add, delete, move, scale, rotate, CSG, duplicate, import, .gen edit and thread insert. Material properties and face colour palettes are included in the saved undo state.
CSG stays coherentThe construction tree is part of each undo step โ€” Re-run still works after Ctrl+Z.
Auto-purgeOldest steps dropped when the limit is reached. Cleared on new project or file load.
๐Ÿ’พ Save and Export

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 project asWrites a NASSCAD .json project โ€” geometry, transforms, generator parameters, Hollow box walls, material identity and appearance, face colours and the CSG construction tree
Load projectReopens a NASSCAD .json project. Older projects without the newer material fields remain supported with their legacy defaults.
Unsaved changesNew and Load project ask how to handle unsaved work. Choose Save (browser) or Save As (desktop), Discard or Cancel; Cancel keeps the scene. Closing the desktop app also checks for unsaved changes. Browser tabs may show their own leave-page warning.
Browser downloadsBrowser saving can use a file picker or a download. A requested download can still be blocked or cancelled by the browser: check that the JSON file reached your Downloads folder before discarding or closing your work. The app cannot verify the final disk write of a browser download.
Export STL BinaryNative slicer format (Cura, PrusaSlicer, Bambu) โ€” Z-up. 4โ€“5ร— more compact than ASCII. Quality: 128 / 256 / 512 segs
Export STL ASCIIHuman-readable text โ€” legacy tool compatibility
Export OBJWavefront with normals โ€” compatible Blender, FreeCAD
Export 3MFNative format for Bambu Studio, PrusaSlicer, Cura โ€” per-object colors, Z-up
Export GLBBinary glTF 2.0 โ€” colors and normals embedded. Draco-compressed variant available (โ‰ˆ 4โ€“8ร— smaller)
Export PLYStanford polygon format โ€” for scanning or VFX pipelines
Export STEP AP242STEP AP242 exchange option. Imported STEP is intended for viewing; verify exported geometry in your destination CAD tool. Export is not a guarantee of repaired or watertight source bodies.
Export IFC4IFC4 geometry exchange โ€” supported parametric primitives, face colours and millimetre units. Imported IFC is viewer geometry; complete BIM data is not preserved. See the IFC section.
Export Section SVG/DXFHorizontal cross-section at Y = N mm โ†’ 2D contour as SVG (Inkscape) or DXF (AutoCAD/LibreCAD). Cut height chosen in the dialog.
STL QualityPerformances โ–พ โ€บ STL: 128 / 256 / 512 curve segments at export. Choose a resolution suitable for the model and printer; higher values increase mesh size.
๐Ÿ“‚ IDB ProjectsNamed projects saved inside the browser โ€” list, save, load, delete. Quota bar displayed.
๐Ÿ“ FolderOpens the folder containing the NASSCAD file (desktop only)
โšก NassScript โ€” Integrated JS Console
AccessMenubar button โšก Script โ€” opens the script editor
ExecutionRuns JavaScript against the scene โ€” create objects, run booleans, batch repetitive work. Supports await.
StopStop stays available while managed script work is active, including animations and timers after the initial execution returns. It cancels the scriptโ€™s managed callbacks and runs registered cleanup hooks. Starting another script stops the previous one. A native synchronous call must return before the UI can respond.
Demo controlsThe Solar system has date and playback controls. The four-cylinder engine has playback, cycle and combustion controls, including a particles-per-cylinder slider. Use Stop to freeze visible engine parts for selection; close/restore to clean up.
ShortcutsCtrl+Enter = Run ยท Tab = 2 spaces ยท Ctrl+โ†‘/โ†“ = history (20 entries)
ExampleaddPrimitive('cube'); nasLog('OK','done');
DocumentationThe documented API, an 813-function index, examples, usage limits and both complete demo scripts: nasscad.com/nasscript_doc.html
โš  Power toolScripts run with full access to the application. Never paste code you have not read.
๐Ÿ’พ Memory and automatic settings
Pool sizePerformances โ–พ โ€บ Pool: Auto / 512MB / 1GB / 1.5GB / 2GB selects the geometry/history memory pool. Auto uses available RAM reported by MEDUSA, falling back to total RAM when needed. Without machine information, saved settings are used.
Apply a new sizeChanging the pool size requires a page reload; NASSCAD offers to reload when a pool is already allocated. Save the project first. The actual allocation depends on what the browser can provide.
MEM gaugeThe bottom-right gauge shows pool usage; hover for details. It measures the geometry/history pool, not all browser or graphics memory.
Flush poolReclaims unused geometry slots on demand. Geometry retained by the current design or its history still occupies memory.
Saved settingsPool, Watchdog, Workers and display units are remembered in the current desktop or browser profile. Choosing a manual setting turns off Auto for that selector.
โš  Performance โ€” measured

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 FPSUp 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 FPSAround 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
๐Ÿ”ด BeyondMore than 2,000 objects or more than ~33 M verticesNot measured โ€” expect below 30 FPS
Boolean operations โ€” NASSCAD Engine, CSGโšก 128 unless noted
โœ… InstantCube โˆ’ cylinder ยท two spheres at CSGโšก 640.15 โ€“ 0.4 s
โœ… FastTwo spheres at CSGโšก 128 ยท a 200 mm plate โˆ’ 100 holes in one operation0.4 s ยท 0.8 s (preview after 0.1 โ€“ 0.25 s)
โœ… Fast pathUnion of 200 spheres that do not touch โ€” 19.5 M vertices, merged without the boolean engine3.6 s
โš  SlowerTwo spheres at CSGโšก 256 ยท CSGโšก 512 (~1 M triangles in)1.1 s ยท 4.0 s (preview after 0.1 s)
๐Ÿ”ด HeavyUnion of 100 overlapping spheres at 128 segs โ€” 3.2 M triangles in, 1.2 M vertices out12.7 s (preview after 0.5 s)
Memory
Pool AUTOSized at startup from the RAM the engine reports as free โ€” 2 GB (the maximum) on a 64 GB machineWatch the MEM gauge at bottom right
๐Ÿ”ด SaturationRed MEM gauge โ€” very large CSG history or heavy importsSave, 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: use native MEDUSA โ€” it starts automatically in the Electron app; the browser edition can use the optional companion
ยท Big STEP assemblies: prefer the Electron app with bundled MEDUSA for native import and per-face colours; loading time and memory needs depend on the file
ยท STL 128 segs: enough for a 0.4 mm FDM nozzle (printer resolution > 0.2 mm)
โœ… Geometry, files and compatibility
Printable geometryPrimitives and generators are designed to produce closed solids. Complex edits, booleans and imported models still need checks in the target slicer or CAD tool; no repair-free outcome is guaranteed for every combination.
Faithful colorsSource colours are read per part and, where supported, per face. Appearance depends on the styling present in the source file and the import path.
Nothing leaves your machineCAD files are read and processed locally; no CAD file upload is required. The Electron app and its bundled MEDUSA communicate through an internal pipe on your computer.
Works offlineThe desktop package includes the modelling assets, engine and runtime dependencies for local use. Offline use of the browser edition depends on the files downloaded or cached. External documentation links require a connection.
Construction historyNASSCAD boolean operations keep their construction tree for Re-run and Explode. Save a NASSCAD JSON project to retain editable application data; mesh exports are exchange files.
๐ŸŽฌ Authors
NASSCAD V4.7.0
โœ 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) ยท 19 watertight primitives ยท browser Manifold WASM fallback ยท Solar system & original four-cylinder engine demos ยท managed NassScript Stop ยท 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.

Chat with me