Skip to content

No-Go Areas and 3D simulation #1

Open
0sander wants to merge 4 commits into
RinthLabs:mainfrom
0sander:main
Open

No-Go Areas and 3D simulation #1
0sander wants to merge 4 commits into
RinthLabs:mainfrom
0sander:main

Conversation

@0sander

@0sander 0sander commented Apr 3, 2026

Copy link
Copy Markdown

Hey Ben,

i have added two features that I thought would be useful:

  • No-go areas that are omitted in path calculations to avoid hitting larger components
  • Simulation mode to preview solder-tip movements in a 3d visualization. Has the option to load a 3d model (GLB) of the PCB and components. Tested with converted STEP files from easyEDA. Helpful for verifying No-go areas

Cheers,
0sander

@BenRinthLabs

Copy link
Copy Markdown
Contributor

Very cool features! Thanks for building these.

Can you update the "No Go" clear button to be the same size as the other buttons, like the "Clear Path" button
image
It might be nice to have a way to resize/reposition/individually delete the no go zones but it's honestly very usable as it is now.

If you could somehow pair the "No-Go" zones to a PCB that'd be nice too, but at the same time I don't want this web app to get overly complex. Eventually I'd like to have a way to load multiple PCBs. Kind of like how 3D printer slicers allow you to load in multiple 3D objects to print.

I tested exporting a GLB file from KiCad of the PCB Breadboard test board but it didn't seem to load. I'll attach it here. Can you fix that bug? If you have time, it'd be nice if it could also load STL and STEP files too. I know that's possible with ThreeJS
image
V1.1.1-Locking-3D.zip

Also can you update the colors to match the branding of the 2D view?

If you have time, it'd be nice if you could create a 2D plate with a tiled texture that matches the grid pattern of the interconnecting brick plate. That way the 3D preview matches the 2D preview

It would also be nice to have markers on the timeline and skip buttons for each solder point in the preview
image

Thanks again!
-Ben

@0sander

0sander commented Apr 8, 2026

Copy link
Copy Markdown
Author

Hey Ben,
Thanks for the detailed feedback! I've addressed everything you mentioned:

No-Go Zones

  • Removed the "Clear Zones" button entirely — each zone now has its own small (x) delete button when in edit mode
  • Added resize handles (corners + mid-edges) so zones can be resized by dragging
  • Zones are saved/loaded with project files

3D Simulator

  • Fixed the KiCad GLB loading issue — added better error handling and status feedback
  • Added STL support via Three.js STLLoader
  • Added native STEP/IGES support using occt-import-js (WebAssembly). The ~8 MB engine is lazy-loaded only when a STEP file is first opened, so it doesn't impact initial page load. Shows a loading overlay with progress indicator since parsing can take a while
  • Updated colors to match the 2D view branding (green PCB, red solder pads, dark holes)
  • Added a tiled build plate texture that matches the 2D editor's brick grid pattern
  • Added solder point timeline markers with prev/next skip buttons and a point counter
  • Added a model adjustment overlay panel (rotate 90° steps, offset with selectable step size, save/load alignment as JSON)

Model orientation / positioning
The default orientation of loaded 3D models is still a bit hit-or-miss — different tools seem to export with different coordinate conventions, so there's no single auto-rotation that works for everyone, yet. For now, the adjustment overlay with save/load alignment JSON is the workaround: dial in the orientation once per project and reuse the settings file.
Let me know if there's anything else you'd like adjusted!
Cheers,
0sander

@BenRinthLabs

Copy link
Copy Markdown
Contributor

Very nice! I love the changes you made to the 2D No Go zones.

Could you adjust a few more things on the 3D view?

image

In addition to the 3D button controls, could you add the ability to enter specific values for XYZ for the rotate and position of the loaded 3D models?

The loaded 3D model doesn't get saved/loaded with the project file. I could go either way one this, but I feel like saving the file inside the json file might be overkill. But we should save the XYZ position and rotation of the 3D model, and then if you load in the 3D model again it will remember it's placement.

Also can you update the colors of the 3D view to match the colors of the 2D view? Also right now it's really hard to see the light gray lines that show the movement path against the light gray interconnecting brick plate

image

Can you fix the alignment of the tick lines on the timeline and the play head of the timeline?

After those changes are made I'll merge this in, thanks for helping out with this project!

-Ben

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants