跳到内容
CADCAMFUN
文档

文档

生成本地制造程序

捕获真实零件,评估其制造工作,检查发布的 NC 证据,并保存可再次检查的文档。

从英文自动翻译。 查看英文原文

知道您要求什么结果

原生制造是一种确定性 CAD/CAM 计算,独立于语言模型。 POST /api/toolpaths/manufacture 接受显式 CAD 快照、准备制造资源、计划或接受订购的操作、计算切削数据、生成刀具路径、发布一个 NC 程序并独立重播该文本。响应包括支持其发布级别的证据。

该端点不会创建图形、保存刀具路径或更新编辑器。成功的应对是刻意检查和坚持的价值。它不同于 /api/toolpaths/generate,它适应铣床/车床/打印机输出的应用程序生成器设置,并且来自 /api/toolpaths/verify,它根据明确建模的毛坯和刀具重放提供的 NC/程序。

使用 加工终点 对于请求/响应模式, CAM参考 对于核心表示,以及 保存的程序参考 对于持久性行为。以下作业故意足够小,可以在不编辑现有项目的情况下进行复制和检查。

发送完整的、经过验证的快照

将此 JSON 保存为 native-job.json。它描述了一个以 (40,40,10) 为中心的 20 × 20 × 5 毫米 POM 毛坯,其 X/Y 两侧各有 2 毫米毛坯,上方有 1 毫米毛坯。有效负载由真实的解码 CamKernelRequest 架构并由内核评估;其基线结果包含三个计划操作。始终检查返回的声明,而不是在客户端中硬编码预期的版本。

native-job.json
{
  "schemaVersion": 1,
  "id": "blank-job",
  "name": "POM blank",
  "material": "POM",
  "elements": [{
    "id": "blank",
    "type": "cube",
    "x": 20, "y": 20, "z": 5,
    "width": 40, "height": 40, "depth": 10
  }],
  "stock": { "x": 20, "y": 20, "width": 44, "height": 44, "depth": 11 },
  "resolution": 0.5
}
在不保存项目资源的情况下进行评估
curl --fail-with-body \
  -H "Authorization: Bearer $CADCAMFUN_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary @native-job.json \
  "$CADCAMFUN_URL/api/toolpaths/manufacture" > native-result.json

shell 文件捕获准确的响应以供检查。提供相同的捕获请求会产生确定的本机输出;使用新的零件位置、刀具、操作或质量控制是另一项工作。请求身份标签对于跟踪很有用,但工件的摘要绑定了其实际源和 NC 内容。

解析库存和工作坐标

快照库存使用中心 X/Y 和全宽/高度/深度。快照适配器首先构建选定的零件几何形状,找到其最低的 Z,并将毛坯底部放置在那里;它的顶部是底部加上声明的深度。在示例中,零件从 Z0 延伸到 Z10,库存从 Z0 延伸到 Z11。 X/Y 中的库存范围为 −2 到 42。

适配器使用这些边界的显式尺寸。不会再次添加库存记录的显示限额,并且库存 topZ 字段不会替换此本机快照适配器中的最低部分锚定。区分编辑器元数据和构建制造作业实际消耗的字段。

工作原点默认为 stock-center:库存中心 X/Y 位于其顶部 Z。 stock-corner chooses minimum X/Y at the same top.输入操作几何图形以 CAD 世界毫米为单位,而生成的程序移动/NC 则以工作坐标为单位。 Conventional cutting goes below work Z0. workOffset 是可选的;程序默认为G54。

如果没有提供库存,较低级别的作业准备会在 X/Y 两侧额外包围零件边界 2 毫米,在上方增加 1 毫米。明确库存之外的零件被拒绝;增加所需的切削深度不会使不兼容的库存包含该零件。

选择材料、机器和刀具

Material 是根据内核材质库解析的查找字符串,包括支持的 ID、名称和别名。未知材料返回打字准备问题。 HTTP 快照的可选计算机是已注册的预设 ID:vmc-standard、haas-vf2、hsc-mill、desktop-mill 或 cnc-router。省略它使用 vmc 标准。预设描述了典型的机器类别和限制,而不是单个安装的合格模型。

省略刀具使用默认刀具库。提供工具取代了婴儿床,并需要 1–200 刀具记录。刀具可识别其类型、直径、槽数、材料/涂层、槽长、柄直径和伸出量。可选的刀柄尺寸、最大转速、刀座数量和特定类型的几何形状可细化生成和间隙。凹槽必须是从 1 到 24 的整数;明确的口袋号码是1–999。

