Chapters

Troubleshooting

What to do when 3DCraft says no, when something does not show, after a crash, and how to report a problem.

3DCraft does not crash on bad input, and does not build a wrong solid when it cannot build the right one. It says no, with a reason. Reading the reason is nearly always the way forward. When an agent works for you, ask it to read the reason to you.

Quick answers

Problem Look at
The window does not start The window
The agent's changes do not show in the window The agent
The agent cannot open or save a file The agent
A feature's row is red in the feature list A feature fails
A check is red A check fails
A Jig's parameter turned red Jigs
The web version is slow, blank or will not save The web version
3DCraft closed unexpectedly After a crash
Something is wrong and you want to report it Reporting a problem

A command fails

When a command fails, the document is unchanged. The message starts with the command and usually the parameter:

Message (shortened) What to do
there is no feature named `Sheet`; features: Block A name is wrong, or the feature is not made yet. The message lists what there is
unknown plane `CutPlane`; use xy, yz or zx, or the name of a datum plane The same, for planes
give either distance … or about and angle …, not both Two ways of placing something were mixed. Use two datums
variable.delete: `t` is still used by the feature `Plate` (F1: size.z), … Change those first, or give "force": true to delete it anyway
file.save: `/tmp/x.3dcraft` is outside the write root … The path is outside the folders an agent or a program may use (The agent)
variable.set: `wall + 1 mm` uses `wall` itself … Give the new value (3 mm); the message says what it is now
the unit `rad` must follow a number, a parenthesis or `pi` directly …, `inch` is not a unit: write `in` Units are um mm cm m in ft deg rad in lower case, and g kg s N kN Pa kPa MPa GPa J as written here (Reference › Units), right after a number, a ) or pi ((360 / n) deg). After a variable, multiply by one (width * 1 mm)
an angle constraint takes a line and a line, but 1 entity was given Give the entities the message lists, in that order

command_list (or craft3d-cli commands --filter …) shows which parameters a command takes.

A feature fails

The feature is in the history but has no body: its status is failed, with an error. The features made from it fail too, each with causedBy naming the first one. document.check lists them all. Fix the first:

A failed feature in the feature list: its red row with the reason, and the rows made from it dimmed

Over MCP a failed feature is not a tool error of command_run: the command did what was asked, it added the feature. So an agent reads status in each result. A change that makes other features fail lists them in its result under failed (Programs on 3DCraft › What a command answers).

A check fails

The model was built, but it does not meet what was asked. assert.list shows what was measured and what was expected. Either the design changed in a way you did not want (undo it), or the check needs to be written differently (assert.edit).

notProven is not a failure: the value found is fine, but the proof did not reach the bound (Measuring and assertions).

Undo

Edit › Undo (Ctrl+Z) undoes one change, yours or the agent's, and Edit › Redo (Ctrl+Shift+Z or Ctrl+Y) redoes it. An agent does the same with edit.undo and edit.redo; a batch of ten steps is ten changes. Undo also brings back a deleted feature or variable. The selection is not part of the history and is not undone. In a Jig, ↺, Reset all and Back to last good are there as well.

A sketch does not do what you meant

sketch.inspect shows every entity with its solved coordinates, every constraint with its state, and dof, the freedom left (How 3DCraft thinks › Sketches).

Pictures

If a face is hard to identify, render with mode: "ids": one flat colour per face, with a legend. For a close-up, ask for projection: "orthographic" and a box.

In craft3d-cli (render, run, serve and a headless mcp), view.render and doc_render_preview draw on the graphics card when the computer has one, and with the CPU renderer otherwise. Asked through the window, they draw with the CPU renderer. The CPU renderer is the reference the graphics card is checked against: "renderer": "cpu" asks for it.

Jigs

The window

The agent

The web version

After a crash

On Windows, 3DCraft also closes when you close the black console window that opens beside it: leave that window open.

Start 3DCraft again. A bar under the menu says 3DCraft did not close properly and offers what was autosaved:

The autosaves are in 3DCraft's data folder (Help › Open data folder). The web version has no autosave: save often. A crash is the most important thing you can report.

Reporting a problem

When a file action you started fails (Open, Save, Import, Export), a dialog says what went wrong, with Copy details:

The error dialog Could not open the file, with the reason, Copy details and OK

Such a message is written to be exact, so it can read as technical. You need not follow all of it: its first words say what failed (here, bracket.3dcraft is not a file 3DCraft can read, or it was cut short). When you cannot see why, click Copy details and report it, as below.

When a command fails in the window, the status bar at the bottom shows the command in red with its message, and a Copy details button.

Copy details copies a short plain-text report: the 3DCraft version and the commit it was built from, your system, the graphics card and how 3DCraft draws with it, and the command that failed with its parameters and the whole message. A window shows the same text, so you can read it first. It contains file paths and the values you or your agent gave: read it before you post it publicly.

An agent gets the same report from the command session.report, so you can also ask it: "something went wrong; give me the bug report". When the agent works in the window, the report names the graphics card too.

Where to report. Open an issue in 3DCraft's public repository: github.com/johancoppens/3dcraft/issues, Report a problem. Write down:

A refusal ("not supported", "does not fit") is worth reporting too: in 3DCraft a refusal is work still to do. Things that went well are worth a line as well: they say what must not break.

A security problem (a file or an agent that reaches what it must not, the control token leaking) is not reported in an issue. Report it privately through the repository's private vulnerability reporting, as its security policy describes.

Next: Reference.

This page on GitHub