Import and export
| Format | Read | Write |
|---|---|---|
.solidcraft (versioned container or JSON design) | yes | yes |
.json (self-contained plain JSON design) | yes | yes |
| STEP (AP203, AP214, AP242) | solids, assemblies, units, names, colours | AP242 with names, colours and the component tree |
| IGES 5.3 | manifold solids, or trimmed surfaces sewn into solids | manifold solids with names and colours |
FreeCAD .FCStd, Rhino .3dm | solids, through cadmpeg (desktop app only) | |
| 3MF, STL, OBJ | mesh bodies | yes |
glTF 2.0 (.glb, .gltf with its .bin files) | mesh bodies in the node tree’s components, materials as appearances | |
| 3MF with face tags | as 3MF | each triangle tagged with its B-rep face, exact coordinates |
| URDF | the assembly as a robot: links with meshes, mass and inertia, joints from the assembly’s joints | |
| DXF, SVG | into a sketch | sketches and flat patterns as DXF |
| PNG, JPEG | canvases and decals |
Opening a STEP, IGES, FreeCAD or Rhino file creates a design with the file’s bodies as a base feature, and inserting one adds them to the current design. Later features build on them. Mesh bodies render, measure, move and export, but solid features need B-rep bodies.
Every imported file (STEP, IGES, 3MF, STL, OBJ or glTF) comes in as a new component named after the file, so its bodies never mix with yours. A STEP assembly keeps its structure: its parts and sub-assemblies become nested components, and a part used several times is one component with an occurrence for each place. The imported assembly is rigid: moving its component moves everything, and its parts don’t move on their own. Right-click the component and choose Unlock Contents to joint the parts one by one. Undo removes a whole import in one step.
A glTF file (.glb, or .gltf with the .bin files it names in the same folder) comes in the
same way: its nodes become nested components, a mesh placed several times is one component with
an occurrence for each place, and the whole import is rigid until you unlock it. glTF is in metres
with Y up, so the import is scaled to millimetres and turned to stand Z up (up: "z" keeps the
file’s axes). Each material’s base colour, metal and roughness become the body’s appearance, so
the model looks right in Render; textures, skins and animations are not imported. Scaled or
mirrored nodes are baked into their meshes. Compressed meshes (Draco, meshopt) are refused with a
message: save the file uncompressed first.
File → Save as mesh… (also on the Mesh tab under Modify, and in the right-click menu of a body) saves the selected bodies as STL, 3MF or 3MF with face tags (below). With Send to slicer ticked, it writes the file to a temporary folder and opens it in the chosen slicer instead of asking for a file name. The slicer list shows the slicers found on the computer with their icons; Custom… adds any other program to the top of the list (kept between runs; hover an entry you added and press Delete to remove it).
Closed mechanical meshes with a constant cross-section can be rebuilt as solids with the
mesh.convert command (command palette, scripts and the control channel).
File → Save as mesh… with the format 3MF with face tags (file.export or file.save_mesh with format: "3mf-tagged") writes an
ordinary 3MF in which every triangle also names the B-rep face it lies on and every coordinate
is the tessellation’s own double-precision value. Meshing and analysis tools can use the tags to
keep a model’s faces (for loads, boundary conditions or feature edges); other 3MF readers ignore
them. The format is specified in docs/formats/3mf-face-tags.md.
File → Export URDF… (file.export with a .urdf path) writes the assembly for robot
simulators and ROS: a link per component placement with its mesh, mass and inertia, and the
assembly’s joints, so the parts move in the simulator as they do in SolidCraft. The meshes are
written as STL files next to the .urdf. See docs/urdf.md.
Saves are atomic: a crash at any moment leaves either the old file or the new one, and the
replaced version is kept as <file>.bak. A save keeps the file’s permissions, and a design
opened through a symbolic link (a synced folder linked into a project) is saved into the file the
link points to, so the link stays. Unsaved changes are autosaved to a recovery folder,
and the next launch offers to recover them. Older design files are upgraded on open, and files
from a newer version are refused with a message.
Save writes a container by default; files named .json keep JSON on subsequent saves.
Save As offers a container or plain JSON on
desktop; Save As JSON is also available in the File menu on desktop and web. Choose
the .json extension for plain JSON. Export Design as JSON writes an independent,
self-contained copy without changing the current file. Scripts can explicitly pass
"format": "json" to file.save or file.save_as even with a .solidcraft name.
Opening detects the format from the contents, so existing JSON designs keep working.
Containers favor fast reading and saving by default. Scripts can request
"compression": "compact" when file size matters more than CPU time.
Containers deduplicate identical STEP, mesh and image payloads. Mesh coordinates retain
their original double precision; this is not a conversion to STL. Geometry still rebuilds
from the timeline when opening. When a saved display preview is available, desktop Open
shows it while checking geometry; editing starts after the complete rebuild. Cancelling
keeps the current design. Previews cannot be edited or measured. Scripts can opt in to a disposable geometry
cache with cache: true on warm saves; saving never rebuilds cold geometry just to
create one. Ordinary saves and browser downloads default to cache: false. An additional display-mesh cache remains opt-in
with preview: true. Unsupported or mismatched caches are ignored. Browser opening
still rebuilds synchronously.
Warm saves with explicit cache: true can also include a small PNG thumbnail. It travels with the file, so
Home can show the recent design without reconstructing it when no local picture
is available. Missing or incompatible pictures use the usual thumbnail generation.
The default cache: false omits the portable thumbnail too.
The repository’s docs/design-container.md describes limits and encoding details.
Designs are saved in the newest format this version of SolidCraft knows ("format": "solidcraft/N"
in the file). It opens designs of every older format and upgrades them as they open; a design
from a newer version asks you to update instead of being guessed at. Development (nightly) builds
save a format number no release reads yet.
Sketch patterns retain their live direction-line references and placement settings when saved. Older patterns keep their fixed vector directions and original placement defaults.
Upgrading keeps what a design meant. Designs keep recorded body transfers, explicit 3D curve coordinate spaces and certified face bindings, alongside semantic configuration styles, associative free-form offsets and cylindrical emboss selections. Older ownership maps, geometry and expressions retain their saved meaning. Legacy 3D curves with retained associations receive their producer’s coordinate-space marker without changing any saved points; detached curves retain world coordinates. A lost cross-component association refreshed by an older build may need an explicit relink or refresh when its source returns. Loading never guesses a numerical correction. Association records, coordinate arrays and placements are bounded and checked.
Design properties
File → Design Properties… (also under Document Settings in the Browser, and on the
top component’s right-click menu) records who made a design and what it is: project, part
number, revision, author, organization, description and licence. OK applies the changes as
one undo step. Scripts and agents use the same commands: document.metadata reads them,
document.metadata.set (key and value, or values: {key: value, …}) and
document.metadata.remove (key or keys) change them. document.inspect and the MCP
inspect_design tool include them.
Exports carry them where the format has a place for them:
| Format | Written |
|---|---|
| STEP | author and organization in FILE_NAME, description in FILE_DESCRIPTION (on one line) |
| IGES | author and organization in the global section |
| 3MF | project as Title, author as Designer, description as Description, license as LicenseTerms |
The part number and revision have no standard place in these formats and stay in the design.
In the file they are one optional top-level metadata object; a design without properties has
none, and is saved exactly as before:
"metadata": {
"project": "ACME enclosures",
"part_number": "ACME-1042",
"revision": "B",
"author": "Jane Doe",
"organization": "ACME",
"description": "Vented case for Raspberry Pi 4",
"license": "CC-BY-4.0",
"com.acme.description": { "shop_id": 88123 },
"org.printfarm": { "slicer_profile": "PETG-0.2", "internal_id": 4 }
}
- SolidCraft’s keys are unprefixed and hold text. Every other unprefixed key is reserved for later SolidCraft versions.
- Other tools keep their data under one reverse-DNS key of their own (
com.example.tool: two or more dot-separated labels of letters, digits,-and_), holding an object. A tool writes only under its own key and leaves the others alone. - SolidCraft keeps every key as it is through open, edit and save, in both the container
and plain JSON, and never checks what another tool wrote: a well-known key holding something
other than text (
"author": 42) is kept, reads as absent, and never stops the design from opening. Typing over it in Design Properties replaces it. - Other tools’ keys are never exported; Design Properties lists them read-only.
- Keep values small:
document.metadata.setrefuses text over 4 KiB, an object over 64 KiB or nested more than 32 levels deep, and more than 256 keys or 256 KiB in all. Binary data belongs in a file next to the design.
Design properties are first saved in format 21. Inserting or linking another design doesn’t
copy its properties; Save As keeps them. A command script of the design
(timeline.export_script) sets them in one step.
Saving in the web app
In the web app, Save and Save As keep designs in this browser’s private storage; they do not open a dialog for choosing a folder on your computer. Clearing the site’s data can remove those designs. Download a copy to keep it outside the browser or move it to another device.
- Open the File menu and choose Open to show Files in this browser.
- Choose Download open design for the current design, including its unsaved changes, or Download beside a stored file for its last saved contents.
- Find the
.solidcraftfile in your browser’s downloads. Whether a folder chooser appears depends on your browser’s download settings.
Use Open from computer… in the same panel to reopen a downloaded design. The web app works on a browser-stored copy; later saves do not update the original downloaded file. Use Rename beside a stored file to change its name. Exports such as STEP and STL are also downloaded.