操作工具 ID 必须命名所提供的库中的刀具。重复的刀具 ID、无效的尺寸和无法访问的策略/刀具组合会产生问题,而不是猜测的替换。该架构接受平面铣刀、球铣刀、公牛铣刀、倒角铣刀、点铣刀、钻头、面铣刀、螺纹铣刀和雕刻刀类型。

公共快照计算机字符串不接受自定义计算机记录。调用底层的代码集成 ManufacturingJob API 可以明确提供机器限制、行程和工作台几何形状。不要将该记录发送到 HTTP 架构需要预设字符串的位置。

自动计划或指定加工顺序

当缺少操作时,规划者从零件中导出它们。显式操作数组是权威的加工顺序,而不是要默默重新排序的建议列表。每个操作都有一个唯一的 ID 和工具参考。支持的策略记录涵盖面、自适应、型腔、轮廓、孔、钻孔、螺纹、雕刻、倒角和表面加工,并且具有适合每个的几何形状。

轮廓使用循环、内侧/外侧以及世界坐标顶部/底部。口袋/自适应切割使用带有可选岛环的封闭边界。钻孔使用点加顶部/底部。螺纹铣刀记录包括中心、直径、螺距、内部标志、顶部和长度。表面记录选择粗糙、平行、水线或陡浅行为;休息参考必须标识适当的先前工作。

每个操作过程的超控可包括 RPM、进给、切入进给、降压、步距、冷却液和径向啮合。缺失值来自材料/刀具/机器切削数据。步距是从 1 到 100 的百分比;降压和进给均为正值。工件记录与计算参数分开的覆盖字段,以便审阅者可以看到流程选择的来源。

本机内核在操作之间携带临时库存并发布其合并的 IR 一次。相比之下, combineCamOperations 对于保存的通用操作部分,连接已生成的 NC 文本;它不会将这些部分转换为集成控制器程序。当需要集成生成和重放时,请使用本机工件。

设置质量控制并了解其成本

输入含义和界限
finishAllowance0–5 mm 粗加工余量;省略使用材质的默认值。
scallop正数,最多 1 mm;默认为 0.01 mm,用于本机整理。
tolerance正路径公差;本机默认值 0.01 毫米。
resolution正重放细胞大小;控制库存证据的空间分辨率。
deburr正数,最多 5 mm;要求规划人员添加受支持的顶边倒角作业。
subprograms可选的翻译重复发射(方言支持),例如 Fanuc/Haas M98 子程序。

该请求支持 1–2、000 个 CAD 元素和最多 500 个显式操作。较小的公差和重放单元会增加计算工作,并且不会自动证明不受支持的几何形状。保留报告的分辨率和结果。视口网格和下采样的库存预览是显示输出,而不是独立的更精细的模拟。

本机过帐根据刀具分配设置刀具编号并请求在换刀前退刀。帖子格式坐标具有固定小数点。检查实际的NC和选择的方言;控制器名称并不能消除验证安装后行为的需要。

解释状态、声明和发布

结果是一个联合: status: "failed" 有问题,或 status: "ok" 与一个神器。一个ok的神器还是可以有的 release: "blocked"。读取两层;仅检查 HTTP 状态或外部状态是不够的。

该工件保留有序操作结果、切削数据、程序 IR、使用过的刀具、NC、库存统计、周期时间估计、问题和身份摘要。索赔已通过、失败、不受支持或未解决状态。它们涵盖切削数据、机器限制、操作完成、快速/夹具间隙、气刨、材料去除、独立 NC 重放、机器行程和机器/工作台间隙。

硬错误问题或空 NC 块释放。在没有硬故障的情况下,除非满足发布规则,否则不完整的证据会产生预览。当前规则允许不受支持的机器旅行索赔,同时仍返回经过验证的程序;内置预设并不全部提供明确的轴行程。在确定结果是否涵盖特定机器时检查该声明。

证据有模型边界

原生库存/持有人重播是三轴高度场检查。公共本机快照没有固定包络字段。独立验证接受固定信封,但它们不会默认添加到本地证据中。经过验证的程序标签是有关其捕获的模型和检查的证据,而不是机器认证。

内核结果标识其生产者:算法标识符是 cadcamfun-cam-kernel@1 合约模式版本是 1 (packages/core/src/cam/kernel/execute.ts, contracts.ts)。在确定存储的证据是否来自同一内核时比较两者。

根据精确结果创建便携式文档

