Colours in exports from materials and appearances; Appearance command

- Bodies export (STEP, 3MF) in the colour they are shown in: an appearance,
  else the physical material's look, else the colour the body was imported
  with (Document::body_color / painted). Physical materials used to export
  no colour at all.
- AppearanceCommand (Modify): a colour per body ("#rrggbb" or [r, g, b];
  null follows the material again), kept in the design and across renames.
- Material looks move to solvecraft-doc (material_color); the viewport draws
  appearance, material or imported colour, as exported.
- Engine test: brass and red ABS bodies export, re-import with their RGB, and
  keep it through open and export again.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01AS5Tn3xieewUSg3uxrMVdL
This commit is contained in:
bherbruckandClaude Opus 5.5 committed 2026-10-08 08:11:28 +00:00
1 parent 578b35e88a
commit ae4570ed39
8 files changed
+200 -86

No files matched your search

+65 -65
View File
@@ -2,95 +2,95 @@
Generated by `cargo xtask parity` from `xtask/data/fusion-catalog.tsv` (the toolbar commands of Fusion's Design workspace, ids and names only) and the live command registry (`solvecraft-cli commands`). A command counts as live when SolveCraft registers the same command id. This measures breadth, not depth; see ROADMAP.md and docs/oracle.md for depth.
**In scope (SOLID, SKETCH, ASSEMBLY, SHEET METAL, PLASTIC enclosure subset): 154 / 541 commands live (28%).** SOLID + SKETCH: 115 / 291 (40%). Registered commands: 162.
**In scope (SOLID, SKETCH, ASSEMBLY, SHEET METAL, PLASTIC enclosure subset): 220 / 541 commands live (41%).** SOLID + SKETCH: 140 / 291 (48%). Registered commands: 225.
Deferred until further notice (not in the in-scope figure): MESH, FORM, SURFACE beyond what solids need, PCB, render, animation, simulation, manufacture, drawings, MANAGE, UTILITIES and the rest of PLASTIC. All Design tabs together: 248 / 1175 (21%).
Deferred until further notice (not in the in-scope figure): MESH, FORM, SURFACE beyond what solids need, PCB, render, animation, simulation, manufacture, drawings, MANAGE, UTILITIES and the rest of PLASTIC. All Design tabs together: 372 / 1175 (32%).
| Tab | Panel | Live | Total | % |
|---|---|---:|---:|---:|
| SOLID | CREATE | 16 | 35 | 46% |
| SOLID | MODIFY | 14 | 32 | 44% |
| SOLID | ASSEMBLE | 2 | 21 | 10% |
| SOLID | CREATE | 22 | 35 | 63% |
| SOLID | MODIFY | 18 | 32 | 56% |
| SOLID | ASSEMBLE | 7 | 21 | 33% |
| SOLID | CONFIGURE | 0 | 3 | 0% |
| SOLID | CONSTRUCT | 2 | 20 | 10% |
| SOLID | INSPECT | 1 | 25 | 4% |
| SOLID | INSERT | 3 | 11 | 27% |
| SOLID | INSPECT | 4 | 25 | 16% |
| SOLID | INSERT | 5 | 11 | 45% |
| SOLID | SELECT | 0 | 15 | 0% |
| SOLID | POSITION | 2 | 2 | 100% |
| SKETCH | CREATE | 41 | 41 | 100% |
| SKETCH | MODIFY | 12 | 12 | 100% |
| SKETCH | CONSTRAINTS | 15 | 15 | 100% |
| SKETCH | CONFIGURE | 0 | 3 | 0% |
| SKETCH | INSPECT | 1 | 25 | 4% |
| SKETCH | INSERT | 4 | 13 | 31% |
| SKETCH | INSPECT | 4 | 25 | 16% |
| SKETCH | INSERT | 6 | 13 | 46% |
| SKETCH | ASSEMBLE | 0 | 1 | 0% |
| SKETCH | SELECT | 0 | 15 | 0% |
| SKETCH | FINISH SKETCH | 2 | 2 | 100% |
| SHEET METAL | CREATE | 8 | 19 | 42% |
| SHEET METAL | MODIFY | 7 | 21 | 33% |
| SHEET METAL | ASSEMBLE | 1 | 20 | 5% |
| SHEET METAL | CREATE | 14 | 19 | 74% |
| SHEET METAL | MODIFY | 12 | 21 | 57% |
| SHEET METAL | ASSEMBLE | 6 | 20 | 30% |
| SHEET METAL | CONFIGURE | 0 | 3 | 0% |
| SHEET METAL | CONSTRUCT | 2 | 20 | 10% |
| SHEET METAL | INSPECT | 1 | 25 | 4% |
| SHEET METAL | INSERT | 3 | 11 | 27% |
| SHEET METAL | INSPECT | 4 | 25 | 16% |
| SHEET METAL | INSERT | 5 | 11 | 45% |
| SHEET METAL | SELECT | 0 | 15 | 0% |
| SHEET METAL | REFOLD | 0 | 1 | 0% |
| SHEET METAL | POSITION | 2 | 2 | 100% |
| ASSEMBLY | INSERT | 1 | 8 | 12% |
| ASSEMBLY | CREATE | 4 | 8 | 50% |
| ASSEMBLY | RELATIONSHIPS | 0 | 11 | 0% |
| ASSEMBLY | MOTION | 0 | 3 | 0% |
| ASSEMBLY | MODIFY | 5 | 11 | 45% |
| ASSEMBLY | INSERT | 3 | 8 | 38% |
| ASSEMBLY | CREATE | 5 | 8 | 62% |
| ASSEMBLY | RELATIONSHIPS | 4 | 11 | 36% |
| ASSEMBLY | MOTION | 2 | 3 | 67% |
| ASSEMBLY | MODIFY | 8 | 11 | 73% |
| ASSEMBLY | CONTACT | 0 | 2 | 0% |
| ASSEMBLY | CONFIGURE | 0 | 3 | 0% |
| ASSEMBLY | CONSTRUCT | 2 | 20 | 10% |
| ASSEMBLY | INSPECT | 1 | 25 | 4% |
| ASSEMBLY | INSPECT | 4 | 25 | 16% |
| ASSEMBLY | SELECT | 0 | 15 | 0% |
| ASSEMBLY | POSITION | 2 | 2 | 100% |
| PLASTIC | enclosure subset | 0 | 5 | 0% |
| PLASTIC | enclosure subset | 5 | 5 | 100% |
### Deferred tabs
| Tab | Panel | Live | Total | % |
|---|---|---:|---:|---:|
| SURFACE | CREATE | 5 | 25 | 20% |
| SURFACE | MODIFY | 10 | 26 | 38% |
| SURFACE | ASSEMBLE | 1 | 20 | 5% |
| SURFACE | CREATE | 7 | 25 | 28% |
| SURFACE | MODIFY | 13 | 26 | 50% |
| SURFACE | ASSEMBLE | 6 | 20 | 30% |
| SURFACE | CONFIGURE | 0 | 3 | 0% |
| SURFACE | CONSTRUCT | 2 | 20 | 10% |
| SURFACE | INSPECT | 1 | 25 | 4% |
| SURFACE | INSERT | 3 | 11 | 27% |
| SURFACE | INSPECT | 4 | 25 | 16% |
| SURFACE | INSERT | 5 | 11 | 45% |
| SURFACE | SELECT | 0 | 15 | 0% |
| SURFACE | POSITION | 2 | 2 | 100% |
| MESH | CREATE | 2 | 5 | 40% |
| MESH | PREPARE | 0 | 4 | 0% |
| MESH | MODIFY | 5 | 30 | 17% |
| MESH | ASSEMBLE | 1 | 21 | 5% |
| MESH | MODIFY | 6 | 30 | 20% |
| MESH | ASSEMBLE | 7 | 21 | 33% |
| MESH | CONFIGURE | 0 | 3 | 0% |
| MESH | CONSTRUCT | 2 | 20 | 10% |
| MESH | INSPECT | 1 | 25 | 4% |
| MESH | INSERT | 2 | 10 | 20% |
| MESH | INSPECT | 4 | 25 | 16% |
| MESH | INSERT | 4 | 10 | 40% |
| MESH | SELECT | 0 | 10 | 0% |
| MESH | EXPORT | 0 | 1 | 0% |
| MESH | POSITION | 2 | 2 | 100% |
| FORM | CREATE | 2 | 14 | 14% |
| FORM | MODIFY | 3 | 31 | 10% |
| FORM | MODIFY | 5 | 31 | 16% |
| FORM | SYMMETRY | 0 | 6 | 0% |
| FORM | UTILITIES | 0 | 5 | 0% |
| FORM | CONSTRUCT | 2 | 20 | 10% |
| FORM | INSPECT | 1 | 25 | 4% |
| FORM | INSERT | 4 | 13 | 31% |
| FORM | INSPECT | 4 | 25 | 16% |
| FORM | INSERT | 6 | 13 | 46% |
| FORM | ASSEMBLE | 0 | 1 | 0% |
| FORM | SELECT | 0 | 15 | 0% |
| FORM | FINISH FORM | 0 | 1 | 0% |
| PLASTIC | SETUP | 0 | 2 | 0% |
| PLASTIC | CREATE | 16 | 35 | 46% |
| PLASTIC | MODIFY | 14 | 32 | 44% |
| PLASTIC | ASSEMBLE | 1 | 20 | 5% |
| PLASTIC | SETUP | 2 | 2 | 100% |
| PLASTIC | CREATE | 26 | 35 | 74% |
| PLASTIC | MODIFY | 18 | 32 | 56% |
| PLASTIC | ASSEMBLE | 6 | 20 | 30% |
| PLASTIC | CONFIGURE | 0 | 3 | 0% |
| PLASTIC | CONSTRUCT | 2 | 20 | 10% |
| PLASTIC | INSPECT | 1 | 26 | 4% |
| PLASTIC | INSERT | 3 | 11 | 27% |
| PLASTIC | INSPECT | 4 | 26 | 15% |
| PLASTIC | INSERT | 5 | 11 | 45% |
| PLASTIC | SELECT | 0 | 15 | 0% |
| PLASTIC | POSITION | 2 | 2 | 100% |
| MANAGE | ASSIGN | 0 | 1 | 0% |
@@ -103,7 +103,7 @@ Deferred until further notice (not in the in-scope figure): MESH, FORM, SURFACE
| UTILITIES | NEST | 0 | 1 | 0% |
| UTILITIES | ADD-INS | 0 | 2 | 0% |
| UTILITIES | UTILITY | 1 | 3 | 33% |
| UTILITIES | INSPECT | 1 | 24 | 4% |
| UTILITIES | INSPECT | 4 | 24 | 17% |
| UTILITIES | CREATE PMI | 0 | 4 | 0% |
| UTILITIES | SELECT | 0 | 15 | 0% |
| UTILITIES | POSITION | 2 | 2 | 100% |
@@ -115,17 +115,23 @@ Deferred until further notice (not in the in-scope figure): MESH, FORM, SURFACE
- SOLID › CREATE › Revolve (`Revolve`)
- SOLID › CREATE › Sweep (`Sweep`)
- SOLID › CREATE › Loft (`SolidLoft`)
- SOLID › CREATE › Rib (`FusionRibCommand`)
- SOLID › CREATE › Web (`FusionWebCommand`)
- SOLID › CREATE › Emboss (`EmbossCmd`)
- SOLID › CREATE › Hole (`FusionHoleCommand`)
- SOLID › CREATE › Thread (`FusionThreadCommand`)
- SOLID › CREATE › Box (`PrimitiveBox`)
- SOLID › CREATE › Cylinder (`PrimitiveCylinder`)
- SOLID › CREATE › Sphere (`PrimitiveSphere`)
- SOLID › CREATE › Torus (`PrimitiveTorus`)
- SOLID › CREATE › Coil (`PrimitiveCoil`)
- SOLID › CREATE › Pipe (`PrimitivePipe`)
- SOLID › CREATE › Bounding Solid (`StockModelCommand`)
- SOLID › CREATE › Rectangular Pattern (`PatternRectangular`)
- SOLID › CREATE › Circular Pattern (`PatternCircular`)
- SOLID › CREATE › Pattern on Path (`PatternOnPath`)
- SOLID › CREATE › Mirror (`MirrorCommand`)
- SOLID › CREATE › Joint Origin (`JointOrigin`)
- SOLID › MODIFY › Press Pull (`FusionPressPullCommand`)
- SOLID › MODIFY › Fillet (`FusionFilletEdgesCommand`)
- SOLID › MODIFY › Chamfer (`FusionChamferCommand`)
@@ -134,17 +140,31 @@ Deferred until further notice (not in the in-scope figure): MESH, FORM, SURFACE
- SOLID › MODIFY › Scale (`ModifyScale`)
- SOLID › MODIFY › Combine (`FusionCombineCommand`)
- SOLID › MODIFY › Offset Face (`FusionOffsetFacesCommand`)
- SOLID › MODIFY › Replace Face (`FusionReplaceFaceCommand`)
- SOLID › MODIFY › Split Body (`FusionSplitBodyCommand`)
- SOLID › MODIFY › Move/Copy (`FusionMoveCommand`)
- SOLID › MODIFY › Align (`AlignCmd`)
- SOLID › MODIFY › Delete (`FusionDeleteCommand`)
- SOLID › MODIFY › Remove (`SoftDeleteCommand`)
- SOLID › MODIFY › Physical Material (`PhysicalMaterialCommand`)
- SOLID › MODIFY › Appearance (`AppearanceCommand`)
- SOLID › MODIFY › Change Parameters (`ChangeParameterCommand`)
- SOLID › MODIFY › Compute All (`FusionComputeAllCommand`)
- SOLID › ASSEMBLE › Insert Component (`FusionImportCommandFromToolbar`)
- SOLID › ASSEMBLE › New Component (`FusionCreateNewComponentCommand`)
- SOLID › ASSEMBLE › Joint (`JointAssembleCmdNew`)
- SOLID › ASSEMBLE › As-Built Joint (`JointAsBuiltCmd`)
- SOLID › ASSEMBLE › Rigid Group (`RigidGroupCmd`)
- SOLID › ASSEMBLE › Drive Joints (`FusionMoveJointsCommand`)
- SOLID › ASSEMBLE › Motion Link (`FusionMotionRelationshipCommand`)
- SOLID › CONSTRUCT › Offset Plane (`ConstructionPlaneOffsetFromPlaneCommand`)
- SOLID › CONSTRUCT › Plane at Angle (`ConstructionPlaneAtAngleCommand`)
- SOLID › INSPECT › Measure (`MeasureCommand`)
- SOLID › INSPECT › Interference (`InterferenceCheckCommand`)
- SOLID › INSPECT › Section Analysis (`FusionHalfSectionViewCommand`)
- SOLID › INSPECT › Curvature Comb Analysis (`FusionCurvatureCombAnalysisCommand`)
- SOLID › INSERT › Decal (`FusionAddEditDecalCommand`)
- SOLID › INSERT › Canvas (`FusionAddCanvasCommand`)
- SOLID › INSERT › Insert SVG (`SketchImportSVG`)
- SOLID › INSERT › Insert DXF (`ImportDxfFileCommand`)
- SOLID › INSERT › Insert Mesh (`ParaMeshInsertAlignCommand`)
@@ -219,6 +239,11 @@ Deferred until further notice (not in the in-scope figure): MESH, FORM, SURFACE
- SKETCH › CONSTRAINTS › Curvature (`ConstraintSmooth`)
- SKETCH › CONSTRAINTS › Polygon (`SketchPolygonConstraintCmd`)
- SKETCH › INSPECT › Measure (`MeasureCommand`)
- SKETCH › INSPECT › Interference (`InterferenceCheckCommand`)
- SKETCH › INSPECT › Section Analysis (`FusionHalfSectionViewCommand`)
- SKETCH › INSPECT › Curvature Comb Analysis (`FusionCurvatureCombAnalysisCommand`)
- SKETCH › INSERT › Decal (`FusionAddEditDecalCommand`)
- SKETCH › INSERT › Canvas (`FusionAddCanvasCommand`)
- SKETCH › INSERT › Insert SVG (`SketchImportSVG`)
- SKETCH › INSERT › Insert DXF (`ImportDxfFileCommand`)
- SKETCH › INSERT › Insert Mesh (`ParaMeshInsertAlignCommand`)
@@ -231,11 +256,6 @@ Deferred until further notice (not in the in-scope figure): MESH, FORM, SURFACE
- SOLID › CREATE › Create Form (`TSplineBaseFeatureCreationCommand`)
- SOLID › CREATE › Derive (`PushDeriveCommand`)
- SOLID › CREATE › Automated Modeling (`AutomatedModelingCommand`)
- SOLID › CREATE › Rib (`FusionRibCommand`)
- SOLID › CREATE › Web (`FusionWebCommand`)
- SOLID › CREATE › Emboss (`EmbossCmd`)
- SOLID › CREATE › Coil (`PrimitiveCoil`)
- SOLID › CREATE › Pattern on Path (`PatternOnPath`)
- SOLID › CREATE › Geometric Pattern (`FusionPatternGeometricCommand`)
- SOLID › CREATE › Thicken (`FusionSurfaceThickenCommand`)
- SOLID › CREATE › Boundary Fill (`SurfaceSculpt`)
@@ -245,14 +265,10 @@ Deferred until further notice (not in the in-scope figure): MESH, FORM, SURFACE
- SOLID › CREATE › Create Linked PCB (`PCBExternalComponentCreationCmd`)
- SOLID › CREATE › Derive PCB (`PCBDeriveCmd`)
- SOLID › CREATE › Create Unlinked PCB (`PCBCreateCmd`)
- SOLID › CREATE › Joint Origin (`JointOrigin`)
- SOLID › CREATE › Generate Timeline (`TimelineBuilderCommand`)
- SOLID › MODIFY › Edit Face (`EditFaceCommand`)
- SOLID › MODIFY › Replace Face (`FusionReplaceFaceCommand`)
- SOLID › MODIFY › Split Face (`FusionSplitFaceCommand`)
- SOLID › MODIFY › Silhouette Split (`FusionPartingLineSplitCmd`)
- SOLID › MODIFY › Align (`AlignCmd`)
- SOLID › MODIFY › Remove (`SoftDeleteCommand`)
- SOLID › MODIFY › Arrange (`ArrangeCommand`)
- SOLID › MODIFY › Remove Features (`FusionRemoveFeaturesCommand`)
- SOLID › MODIFY › Remove Faces (`FusionRemoveFacesCommand`)
@@ -260,7 +276,6 @@ Deferred until further notice (not in the in-scope figure): MESH, FORM, SURFACE
- SOLID › MODIFY › Volumetric Lattice (`VolFieldCreateLatticeCommand`)
- SOLID › MODIFY › Volumetric Texture (`VolFieldTextureCommand`)
- SOLID › MODIFY › VolFieldModifyModelCommand (`VolFieldModifyModelCommand`)
- SOLID › MODIFY › Appearance (`AppearanceCommand`)
- SOLID › MODIFY › Manage Materials (`MaterialCommand`)
- SOLID › MODIFY › Compute Unresolved (`FusionComputeUnresolvedCommand`)
- SOLID › MODIFY › Convert (`TSpline2BRepCommand`)
@@ -272,12 +287,7 @@ Deferred until further notice (not in the in-scope figure): MESH, FORM, SURFACE
- SOLID › ASSEMBLE › Center Constraint (`MidplaneConstraintCmd`)
- SOLID › ASSEMBLE › Tangent Constraint (`TangentConstraintCmd`)
- SOLID › ASSEMBLE › Joint Constraint (`JointConstraintCmd`)
- SOLID › ASSEMBLE › Joint (`JointAssembleCmdNew`)
- SOLID › ASSEMBLE › As-Built Joint (`JointAsBuiltCmd`)
- SOLID › ASSEMBLE › As-Built Constraint (`AsBuiltConstraintCmd`)
- SOLID › ASSEMBLE › Rigid Group (`RigidGroupCmd`)
- SOLID › ASSEMBLE › Drive Joints (`FusionMoveJointsCommand`)
- SOLID › ASSEMBLE › Motion Link (`FusionMotionRelationshipCommand`)
- SOLID › ASSEMBLE › Motion Study (`FusionMotionStudyCommand`)
- SOLID › ASSEMBLE › Enable Contact Sets (`EnableContactSetsCmd`)
- SOLID › ASSEMBLE › Enable All Contact (`EnableAllContactCmd`)
@@ -304,9 +314,6 @@ Deferred until further notice (not in the in-scope figure): MESH, FORM, SURFACE
- SOLID › CONSTRUCT › Point At Center Of Circle/Sphere/Torus (`ConstructionPointFromCircleOrSphereCommand`)
- SOLID › CONSTRUCT › Point At Edge And Plane (`ConstructionPointAtEdgeAndPlaneCommand`)
- SOLID › CONSTRUCT › Point Along Path (`ConstructionPointAlongPathCommand`)
- SOLID › INSPECT › Interference (`InterferenceCheckCommand`)
- SOLID › INSPECT › Section Analysis (`FusionHalfSectionViewCommand`)
- SOLID › INSPECT › Curvature Comb Analysis (`FusionCurvatureCombAnalysisCommand`)
- SOLID › INSPECT › Curvature Map Analysis (`FusionCurvatureMapAnalysisCommand`)
- SOLID › INSPECT › Draft Analysis (`FusionDraftAnalysisCommand`)
- SOLID › INSPECT › Environment Map Analysis (`FusionEnvironmentMapAnalysisCommand`)
@@ -328,8 +335,6 @@ Deferred until further notice (not in the in-scope figure): MESH, FORM, SURFACE
- SOLID › INSPECT › Change Summary (`ShowChangeAwarenessToolbarCmd`)
- SOLID › INSPECT › History (`ShowHistoryToolbarCmd`)
- SOLID › INSPECT › Sustainability Insights (`GravityClimate_ManufacturingSustainabilityInsights_MainDialog`)
- SOLID › INSERT › Decal (`FusionAddEditDecalCommand`)
- SOLID › INSERT › Canvas (`FusionAddCanvasCommand`)
- SOLID › INSERT › Insert T-Spline (`TSplineImportCommand`)
- SOLID › INSERT › Insert Fastener (`FusionFastenersCommand`)
- SOLID › INSERT › Insert Derive (`PullDeriveCommand`)
@@ -355,9 +360,6 @@ Deferred until further notice (not in the in-scope figure): MESH, FORM, SURFACE
- SKETCH › CONFIGURE › Configure (`FusionStartDesignConfigModeCmd`)
- SKETCH › CONFIGURE › Display Configuration Table (`FusionShowDesignConfigPanelCmd`)
- SKETCH › CONFIGURE › Create Configuration Rules (`FusionConfigurationRulesCmd`)
- SKETCH › INSPECT › Interference (`InterferenceCheckCommand`)
- SKETCH › INSPECT › Section Analysis (`FusionHalfSectionViewCommand`)
- SKETCH › INSPECT › Curvature Comb Analysis (`FusionCurvatureCombAnalysisCommand`)
- SKETCH › INSPECT › Curvature Map Analysis (`FusionCurvatureMapAnalysisCommand`)
- SKETCH › INSPECT › Draft Analysis (`FusionDraftAnalysisCommand`)
- SKETCH › INSPECT › Environment Map Analysis (`FusionEnvironmentMapAnalysisCommand`)
@@ -379,8 +381,6 @@ Deferred until further notice (not in the in-scope figure): MESH, FORM, SURFACE
- SKETCH › INSPECT › Change Summary (`ShowChangeAwarenessToolbarCmd`)
- SKETCH › INSPECT › History (`ShowHistoryToolbarCmd`)
- SKETCH › INSPECT › Sustainability Insights (`GravityClimate_ManufacturingSustainabilityInsights_MainDialog`)
- SKETCH › INSERT › Decal (`FusionAddEditDecalCommand`)
- SKETCH › INSERT › Canvas (`FusionAddCanvasCommand`)
- SKETCH › INSERT › Insert T-Spline (`TSplineImportCommand`)
- SKETCH › INSERT › Insert Fastener (`FusionFastenersCommand`)
- SKETCH › INSERT › Duplicate With Joints (`FusionDuplicateWithJointsCommand`)