Documentação
Gere um programa de manufatura nativo
Capture uma peça real, avalie seu trabalho de fabricação, inspecione as evidências NC publicadas e salve um documento que possa ser verificado novamente.
Traduzido automaticamente do inglês. Ver o original em inglês
Saiba qual resultado você está solicitando
A manufatura nativa é uma computação CAD/CAM determinística, independente de um modelo de linguagem. POST /api/toolpaths/manufacture aceita um instantâneo CAD explícito, prepara recursos de fabricação, planeja ou aceita operações ordenadas, calcula dados de corte, gera percursos da ferramenta, publica um programa NC e reproduz esse texto de forma independente. A resposta inclui as evidências que apoiam o seu nível de liberação.
Este ponto final não cria um desenho, salva um percurso ou atualiza o editor. Uma resposta bem-sucedida é um valor a ser inspecionado e persistido deliberadamente. É diferente de /api/toolpaths/generate, que adapta as configurações do gerador de aplicação para saída de fresadora/torno/impressora e de /api/toolpaths/verify, que reproduz um NC/programa fornecido em relação a um material e uma ferramenta explicitamente modelados.
Use o extremidades de usinagem para esquemas de solicitação/resposta, Referência CAM para as representações principais, e referência de programa salvo para comportamento persistente. O trabalho a seguir é deliberadamente pequeno o suficiente para ser reproduzido e inspecionado sem editar um projeto existente.
Envie um instantâneo completo e validado
Salve este JSON como native-job.json. Ele descreve um espaço em branco POM de 40 × 40 × 10 mm centrado em (20,20,5), cercado por 2 mm de estoque em cada lado X/Y e 1 mm acima. A carga útil foi decodificada pelo real CamKernelRequest esquema e avaliado pelo kernel; o seu resultado de base contém três operações planeadas. Sempre inspecione as declarações retornadas em vez de codificar uma versão esperada em um cliente.
{
"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 O arquivo shell captura a resposta exata para inspeção. Fornecer a mesma solicitação capturada gera uma saída nativa determinística; usar uma nova posição de peça, cortador, operação ou controle de qualidade é uma tarefa diferente. Os rótulos de identidade de solicitação são úteis para rastreamento, mas os resumos do artefato vinculam sua origem real e o conteúdo NC.
Resolver estoque e coordenadas de trabalho
O material de instantâneo usa X/Y central e largura/altura/profundidade total. O adaptador de instantâneo primeiro constrói a geometria da peça selecionada, encontra seu Z mais baixo e coloca o estoque inferior ali; seu topo é aquele fundo mais a profundidade declarada. No exemplo, a peça se estende de Z0 a Z10 e o estoque de Z0 a Z11. Os limites de estoque em X/Y são −2 a 42.
O adaptador utiliza as dimensões explícitas para esses limites. Ele não adiciona novamente a margem de exibição do registro de estoque e um estoque topZ campo não substitui a ancoragem da parte mais baixa neste adaptador de captura instantânea nativo. Mantenha a distinção entre os metadados do editor e os campos realmente consumidos para construir um trabalho de produção.
A origem do trabalho é padronizada como stock-center: o centro de estoque X/Y em seu Z superior. stock-corner escolhe o mínimo X/Y no mesmo topo. A geometria da operação de entrada está em milímetros do mundo CAD, enquanto os movimentos/NC resultantes do programa estão em coordenadas de trabalho. O corte convencional vai abaixo do trabalho Z0. workOffset é opcional; o padrão do programa é G54.
Sem material fornecido, a preparação do trabalho de nível inferior envolve os limites da peça com 2 mm extras em cada lado X/Y e 1 mm acima. Uma peça fora do estoque explícito é rejeitada; aumentar a profundidade de corte solicitada não faz com que o estoque incompatível contenha a peça.
Selecione material, máquina e cortadores
Material é uma string de pesquisa resolvida na biblioteca de materiais do kernel, incluindo IDs, nomes e aliases suportados. Material desconhecido retorna um problema de preparação digitado. A máquina opcional do instantâneo HTTP é um ID predefinido registrado: vmc-standard, haas-vf2, hsc-mill, desktop-mill ou cnc-router. Omiti-lo usa o padrão VMC. As predefinições descrevem classes e limites típicos de máquinas, não um modelo qualificado de uma instalação individual.
A omissão de ferramentas usa a base de corte padrão. O fornecimento de ferramentas substitui esse berço e requer 1–200 registros de corte. Uma fresa identifica seu tipo, diâmetro, contagem de canais, material/revestimento, comprimento do canal, diâmetro da haste e projeção. Dimensões de suporte opcionais, RPM máximo, número de bolsão e geometria específica do tipo refinam a geração e a folga. As flautas devem ser um número inteiro de 1 a 24; números de bolso explícitos são 1–999.
Os IDs das ferramentas de operação devem nomear os cortadores nessa biblioteca fornecida. IDs de cortador duplicados, dimensões inválidas e combinações de estratégia/ferramenta inacessíveis produzem problemas em vez de substituições adivinhadas. O esquema aceita os tipos plano, esférico, macho, chanfro, ponto, broca, fresa de facear, fresa de rosca e gravador.
A sequência da máquina de snapshot pública não aceita um registro de máquina personalizado. Uma integração de código chamando o nível inferior ManufacturingJob A API pode fornecer limites de máquina, deslocamento e geometria da tabela explicitamente. Não envie esse registro onde o esquema HTTP espera uma sequência predefinida.
Planeje automaticamente ou especifique a ordem de usinagem
Quando as operações estão ausentes, o planejador as deriva da peça. Uma matriz de operações explícitas é uma ordem de usinagem oficial, não uma lista de sugestões a serem reordenadas silenciosamente. Cada operação possui um ID exclusivo e uma referência de ferramenta. Os registros de estratégia suportados abrangem trabalhos de face, adaptativos, bolsões, perfis, furos, brocas, roscas, gravações, chanfros e superfícies, com geometria apropriada para cada um.
Um perfil usa um loop, lado interno/externo e topo/fundo coordenado mundialmente. Um corte de bolso/adaptativo utiliza um limite fechado com anéis de ilha opcionais. A perfuração utiliza pontos mais topo/fundo. Um registro de fresagem de rosca inclui centro, diâmetro, passo, bandeira interna, topo e comprimento. Um registro de superfície escolhe comportamento irregular, paralelo, linha d'água ou íngreme-raso; uma referência de descanso deve identificar o trabalho anterior apropriado.
As substituições do processo por operação podem incluir RPM, avanço, avanço de mergulho, redução, passo lateral, refrigeração e engate radial. Os valores ausentes vêm dos dados de material/cortador/corte da máquina. Stepover é uma porcentagem de 1 a 100; stepdown e feeds são positivos. O artefato registra os campos substituídos separadamente dos parâmetros calculados para que um revisor possa ver de onde vieram as escolhas do processo.
O kernel nativo carrega estoque provisório entre as operações e publica seu IR combinado uma vez. Em contraste, combineCamOperations para seções de operação genéricas salvas, une o texto NC já gerado; não transforma essas seções em um programa controlador integrado. Use o artefato nativo quando a geração e a reprodução integradas forem necessárias.
Defina controles de qualidade e entenda seus custos
| Entrada | Significado e limites |
|---|---|
finishAllowance | tolerância de desbaste de 0–5 mm; omitido usa o padrão do material. |
scallop | Positivo, no máximo 1 mm; padrão 0.01 mm para acabamento nativo. |
tolerance | Tolerância de caminho positivo; padrão nativo 0.01 mm. |
resolution | Tamanho de célula de repetição positivo; controla a resolução espacial da evidência de estoque. |
deburr | Positivo, no máximo 5 mm; pede ao planejador para adicionar trabalhos de chanfro na borda superior suportados. |
subprograms | Emissão opcional de repetição traduzida onde o dialeto suporta, como subprogramas Fanuc/Haas M98. |
A solicitação suporta 1–2,000 elementos CAD e no máximo 500 operações explícitas. Tolerâncias menores e células de repetição aumentam o trabalho computacional e não provam automaticamente geometria não suportada. Preservar a resolução relatada com o resultado. Uma malha de viewport e uma visualização de estoque com resolução reduzida são saídas de exibição, não uma simulação independente mais refinada.
A postagem nativa define os números das ferramentas das atribuições do cortador e solicita a retração antes da troca da ferramenta. O formato das postagens é coordenado com decimais fixos. Inspecione o NC real e o dialeto selecionado; um nome de controlador não elimina a necessidade de validar o comportamento pós-instalação.
Interpretar status, reivindicações e liberação
O resultado é uma união: status: "failed" com problemas ou status: "ok" com um artefato. Um artefato ok ainda pode ter release: "blocked". Leia ambas as camadas; verificar o status HTTP ou apenas o status externo é insuficiente.
O artefato retém resultados de operação ordenados, dados de corte, IR do programa, cortadores usados, NC, estatísticas de estoque, estimativas de tempo de ciclo, problemas e resumos de identidade. As reivindicações passaram, falharam, não foram suportadas ou não foram resolvidas. Eles abrangem dados de corte, limites da máquina, conclusão da operação, folga rápida/suporte, goivagem, remoção de material, reprodução NC independente, deslocamento da máquina e folga máquina/mesa.
Problemas graves de erro ou liberação de bloco NC vazio. Sem falha grave, a evidência incompleta produz uma visualização, a menos que a regra de liberação seja satisfeita. A regra atual permite uma reivindicação de viagem de máquina não suportada enquanto ainda retorna um programa verificado; nem todas as predefinições integradas fornecem deslocamento explícito do eixo. Verifique essa afirmação ao decidir se o resultado abrange uma máquina específica.
A evidência tem um limite de modelo
A reprodução nativa do estoque/titular é uma verificação de campo de altura de três eixos. O instantâneo nativo público não possui campo fixture-envelope. A verificação autônoma aceita envelopes de fixação, mas eles não são adicionados à evidência nativa por implicação. Um rótulo de programa verificado é uma evidência sobre seu modelo capturado e verificações, não uma certificação de máquina.
Os resultados do kernel identificam seu produtor: o identificador do algoritmo é cadcamfun-cam-kernel@1 e a versão do esquema do contrato é 1 (packages/core/src/cam/kernel/execute.ts, contracts.ts). Compare ambos ao decidir se as evidências armazenadas vieram do mesmo kernel.
Crie um documento portátil a partir do resultado exato
A CamProgramDocument preserva NC, programa, configurações de gerador/impressora, material e instantâneo de desenho. KernelRequest/kernelArtifact opcional retém evidências de origem nativa. Este exemplo converte a solicitação e o resultado capturados nesse documento sem salvá-lo; execute-o em um espaço de trabalho dependendo do núcleo, API e efeito, como 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)) O exemplo requer estoque explícito, conforme a solicitação mínima fornecida. Suas configurações genéricas do editor são controles de reabertura, enquanto o kernelRequest capturado é a fonte nativa da verdade. Preserve todas as configurações reais do editor ao capturar de um espaço de trabalho de aplicativo.
Economize em um desenho real
Salve o documento separadamente através POST /api/drawings/:id/toolpaths, com nome, código G e dados contendo o documento portátil completo. Use um ID de desenho real acessível ao chamador. Os salvamentos portáteis exigem acesso de gravação do proprietário do projeto ou ADMIN/GERENTE da organização; um cálculo bem-sucedido por si só não concede permissão de persistência.
O sidecar decodifica o documento, verifica se a linha NC é igual ao documento NC e executa novamente uma solicitação de kernel capturada antes de confiar em um novo artefato nativo. Ele compara o artefato resultante, o programa e o NC original. Evidências editadas, uma nova execução bloqueada ou bytes inconsistentes são recusados. Os campos de verificação/sourceRevision fornecidos pelo cliente não estabelecem confiança.
Quando os elementos selecionados capturados e o material correspondem ao desenho associado, o serviço deriva um resumo da revisão do desenho. Um artefato nativo salvo pode não ter essa revisão quando a origem não corresponde ao desenho atual. Mantenha essa distinção visível: a saída capturada válida não é necessariamente uma saída nova para o modelo armazenado mais recente.
Ver terminais de persistência do percurso da ferramenta e análise CAD exata ao montar um fluxo de captura/salvamento mais rico. Evite a variante do percurso do projeto, a menos que seu contrato de parâmetro de consulta distinto seja pretendido.
Regenerar após alterações e diagnosticar rejeição
Alterar geometria, estoque, origem, ferramentas, material, máquina, ordem de operação ou NC altera o relacionamento das evidências. Gere novamente a partir da solicitação capturada atualizada. Uma edição NC simples pode permanecer um texto comum útil, mas não deve conter um artefato nativo anterior como prova de novos bytes. O serviço de salvamento remove metadados nativos incompatíveis ou rejeita um novo documento inconsistente.
A predefinição de máquina desconhecida é um erro de validação do adaptador. Material/ferramenta desconhecido, contenção de estoque inválido, geometria vazia e usinagem sem suporte produzem problemas de preparação/planejamento. Gouge, fast-in-stock, colisão de suporte/mesa e incompatibilidade de repetição apontam para movimento/evidência gerados. Localize o ID da operação, estágio, linha e ponto no problema antes de alterar os controles do processo.
Uma carga útil de origem pode passar pela decodificação do esquema JSON e ainda assim não conseguir produzir um trabalho válido. Por outro lado, um artefato pode existir com uma liberação bloqueada. Mantenha o par solicitação/resultado original ao diagnosticar qualquer uma das condições, em vez de substituí-lo com uma alteração especulativa nas configurações.
Procedência da implementação: packages/api/src/cam-kernel.ts, cam-program.ts, essencial cam/kernel/snapshot.ts, execute.ts, schema.tse sidecar services/cam-program.ts. Testes de evidência focados são packages/core/src/cam/kernel/kernel.test.ts e apps/sidecar/test/cam-program.test.ts.
Veja o resultado do exemplo
Sem um operations array, o planejador escolheu três operações da base de corte padrão, cada uma com sua própria troca de ferramenta. O cabeçalho NC os resume antes de qualquer movimento:
%
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 O programa termina com G0 Z10.000, M5, M30 e %. Comprimento total: 3071 linhas. Como nenhuma máquina foi dada, o vmc-standard preset aplicado, cujo post é fanuc: daí o %/O1000 enquadramento, T1 M6 trocas de ferramentas e G43 H1 compensação de comprimento.
Leia os dados de corte de uma operação
Toda operação carrega um cutting registro que mostra como suas velocidades e avanços foram derivados. Estes são os valores para a operação de desbaste acima:
| Campo | Valor | Significado |
|---|---|---|
rpm | 7160 | Velocidade do fuso de Vc e diâmetro efetivo |
vc / vcRecommended | 359.9 / 360 m/min | Velocidade de superfície alcançada e recomendada |
fz | 0.199 mm | Avanço por dente após correção de afinamento de cavacos |
chipThickness | 0.159 mm | Espessura média resultante dos cavacos |
feed / plungeFeed | 5696 / 2848 mm/min | Alimentação de corte e mergulho |
ap / ae | 10 / 3.2 milímetros | Profundidade axial e engate radial (20 % de passo lateral) |
rampAngle / helixPitch | 5° / 4.398 mm | Geometria de entrada |
mrr | 182.258 cm³/min | Taxa de remoção de material |
powerKw / torqueNm / forceN | 1.862 / 1.986 / 248 | Carga estimada, verificada em relação aos limites da máquina |
deflectionMm | 0.0157 mm | Deflexão estimada da ferramenta |
limitedBy, warnings, exceeded | vazio | Qual limite limitou um valor; nada fez aqui |
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 o bloco lista a linha da tabela de materiais, as colunas usadas e todos os fatores de multiplicação (aqui cutSpeed 1.2, diameterScale 1.326, chipThinning 1.25). Isso é basis afirma que estes são valores iniciais manuais e não dados certificados do fornecedor para o cortador.
Valores iniciais, não uma garantia
Trate os dados de corte como uma primeira tentativa fundamentada. Compare-os com os dados do fornecedor da ferramenta e com a máquina antes da produção e substitua-os por operação quando você souber melhor: o artefato então registra o campo em overridden.
Identidade do artefato
| Campo | Exemplo | Hash de |
|---|---|---|
identity.job | aa2159be8c7c4228… | O trabalho canônico |
identity.part | 91a5382540991195… | A geometria da peça |
identity.nc | 1614df331826682c… | O texto NC exato |
identity.algorithm | cadcamfun-cam-kernel@1 | Nome e versão do kernel |
A nova execução da mesma solicitação reproduz as mesmas identidades. Quando o sidecar salva um artefato nativo, ele executa novamente a solicitação capturada e compara; um NC editado muda identity.nc e é rejeitado como prova.
Receita: gerar e salvar a partir do TypeScript
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) Salvar como um percurso também precisa de um arquivo portátil cadcamfun-cam documento construído a partir deste artefato, seu program, a solicitação capturada e o instantâneo do desenho, conforme descrito acima. O método SDK usa o mesmo objeto JSON que o corpo HTTP, digitado como ToolpathGeneratorManufactureInput.