दस्तावेज़
मशीनिंग
मूल निर्माण, सेटिंग्स-संचालित जी-कोड पीढ़ी, सुझाव, पार्सिंग और रीप्ले सत्यापन।
स्वचालित अनुवाद अभी उपलब्ध नहीं है; पाठ अंग्रेज़ी में है और इंटरफ़ेस आपकी भाषा में है। अंग्रेज़ी मूल देखें
इन अनुरोधों को अपने स्वयं के चल रहे साइडकार को भेजें। मान इस ब्राउज़र में रहते हैं.
यह कैसे काम करता है
साइडकार स्टार्टअप पर चुने गए लूपबैक पोर्ट पर सुनता है और इसे प्रिंट करता है 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 |
/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
एसडीके उदाहरण
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
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
उदाहरण लाओ
// 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
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
उदाहरण लाओ
// 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
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
एसडीके उदाहरण
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
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
एसडीके उदाहरण
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 }
इस समूह को कॉल किया जा रहा है
ऑपरेशन आईडी का फॉर्म है 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 पंक्ति. |