A CamProgramDocument 保留 NC、程序、发生器/打印机设置、库存和图纸快照。可选的 kernelRequest/kernelArtifact 保留本机源证据。本示例将捕获的请求和结果转换为该文档,但不保存;根据核心、API 和效果在工作空间中运行它,例如 apps/sidecar。

保存之前验证便携式文档
import { Schema } from "effect"
import { cam } from "@cadcamfun/core"
import { CamKernelRequest, CamKernelResult, CamProgramDocument } from "@cadcamfun/api"

const request = Schema.decodeUnknownSync(CamKernelRequest)(await Bun.file("native-job.json").json())
const result = Schema.decodeUnknownSync(CamKernelResult)(await Bun.file("native-result.json").json())
if (result.status !== "ok" || result.value.release === "blocked") {
  throw new Error("The captured job has no releasable artifact")
}
const document = Schema.decodeUnknownSync(CamProgramDocument)({
  format: "cadcamfun-cam", version: 1,
  gcode: result.value.nc, program: result.value.program,
  settings: cam.generator.DEFAULT_SETTINGS,
  printer: cam.generator.DEFAULT_PRINTER_EXTRAS,
  stock: request.stock,
  drawing: { elements: request.elements, stock: request.stock },
  kernelRequest: request, kernelArtifact: result.value
})
await Bun.write("portable-program.json", JSON.stringify(document, null, 2))

该示例需要明确的库存,正如所提供的最小请求所具有的那样。它的通用编辑器设置是重新打开控件,而捕获的 kernelRequest 是真实的本机来源。从应用程序工作区捕获时保留所有实际的编辑器设置。

对照真实绘图保存

通过单独保存文档 POST /api/drawings/:id/toolpaths,包含名称、G 代码和包含完整便携式文档的数据。使用调用者可以访问的真实绘图 ID。便携式保存需要项目所有者或组织管理员/经理的写入权限;仅成功的计算不会授予持久性许可。

sidecar 解码文档,检查行 NC 等于文档 NC,并在信任新的本机工件之前重新运行捕获的内核请求。它将生成的工件、程序和原始 NC 进行比较。已编辑的证据、被阻止的重新运行或不一致的字节都会被拒绝。客户端提供的验证/sourceRevision 字段不建立信任。

当捕获的选定元素和库存与关联的图纸匹配时,该服务会生成图纸修订摘要。当源与当前图形不匹配时,保存的本机工件可能缺少该修订。保持这种区别可见:有效捕获的输出不一定是最新存储模型的新鲜输出。

看 刀具路径持久性端点 和 精确的 CAD 分析 当组装更丰富的捕获/保存流程时。避免使用项目刀具路径变体,除非需要其独特的查询参数约定。

改变后再生并诊断排斥

更改几何形状、库存、原点、工具、材料、机器、操作顺序或 NC 会更改证据关系。从更新的捕获请求重新生成。纯 NC 编辑可以保留有用的普通文本,但它不得携带早期的本机工件作为新字节的证据。保存服务会删除不兼容的本机元数据或拒绝不一致的新文档。

未知的机器预设是适配器验证错误。未知的材料/工具、无效的库存控制、空的几何形状和不受支持的加工会产生准备/计划问题。凿孔、快速库存、支架/工作台碰撞以及重放不匹配点以生成运动/证据。在更改流程控制之前,找到问题中的操作 ID、阶段、生产线和点。

源有效负载可以通过 JSON 模式解码,但仍然无法生成有效的作业。相反,工件可以与受阻的版本一起存在。在诊断任一情况时保留原始请求/结果对,而不是通过推测性设置更改来覆盖它。

实现来源: packages/api/src/cam-kernel.ts, cam-program.ts, 核 cam/kernel/snapshot.ts, execute.ts, schema.ts,和边车 services/cam-program.ts。重点证据测试是 packages/core/src/cam/kernel/kernel.test.ts 和 apps/sidecar/test/cam-program.test.ts.

浏览示例结果

native-job.json,生成 拖动进行轨道旋转·滚动进行缩放·右键拖动进行平移
规划者在世界坐标中为 POM 毛坯选择的三个操作(程序移动加上位于 20、20、11 的工作原点)。紫色:正面,绿色:自适应粗加工,蓝色:陡浅精加工,虚线:急流。按重播可观看顺序。

没有 operations 规划者从默认刀具库中选择了三个操作,每个操作都有自己的刀具更换。 NC 标头在任何运动之前对它们进行了总结:

