-
Notifications
You must be signed in to change notification settings - Fork 0
software stack
CCL_Clay3DP is one piece of a four-layer stack. This page documents how the layers fit together and where each is responsible.
flowchart LR
Rhino[Rhino 8] --> Plugin[CCL_Clay3DP plugin]
Plugin --> RoboDK[RoboDK]
RoboDK --> Post[KUKA CNC ISG post]
Post --> Controller[KUKA CNC ISG 2.1 controller]
The user's modeling environment. CCL_Clay3DP is a Rhino 8 plugin (.dll); it shows up as a dockable panel inside Rhino, takes a Brep / mesh from the active document, and bakes its output (toolpath, skirt, build-volume box) back into Rhino layers under 3DP::*.
- Required version: Rhino 8 (uses RhinoCommon 8.x and Eto.Forms)
- Platform: Windows only — see Install for the macOS plan
The C# plugin in this repository. Responsibilities:
- Pick geometry, slice it (Spiral or Layer mode)
- Compute frames (positions + normals) along the toolpath
- Run the printability analyzer (overhang, layer bond, wrist velocity)
- Bake everything back to Rhino layers
- Hand the frames + station settings off to RoboDK via a Python subprocess
Internal architecture is documented exhaustively in ARCHITECTURE.md at the code repo root. The dependency direction is: UI → Settings → Analysis → RoboDK → Core → Models (Models is the leaf, has no deps).
📷 Screenshot of the docked panel inside Rhino, with a part selected and toolpath visible.
Robot simulation and program-generation environment. CCL_Clay3DP launches RoboDK (or attaches to a running instance) via the Python API, loads the bundled 3DP_v0.4.rdk station, adds the plugin's curve as a Curve Follow object under BasePlate02, binds it to the 3DP_Template machining project, and triggers program regeneration.
-
Required version: 6.0.x (the bundled
layout6.0.1.iniis version-pinned; older / newer RoboDK still works, the layout file just gets ignored) -
Required Python install:
C:\RoboDK\Pythonwith the RoboDK Python API - Required station setup: see CCL-ALTAR-01 for the named-frame contract
📷 RoboDK window showing the loaded station with a generated program in the tree.
The custom post processor — KUKA_CNC_2_1_ISG_CCL_3DP_WIP_MS_S_INT_HSC_WAIT_S_DELAY.py — converts RoboDK's tool path into KUKA CNC ISG G-code with the lab's specific extensions:
-
#HSCBSPLINE smoothing for continuous tool motion (no path stops at frame boundaries) -
T<N> M6tool-change per reference frame (T10/T11/T12) - Extruder lead compensation (timing offset between motion and SPD command)
-
G4 X<seconds>dwell (note: RoboDK's input isG4 P<ms>— the post divides by 1000)
The post is bundled with the plugin's release bundle and lives in the PostProcessor/ subfolder of the code repo. Install per Install — step 3.
The robot's actual controller. Receives the G-code program over the lab's transfer mechanism (USB stick or network share, depending on cell config) and runs it on the physical KUKA. The plugin doesn't talk to this layer directly — RoboDK + post-processor produce the file, and a human (or operator script) hand-loads it to the controller.
See Pipeline 7 — Run on the robot for the load-and-run workflow.