Import CAD projects and cad-router v1
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2026 earthtojake
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -0,0 +1,95 @@
|
||||
---
|
||||
name: cad-viewer
|
||||
description: Start or reuse CAD Viewer and return review links for explicit CAD, implicit CAD, robot-description, and G-code files. Use when visually reviewing `.step`, `.stp`, `.implicit.js`, `.implicit.mjs`, `.glb`, `.stl`, `.3mf`, `.gcode`, `.dxf`, `.urdf`, `.srdf`, or `.sdf` files, especially when handed off from CAD, implicit-cad, G-code, URDF, SRDF, or SDF generation skills.
|
||||
---
|
||||
|
||||
# CAD Viewer
|
||||
|
||||
Provenance: maintained in [earthtojake/text-to-cad](https://github.com/earthtojake/text-to-cad).
|
||||
Use the installed local skill files as the runtime source of truth; the
|
||||
repository link is only for provenance and release review.
|
||||
|
||||
Use this skill to open existing or newly generated CAD, implicit CAD,
|
||||
robot-description, DXF, or plain FDM G-code files in CAD Viewer and hand back
|
||||
live review links. The expected input is one or more explicit file paths.
|
||||
|
||||
## Start Viewer
|
||||
|
||||
Start or reuse one local CAD Viewer with `npm run agent:start`, passing the
|
||||
absolute artifact directory as `--dir`. The `agent:start` launcher owns port
|
||||
selection, compatible-server reuse, directory activation, and the `?dir=` query
|
||||
parameter. Dev-mode viewers are reused only for matching git identities; dist
|
||||
bundle viewers can be reused across git branches when their viewer versions
|
||||
match. It activates reused servers through the Viewer's lightweight directory
|
||||
activation API, without requiring agents to probe ports or trigger catalog
|
||||
scans manually. Use the Viewer URL printed by `agent:start` as-is, then add only
|
||||
a `file=` query value for the artifact you want to review.
|
||||
|
||||
Choose `--dir` as the absolute directory that contains the model
|
||||
artifacts and sidecars, commonly `<repo>/models` or the consuming project's
|
||||
equivalent model directory. The `file=` value must be relative to that `--dir`.
|
||||
Do not manually choose ports, probe servers, rewrite `?dir=`, or start a
|
||||
separate Viewer just to change directories.
|
||||
|
||||
Run from this skill directory:
|
||||
|
||||
```bash
|
||||
npm --prefix scripts/viewer run agent:start -- --host 127.0.0.1 --dir <absolute-model-root>
|
||||
```
|
||||
|
||||
Use the printed Viewer URL and append `file=`:
|
||||
|
||||
```bash
|
||||
http://127.0.0.1:<printed-port>/?dir=/absolute/project/models&file=path/to/model.step
|
||||
```
|
||||
|
||||
If a non-Viewer process or another worktree's Viewer occupies the candidate
|
||||
port, the launcher will continue automatically. In sandboxed agent environments,
|
||||
local binding or probe failures such as `EPERM` or `EACCES` can be expected;
|
||||
rerun the same command with the needed permission/escalation.
|
||||
|
||||
## Links
|
||||
|
||||
- Before returning any `file=` link, resolve `<dir>/<file>` and confirm the
|
||||
artifact exists. Pass the generated artifact (e.g. `.step`), not its
|
||||
generator source (e.g. `.py`). If the resolved path is missing, do not
|
||||
return the link, and instead report the problem and point to the correct
|
||||
generated artifact path.
|
||||
- Return one Viewer URL per requested file.
|
||||
- Start/reuse the Viewer once per absolute directory `--dir`, then append
|
||||
`file=<path>` for each requested file. The file path must be relative to
|
||||
`--dir`.
|
||||
- For directory-only review links, return the URL printed by `agent:start`
|
||||
without adding `file=`.
|
||||
- Do not stop an existing Viewer server unless the user asks.
|
||||
- If Viewer startup fails, report the failure and continue with the owning skill's non-GUI validation or artifacts.
|
||||
|
||||
## Claude Preview
|
||||
|
||||
The viewer port is dynamic — it is chosen at startup and may differ across
|
||||
worktrees. To integrate with the Claude Preview tool, add `--json` to the
|
||||
`agent:start` command:
|
||||
|
||||
```bash
|
||||
npm --prefix scripts/viewer run agent:start -- --host 127.0.0.1 --dir <absolute-model-root> --json
|
||||
```
|
||||
|
||||
The launcher writes a JSON result line to stdout after the human-readable lines.
|
||||
Parse it by taking the last line of stdout that begins with `{`:
|
||||
|
||||
```json
|
||||
{"url":"http://127.0.0.1:<port>/?dir=<absolute-model-root>","port":<port>,"action":"reuse"}
|
||||
```
|
||||
|
||||
`action` is `"reuse"` when an existing server was reused and is immediately
|
||||
ready, or `"start"` when a new server process was spawned and may still be
|
||||
initializing. For a `"start"` result, probe `GET /__cad/server` on the base
|
||||
URL (e.g. `http://127.0.0.1:<port>/__cad/server`) until it returns HTTP 200
|
||||
before passing the `url` value to the Claude Preview tool.
|
||||
|
||||
## References
|
||||
|
||||
- Read `references/development.md` when the user asks to modify, debug, or
|
||||
iterate on CAD Viewer source.
|
||||
- Read `references/viewer-features.md` when you need supported file types, Viewer controls, or file-specific feature details.
|
||||
- Read `references/moveit2-server.md` only when the user specifically needs optional SRDF MoveIt2 IK or path-planning controls.
|
||||
@@ -0,0 +1,4 @@
|
||||
interface:
|
||||
display_name: "CAD Viewer"
|
||||
short_description: "Open CAD, G-code, and robot files in Viewer."
|
||||
default_prompt: "Use $cad-viewer to start CAD Viewer and return review links for explicit CAD, G-code, or robot-description files."
|
||||
@@ -0,0 +1,12 @@
|
||||
# CAD Viewer Development
|
||||
|
||||
Use this reference only when the user asks to modify, debug, or iterate on CAD
|
||||
Viewer source.
|
||||
|
||||
CAD Viewer source development happens in the root
|
||||
source workspace, not inside this generated skill runtime.
|
||||
|
||||
If you are not currently working directly in the editable source workspace, ask
|
||||
the user for the correct checkout and run the agent from that repository.
|
||||
|
||||
Once inside the repository, read root `AGENTS.md` for guidance on modifying and running the Viewer.
|
||||
@@ -0,0 +1,29 @@
|
||||
# MoveIt2 Server
|
||||
|
||||
Load this only when the user specifically needs CAD Viewer's optional SRDF IK or path-planning controls. Plain SRDF review and normal Viewer links do not require MoveIt2.
|
||||
|
||||
## Start
|
||||
|
||||
Run from the `cad-viewer` skill directory:
|
||||
|
||||
```bash
|
||||
npm --prefix scripts/viewer run moveit2:setup
|
||||
npm --prefix scripts/viewer run moveit2:check
|
||||
npm --prefix scripts/viewer run moveit2:serve
|
||||
```
|
||||
|
||||
The server defaults to `ws://127.0.0.1:8765/ws`. CAD Viewer connects to that URL when `VIEWER_MOVEIT2_WS_URL` or the browser `?moveit2Ws=` query points at it.
|
||||
|
||||
Use the configured ROS 2 / MoveIt2 environment. Do not install ROS 2 or MoveIt2 packages into the repository CAD `.venv`.
|
||||
|
||||
## Viewer Controls
|
||||
|
||||
Open an `.srdf` file, expand the right-side `MoveIt2` sheet, and use:
|
||||
|
||||
- Status: linked SRDF and MoveIt2 server status.
|
||||
- Target: planning group, end effector, target frame, and X/Y/Z target coordinates.
|
||||
- Solver: IK timeout, attempts, and tolerance.
|
||||
- Planning: pipeline, planner ID, plan time, velocity scale, and acceleration scale.
|
||||
- Actions: select pose from the model, reset to the current pose, solve pose, or plan to pose.
|
||||
|
||||
Report whether the environment check passed, whether pose solving/planning worked, and any viewer/server error text.
|
||||
@@ -0,0 +1,22 @@
|
||||
# CAD Viewer Features
|
||||
|
||||
Load this only when a task needs Viewer file-support details or UI control guidance.
|
||||
|
||||
## Supported Files
|
||||
|
||||
- `.step`, `.stp`: STEP/STP review through hidden GLB sidecars; supports assembly trees, part hide/show, inspect/focus, face/edge/vertex/part selection, copied `#...` CAD references, display modes, clip planes, and optional STEP module parameters/animations when a sidecar module exists.
|
||||
- `.stl`, `.3mf`, `.glb`: mesh viewing with orbit/pan/zoom, screenshots, appearance controls, and solid/wireframe display where available.
|
||||
- `.dxf`: read-only flat-pattern viewing, plus plate thickness and bend direction/angle controls when bend preview data is available.
|
||||
- `.gcode`: diagnostic toolpath preview; shows layer-colored extrusion ribbons, optional travel moves, visible-layer and detail controls, feature markers, movement stats, bounds, and parser warnings. It does not reslice, simulate firmware, or replace G-code validation.
|
||||
- `.urdf`: robot link/mesh viewing with movable joint sliders, reset pose, and copied joint values.
|
||||
- `.srdf`: linked-URDF viewing with planning groups, group-state presets, joint controls, and optional MoveIt2 IK/planning controls.
|
||||
- `.sdf`: SDF model/world viewing with metadata, counts, warnings, and joint controls when available.
|
||||
|
||||
## Controls
|
||||
|
||||
- Navigation: left-drag to orbit, right/middle-drag to pan, wheel or pinch to zoom, and Arrow/WASD keys to orbit. Use the view sphere for top/bottom/front/back/left/right views; click its center for the default isometric view.
|
||||
- File browser: toggle the left CAD Viewer sidebar, search files/ids/paths, expand folders, select entries, or switch files from the breadcrumb menus.
|
||||
- Floating toolbar: `Select` copies STEP topology references, `Draw` opens annotation tools, `Select Pose` appears for robot target picking when available, `Open orbit preview` starts an auto-rotating preview, and the copy/download buttons capture screenshots.
|
||||
- Drawing tools: freehand, line, arrow, expand, rectangle, circle, fill, erase, undo, redo, and clear.
|
||||
- File sheet: open the right sheet for file-specific controls such as STEP tree/parameters, G-code layers/detail/travel, DXF thickness/bends, URDF/SRDF/SDF joints and metadata, plus display and appearance controls.
|
||||
- Display/appearance: use the file sheet and theme menu for solid/wireframe/x-ray modes, STEP clipping, an independent Explode toggle for animated vertical STEP disassembly, surface colors, edge visibility/detail, highlight styling, backdrop, floor/grid, lighting, theme presets, and color mode.
|
||||
@@ -0,0 +1 @@
|
||||
--editable ./scripts/viewer/packages/cadpy
|
||||
@@ -0,0 +1 @@
|
||||
../../../viewer
|
||||
Reference in New Issue
Block a user