The three commands
Almost everything you do with fascat is one of these:
fascat inspect motor.step # look at a CAD assembly
fascat convert motor.step motor.glb # convert it to a runtime asset
fascat validate motor.glb # check the result
If you omit the output path, convert writes a .usdc file beside the input.
The output suffix selects the format (.usdc, .glb, .obj, .stl, .fbx, …).
Not sure which to pick? See Which output format?.
Pick a target profile
Profiles set sensible tessellation, optimization, and LOD defaults for a platform:
fascat convert motor.step motor.usdc --profile realtime-desktop
fascat convert motor.step motor.glb --profile realtime-web
fascat convert motor.step motor.glb --profile realtime-mobile
fascat convert motor.step motor.glb --profile virtual-reality
fascat convert motor.step motor.glb --profile mixed-realitySee the profiles table for each profile's budgets.
Inspect before converting
fascat inspect motor.step
fascat --json inspect motor.step # machine-readable
cat motor.step | fascat inspect - # read from stdin
fascat inspect motor.step --filter 'path=*/Fasteners/*' --pmi summaryScope work to part of the assembly
Use --filter to apply optimization and LOD work to one branch only:
fascat convert motor.step motor.glb \
--filter 'path=*/Fasteners/*' \
--merge --merge-mode by-material \
--target-triangles 80000Tune tessellation
fascat convert motor.step motor.usdc \
--sag 0.1 --angle 15 \
--curvature-adaptive \
--target-triangles 500000Prepare for runtime delivery
fascat convert motor.step motor.glb \
--export-preset web --quantize --meshopt \
--file-size-budget-mb 50Validate output
fascat validate motor.glb
fascat validate motor.glb --geometry-quality --report quality-report.json
fascat validate motor.glb --visual-preview preview.pngGoing further
- Combine many steps — long flag lists work, but for repeatable
branch-specific recipes use a pipeline file instead. See Pipeline files.
- Every flag is documented in the CLI Reference.
- Scripting from Python — the same pipeline is available as a fluent API.
See the Python API.
A pipeline file keeps named filters and ordered steps in TOML:
[[filters]]
name = "fasteners"
path = "*/Fasteners/*"
[[steps]]
op = "merge"
where = "fasteners"
mode = "by_material"fascat convert motor.step motor.glb --pipeline realtime.tomlUseful global behavior
fascat --json <subcommand> # JSON output, pipe to jq
fascat <subcommand> --dry-run # preview without writing
fascat --install-completion bash # shell completion (bash/zsh/fish)
fascat --help # help works anywhere in the command