<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nasser</title>
    <description>The latest articles on DEV Community by Nasser (@nasser_7cff6f77e08155b603).</description>
    <link>https://dev.to/nasser_7cff6f77e08155b603</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3932624%2Fc8c8a157-2ce2-4213-80b8-aa7ea4ee4a54.png</url>
      <title>DEV Community: Nasser</title>
      <link>https://dev.to/nasser_7cff6f77e08155b603</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nasser_7cff6f77e08155b603"/>
    <language>en</language>
    <item>
      <title>NASSCAD 4.3.0</title>
      <dc:creator>Nasser</dc:creator>
      <pubDate>Sat, 11 Jul 2026 06:33:34 +0000</pubDate>
      <link>https://dev.to/nasser_7cff6f77e08155b603/nasscad-430-3cjm</link>
      <guid>https://dev.to/nasser_7cff6f77e08155b603/nasscad-430-3cjm</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/weekend-2026-07-09"&gt;Weekend Challenge: Passion Edition&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;What I Built&lt;/p&gt;

&lt;p&gt;Meet NASSCAD — a 100% offline, client-side, parametric 3D CAD modeler that lives entirely inside a single, lightweight HTML file.&lt;/p&gt;

&lt;p&gt;My goal was to create a zero-install, zero-backend, privacy-first 3D modeling environment that bridges the gap between lightweight web visualizers (like Tinkercad) and robust constructive solid geometry (CSG). Powered by Three.js for rendering and Manifold WASM for lightning-fast, rock-solid boolean operations, NASSCAD lets users build, manipulate, and export precise geometries directly in the browser without ever talking to a remote server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;You can experience NASSCAD right now by downloading or opening the single-file interface, or test the live deployment here:&lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Live App: &lt;a href="http://www.nasscad.com" rel="noopener noreferrer"&gt;www.nasscad.com&lt;/a&gt; online and offline versions

&lt;p&gt;Video Walkthrough: [Link to a short YouTube or Loom demo showcasing parametric manipulation and watertight boolean exports]&lt;br&gt;
&lt;/p&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  Code&lt;br&gt;
&lt;/h2&gt;

&lt;p&gt;The entire codebase is packaged into a clean, modular structure embedded inside an optimized distribution. You can explore, fork, or contribute to the project on GitHub: AIO all in one htm works with natives windows box (save as , load as , import , export , load/save json project nasscad with using chrome navigator :)&lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GitHub Repository: &lt;a href="https://github.com/Nx-Nass/Nasscad_4.2.7" rel="noopener noreferrer"&gt;https://github.com/Nx-Nass/Nasscad_4.2.7&lt;/a&gt;&lt;br&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  How I Built It&lt;br&gt;
&lt;/h2&gt;

&lt;p&gt;Building a performant CAD kernel in the browser comes with unique constraints:&lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;The Single-File Challenge: Keeping everything self-contained meant bundling ES-module shims, shaders, and UI logic cleanly within a unified structure.

&lt;p&gt;Watertight Manifolds: Standard WebGL renderers use polygon approximations that often result in non-manifold meshes. By integrating the WebAssembly build of Manifold, every union, intersection, and difference operation guarantees a mathematically closed, 3D-printable solid.&lt;/p&gt;

&lt;p&gt;Parametric Primitives &amp;amp; Fillets: Rather than relying on static meshes, primitives are procedurally generated, supporting dynamic bevels (chanfreins) and smooth fillets (congés) via custom 2D shape extrusions and revolutions.&lt;br&gt;
&lt;/p&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  Prize Categories&lt;br&gt;
&lt;/h2&gt;

