सामग्री पर जाएँ
CADCAMFUN
दस्तावेज़

दस्तावेज़

मशीनिंग

मूल निर्माण, सेटिंग्स-संचालित जी-कोड पीढ़ी, सुझाव, पार्सिंग और रीप्ले सत्यापन।

स्वचालित अनुवाद अभी उपलब्ध नहीं है; पाठ अंग्रेज़ी में है और इंटरफ़ेस आपकी भाषा में है। अंग्रेज़ी मूल देखें

प्लेग्राउंड

इन अनुरोधों को अपने स्वयं के चल रहे साइडकार को भेजें। मान इस ब्राउज़र में रहते हैं.

जुड़े नहीं हैं
यह कैसे काम करता है

साइडकार स्टार्टअप पर चुने गए लूपबैक पोर्ट पर सुनता है और इसे प्रिंट करता है ready रेखा; उस यूआरएल का उपयोग करें और CADCAMFUN_TOKEN इसकी शुरुआत की गई थी. अनुरोध सीधे इस पृष्ठ से उस पते पर जाते हैं।

साइडकार CORS हेडर को केवल टौरी मूल और तक भेजता है http://localhost या http://127.0.0.1 किसी भी बंदरगाह पर. होस्ट किए गए दस्तावेज़ों से ब्राउज़र प्रतिक्रिया को अवरुद्ध कर देता है, इसलिए दस्तावेज़ों को स्थानीय रूप से चलाएँ (bun run dev में packages/web) खेल के मैदान का उपयोग करने के लिए, या अनुरोध को कर्ल के रूप में कॉपी करें। वास्तविक डेटा को छुए बिना प्रयोग करने के लिए, साइडकार से शुरुआत करें CADCAMFUN_DATA_DIR एक बेकार निर्देशिका की ओर इशारा किया - देखें एपीआई वॉकथ्रू.

संचालन

5 एंडपॉइंट toolpathGenerator समूह, साइडकार के स्वयं से उत्पन्न ओपनएपीआई दस्तावेज़. संरक्षित संचालन लेते हैं Authorization: Bearer $CADCAMFUN_TOKEN; देखना प्रमाणीकरण. व्यवहार और मर्यादा में हैं सबसिस्टम गाइड.

डाक /api/toolpaths/manufacture toolpathGenerator.manufacture
डाक /api/toolpaths/generate toolpathGenerator.generate
डाक /api/toolpaths/suggest toolpathGenerator.suggest
डाक /api/toolpaths/parse toolpathGenerator.parse
डाक /api/toolpaths/verify toolpathGenerator.verify
3डी में मशीनिंग संचालन कक्षा में खींचें · ज़ूम करने के लिए स्क्रॉल करें · पैन करने के लिए दाईं ओर खींचें
प्रति ऑपरेशन एक ब्लॉक (5), इस पृष्ठ के प्रति संसाधन अनुभाग को स्टैक्ड किया गया है और विधि के अनुसार रंगा गया है: हरा GET, नारंगी POST, नीला PUT, बैंगनी PATCH, लाल DELETE। निर्माण के समय OpenAPI दस्तावेज़ से उत्पन्न।

/api/toolpaths/manufacture

डाक /api/toolpaths/manufacture # toolpathGenerator.manufacture

आवश्यक है Authorization: Bearer <token>.

