TLDRThe THREE.js CAM demo took its first flight, and it's as exciting as it soundsāthink spinning cutters and twirling axes in a browser-based sandbox that's mimicking real machine paths. Watching the toolpath come to life with dynamic movement makes all those coding hours worthwhile. If you're curious, dive into the interactive playground to see this virtual machining magic for yourself. š ļøāØ
Show moreShow less
Big momentātime to push pixels into motion and see if the browser-based CAM sandbox behaves like a real machine. Spoiler: the cutters danced, the A-axis twirled, and I grinned like a kid with a brand-new loupe. š
Watching the path morph in real time made all those late-night refactors worth it. The spindle spins, the passes layer up, and the code footprint shrinks with every arc conversion.
Curious? Load the sandbox, drop a few points, and watch the tools trace air:
TLDRToday's G-Code update is a game-changer for smoother CNC operations: automatic pass-count adjusts cuts for different materials, arcs are now cleaner, and tool changes are seamless with new M6 support. The new code structure, with its tidy headers and footers, reduces machine downtime and stress, making programming more efficient and satisfying. If you're running a CNC, this update means less manual intervention and more precisionāgive it a spin and see for yourself! šš§
Show moreShow less
Today the toolpath builder got a healthy dose of refinementālittle tweaks that make the code cleaner, the machine happier, and me way less stressed. Hereās the highlight reel:
More passes, smarter chips. Added automatic pass-count logic so the engine tweaks depth and step-over based on cutter diameter. Brass, steelāeach material now gets just enough nibbles to keep chatter away without wasting machine time.
Arc simplification. Goodbye clunky point-to-point lines! A quick geometry pass converts eligible segments into slick G2/G3 moves. Fewer commands, smoother motion, prettier cutter marks. The spindle feels like itās gliding on rails. š
Tool-change support. We finally speak fluent M6. Pick one cutter for rough, another for finish, and the post inserts a safe retract, spindle stop, and automatic offset call. No more pausing the CNC mid-cycle to swap tools by hand.
G-Code header & footer polish. Kicked off a tidy preambleāunits, work offsets, RPM, coolantāso every file starts the same. The footer parks axes, shuts the flood, and drops a cheeky comment that logs cycle time. Consistency really is underrated bliss.
Visual reference on every angle. Each time the A-axis rotates, the viewer drops a translucent āghostā of the cutter at the new orientation. Itās like leaving breadcrumbs in 3-D spaceāone glance tells you if the tool is clear of clamps before committing chips.
Watching the code scroll now feels oddly satisfying: fewer characters, cleaner arcs, and that crisp header/footer sandwiching everything into a neat package. Next on deck? I think I'll try it on the machine with an empty stock, but with a mill. š§āļø
TLDRDialing in a tool-centering camera is a precision task, almost like a watchmaker's job, but the effort pays off. With a dual-screen setup, neat wiring, and the perfect camera angle, getting those ultra-close shots has become more efficient and civilized. The challenge now is refining the Y-axis tool-centering routine for consistent accuracy, and once the A-axis rotation is perfected, it's full steam ahead with carbide bits. š
Show moreShow less
Took a breather from grinding CVD-tipped carbide bits and gave my eyes (and ears) a treatācamera alignment day! Getting the lens perfectly in line with a tool thatās barely thicker than a hair turned out to be its own little horological adventure.
Todayās mini-wins:
Dual-screen holder rig. Whipped up a two-arm stand so the inspection cam and its monitor hover as one unit. No more craning my neck between desk and machineājust glance, tweak, cut.
All wired, zero spaghetti. USB, power, HDMIārouted and zip-tied so nothing snags a moving axis. The garage looks⦠well, almost civilized. š
Found the sweet angle. A few degrees off-vertical gives just enough depth to judge tool height without hiding the cutting edge in glare. The moment the flute catches the light, you know youāre on plane.
Because the shot is crazy close-up, even stepping in front of the lens nudges the frame. The tripod quivers, focus wobblesābut itās promising. A chunkier base or maybe a bit of mass-loading clay should calm those micro-tremors.
Most machinists center a tool by reading the tipās X/Y, subtracting half the diameter, and calling it good. Easy mathāunless your headstock boasts a full Y-axis (tool height) like mine. That third coordinate means the classic ādiameter Ć· 2ā trick only gets me halfway. Iām experimenting with a quick probe routine: kiss the tool off a ceramic block, capture the video zero, then jog Y until the flute vanishes beneath a reference line on-screen. Still rough, but at least itāll be repeatable.
Next up: heading back to those carbide-bit toolpathsāthe last puzzle piece is rotating the A axis after every pass so the cutter always meets fresh stock. Lock that in and the chips can finally fly. šš ļø
TLDRThis blog dives into a slick browser-based toolpath generator using THREE.js and React, transforming sketch or point-cloud inputs into animated, precise cutter paths without the hassle of G-code. Key highlights include spindle animations that visually indicate RPM and load issues, a parametric feed rate that color-codes speed, and easy geometry integration with JSON snippets. The real game-changer? It's all about geometry-driven intent rather than raw code, making it both user-friendly and safer for precision tasks. Perfect for those looking to streamline and visualize their CNC processes! š ļø
Show moreShow less
Another sprint in the virtual workshop and the browser-based toolpath generator keeps getting sharper. What started as a proof-of-conceptārendering cutter sweeps in THREE.jsānow feels like a pocket-CAM you can open in a tab. The latest drop trades raw G-code import for something a little smarter: you sketch or paste a cloud of points, choose an offset distance, and the engine morphs that outline into a tight, back-and-forth tool dance complete with automatic retracts. No post-processor, no syntax errorsājust pure geometry turned into motion.
Milling-bit animations. The spindle finally spins on screen! Each virtual tool carries its own loop keyed to your feed-slider, so a 12 000 RPM rougher whirls visibly faster than a 2 000 RPM finisher. Itās more than eye-candy: the motion helps spot mismatched step-overs at a glanceāif the cutterās screaming yet progress crawls, you know the chip load is off.
Parametric feed rate. Instead of parsing an F-word from G-code, a single slider now drives the linear feed for every segment the engine creates. During playback the toolpath hue shifts from cool blues at gentle feeds to warm ambers when you start pushing the limits. One glance tells you if your brass rough pass is baby-slow or your carbide micro-bit is about to cry.
Plug-and-play geometry. A refactor of the component library means adding new cutter shapes or diameters is basically a one-liner. Drop a JSON snippetā{ "type": "ballEnd", "diameter": 0.12 }āand the scene pulls in a pre-scaled STL, mounts it in the spindle, and wraps collision boundaries around the business end. Ideal when youāre juggling watch-scale tooling: need a 0.07 mm carbide ball nose? Pop it in, hit save, done.
Scroll-through collision hunt. The timeline now sports a buttery scrollbar that lets you scrub every move frame-by-frame. Potential crashes flash crimson, the camera snaps to the offending vertex, and the point-cloud offset updates live so you can widen clearances without playing detective. On a 4-axis barrel-arbor jobāthousands of tiny A-rotationsāthat feature already saved me hours of forehead-denting.
Shape morphing instead of G-code. Hereās the big architectural twist. Rather than feeding the simulator raw NC code, you define intent: points that describe the partās silhouette or an engraving loop. The engine expands that outline by your chosen distance, zigzags across the interior with an automatic step-over, and inserts retract hops at the boundaries. It then feeds those moves straight into the animation layer. Less control for now, but zero chance of a missing G00 sending the spindle through the table. Baby steps, but safe ones.
Tidy React hooks. Under the hood, React keeps state crisp while THREE.js handles shaders and meshes. I tossed out the imperative spaghetti, replaced it with functional hooks, and tidied context so the codebase finally feels as clean as the renders. Next stop: physics shaders so the chip-fling direction changes when the spindle tilts. Because why not? š ļø
TLDRI just laid out a 3-stage plan to craft micro-cutters from solid carbide using a 4-axis CNC, all before making the first cut. The stagesācoarse roughing, detail roughing, and edge finishingāare meticulously planned to ensure precision and a flawless finish. While Fusion 360 lacked some finesse, I created a custom toolchain to overcome its limitations, aiming for perfection in crafting intricate watch parts. š
Show moreShow less
Quick Recap āļø
Hey there, fellow watch-tinkerers! Iām still deep in big-whiteboard territoryāsketching every wheel, pivot, and bridge for my future movement while learning the nuances of a freshly built 4-axis CNC setup. No chips have flownāyetābut today I pinned down the machining playbook for two fully-sintered carbide micro-cutters. Each cutter will sculpt module 0.13 teeth on both the wheel and its mating pinion. Laying rock-solid foundations now should make first-cut day feel almost calm. š
Todayās Deep Dive: Simulating the 3-Stage Cutter Strategy
Both cutters share the same three-step journey; only the final edge profile changesāone hugs the broader wheel involute, the other traces the slimmer pinion flank:
This first pass slims the 6 mm blank to about 2.2 mm in the cutting zone. Fusion 360ās adaptive roughing, paired with an 8 % synthetic-coolant mix, keeps simulated spindle load under 40 % and temperatures steady.
This pass shapes the shank relief and rough involute flanks to ±0.02 mm, leaving 30 µm for finishing. A mist-plus-air blast in the simulation prevents heat spikes while the A-axis keeps the blank rolling smoothly.
Stage 3 ā Edge Finishing Planned tool: the same 1 mm bit, side-milling with its flute edge Simulated spindle: 38 000 RPMā|āRadial DOC: 1 µmā|āAxial step-up: 5 µm
Pure climb cuts deliver a predicted mirror finish of Ra ⤠0.15 µm. Wheel and pinion curves are saved as separate ātraceā paths, swapped in at post time.
Where Fusion 360 Fell Shortāand the DIY Detour š ļø
Fusion handled bulk removal nicely, but it simply wouldnāt allow multipass refinement when using multi-axis strategies like Swarf or Flow. Rather than compromise, I built a home-grown toolchain: TypeScript + THREE.js for 3-D visualization, plenty of trig to unwrap toolpaths, and ChatGPT to sanity-check the math. The script now exports blend-free G-code with helical lead-outsāsomething Fusion canāt (yet) doāso every line is under my control.
Target metrology: OD 2.000 ± 0.005 mm, tooth height 0.300 ± 0.003 mmānumbers Iāll verify in situ once the cutters arrive. Imagine neon toolpaths swirling like a galaxy instead of metal chips and youāll have the idea. š
Next Steps š§
Receive & loupe-inspect the Harvey Tool CVD mills (20Ć check on every flute).
Clock run-out to < 3 µm in the ER-20 collet system.
Dry-run Stage 1 G-code above a foam dummy to confirm clearances.
Tweak coolant-nozzle positions for uninterrupted chip evacuation.
Sign-off & Call-to-Action
Thanks for following along! If youāve broken-in CVD tooling or have hard-won tips for ultra-fine gear cutting, Iād love to hear themādrop a reaction below or reach out on Nostr at @bitcoinwatchmaker. Your insights help turn these plans into perfectly cut teeth. š
TLDRFusion 360's manufacturing extension isn't cutting it (literally) for precise multi-pass G-code tasks, frustrating even after forking out for it. So, instead of settling, I whipped up a custom solution using Vite and THREE.js to generate the G-code I needed. Sometimes DIY is the only way to get what you want, especially in CNC milling. š»āļø
Show moreShow less
OH MY GOD. Fusion is great... but it can be painful.
All I wanted was a simple G-code pass ā just take the CVD-coated mill bit and slowly shape it, one layer at a time.
But nope. Even after paying for the manufacturing extension, Fusion won't do it. Swarf? No multi-pass. Rotary parallel? Same story. Always goes deep. Always skips the careful steps I need.
What is this? this is a tool to cut the gear teeth which are super specific, delicate, so im having to mill fully sintered carbide, with diamond coated (CVD) tools, freaking carbide is what cuts everything else... this according to chatgpt is the limit of what can be done in CNC... not bad for a newbie haha
So... time for the long route. Built a Vite app. Hooked it up with THREE.js. Loads an STL and spits out the G-code I actually want š»āļø
Normally I cant opensource things due to the NIHS rules being implemented everywhere, this I can if anyone wants it let me know
TLDRThe Train-of-Wheels script just got a significant upgrade: it now assembles everything from wheels to rubies with a single click and fine-tunes rotations for perfect symmetry. The standout? A Bitcoin 10-minute complication thatās ready to tick along blockchain time. Next, the focus shifts to crafting precise carbide bits for ultimate watchmaking precision. š ļøāļø
Show moreShow less
Big milestone todayāthe script now spins up wheels, staffs, and a full mainspring barrel in one click, then drops rubies into custom holders like itās dealing cards at Monte Carlo.
Materials snap into place tooābrass for wheels, polished steel for staffs, deep-red ruby jewels, and a flash of blued steel where it countsāso the CAD preview already looks heat-blued and bench-ready.
The real magic? A tidy joint system that lets me dial each rotation until the whole train lines up in picture-perfect symmetry. I also reworked the clearances between wheels so the bridges drop in clean and pick up those sweet 0.07 mm chamfers without a fuss. Watching it lock in is pure watch-nerd bliss.
Bonus win: after some head-scratching I finally found the sweet spot for the Bitcoin 10-minute complicationāa pinion driving a wheel that meshes with an inner gear. Woah, canāt wait to see that block-time tick! āæ
Next up: diving into milling fully-sintered carbide bits shaped to match each tooth profileāturning pixels into cutting edges one micron at a time. Stay tuned! š ļøāļø
Script also adds the cuts so the wheel and pinion can be joined
TLDRI'm refining my watch design by choosing specific jewels for different parts: olive ring jewels with dual oil cups for the center and fourth wheel staffs, and a mix of olive/bombe and straight ring jewels for the escapement. I've also introduced a jewel holder, which will make maintenance easier and might allow for some cool material experiments like heat bluing. š§šµ
Show moreShow less
Kept pushing the script forward ā this thingās growing fast.
Settled on three jewel types. For the center and third wheel staffs, Iām using olive ring jewels with 2 oil cups on the bottom (dial side), and olive/bombe ring jewels on top (plate side).
Fourth wheel gets the same: olive with 2 oil cups. For the escapement, Iām going with one oil cup olive jewel on the bottom and a straight ring jewel with oil cup facing the dial.
Also added a jewel holder to the mix. Makes future servicing easier š§ and gives me room to explore materials and maybe some heat bluing šµ
TLDRRealized a tiny error in my calculations could throw everything off, so I went back to basics: recalculated gear ratios with AI's help and aligned everything to NIHS standards. Now, itās precise and ready for the next steps, like adding Bitcoin features and jewel positions, one careful step at a time. š ļøš
Show moreShow less
Rushed ahead a bit... then realized the numbers werenāt lining up. Even the tiniest error matters here.
So I paused. Took a step back. Recalculated everything š
Wrote a script ā with a little help from AI š¤ ā to find the exact gear ratios I need. No guessing. Just clean math.
Then came the drawing script, built to match those ratios and follow NIHS standards to the dot š
Now it feels solid. Precise. On track.
Iāll keep building on this ā adding the Bitcoin complication āļø, jewel positions š, and initial bridges. One step at a time.
TLDRYour lathe is finally set up and ready to work after a lot of trial and error, including rebuilding it from the ground up due to some serious manufacturer issues like vibrations and bad software. Youāve now got a solid tool setup and tackled a steep learning curve with electronics, thanks in part to some crucial help from Alexis. Next up: refining your machining skills and creating some intricate mechanical art. šØš ļø
Show moreShow less
After weeks of learning, mistakes, and exciting breakthroughs ā the lathe is finally good to go! š ļø
I had to remake the backplate three times due to different layouts. The lathe's travel is limited, so I had to get creative. But now itās dialed in and solid.
ā ļø Manufacturer Woes (Mucho NO recommendo)
To be honest ā the manufacturer did a terrible job on this lathe. It came with:
Insane vibrations
Super loud noise during operation
Broken and unconfigurable software
Default tool change macro that literally caused a collision š¤
That mess sent me down the rabbit hole of rewiring, reprogramming, and rebuilding much of the system from scratch. Painful⦠but I now know the machine inside out!
HSS Cutting Tool ā hand-ground by me at a 45° angle. My first toolmaking experiment!
Micro 100 Grooving Tool ā fantastic for tight grooves and channeling.
Cutout Tool ā great for partying shapes with high precision.
Drill Fixture ā holds fixed drills securely for consistent center holes.
āļø Motor: The Real Challenge
The motor was the trickiest part. I used a Teknic ClearPath Integrated Servo Motor, paired with a power supply, analog send unit, and 22 AWG cables. Iāve never worked with electronics before ā so learning to use a multimeter, solder, crimp, and protect everything properly was a major win.
Big thanks to Alexis ā couldnāt have done this without his help! š
š Spindle & Drive
I went with a Power Twist V-belt. Pulleys are almost 1:1, and even though thereās some drop in RPM (from 2520 to 2320), it feels solid and precise so far.
ā Past Weeks Recap
Polished the keyless works, winding mechanism, bridges, and barrel arbor
Aligned the Elara 4th axis to within 0.01°
3D printed the case, revised leg length to avoid scratches
Built a new brass fixture for 3.0mm stock (no more Loctite hacks!)
Achieved 2μm precision in XYZ on the Elara mill
Got replies from Incabloc and updated the balance staff accordingly
Started grinding my own lathe tools from HSS bar stock
Published all blog updates via Nostr ā auto-summarized with ChatGPT
š® Whatās Next?
Finish the balance staff with final jewel specs
Cut, test, and compare Micro 100 vs HSS tools
Design and fabricate the elusive crown gears
Improve pulley ratios and optimize RPM at the spindle
Figure out how to secure the movement inside the case
Start polishing and finishing parts for real assembly!
Super excited for whatās coming! Letās make some beautiful, tiny mechanical art šāØ