&lt;p&gt;Best Use of Google AI: (Optional — remove this section if you aren't integrating AI features like NassScript generation or text-to-CAD parsing)&lt;/p&gt;

&lt;p&gt;&amp;lt;!-- Team Submissions: Please pick one member to publish the submission and credit teammates by listing their DEV usernames directly in the body of the post. --&amp;gt; watertight technics with help from gemini (a genious in shorts code and short algorithms &lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
    </item>
    <item>
      <title>NASSCAD V4.2.7 — A full CAD modeler that lives in a single HTML file</title>
      <dc:creator>Nasser</dc:creator>
      <pubDate>Fri, 15 May 2026 07:47:53 +0000</pubDate>
      <link>https://dev.to/nasser_7cff6f77e08155b603/nasscad-v42-a-full-cad-modeler-that-lives-in-a-single-html-file-2jf2</link>
      <guid>https://dev.to/nasser_7cff6f77e08155b603/nasscad-v42-a-full-cad-modeler-that-lives-in-a-single-html-file-2jf2</guid>
      <description>&lt;h1&gt;
  
  
  NASSCAD V4.2.7 — A full parametric CAD modeler that lives in a single HTML file
&lt;/h1&gt;

&lt;p&gt;What if your entire CAD environment was one &lt;code&gt;.htm&lt;/code&gt; file you could double-click, drop on a USB drive, or host on a static server — no install, no cloud account, no subscription?&lt;/p&gt;

&lt;p&gt;That's NASSCAD. And version 4.2.7 is a serious piece of engineering.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — Full Boolean CSG, &lt;strong&gt;18 watertight primitives&lt;/strong&gt;, parametric screw &amp;amp; nut generators (ISO 68-1 / ASME B1.1 / ISO 4032/4033), non-destructive CSG history tree, BVH raycasting, a 2 GB geometry arena with mark-and-sweep GC, STL / OBJ / 3MF / GLB / PLY import-export, NassScript JS console, live-preview modals with sliders. Zero runtime CDN fetches. Works completely offline. Free (CC BY-NC 4.0).&lt;/p&gt;




&lt;h2&gt;
  
  
  The premise
&lt;/h2&gt;

&lt;p&gt;Most browser-based CAD tools lean on CDNs, backends, or cloud rendering pipelines. NASSCAD goes the opposite direction: every dependency — Three.js r128, the Manifold WASM CSG engine, fonts, all geometry modules — is either bundled inline or base64-encoded and decoded at runtime via &lt;code&gt;atob()&lt;/code&gt;. The &lt;code&gt;manifold.wasm&lt;/code&gt; binary lives inside the HTML itself.&lt;/p&gt;

&lt;p&gt;This is not a toy viewer. It's a full parametric modeler with Boolean operations, a construction tree, undo/redo, multi-format export, scripting, and a 2 GB memory arena — in a single file you can save to your desktop and run forever, offline, with no server.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's new in V4.2.7
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🔩 Screw.Gen — ISO 68-1 / ASME B1.1 / B1.2
&lt;/h3&gt;

&lt;p&gt;Parametric screw generator with real ISO 60° V-thread profile:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Standards&lt;/strong&gt;: Metric M2–M24 (ISO 68-1) · Imperial UNC/UNF (ASME B1.1/B1.2)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pitch modes&lt;/strong&gt;: Coarse / Fine / Custom / Smooth bore&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Head styles&lt;/strong&gt;: Hexagonal · CHC Socket · None (threaded rod)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lead-in / lead-out&lt;/strong&gt;: 1 pitch ramp for clean boolean operations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resolution&lt;/strong&gt;: N_RAD 32 / 48 / 64 / 96&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watertight manifold guaranteed&lt;/strong&gt; — double-click to re-edit&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⬡ Nut.Gen — ISO 4032/4033 · ASME B18.2.2
&lt;/h3&gt;

&lt;p&gt;Parametric nut generator with interior ISO 60° threaded bore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Standards&lt;/strong&gt;: Metric M2–M24 · Imperial UNC/UNF&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pitch modes&lt;/strong&gt;: Coarse / Fine / Custom / Smooth bore&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Height styles&lt;/strong&gt;: ISO 4032 normal · ISO 4033 Tall · Custom height slider&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chamfer&lt;/strong&gt;: Optional 30° chamfer on top/bottom faces&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resolution&lt;/strong&gt;: N_RAD 32 / 48 / 64&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watertight manifold guaranteed&lt;/strong&gt; — double-click to re-edit&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  X-Ray mode
&lt;/h3&gt;

&lt;p&gt;Toggle wireframe overlay on the entire scene with a single keystroke (&lt;code&gt;X&lt;/code&gt;). Essential for inspecting boolean operations and internal geometry without exploding the CSG tree.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scale improvements
&lt;/h3&gt;

&lt;p&gt;Toolbar now has symmetric scale buttons: &lt;code&gt;/10&lt;/code&gt; &lt;code&gt;/5&lt;/code&gt; &lt;code&gt;/2&lt;/code&gt; &lt;code&gt;1×&lt;/code&gt; &lt;code&gt;2×&lt;/code&gt; &lt;code&gt;5×&lt;/code&gt; &lt;code&gt;10×&lt;/code&gt; — division and multiplication in one row.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stats panel
&lt;/h3&gt;

&lt;p&gt;Vertices / Faces / Objects / Undo-Redo counter moved into the Objects panel for cleaner layout.&lt;/p&gt;




&lt;h2&gt;
  
  
  Core architecture
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Module&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Three.js r128&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;WebGL rendering, custom OrbitControls with spherical damping, dual resolution (64 segs display / 128 export)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Manifold WASM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;C++ CSG engine in a Web Worker. N-ary union in a single call. Epsilon vertex merge before handoff&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;GeometryPool&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;512 MB–2 GB binary arena. Bump allocator + free-list reuse + mark-and-sweep GC + XOR checksum&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;BVH Raycaster&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AABB world-space cache per mesh. Pre-filter before triangle traversal. Fast at 10M+ vertices&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;IndexedDB&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Named project persistence, quota display, restore on reload. CSG tree serialized with each save&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;NassScript&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Full JS console with direct access to the NASSCAD internal API. &lt;code&gt;Ctrl+Enter&lt;/code&gt; to run, history navigation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Worker Pool&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;×4 / ×6 / ×8 parallel workers for heavy CSG operations&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  The CSG engine — how it actually works
&lt;/h2&gt;

&lt;p&gt;Boolean operations go through a carefully layered pipeline:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Auto hole detection&lt;/strong&gt; — mix a solid and a hole object in a selection, NASSCAD forces subtract automatically. No manual mode switching needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;N-ary union&lt;/strong&gt; — one single Manifold WASM call for N objects, not an O(n²) pairwise loop. A scene with 21 objects unions in ~2s on a mid-range laptop.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;_tryTrivialUnion&lt;/code&gt; fast path&lt;/strong&gt; — if all selected objects are solids with no holes, skip the WASM call entirely and merge BufferGeometry directly. 6× faster for simple assemblies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Watertight invariant&lt;/strong&gt; — every geometry constructor returns &lt;code&gt;{ vPos: Float32Array, tris: Array }&lt;/code&gt;. The &lt;code&gt;Uint32Array&lt;/code&gt; wrapping happens exclusively downstream in &lt;code&gt;ToScene&lt;/code&gt; functions. This guarantees Manifold never receives a non-manifold mesh.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CSG Tree&lt;/strong&gt; — every operation is logged, re-runnable, and serialized to IndexedDB. You can replay the full construction history on reload.&lt;/p&gt;




&lt;h2&gt;
  
  
  18 primitives
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cube · Sphere · Cylinder · Cone · Half-Sphere · Tube · Roof · Arc
⚙ Gear.Gen (ISO Involute + V-Groove Pulley)
⌁ Pipe.Gen (Bishop-Frame path)
◎ Torus Ultra-HD
✦ Chamfered / Rounded Cube
⌾ Truncated Cylinder · Double Chamfer
⌀ RevSolid.Gen (Solid of Revolution)
◑ ArcSphere.Gen (Spherical Sector)
🔩 Screw.Gen (ISO 68-1 / UNC·UNF)
⬡ Nut.Gen (ISO 4032/4033 · ASME B18.2.2)
M  Threaded Fastener (M2–M20 library)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Export / Import
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Export&lt;/strong&gt;: STL (128 segs default) · OBJ · 3MF · GLB · PLY · SVG section · DXF section&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Import&lt;/strong&gt;: STL · OBJ · GLB · PLY (ASCII/binary)&lt;/p&gt;

&lt;p&gt;Hard-dimensions approach: what you model is what you export, 1:1, no scale surprises.&lt;/p&gt;




&lt;h2&gt;
  
  
  NassScript — JS console with full internal access
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Stellate Crown — procedural example&lt;/span&gt;
&lt;span class="nx"&gt;objs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;o&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;scene&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;remove&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;o&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;mesh&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="nx"&gt;o&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;mesh&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;geometry&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dispose&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="nx"&gt;objs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt; &lt;span class="nf"&gt;updStats&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="nf"&gt;showToreDialog&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="nf"&gt;_toreRebuild&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="nf"&gt;_toreToScene&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;N&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;R&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;70&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;N&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PI&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nx"&gt;N&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nf"&gt;addPrimitive&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;sphere&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;o&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;objs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;objs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
  &lt;span class="nx"&gt;o&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;mesh&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;position&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;R&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;R&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nf"&gt;setHoleMode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nx"&gt;selObjs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[...&lt;/span&gt;&lt;span class="nx"&gt;objs&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;doCSG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;union&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every internal function is exposed. Automate complex geometries, create procedural parts, chain boolean operations — all in the same window as your model.&lt;/p&gt;




&lt;h2&gt;
  
  
  Community response
&lt;/h2&gt;

&lt;p&gt;The V4.2.7 release post on &lt;a href="https://www.reddit.com/r/VibeCodeDevs/comments/1u0435z/nasscad_427_a_free_parametric_3d_cad_tool_that/" rel="noopener noreferrer"&gt;r/VibeCodeDevs&lt;/a&gt; reached &lt;strong&gt;31K views and 101 upvotes&lt;/strong&gt; in 48 hours — organic, no promotion.&lt;/p&gt;

&lt;p&gt;A few comments that sum it up:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"I had a 3D part I needed printed, and I just described it to Claude because I didn't have access to CAD software… I just tinkered for a few minutes with yours, and I was able to reproduce what Claude made for me."&lt;/em&gt; — NumberRegistry&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"What type of Godzilla prompt did you use to create this monster?"&lt;/em&gt; — zipatauontheripatang&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Claude could evaporate overnight and this tool would still work. What's wrong with that?"&lt;/em&gt; — Various-Chest-7986&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Makers testing it in the wild. The file:// architecture holds up.&lt;/p&gt;




&lt;h2&gt;
  
  
  Philosophy
&lt;/h2&gt;

&lt;p&gt;The code is open and readable. &lt;strong&gt;What can't be copied is the vision behind it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;NASSCAD targets makers and engineers who need a serious tool without a 10 GB install, a cloud account, or a monthly subscription. The entire application — geometry engine, CSG pipeline, font rendering, UI — fits in one HTML file you can save to a USB drive and run on any machine, forever, with no internet connection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it&lt;/strong&gt;: &lt;a href="https://www.nasscad.com" rel="noopener noreferrer"&gt;nasscad.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Built with Claude Sonnet 4.6 · Anthropic — AI-assisted coding&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Tags: javascript, showdev, tooling, webdev, cad, wasm, threejs, opensource&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Try it: nasscad.com&lt;br&gt;
Built with Claude Sonnet 4.6 · Anthropic — AI-assisted coding&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>showdev</category>
      <category>tooling</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