अनुरोध का मुख्य भाग · आवश्यक · एप्लिकेशन/जेसन
{
  setupOrientation?: "+Z" | "-Z" | "+X" | "-X" | "+Y" | "-Y"
  material: string
  machine?: string
  machineConfig?: {
    id: string
    name: string
    type: string
    description?: string | null
    config: object
  }
  origin?: "stock-center" | "stock-corner"
  finishAllowance?: number
  scallop?: number
  schemaVersion: 1
  id: string
  name: string
  elements: object[]
  stock?: {
    width: number
    height: number
    depth: number
    radius?: number
    x?: number
    y?: number
    topZ?: number
    allowance?: number
    material?: string
    elementId?: string
  }
  tolerance?: number
  resolution?: number
  workOffset?: "G54" | "G55" | "G56" | "G57" | "G58" | "G59"
  operations?: Array<{
    id: string
    name?: string
    tool: string
    rpm?: number
    feed?: number
    plungeFeed?: number
    stepdown?: number
    stepover?: number
    coolant?: "off" | "flood" | "mist"
    radialEngagement?: number
    strategy: "face"
    bottom: number
  } | "mist"
    radialEngagement?: number
    strategy: "adaptive"
    region: {
      boundary: Array<{
        x: number
        y: number
      }>
      islands?: Array<Array<{
        x: number
        y: number
      }>>
    }
    top: number
    bottom: number
    allowance?: number
  } | "mist"
    radialEngagement?: number
    strategy: "pocket"
    region: {
      boundary: Array<{
        x: number
        y: number
      }>
      islands?: Array<Array<{
        x: number
        y: number
      }>>
    }
    top: number
    bottom: number
    allowance?: number
    finish?: boolean
    within?: {
      boundary: Array<{
        x: number
        y: number
      }>
      islands?: Array<Array<{
        x: number
        y: number
      }>>
    }
  } | "mist"
    radialEngagement?: number
    strategy: "profile"
    loop: Array<{
      x: number
      y: number
    }>
    side: "outside" | "inside"
    top: number
    bottom: number
    allowance?: number
    finish?: boolean
    tabs?: Array<{
      position: number
      width: number
      height: number
    }>
    leadIn?: "direct" | "arc" | "ramp" | "helix"
    leadRadius?: number
  } | "mist"
    radialEngagement?: number
    strategy: "bore"
    center: {
      x: number
      y: number
    }
    diameter: number
    top: number
    bottom: number
    allowance?: number
  } | "mist"
    radialEngagement?: number
    strategy: "drill"
    points: Array<{
      x: number
      y: number
    }>
    top: number
    bottom: number
    cut?: "drill" | "spot" | "tap" | "ream"
  } | "mist"
    radialEngagement?: number
    strategy: "thread"
    center: {
      x: number
      y: number
    }
    diameter: number
    pitch: number
    internal: boolean
    top: number
    length: number
    rightHand?: boolean
  } | "mist"
    radialEngagement?: number
    strategy: "engrave"
    paths: Array<{
      points: Array<{
        x: number
        y: number
      }>
      closed: boolean
    }>
    top: number
    depth: number
  } | "mist"
    radialEngagement?: number
    strategy: "chamfer"
    loops: Array<{
      points: Array<{
        x: number
        y: number
      }>
      side: "outside" | "inside"
    }>
    top: number
    width: number
    tipOffset?: number
  } | "mist"
    radialEngagement?: number
    strategy: "surface"
    mode: "roughing" | "rest" | "parallel" | "waterline" | "steep-shallow" | "scallop" | "spiral" | "radial" | "flat"
    slopeAngle?: number
    allowance?: number
    scallop?: number
    clearing?: "contour" | "adaptive"
    angle?: number
    restFrom?: string
    center?: {
      x: number
      y: number
    }
  } | {
    id: string
    name?: string
    tool: string
    rpm?: number
    feed?: number
    plungeFeed?: number
    stepdown?: number
    stepover: number
    coolant?: "off" | "mist"
    radialEngagement?: number
    strategy: "multiaxis"
    mode?: "parallel" | "contour" | "swarf"
    top: number
    angle?: number
    toolAxis?: "normal" | "lead"
    lead?: number
    tilt?: number
    walls?: Array<{
      bottom: Array<{
        x: number
        y: number
        z: number
      }>
      top: Array<{
        x: number
        y: number
        z: number
      }>
      normal: Array<{
        x: number
        y: number
        z: number
      }>
      concaveRadius?: number
    }>
    near?: Array<{
      x: number
      y: number
      z: number
    }>
  }>
  tools?: Array<{
    id: string
    name: string
    kind: "flat" | "ball" | "bull" | "chamfer" | "spot" | "drill" | "facemill" | "threadmill" | "engraver" | "tap" | "reamer"
    diameter: number
    flutes: number
    material: "hss" | "hss-co" | "carbide" | "pcd"
    coating: "none" | "tin" | "ticn" | "altin" | "alcrn" | "zrn" | "dlc" | "diamond"
    cornerRadius?: number
    angle?: number
    tipDiameter?: number
    pitch?: number
    fluteLength: number
    shankDiameter: number
    stickout: number
    holder?: {
      diameter: number
      length: number
    }
    maxRpm?: number
    number?: number
  }>
  deburr?: number
  tabs?: {
    count: number
    width: number
    height: number
  }
  subprograms?: boolean
  nativeCycles?: boolean
  smoothing?: number
  postDefinition?: unknown
  print?: {
    layerHeight?: number
    firstLayerHeight?: number
    walls?: number
    topLayers?: number
    bottomLayers?: number
    infillDensity?: number
    infillPattern?: "lines" | "grid" | "triangles" | "honeycomb" | "gyroid" | "concentric"
    supports?: "none" | "buildplate" | "everywhere"
    supportAngle?: number
    adhesion?: "none" | "skirt" | "brim" | "raft"
    brimWidth?: number
    printSpeed?: number
    nozzleTemperature?: number
    bedTemperature?: number
    fan?: number
    vase?: boolean
    orientation?: "as-designed" | "auto"
    seam?: "nearest" | "aligned" | "random"
    retractionDistance?: number
    zHop?: number
    flow?: number
    relativeExtrusion?: boolean
  }
  progress?: {
    projectId: string
    runId: string
  }
}
जवाब
200 वस्तु | वस्तु application/json
{
  status: "ok"
  value: {
    schemaVersion: 1
    jobId: string
    material: {
      id: string
      name: string
      iso: string
    }
    machine: {
      id: string
      name: string
      post: "generic" | "fanuc" | "grbl" | "linuxcnc" | "haas" | "siemens" | "heidenhain" | "okuma" | "mazak"
    }
    setupOrientation?: "+Z" | "-Z" | "+X" | "-X" | "+Y" | "-Y"
    origin: {
      x: number
      y: number
      z: number
    }
    stockBounds: {
      min: {
        x: number
        y: number
        z: number
      }
      max: {
        x: number
        y: number
        z: number
      }
    }
    operations: Array<{
      id: string
      name: string
      strategy: "face" | "adaptive" | "pocket" | "profile" | "bore" | "drill" | "thread" | "engrave" | "chamfer" | "surface" | "multiaxis" | "print"
      toolId: string
      cut: "face" | "slot" | "rough-side" | "finish-wall" | "finish-floor" | "finish-3d" | "spot" | "thread-mill" | "tap" | "ream" | "print"
      status: "ok" | "failed"
      cutting?: {
        cut: "face" | "ream"
        rpm: number
        vc: number
        vcRecommended: number
        effectiveDiameter: number
        fz: number
        chipThickness: number
        feed: number
        plungeFeed: number
        ap: number
        ae: number
        stepoverPercent: number
        rampAngle: number
        helixPitch: number
        coolant: "off" | "flood" | "mist"
        peck?: number
        chipBreak?: boolean
        feedPerRev?: number
        passes?: number
        mrr: number
        powerKw: number
        torqueNm: number
        forceN: number
        deflectionMm: number
        limitedBy: string[]
        warnings: string[]
        exceeded: string[]
        source: string
        reference: {
          table: "MATERIALS"
          row: string
          rowName: string
          columns: {
            [key: string]: number
          }
          factors: {
            [key: string]: number
          }
          basis: string
        }
      }
      parameters: object
      overridden: string[]
      warnings: string[]
      startZ?: number
      cutLength: number
      timeSeconds: number
      removedVolume: number
    }>
    program: {
      name: string
      units: "mm" | "inch"
      workOffset: "G54" | "G55" | "G56" | "G57" | "G58" | "G59"
      toolpaths: Array<{
        id: string
        name: string
        toolId: string
        spindleRpm: number
        coolant: "off" | "mist"
        moves: Array<{
          _tag: "Rapid"
          to: {
            x: number
            y: number
            z: number
          }
          rotary?: {
            a?: number
            b?: number
            c?: number
          }
          expr?: {
            x?: unknown
            y?: unknown
            z?: unknown
            feed?: unknown
          }
        } | {
          _tag: "Linear"
          to: {
            x: number
            y: number
            z: number
          }
          feed: number
          rotary?: {
            a?: number
            b?: number
            c?: number
          }
          expr?: {
            x?: unknown
            y?: unknown
            z?: unknown
            feed?: unknown
          }
        } | {
          _tag: "Arc"
          to: {
            x: number
            y: number
            z: number
          }
          center: {
            x: number
            y: number
          }
          clockwise: boolean
          feed: number
        } | {
          _tag: "Dwell"
          seconds: number
        } | {
          _tag: "Comment"
          text: string
        } | {
          _tag: "Cycle"
          cycle: "drill" | "dwell" | "peck" | "chipBreak" | "bore"
          to: {
            x: number
            y: number
            z: number
          }
          feed: number
          peckDepth: number
          dwellSeconds: number
          retractHeight: number
          pitch?: number
        } | {
          _tag: "Orient"
          a?: number
          b?: number
          c?: number
        } | {
          _tag: "Assign"
          variable: {
            scope: "local" | "global" | "system"
            index: number
          } | {
            name: string
          }
          value: unknown
        } | {
          _tag: "MacroCall"
          name: string
          args: object
        } | {
          _tag: "If"
          condition: {
            cmp: "eq" | "ne" | "lt" | "le" | "gt" | "ge"
            a: unknown
            b: unknown
          }
        } | {
          _tag: "Else"
        } | {
          _tag: "EndIf"
        } | {
          _tag: "While"
          condition: {
            cmp: "eq" | {
          _tag: "EndWhile"
        } | {
          _tag: "Label"
          name: string
        } | {
          _tag: "Goto"
          label: string
          direction?: "auto" | "forward" | "backward"
          condition?: {
            cmp: "eq" | {
          _tag: "CycleBegin"
          family: "heidenhain"
          number: number
          name: string
          params: {
            [key: string]: number
          }
        } | {
          _tag: "CycleEnd"
        } | {
          _tag: "Message"
          text: string
        }>
        operation?: {
          id: string
          name: string
        }
      }>
      metadata?: {
        [key: string]: string
      }
    }
    tools: Array<{
      id: string
      name: string
      kind: "flat" | "ball" | "bull" | "facemill" | "threadmill" | "engraver" | "reamer"
      diameter: number
      flutes: number
      material: "hss" | "hss-co" | "carbide" | "pcd"
      coating: "none" | "tin" | "ticn" | "altin" | "alcrn" | "zrn" | "dlc" | "diamond"
      cornerRadius?: number
      angle?: number
      tipDiameter?: number
      pitch?: number
      fluteLength: number
      shankDiameter: number
      stickout: number
      holder?: {
        diameter: number
        length: number
      }
      maxRpm?: number
      number: number
    }>
    nc: string
    claims: Array<{
      id: "bed-fit" | "heated-start" | "layers-rise" | "wall-coverage" | "skin-coverage" | "no-spill" | "filament" | "cutting-data" | "machine-limits" | "operations-complete" | "no-rapid-in-stock" | "holder-clearance" | "no-gouge" | "material-removed" | "nc-replay" | "machine-travel" | "machine-clearance" | "setup-workholding" | "part-coverage"
      status: "passed" | "failed" | "unsupported" | "unresolved"
      detail: string
    }>
    issues: Array<{
      tag: "InvalidInput" | "UnknownMaterial" | "UnknownTool" | "NoSuitableTool" | "UnsupportedCapability" | "GenerationFailed" | "EmptyToolpath" | "MachineLimit" | "RapidInStock" | "HolderCollision" | "Gouge" | "RemainingStock" | "ReplayMismatch" | "Cancelled"
      severity: "error" | "warning"
      stage: "prepare" | "plan" | "generate" | "post" | "replay" | "evidence"
      message: string
      operationId?: string
      line?: number
      point?: {
        x: number
        y: number
        z: number
      }
    }>
    release: "blocked" | "preview" | "verified-program"
    stock: {
      initialVolume: number
      finalVolume: number
      partVolume: number
      remainingVolume: number
      maxRemaining: number
      cellSize: number
      fiveAxis?: {
        voxelMm: number
        removedLower: number
        removedUpper: number
        remainingLower: number
        remainingUpper: number
      }
    }
    cycleTimeSeconds: number
    identity: {
      job: string
      part: string
      nc: string
      algorithm: string
    }
    notes: string[]
    print?: {
      dialect: "marlin" | "klipper" | "reprap"
      filament: {
        material: string
        densityGcm3: number
        diameter: number
      }
      nozzle: {
        diameter: number
        temperature: number
        bedTemperature: number
      }
      layers: number
      layerHeight: number
      filamentMm: number
      filamentGrams: number
      timeSeconds: number
      travelMm: number
      retractions: number
      lengthByKind: {
        [key: string]: number
      }
      size: {
        x: number
        y: number
        z: number
      }
      orientation: string
      settings: {
        layerHeight?: number
        firstLayerHeight?: number
        walls?: number
        topLayers?: number
        bottomLayers?: number
        infillDensity?: number
        infillPattern?: "lines" | "grid" | "triangles" | "honeycomb" | "gyroid" | "concentric"
        supports?: "none" | "buildplate" | "everywhere"
        supportAngle?: number
        adhesion?: "none" | "skirt" | "brim" | "raft"
        brimWidth?: number
        printSpeed?: number
        nozzleTemperature?: number
        bedTemperature?: number
        fan?: number
        vase?: boolean
        orientation?: "as-designed" | "auto"
        seam?: "nearest" | "aligned" | "random"
        retractionDistance?: number
        zHop?: number
        flow?: number
        relativeExtrusion?: boolean
      }
    }
    tolerance?: {
      requested: number
      terms: Array<{
        id: "source-tessellation" | "part-model" | "path" | "nc-rounding" | "stock-replay"
        mm: number
        basis: string
      }>
      achieved: number
      unbounded: string[]
      met: boolean
    }
  }
} | {
  status: "failed"
  issues: Array<{
    tag: "InvalidInput" | "Cancelled"
    severity: "error" | "warning"
    stage: "prepare" | "evidence"
    message: string
    operationId?: string
    line?: number
    point?: {
      x: number
      y: number
      z: number
    }
  }>
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
एसडीके उदाहरण
toolpathGenerator.manufacture
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// ToolpathGeneratorManufactureInput
const result = await client.toolpathGenerator.manufacture({
  setupOrientation: "+Z",
  material: "",
  machine: "",
  machineConfig: {
    id: "",
    name: "",
    type: "",
    config: {}
  },
  origin: "stock-center",
  finishAllowance: 0,
  scallop: 0,
  schemaVersion: 1,
  id: "",
  name: "",
  elements: [
    {}
  ],
  stock: {
    width: 0,
    height: 0,
    depth: 0
  },
  tolerance: 0,
  resolution: 0,
  workOffset: "G54",
  operations: [
    {
      id: "",
      tool: "",
      strategy: "face",
      bottom: 0
    }
  ],
  tools: [
    {
      id: "",
      name: "",
      kind: "flat",
      diameter: 0,
      flutes: 1,
      material: "hss",
      coating: "none",
      fluteLength: 0,
      shankDiameter: 0,
      stickout: 0
    }
  ],
  deburr: 0,
  tabs: {
    count: 1,
    width: 0,
    height: 0
  },
  subprograms: false,
  nativeCycles: false,
  smoothing: 0,
  postDefinition: null,
  print: {},
  progress: {
    projectId: "",
    runId: ""
  }
})
curl
पोस्ट/एपीआई/टूलपाथ/निर्माण
curl --request POST "${CADCAMFUN_URL}/api/toolpaths/manufacture" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
इसे अजमाएं

/api/toolpaths/generate

डाक /api/toolpaths/generate # toolpathGenerator.generate

आवश्यक है Authorization: Bearer <token>.

अनुरोध का मुख्य भाग · आवश्यक · एप्लिकेशन/जेसन
{
  settings?: {
    machineType?: "mill" | "lathe" | "3dprinter"
    operationType?: "contour" | "pocket" | "drill" | "engrave" | "profile" | "threading" | "3d_surface" | "probing" | "multiaxis" | "facing" | "turning" | "boring" | "threading" | "grooving" | "parting" | "knurling" | "standard" | "vase" | "support" | "infill" | "raft" | "brim"
    material?: "aluminum" | "steel" | "wood" | "plastic" | "brass" | "titanium" | "composite" | "other"
    toolType?: "endmill" | "ballnose" | "drill" | "vbit" | "chamfer" | "threadmill" | "reamer" | "probe" | "toolsetter" | "turning" | "facing" | "threading" | "grooving" | "boring" | "parting" | "brass" | "hardened" | "ruby" | "standard"
    toolDiameter?: number
    flutes?: number
    depth?: number
    stepdown?: number
    stepover?: number
    feedrate?: number
    plungerate?: number
    rpm?: number
    tolerance?: number
    offset?: "inside" | "outside" | "center"
    direction?: "climb" | "conventional"
    coolant?: boolean
    finishingPass?: boolean
    finishingAllowance?: number
    finishingStrategy?: "contour" | "parallel" | "spiral" | "radial"
    surfaceStrategy?: "roughing" | "parallel" | "waterline" | "steep-shallow" | "scallop" | "spiral" | "radial" | "flat"
    steepAngle?: number
    surfaceClearing?: "contour" | "adaptive"
    adaptiveEngagement?: number
    scallop?: number
    rasterAngle?: number
    rasterOneWay?: boolean
    useAI?: boolean
    aiDifficulty?: "simple" | "moderate" | "complex"
    aiOptimize?: "speed" | "quality" | "balance"
    optimizePath?: boolean
    useArcFitting?: boolean
    useHighSpeedMode?: boolean
    useExactStop?: boolean
    useToolCompensation?: boolean
    useAdaptiveFeeds?: boolean
    useRestMachining?: boolean
    restToolDiameter?: number
    fiveAxisStrategy?: "parallel" | "contour"
    fiveAxisToolAxis?: "normal" | "lead"
    fiveAxisLead?: number
    fiveAxisTilt?: number
    fiveAxisGouge?: boolean
    toolNumber?: number
    workOffset?: "G54" | "G55" | "G56" | "G57" | "G58" | "G59"
    probeCycle?: "zSurface" | "edgeX" | "edgeY" | "corner" | "bore" | "boss" | "toolLength"
    probeFeed?: number
    probeSearch?: number
    probeStylus?: number
    probeDialect?: "linuxcnc" | "fanuc"
    probeFeatureSize?: number
    threadPitch?: number
    threadType?: "internal" | "external"
    threadHand?: "right" | "left"
    threadPasses?: number
    threadSpringPasses?: number
    latheZero?: "face" | "chuck"
    bedOrigin?: "corner" | "center"
    nozzleDiameter?: number
    filamentDiameter?: number
    layerHeight?: number
    extrusionWidth?: number
    printSpeed?: number
    printTemperature?: number
    bedWidth?: number
    bedDepth?: number
    centerOnBed?: boolean
    bedTemperature?: number
    stockDiameter?: number
    stockLength?: number
    spindleDirection?: "cw" | "ccw"
    turningOperation?: "external" | "internal" | "face"
    applyToolCompensation?: boolean
    workholding?: "vise" | "clamps" | "plate" | "none"
    viseJawAxis?: "x" | "y"
    clampDepth?: number
    viseJawHeight?: number
    parallelsHeight?: number
    workholdingConfigured?: boolean
    latheTurret?: "rear" | "front"
    chuckType?: "3-jaw" | "4-jaw" | "collet"
    noseRadius?: number
    gripLength?: number
    tailstock?: boolean
    stockBore?: number
    printerKinematics?: "cartesian" | "corexy" | "bed-slinger" | "delta"
    buildHeight?: number
    originType?: "workpiece-center" | "workpiece-corner" | "workpiece-corner2" | "machine-zero" | "custom"
    originX?: number
    originY?: number
    originZ?: number
  }
  geometry?: {
    geometryType?: "rectangle" | "circle" | "polygon" | "custom" | "selected" | "cube" | "sphere" | "cylinder" | "cone" | "extrude" | "line" | "pyramid" | "hemisphere" | "ellipsoid" | "capsule" | "triangle" | "ellipse" | "prism"
    rectangleWidth?: number
    rectangleHeight?: number
    circleRadius?: number
    polygonSides?: number
    polygonRadius?: number
    customPath?: string
    selectedElements?: object[]
    stock?: {
      width: number
      height: number
      depth: number
      radius?: number
      x?: number
      y?: number
      topZ?: number
      allowance?: number
      material?: string
      elementId?: string
    }
  }
  printer?: {
    infillDensity?: number
    infillPattern?: "grid" | "lines" | "triangles" | "honeycomb" | "gyroid" | "concentric"
    supportType?: "none" | "minimal" | "full"
    shellCount?: number
    printResolution?: "standard" | "high" | "low"
    printOrientation?: "original" | "auto-optimal"
    filament?: "pla" | "petg" | "abs" | "asa" | "tpu" | "nylon" | "pc"
    topLayers?: number
    bottomLayers?: number
    firstLayerHeight?: number
    firstLayerSpeed?: number
    outerWallSpeed?: number
    infillSpeed?: number
    bridgeSpeed?: number
    supportSpeed?: number
    travelSpeed?: number
    retractionDistance?: number
    retractionSpeed?: number
    retractMinTravel?: number
    zHop?: number
    fanSpeed?: number
    fanFromLayer?: number
    minLayerTime?: number
    flow?: number
    seam?: "nearest" | "aligned" | "random"
    outerWallFirst?: boolean
    supportAngle?: number
    supportDensity?: number
    supportXYGap?: number
    supportZGap?: number
    supportInterfaceLayers?: number
    adhesion?: "none" | "skirt" | "brim" | "raft"
    brimWidth?: number
    skirtLoops?: number
    skirtDistance?: number
    raftLayers?: number
    flavor?: "marlin" | "klipper" | "reprap"
    relativeExtrusion?: boolean
    pressureAdvance?: number
    acceleration?: number
    startGcode?: string
    endGcode?: string
  }
  machine?: {
    id: string
    name?: string
    axes?: 3 | 4 | 5
    controller?: string
    fiveAxis?: {
      layout: "table-AC" | "table-BC"
      tilt: {
        min: number
        max: number
      }
      rotation?: {
        min: number
        max: number
      }
      pivot?: {
        x: number
        y: number
        z: number
      }
      tcp?: "control" | "program"
    }
  }
  stamp?: string
  evidence?: boolean
  progress?: {
    projectId: string
    runId: string
  }
}
जवाब
200 वस्तु application/json
{
  gcode: string
  cycles: Array<{
    gcode: string
  }>
  warnings: string[]
  stats: {
    lines: number
    cutLength: number
    rapidLength: number
    minZ: number
    maxZ: number
    estimatedSeconds: number
    bounds: {
      min: {
        x: number
        y: number
        z: number
      }
      max: {
        x: number
        y: number
        z: number
      }
    }
  }
  program: {
    name: string
    units: "mm" | "inch"
    workOffset: "G54" | "G55" | "G56" | "G57" | "G58" | "G59"
    toolpaths: Array<{
      id: string
      name: string
      toolId: string
      spindleRpm: number
      coolant: "off" | "flood" | "mist"
      moves: Array<{
        _tag: "Rapid"
        to: {
          x: number
          y: number
          z: number
        }
        rotary?: {
          a?: number
          b?: number
          c?: number
        }
        expr?: {
          x?: unknown
          y?: unknown
          z?: unknown
          feed?: unknown
        }
      } | {
        _tag: "Linear"
        to: {
          x: number
          y: number
          z: number
        }
        feed: number
        rotary?: {
          a?: number
          b?: number
          c?: number
        }
        expr?: {
          x?: unknown
          y?: unknown
          z?: unknown
          feed?: unknown
        }
      } | {
        _tag: "Arc"
        to: {
          x: number
          y: number
          z: number
        }
        center: {
          x: number
          y: number
        }
        clockwise: boolean
        feed: number
      } | {
        _tag: "Dwell"
        seconds: number
      } | {
        _tag: "Comment"
        text: string
      } | {
        _tag: "Cycle"
        cycle: "drill" | "dwell" | "peck" | "chipBreak" | "tap" | "ream" | "bore"
        to: {
          x: number
          y: number
          z: number
        }
        feed: number
        peckDepth: number
        dwellSeconds: number
        retractHeight: number
        pitch?: number
      } | {
        _tag: "Orient"
        a?: number
        b?: number
        c?: number
      } | {
        _tag: "Assign"
        variable: {
          scope: "local" | "global" | "system"
          index: number
        } | {
          name: string
        }
        value: unknown
      } | {
        _tag: "MacroCall"
        name: string
        args: object
      } | {
        _tag: "If"
        condition: {
          cmp: "eq" | "ne" | "lt" | "le" | "gt" | "ge"
          a: unknown
          b: unknown
        }
      } | {
        _tag: "Else"
      } | {
        _tag: "EndIf"
      } | {
        _tag: "While"
        condition: {
          cmp: "eq" | {
        _tag: "EndWhile"
      } | {
        _tag: "Label"
        name: string
      } | {
        _tag: "Goto"
        label: string
        direction?: "auto" | "forward" | "backward"
        condition?: {
          cmp: "eq" | {
        _tag: "CycleBegin"
        family: "heidenhain"
        number: number
        name: string
        params: {
          [key: string]: number
        }
      } | {
        _tag: "CycleEnd"
      } | {
        _tag: "Message"
        text: string
      }>
      operation?: {
        id: string
        name: string
      }
    }>
    metadata?: {
      [key: string]: string
    }
  }
  evidence?: {
    schema: "cadcamfun/program-record@1"
    inputs: {
      digest: string
      machineType: string
      operationType: string
      material: string
      elements: string[]
      stock?: {
        width: number
        height: number
        depth: number
        topZ: number
      }
    }
    tool: {
      type: string
      diameter: number
      flutes: number
    }
    process: {
      rpm: number
      feed: number
      plunge: number
      stepdown: number
      stepover: number
      coolant: boolean
    }
    cuttingData: {
      status: "kernel" | "manual" | "not-applicable"
      detail: string
      recommended?: {
        rpm: number
        feed: number
        plunge: number
        stepdown: number
      }
      reference?: {
        table: "MATERIALS"
        row: string
        rowName: string
        columns: {
          [key: string]: number
        }
        factors: {
          [key: string]: number
        }
        basis: string
      }
    }
    program: {
      sha256: string
      lines: number
      cutLength: number
      estimatedSeconds: number
    }
    checks: Array<{
      id: "generated" | "cutting-data" | "safe-height" | "no-rapid-in-material" | "tool-clearance" | "within-stock" | "no-gouge" | "nc-interpretation" | "bed-fit" | "heated-start" | "layers-rise" | "wall-coverage" | "skin-coverage" | "no-spill" | "filament"
      status: "passed" | "failed" | "unresolved" | "not-run"
      detail: string
      line?: number
    }>
    result: "passed" | "warnings" | "failed"
  }
  print?: {
    layers: number
    filamentMm: number
    filamentGrams: number
    timeSeconds: number
    travelMm: number
    retractions: number
    lengthByKind: {
      [key: string]: number
    }
    size: {
      x: number
      y: number
      z: number
    }
  }
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
उदाहरण लाओ
toolpathGenerator.generate
// Not generated in the Promise SDK (multipart, binary or raw body): call it with fetch.
const response = await fetch(`${process.env.CADCAMFUN_URL}/api/toolpaths/generate`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
curl
पोस्ट /एपीआई/टूलपाथ/जेनरेट
curl --request POST "${CADCAMFUN_URL}/api/toolpaths/generate" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
इसे अजमाएं

/api/toolpaths/suggest

डाक /api/toolpaths/suggest # toolpathGenerator.suggest

आवश्यक है Authorization: Bearer <token>.

अनुरोध का मुख्य भाग · आवश्यक · एप्लिकेशन/जेसन
{
  settings?: {
    machineType?: "mill" | "lathe" | "3dprinter"
    operationType?: "contour" | "pocket" | "drill" | "engrave" | "profile" | "threading" | "3d_surface" | "probing" | "multiaxis" | "facing" | "turning" | "boring" | "threading" | "grooving" | "parting" | "knurling" | "standard" | "vase" | "support" | "infill" | "raft" | "brim"
    material?: "aluminum" | "steel" | "wood" | "plastic" | "brass" | "titanium" | "composite" | "other"
    toolType?: "endmill" | "ballnose" | "drill" | "vbit" | "chamfer" | "threadmill" | "reamer" | "probe" | "toolsetter" | "turning" | "facing" | "threading" | "grooving" | "boring" | "parting" | "brass" | "hardened" | "ruby" | "standard"
    toolDiameter?: number
    flutes?: number
    depth?: number
    stepdown?: number
    stepover?: number
    feedrate?: number
    plungerate?: number
    rpm?: number
    tolerance?: number
    offset?: "inside" | "outside" | "center"
    direction?: "climb" | "conventional"
    coolant?: boolean
    finishingPass?: boolean
    finishingAllowance?: number
    finishingStrategy?: "contour" | "parallel" | "spiral" | "radial"
    surfaceStrategy?: "roughing" | "parallel" | "waterline" | "steep-shallow" | "scallop" | "spiral" | "radial" | "flat"
    steepAngle?: number
    surfaceClearing?: "contour" | "adaptive"
    adaptiveEngagement?: number
    scallop?: number
    rasterAngle?: number
    rasterOneWay?: boolean
    useAI?: boolean
    aiDifficulty?: "simple" | "moderate" | "complex"
    aiOptimize?: "speed" | "quality" | "balance"
    optimizePath?: boolean
    useArcFitting?: boolean
    useHighSpeedMode?: boolean
    useExactStop?: boolean
    useToolCompensation?: boolean
    useAdaptiveFeeds?: boolean
    useRestMachining?: boolean
    restToolDiameter?: number
    fiveAxisStrategy?: "parallel" | "contour"
    fiveAxisToolAxis?: "normal" | "lead"
    fiveAxisLead?: number
    fiveAxisTilt?: number
    fiveAxisGouge?: boolean
    toolNumber?: number
    workOffset?: "G54" | "G55" | "G56" | "G57" | "G58" | "G59"
    probeCycle?: "zSurface" | "edgeX" | "edgeY" | "corner" | "bore" | "boss" | "toolLength"
    probeFeed?: number
    probeSearch?: number
    probeStylus?: number
    probeDialect?: "linuxcnc" | "fanuc"
    probeFeatureSize?: number
    threadPitch?: number
    threadType?: "internal" | "external"
    threadHand?: "right" | "left"
    threadPasses?: number
    threadSpringPasses?: number
    latheZero?: "face" | "chuck"
    bedOrigin?: "corner" | "center"
    nozzleDiameter?: number
    filamentDiameter?: number
    layerHeight?: number
    extrusionWidth?: number
    printSpeed?: number
    printTemperature?: number
    bedWidth?: number
    bedDepth?: number
    centerOnBed?: boolean
    bedTemperature?: number
    stockDiameter?: number
    stockLength?: number
    spindleDirection?: "cw" | "ccw"
    turningOperation?: "external" | "internal" | "face"
    applyToolCompensation?: boolean
    workholding?: "vise" | "clamps" | "plate" | "none"
    viseJawAxis?: "x" | "y"
    clampDepth?: number
    viseJawHeight?: number
    parallelsHeight?: number
    workholdingConfigured?: boolean
    latheTurret?: "rear" | "front"
    chuckType?: "3-jaw" | "4-jaw" | "collet"
    noseRadius?: number
    gripLength?: number
    tailstock?: boolean
    stockBore?: number
    printerKinematics?: "cartesian" | "corexy" | "bed-slinger" | "delta"
    buildHeight?: number
    originType?: "workpiece-center" | "workpiece-corner" | "workpiece-corner2" | "machine-zero" | "custom"
    originX?: number
    originY?: number
    originZ?: number
  }
  geometry?: {
    geometryType?: "rectangle" | "circle" | "polygon" | "custom" | "selected" | "cube" | "sphere" | "cylinder" | "cone" | "extrude" | "line" | "pyramid" | "hemisphere" | "ellipsoid" | "capsule" | "triangle" | "ellipse" | "prism"
    rectangleWidth?: number
    rectangleHeight?: number
    circleRadius?: number
    polygonSides?: number
    polygonRadius?: number
    customPath?: string
    selectedElements?: object[]
    stock?: {
      width: number
      height: number
      depth: number
      radius?: number
      x?: number
      y?: number
      topZ?: number
      allowance?: number
      material?: string
      elementId?: string
    }
  }
}
जवाब
200 वस्तु application/json
{
  parameters?: {
    depth: number
    stepdown: number
    operationType: "contour" | "pocket" | "drill" | "engrave" | "profile" | "threading" | "3d_surface" | "probing" | "multiaxis" | "facing" | "turning" | "boring" | "threading" | "grooving" | "parting" | "knurling" | "standard" | "vase" | "support" | "infill" | "raft" | "brim"
  }
  suggestions: string[]
  feedback: string
  statistics: {
    cuttingSpeed: number
    chipLoad: number
    materialRemovalRate: number
    effectiveStepover: number
  }
  operation: {
    title: string
    description: string
  }
  warnings: string[]
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
उदाहरण लाओ
toolpathGenerator.suggest
// Not generated in the Promise SDK (multipart, binary or raw body): call it with fetch.
const response = await fetch(`${process.env.CADCAMFUN_URL}/api/toolpaths/suggest`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
curl
पोस्ट/एपीआई/टूलपाथ/सुझाव
curl --request POST "${CADCAMFUN_URL}/api/toolpaths/suggest" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
इसे अजमाएं

/api/toolpaths/parse

डाक /api/toolpaths/parse # toolpathGenerator.parse

आवश्यक है Authorization: Bearer <token>.

अनुरोध का मुख्य भाग · आवश्यक · एप्लिकेशन/जेसन
{
  gcode: string
  name?: string
}
जवाब
200 वस्तु application/json
{
  warnings: string[]
  stats: {
    lines: number
    cutLength: number
    rapidLength: number
    minZ: number
    maxZ: number
    estimatedSeconds: number
    bounds: {
      min: {
        x: number
        y: number
        z: number
      }
      max: {
        x: number
        y: number
        z: number
      }
    }
  }
  program: {
    name: string
    units: "mm" | "inch"
    workOffset: "G54" | "G55" | "G56" | "G57" | "G58" | "G59"
    toolpaths: Array<{
      id: string
      name: string
      toolId: string
      spindleRpm: number
      coolant: "off" | "flood" | "mist"
      moves: Array<{
        _tag: "Rapid"
        to: {
          x: number
          y: number
          z: number
        }
        rotary?: {
          a?: number
          b?: number
          c?: number
        }
        expr?: {
          x?: unknown
          y?: unknown
          z?: unknown
          feed?: unknown
        }
      } | {
        _tag: "Linear"
        to: {
          x: number
          y: number
          z: number
        }
        feed: number
        rotary?: {
          a?: number
          b?: number
          c?: number
        }
        expr?: {
          x?: unknown
          y?: unknown
          z?: unknown
          feed?: unknown
        }
      } | {
        _tag: "Arc"
        to: {
          x: number
          y: number
          z: number
        }
        center: {
          x: number
          y: number
        }
        clockwise: boolean
        feed: number
      } | {
        _tag: "Dwell"
        seconds: number
      } | {
        _tag: "Comment"
        text: string
      } | {
        _tag: "Cycle"
        cycle: "drill" | "dwell" | "peck" | "chipBreak" | "tap" | "ream" | "bore"
        to: {
          x: number
          y: number
          z: number
        }
        feed: number
        peckDepth: number
        dwellSeconds: number
        retractHeight: number
        pitch?: number
      } | {
        _tag: "Orient"
        a?: number
        b?: number
        c?: number
      } | {
        _tag: "Assign"
        variable: {
          scope: "local" | "global" | "system"
          index: number
        } | {
          name: string
        }
        value: unknown
      } | {
        _tag: "MacroCall"
        name: string
        args: object
      } | {
        _tag: "If"
        condition: {
          cmp: "eq" | "ne" | "lt" | "le" | "gt" | "ge"
          a: unknown
          b: unknown
        }
      } | {
        _tag: "Else"
      } | {
        _tag: "EndIf"
      } | {
        _tag: "While"
        condition: {
          cmp: "eq" | {
        _tag: "EndWhile"
      } | {
        _tag: "Label"
        name: string
      } | {
        _tag: "Goto"
        label: string
        direction?: "auto" | "forward" | "backward"
        condition?: {
          cmp: "eq" | {
        _tag: "CycleBegin"
        family: "heidenhain"
        number: number
        name: string
        params: {
          [key: string]: number
        }
      } | {
        _tag: "CycleEnd"
      } | {
        _tag: "Message"
        text: string
      }>
      operation?: {
        id: string
        name: string
      }
    }>
    metadata?: {
      [key: string]: string
    }
  }
  motion?: {
    paths: Array<{
      count: number
      runs: Array<{
        start: number
        spindle: "cw" | "ccw" | "off"
        rpm: number
        css: boolean
        plane: 17 | 18 | 19
        xMode: "diameter" | "radius"
        tool?: number
        coolant: "off" | "flood" | "mist"
        feedMode: "min" | "rev"
        probe?: boolean
      }>
      extrude?: number[]
      lines?: number[]
      rpm?: number[]
      retracts?: number[]
      homes?: number[]
    }>
    unsupported: Array<{
      line: number
      word: string
    }>
  }
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
एसडीके उदाहरण
toolpathGenerator.parse
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// ToolpathGeneratorParseInput
const result = await client.toolpathGenerator.parse({
  gcode: "",
  name: ""
})
curl
पोस्ट/एपीआई/टूलपाथ/पार्स
curl --request POST "${CADCAMFUN_URL}/api/toolpaths/parse" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
इसे अजमाएं

/api/toolpaths/verify

डाक /api/toolpaths/verify # toolpathGenerator.verify

आवश्यक है Authorization: Bearer <token>.

अनुरोध का मुख्य भाग · आवश्यक · एप्लिकेशन/जेसन
{
  gcode?: string
  program?: {
    name: string
    units: "mm" | "inch"
    workOffset: "G54" | "G55" | "G56" | "G57" | "G58" | "G59"
    toolpaths: Array<{
      id: string
      name: string
      toolId: string
      spindleRpm: number
      coolant: "off" | "flood" | "mist"
      moves: Array<{
        _tag: "Rapid"
        to: {
          x: number
          y: number
          z: number
        }
        rotary?: {
          a?: number
          b?: number
          c?: number
        }
        expr?: {
          x?: unknown
          y?: unknown
          z?: unknown
          feed?: unknown
        }
      } | {
        _tag: "Linear"
        to: {
          x: number
          y: number
          z: number
        }
        feed: number
        rotary?: {
          a?: number
          b?: number
          c?: number
        }
        expr?: {
          x?: unknown
          y?: unknown
          z?: unknown
          feed?: unknown
        }
      } | {
        _tag: "Arc"
        to: {
          x: number
          y: number
          z: number
        }
        center: {
          x: number
          y: number
        }
        clockwise: boolean
        feed: number
      } | {
        _tag: "Dwell"
        seconds: number
      } | {
        _tag: "Comment"
        text: string
      } | {
        _tag: "Cycle"
        cycle: "drill" | "dwell" | "peck" | "chipBreak" | "tap" | "ream" | "bore"
        to: {
          x: number
          y: number
          z: number
        }
        feed: number
        peckDepth: number
        dwellSeconds: number
        retractHeight: number
        pitch?: number
      } | {
        _tag: "Orient"
        a?: number
        b?: number
        c?: number
      } | {
        _tag: "Assign"
        variable: {
          scope: "local" | "global" | "system"
          index: number
        } | {
          name: string
        }
        value: unknown
      } | {
        _tag: "MacroCall"
        name: string
        args: object
      } | {
        _tag: "If"
        condition: {
          cmp: "eq" | "ne" | "lt" | "le" | "gt" | "ge"
          a: unknown
          b: unknown
        }
      } | {
        _tag: "Else"
      } | {
        _tag: "EndIf"
      } | {
        _tag: "While"
        condition: {
          cmp: "eq" | {
        _tag: "EndWhile"
      } | {
        _tag: "Label"
        name: string
      } | {
        _tag: "Goto"
        label: string
        direction?: "auto" | "forward" | "backward"
        condition?: {
          cmp: "eq" | {
        _tag: "CycleBegin"
        family: "heidenhain"
        number: number
        name: string
        params: {
          [key: string]: number
        }
      } | {
        _tag: "CycleEnd"
      } | {
        _tag: "Message"
        text: string
      }>
      operation?: {
        id: string
        name: string
      }
    }>
    metadata?: {
      [key: string]: string
    }
  }
  stock: {
    minX: number
    maxX: number
    minY: number
    maxY: number
    minZ: number
    maxZ: number
  }
  tool: {
    kind?: "endmill" | "ballnose" | "drill" | "vbit" | "facemill"
    diameter: number
    cuttingLength?: number
    shankDiameter?: number
    stickout?: number
    holderDiameter?: number
    holderLength?: number
    angle?: number
    tipRadius?: number
  }
  fixtures?: Array<{
    id: string
    bounds: {
      minX: number
      maxX: number
      minY: number
      maxY: number
      minZ: number
      maxZ: number
    }
  }>
  target?: {
    solids: Array<{
      _tag: "Box"
      origin: {
        x: number
        y: number
        z: number
      }
      size: {
        x: number
        y: number
        z: number
      }
    } | {
      _tag: "Cylinder"
      origin: {
        x: number
        y: number
        z: number
      }
      radius: number
      height: number
      segments: number
      axis?: "z" | "x" | "y"
    } | {
      _tag: "Sphere"
      center: {
        x: number
        y: number
        z: number
      }
      radius: number
      rings: number
    } | {
      _tag: "Cone"
      origin: {
        x: number
        y: number
        z: number
      }
      baseRadius: number
      topRadius: number
      height: number
      segments: number
      axis?: "z" | {
      _tag: "Torus"
      center: {
        x: number
        y: number
        z: number
      }
      majorRadius: number
      minorRadius: number
      rotation?: number
      majorSegments: number
      minorSegments: number
      axis?: "z" | {
      _tag: "Extrude"
      profile: Array<{
        x: number
        y: number
      }>
      height: number
      origin?: {
        x: number
        y: number
        z: number
      }
    } | {
      _tag: "Revolve"
      profile: Array<{
        x: number
        y: number
      }>
      angle: number
      segments?: number
    }>
    meshes?: Array<{
      positions: number[]
      indices: number[]
    }>
    reliefs?: Array<{
      x: number
      y: number
      radius: number
      bottom: number
      reason: string
    }>
  }
  resolution?: number
  tolerance?: number
  start?: {
    x: number
    y: number
    z: number
  }
}
जवाब
200 वस्तु application/json
{
  ok: boolean
  issues: Array<{
    code: "InvalidInput" | "InterpreterWarning" | "RapidInMaterial" | "ShankCollision" | "HolderCollision" | "FixtureCollision" | "BelowStock" | "Gouge" | "UncutStock" | "ResolutionCoarsened"
    severity: "error" | "warning" | "info"
    message: string
    line?: number
    point?: {
      x: number
      y: number
      z: number
    }
    count: number
    fixtureId?: string
  }>
  stats: {
    cellSize: number
    cellsX: number
    cellsY: number
    samples: number
    stockVolume: number
    removedVolume: number
    remainingVolume: number
    engagedLength: number
    airCutLength: number
    gougeVolume?: number
    maxGouge?: number
    uncutVolume?: number
    maxUncut?: number
  }
  preview: {
    nx: number
    ny: number
    minX: number
    minY: number
    cellX: number
    cellY: number
    minZ: number
    maxZ: number
    heights: number[]
    gouge: number[]
  }
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
एसडीके उदाहरण
toolpathGenerator.verify
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// ToolpathGeneratorVerifyInput
const result = await client.toolpathGenerator.verify({
  gcode: "",
  program: {
    name: "",
    units: "mm",
    workOffset: "G54",
    toolpaths: [
      {
        id: "",
        name: "",
        toolId: "",
        spindleRpm: 0,
        coolant: "off",
        moves: [
          {
            _tag: "Rapid",
            to: {
              x: null,
              y: null,
              z: null
            }
          }
        ]
      }
    ]
  },
  stock: {
    minX: 0,
    maxX: 0,
    minY: 0,
    maxY: 0,
    minZ: 0,
    maxZ: 0
  },
  tool: {
    diameter: 0
  },
  fixtures: [
    {
      id: "",
      bounds: {
        minX: 0,
        maxX: 0,
        minY: 0,
        maxY: 0,
        minZ: 0,
        maxZ: 0
      }
    }
  ],
  target: {
    solids: [
      {
        _tag: "Box",
        origin: {
          x: 0,
          y: 0,
          z: 0
        },
        size: {
          x: 0,
          y: 0,
          z: 0
        }
      }
    ]
  },
  resolution: 0,
  tolerance: 0,
  start: {
    x: 0,
    y: 0,
    z: 0
  }
})
curl
पोस्ट/एपीआई/टूलपाथ/सत्यापित करें
curl --request POST "${CADCAMFUN_URL}/api/toolpaths/verify" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
इसे अजमाएं

स्कीमा

नामित स्कीमा इस समूह के मापदंडों, निकायों और प्रतिक्रियाओं से पहुंच योग्य हैं। ए ? एक वैकल्पिक फ़ील्ड चिह्नित करता है; | null उस फ़ील्ड को चिह्नित करता है जो शून्य मान के साथ मौजूद हो सकता है।

BadRequestEncoded
{
  _tag: "BadRequest"
  message: string
}
InternalErrorEncoded
{
  _tag: "InternalError"
  message: string
}
UnauthorizedEncoded
{
  _tag: "Unauthorized"
  message: string
}

इस समूह को कॉल किया जा रहा है

ऑपरेशन आईडी का फॉर्म है toolpathGenerator.<name>. जनरेट किया गया प्रॉमिस SDK (@cadcamfun/api/sdk) उनमें से अधिकांश को इस रूप में उजागर करता है client.<namespace>.<method>(input), कहाँ input पथ पैरामीटर और बॉडी फ़ील्ड की एक सपाट वस्तु है; प्रत्येक कार्ड का एसडीके उदाहरण सटीक एक्सेसर और इनपुट प्रकार दिखाता है। मल्टीपार्ट अपलोड, बाइनरी या जावास्क्रिप्ट प्रतिक्रियाएँ और कच्चे वेबहुक उत्पन्न नहीं होते हैं; वे कार्ड दिखाते हैं fetch इसके बजाय.

प्रॉमिस एसडीके से त्रुटियाँ
import { CadCam, ClientError } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

try {
  await client.projects.list()
} catch (error) {
  if (error instanceof ClientError) {
    // Transport | UnexpectedStatus | UnsupportedContentType | MalformedResponse | SseEventTooLarge
  } else {
    // a declared error body: switch on error._tag
  }
}

समस्या निवारण

लक्षणसंभावित कारणहल करना
हर कॉल पर 401पिछले लॉन्च से टोकन, या गायब Bearer उपसर्गभेजना Authorization: Bearer <token> टोकन के साथ साइडकार की शुरुआत की गई।
कुछ होने से पहले 400बॉडी या पैरामीटर स्कीमा से मेल नहीं खाताकार्ड पर अनुरोध स्कीमा के साथ पेलोड की तुलना करें।
कहीं और दिखने वाले रिकॉर्ड पर 403 या 404एक्टिंग अकाउंट अलग हैसही भेजो x-session-token, या उस स्थानीय प्रोफ़ाइल का उपयोग करें जो रिकॉर्ड का स्वामी है।
409विरोधाभासी स्थिति, जैसे डुप्लिकेट नाम या पुराना शाखा प्रमुखसंसाधन को दोबारा पढ़ें और वर्तमान डेटा के साथ पुनः प्रयास करें।
कोशिश करें यह कहता है "सीओआरएस द्वारा अवरुद्ध"दस्तावेज़ गैर-लूपबैक मूल से परोसे जाते हैंदस्तावेज़ों को स्थानीय रूप से चलाएँ या अनुरोध को कर्ल के रूप में कॉपी करें।
कनेक्शन नहीं हो सकासाइडकार एक नए बंदरगाह पर फिर से शुरू हुईनए से पोर्ट पढ़ें ready पंक्ति.