{
  "format": "cadivari-project",
  "formatVersion": 2,
  "projectName": "Guided loft",
  "savedAt": "2026-10-27T01:31:10.193Z",
  "document": {
    "schemaVersion": 39,
    "units": "mm",
    "revision": 0,
    "entities": [
      {
        "id": "lower",
        "kind": "circle",
        "center": {
          "x": 0,
          "y": 0
        },
        "radius": 20
      },
      {
        "id": "upper",
        "kind": "circle",
        "center": {
          "x": 0,
          "y": 0
        },
        "radius": 20
      },
      {
        "id": "rail-0",
        "kind": "spline",
        "closed": false,
        "mirrorGuideId": null,
        "controlPoints": [
          {
            "x": 20,
            "y": 0
          },
          {
            "x": 32,
            "y": 20
          },
          {
            "x": 32,
            "y": 40
          },
          {
            "x": 20,
            "y": 60
          }
        ]
      },
      {
        "id": "rail-1",
        "kind": "spline",
        "closed": false,
        "mirrorGuideId": null,
        "controlPoints": [
          {
            "x": -20,
            "y": 0
          },
          {
            "x": -32,
            "y": 20
          },
          {
            "x": -32,
            "y": 40
          },
          {
            "x": -20,
            "y": 60
          }
        ]
      }
    ],
    "solidModel": {
      "schemaVersion": 3,
      "planes": [
        {
          "id": "origin-plane-xy",
          "name": "Top (XY)",
          "visible": true,
          "definition": {
            "kind": "origin",
            "principalPlane": "xy"
          }
        },
        {
          "id": "origin-plane-xz",
          "name": "Front (XZ)",
          "visible": true,
          "definition": {
            "kind": "origin",
            "principalPlane": "xz"
          }
        },
        {
          "id": "origin-plane-yz",
          "name": "Right (YZ)",
          "visible": true,
          "definition": {
            "kind": "origin",
            "principalPlane": "yz"
          }
        },
        {
          "id": "upper-plane",
          "name": "Upper · 60 mm",
          "visible": true,
          "definition": {
            "kind": "offset",
            "parentPlaneId": "origin-plane-xy",
            "distanceMm": 60,
            "flipped": false
          }
        }
      ],
      "sketches": [
        {
          "id": "lower-sketch",
          "name": "Lower section",
          "visible": true,
          "planeId": "origin-plane-xy",
          "sourceEntityIds": [
            "lower"
          ],
          "projections": []
        },
        {
          "id": "upper-sketch",
          "name": "Upper section",
          "visible": true,
          "planeId": "upper-plane",
          "sourceEntityIds": [
            "upper"
          ],
          "projections": []
        },
        {
          "id": "rail-sketch-0",
          "name": "Guide 1",
          "visible": true,
          "planeId": "origin-plane-xz",
          "sourceEntityIds": [
            "rail-0"
          ],
          "projections": []
        },
        {
          "id": "rail-sketch-1",
          "name": "Guide 2",
          "visible": true,
          "planeId": "origin-plane-xz",
          "sourceEntityIds": [
            "rail-1"
          ],
          "projections": []
        }
      ],
      "bodies": [],
      "bodySplits": []
    },
    "camJob": {
      "stock": {
        "widthMm": 600,
        "heightMm": 300,
        "thicknessMm": 20
      },
      "stockSizing": {
        "mode": "auto",
        "marginMm": 30,
        "aspectRatioLocked": true
      },
      "origin": {
        "xy": {
          "kind": "stock-anchor",
          "x": "left",
          "y": "bottom"
        },
        "z": "stock-top"
      },
      "retractHeightMm": 10,
      "serviceHeightMm": 30,
      "machineProfileId": "shapeoko-grbl",
      "tools": [
        {
          "id": "flat-end-mill-6mm",
          "name": "6 mm Flat End Mill",
          "kind": "flat-end-mill",
          "diameterMm": 6,
          "shankDiameterMm": 6,
          "fluteCount": 3,
          "cuttingStyle": "upcut"
        },
        {
          "id": "flat-end-mill-6-35mm",
          "name": "6.35 mm Flat End Mill (1/4 in)",
          "kind": "flat-end-mill",
          "diameterMm": 6.35,
          "shankDiameterMm": 6.35,
          "fluteCount": 3,
          "cuttingStyle": "upcut"
        },
        {
          "id": "flat-end-mill-3-175mm",
          "name": "3.175 mm Flat End Mill (1/8 in)",
          "kind": "flat-end-mill",
          "diameterMm": 3.175,
          "shankDiameterMm": 3.175,
          "fluteCount": 3,
          "cuttingStyle": "upcut"
        },
        {
          "id": "flat-end-mill-0-6mm",
          "name": "0.6 mm Fret Slot End Mill",
          "kind": "flat-end-mill",
          "diameterMm": 0.6,
          "shankDiameterMm": 3.175,
          "fluteCount": 2,
          "cuttingStyle": "upcut"
        },
        {
          "id": "ball-nose-6-35mm",
          "name": "6.35 mm Ball Nose (1/4 in)",
          "kind": "ball-nose",
          "diameterMm": 6.35,
          "shankDiameterMm": 6.35,
          "fluteCount": 2,
          "cuttingStyle": "upcut"
        },
        {
          "id": "v-bit-30deg",
          "name": "30 degree V-Bit",
          "kind": "v-bit",
          "diameterMm": 6.35,
          "includedAngleDegrees": 30,
          "tipDiameterMm": 0.1
        },
        {
          "id": "v-bit-60deg",
          "name": "60 degree V-Bit",
          "kind": "v-bit",
          "diameterMm": 6.35,
          "includedAngleDegrees": 60,
          "tipDiameterMm": 0.1
        },
        {
          "id": "v-bit-90deg",
          "name": "90 degree V-Bit",
          "kind": "v-bit",
          "diameterMm": 6.35,
          "includedAngleDegrees": 90,
          "tipDiameterMm": 0.1
        }
      ],
      "activeToolId": "flat-end-mill-6mm",
      "pathSources": [],
      "operations": []
    },
    "occtModel": {
      "version": 1,
      "features": [
        {
          "id": "guided",
          "name": "Guided loft",
          "bodyId": "guided-body",
          "kind": "loft",
          "ruled": false,
          "sections": [
            {
              "profile": {
                "sketchId": "lower-sketch",
                "outer": [
                  "lower"
                ],
                "holes": []
              },
              "offset": 0
            },
            {
              "profile": {
                "sketchId": "upper-sketch",
                "outer": [
                  "upper"
                ],
                "holes": []
              },
              "offset": 0
            }
          ],
          "rails": [
            {
              "sketchId": "rail-sketch-0",
              "entities": [
                "rail-0"
              ]
            },
            {
              "sketchId": "rail-sketch-1",
              "entities": [
                "rail-1"
              ]
            }
          ]
        }
      ]
    }
  }
}
