-
Notifications
You must be signed in to change notification settings - Fork 0
contributing
This page covers what you need to know to contribute code, post-processor changes, or wiki edits to CCL_Clay3DP. The audience is split: lab members + interested external forkers.
- Windows 10 or 11 (64-bit)
- Rhino 8 (with the plugin loaded for testing)
- .NET Framework 4.8 SDK (Visual Studio 2022 includes it; standalone via the .NET Framework Developer Pack)
-
Visual Studio 2022 or VS Code with C# Dev Kit — the solution is
3DP.slnat the repo root -
Python 3.x with the RoboDK API (typically
C:\RoboDK\Python) - RoboDK running locally for end-to-end testing
git clone https://github.com/CyberCraftLab/CCL_Clay3DP.git
cd ccl_clay3dp/CCL_Clay3DP
dotnet buildThe output bin/Debug/CCL_Clay3DP.dll can be loaded in Rhino via _PlugInManager → Install…. Close Rhino before re-building — Rhino locks loaded DLLs.
📷 VS 2022 / VS Code with the solution open, build output panel showing a successful build.
Before changing anything non-trivial, read ARCHITECTURE.md — eight Mermaid diagrams + tables documenting:
- Folder map and dependency direction
- Every panel button and what it triggers
- The slice pipeline (
RunPipelineis the single entry point) - The Send-to-RoboDK pipeline
- Settings flow + class diagram
- Cached state in the panel (fields that span method calls)
- "Where to look when fixing X" cheat sheet
- Recent slice history (context for why decisions were made)
These conventions exist for hardware reasons. Violating them either breaks the cell or produces unsafe motion.
The post-processor emits S1 (extruder off) at the end of every path and F600 (mm/min) on Z plunge / retract. Never override either — see G-code conventions for why.
No hand-written or hand-edited .nc files for CCL-ALTAR-01. The pipeline is:
Rhino geometry → CCL_Clay3DP plugin → RoboDK → KUKA CNC ISG post → .nc file
If you need a G-code feature the post doesn't emit, modify the post, regenerate, verify on scrap, then deploy. See G-code conventions.
All panel-originated popups must use:
CenterOnActiveScreen(dlg);
dlg.ShowModal(); // parentlessNever dlg.ShowModal(this) — anchoring to the docked panel causes popups to clip when the panel is narrow or on a screen edge. The convention is consolidated in CenterOnActiveScreen's docstring; respect it.
Eto layout gotchas worth knowing:
- Use
Size, notMinimumSize, to constrain wrap labels —MinimumSizedoesn't always trigger reflow. - Add a null soaker row above any button row in
TableLayout— without it the button row inherits weird vertical stretching.
Per OTH IT guidelines, no laptop hostnames, full personal-account paths, or other identifying data appear in wiki content or commit metadata. The wiki's "Last edited by" indicator on GitHub bypasses .mailmap, so:
- New wiki clones must set local
user.name/user.emailto the canonical identity (Christophe Barlieb / christophe.barlieb@oth-regensburg.de). The global git config is fixed as of 2026-05-03 but verify per-clone if you cloned earlier. - Screenshots must be scrubbed for window titles, taskbar usernames, and RoboDK license info.
-
main— released and release-candidate work; protected on GitHub - Feature branches — short-lived, named
<area>-<feature>(e.g.settings-ui,audit-redact-settings-ini) - Tags — annotated, named
vX.Y.Z-alpha(orvX.Y.Zpost-alpha)
For destructive history operations (filter-repo, force-push, tag rewrite), GitHub branch protection must be toggled before the push, and --force-with-lease needs an established remote-tracking ref via git fetch first.
If you're forking CCL_Clay3DP for a different cell, the lab-coupled bits are concentrated in:
| File | What's lab-specific |
|---|---|
Models/RobotSettings.cs |
Default RoboDK paths, station template, nozzle dropdown options |
RoboDK/RoboDKSubprocess.cs |
Robot / tool / frame names, post-processor filename, 3DP_Template machining-project assumption |
Settings/SettingsDialog.cs |
Nozzle dropdown values (T10/T11/T12) |
| Your copy of the post-processor | KUKA-specific G-code dialect, lead compensation, dwell unit conversion |
The slicer (Core/), printability analyzer (Analysis/), and plugin scaffolding (UI/, Settings/, Commands/) are generic and should run on any Rhino 8 install without changes.
Credit back to the CyberCraft Lab and Prof. Barlieb is appreciated but not legally required (Apache-2.0).
The wiki lives at https://github.com/CyberCraftLab/CCL_Clay3DP/wiki/ and is backed by a separate git repo at the same URL with .wiki.git. Two ways to edit:
-
Web UI — edit any page directly on GitHub. Saves to a single
Update <page>commit. -
Local clone —
git clone <wiki-url>.wiki.git, edit markdown files, commit + push. Better for batch changes or when adding multiple linked pages.
The sidebar (_sidebar.md) controls the persistent left rail; update it when you add a new top-level page.
Mermaid renders natively. Image attachments live under uploads/ (drag-and-drop in the web editor or commit them directly to the wiki repo).
A Grasshopper component pair under the CyberCraft Toolbox umbrella is planned to address cross-platform compatibility (macOS support) and to unify Clay3DP, Corals, and TreeSupports as separate-but-related components on one CyberCraft GH tab. Track this work via GitHub issues when scoping begins.
-
Bugs — GitHub Issues on the project. Include Rhino version, RoboDK version, steps to reproduce, and the
%TEMP%/ccl_clay3dp_<TIMESTAMP>.logif the issue is in the Send pipeline. - Hardware-side issues (calibration drift, ratio-pot questions) — flag in the lab study log and ping Prof. Barlieb.
- Security / IT compliance issues — do not open as a public Issue. Email christophe.barlieb@oth-regensburg.de directly.