native-result.json → value.nc(第一行)
%
O1000
(PROGRAM: POM BLANK)
(UNITS: MM)
(WORK OFFSET: G54)
(MACHINE: VERTICAL MACHINING CENTRE BT40, 12 000 RPM, 11 KW)
(MATERIAL: ACETAL POM-C DELRIN)
(STOCK: 44.00 X 44.00 X 11.00 MM)
(OP 1: FACE STOCK TOP | T1 [FACEMILL-50] | S1810 | F815-1629)
(OP 2: 3D ADAPTIVE ROUGHING | T2 [FLAT-16] | S7160 | F2848-5696)
(OP 3: 3D STEEP AND SHALLOW FINISHING | T3 [BALL-10] | S12000 | F1642-3283)
G21 G90 G17 G94 G40 G49 G80
G54
(OPERATION: FACE STOCK TOP)
T1 M6
G43 H1
M3 S1810
(OP1 FACE)
(FACE: FACE STOCK TOP)
G0 X-48.000 Y-22.000 Z10.000
Z5.000
Z2.000
Z1.000
G1 Z-1.000 F815
X48.000 F1629
Y0.000
X-48.000
Y22.000
X48.000
G0 Z2.000

程序结束于 G0 Z10.000, M5, M30 和 %。总长度:3071 行。由于没有提供机器, vmc-standard 应用了预设,其帖子是 fanuc: 因此 %/O1000 取景, T1 M6 工具变更和 G43 H1 长度补偿。

读取操作的切削数据

每个操作都带有一个 cutting 显示其速度和进给量是如何得出的记录。这些是上述粗加工操作的值:

场地价值意义
rpm7160主轴转速Vc和有效直径
vc / vcRecommended359.9 / 360 米/分钟达到和推荐的表面速度
fz0.199 mm切屑减薄修正后每齿进给量
chipThickness0.159 mm所得平均切屑厚度
feed / plungeFeed5696 / 2848 毫米/分钟切削和切入进给
ap / ae10 / 3.2 毫米轴向深度和径向啮合(20 % 步距)
rampAngle / helixPitch5° / 4.398 毫米入口几何形状
mrr182.258 立方厘米/分钟材料去除率
powerKw / torqueNm / forceN1.862 / 1.986 / 248估计负载,根据机器限制进行检查
deflectionMm0.0157 mm估计工具偏转
limitedBy, warnings, exceeded空的哪个限制限制了某个值;这里什么也没做
source reads: "Acetal POM-C (Delrin) (ISO N): Vc 360 m/min, fz 0.159 mm at Ø16, kc1.1 300 N/mm² mc 0.2 (handbook starting values)". The reference 块列出了材料表行、使用的列以及每个乘数(此处 cutSpeed 1.2, diameterScale 1.326, chipThinning 1。25)。它是 basis 声明这些是手册起始值,而不是供应商的刀具认证数据。

起始值,不是保证值

将切削数据视为合理的第一次尝试。在生产前根据工具供应商的数据和机器检查它们,并在您了解得更清楚时覆盖每个操作:然后工件将字段记录在 overridden.

神器身份

场地例子哈希值
identity.jobaa2159be8c7c4228…规范的工作
identity.part91a5382540991195…零件几何形状
identity.nc1614df331826682c…准确的 NC 文本
identity.algorithmcadcamfun-cam-kernel@1内核名称和版本

重新运行相同的请求会重现相同的身份。当 sidecar 保存原生工件时,它会重新运行捕获的请求并进行比较;已编辑的 NC 更改 identity.nc 并被拒绝作为证据。

配方:从 TypeScript 生成并保存

generate-and-save.ts
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
const request = JSON.parse(await Bun.file("native-job.json").text())

const result = await client.toolpathGenerator.manufacture(request)
if (result.status === "failed") throw new Error(result.issues.map((i) => i.message).join("; "))

const artifact = result.value
const failed = artifact.claims.filter((claim) => claim.status === "failed")
console.log(artifact.release, failed.map((claim) => `${claim.id}: ${claim.detail}`))
if (artifact.release === "blocked") process.exit(1)

await Bun.write("program.nc", artifact.nc)

另存为刀具路径还需要便携式 cadcamfun-cam 从这个工件构建的文档,它的 program、捕获的请求和绘图快照,如上所述。 SDK 方法采用与 HTTP 正文相同的 JSON 对象,键入为 ToolpathGeneratorManufactureInput.

在 3D

刀具路径及其引用的内容 拖动进行轨道旋转·滚动进行缩放·右键拖动进行平移
迁移中的刀具路径外键:图纸、机器、材料、工具、项目和用户,以及版本、注释和成本估算。