Skip to content

05 send

Christophe Barlieb edited this page May 5, 2026 · 2 revisions

5. Send to RoboDK

Click 3. Send to RoboDK in the panel. The plugin launches RoboDK (or attaches to a running instance), loads the bundled 3DP_v0.4.rdk station, adds the toolpath as a Curve Follow object, binds it to the 3DP_Template machining project, and triggers program regeneration — all via a Python subprocess that talks to RoboDK over its API.

📷 RoboDK window after Send: station loaded, toolpath curve visible under BasePlate02, the generated program highlighted in the tree.

The out-of-bounds gate

If the previous slice's post-slice build-volume check armed the overflow flag, Send is hard-blocked. A popup explains that the robot would crash, and the click is refused. Re-slice with the issue resolved (move the part, lower shrinkage %, expand build volume) and the flag clears on the next successful slice.

📷 The "robot would crash, Send blocked" popup.

What happens during Send

  1. Combine frames — skirt + base + part frames concatenated into one continuous stream.
  2. Serialize to JSONFrameSerializer writes the frames + RoboDK paths to a temp file.
  3. Spawn Python subprocesscmd.exe launches python <generated script> with the JSON path; stdout/stderr redirected to %TEMP%/ccl_clay3dp_<TIMESTAMP>.log.
  4. Python connects to RoboDKRobolink() auto-launches RoboDK if not running. If RoboDK is already running with a different station, you get a "replace session?" confirmation.
  5. Load stationsetParam Unsaved=0 (suppress save-prompt), CloseStation, AddFile station_template.rdk.
  6. Add curveAddCurve with the combined skirt+spiral+part curve.
  7. Bind — find the 3DP_Template machining project, call setMachiningParameters with the curve.
  8. Hand off — Python keeps running while RoboDK regenerates the program. C# returns after a 5 s wait that catches fast failures.

For the full diagram with every gate and call, see ARCHITECTURE.md § 4.

What gets sent — every setting

Plugin setting RoboDK parameter Effect
FeedRate SpeedOperation Operation speed along the curve
TravelSpeed SpeedRapid Approach / retract speed
SpindleSpeed CallPathStart event S<value> inserted before first curve point
NozzleTool PoseFrame T10 / T11 / T12 frame becomes the active reference
(always 0) ApproachRetractAll Disabled — skirt + part are one continuous path
(always S1) CallPathFinish event Extruder off after last curve point — see G-code conventions
(always 0) Rounding / RoundingOn No blending — KUKA CNC handles via #HSC

If something goes wrong

The Python script's stdout / stderr is captured to %TEMP%/ccl_clay3dp_<TIMESTAMP>.log. The path is logged by the plugin on each Send. If RoboDK opens but no program appears, this log is your first stop — it'll show exactly which API call hung or errored.

📷 Example log file content showing a successful Send sequence.

For first-send issues specifically, see Troubleshooting on the Install page.

Next: 6. Post-process to KUKA.

Clone this wiki locally