Pular para o conteúdo
CADCAMFUN
Docs

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.

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
}
Avalie sem salvar um recurso do projeto
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

EntradaSignificado e limites
finishAllowancetolerância de desbaste de 0–5 mm; omitido usa o padrão do material.
scallopPositivo, no máximo 1 mm; padrão 0.01 mm para acabamento nativo.
toleranceTolerância de caminho positivo; padrão nativo 0.01 mm.
resolutionTamanho de célula de repetição positivo; controla a resolução espacial da evidência de estoque.
deburrPositivo, no máximo 5 mm; pede ao planejador para adicionar trabalhos de chanfro na borda superior suportados.
subprogramsEmissã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.

Valide um documento portátil antes de salvá-lo
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

trabalho nativo.json, gerado Arraste para orbitar · role para ampliar · arraste com o botão direito para deslocar
As três operações que o planejador escolheu para o espaço em branco do POM, em coordenadas mundiais (movimentos do programa mais a origem do trabalho em 20, 20, 11). Roxo: face, verde: desbaste adaptativo, azul: acabamento íngreme e raso, tracejado: corredeiras. Pressione replay para assistir ao pedido.

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:

native-result.json → value.nc (primeiras linhas)
%
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:

CampoValorSignificado
rpm7160Velocidade do fuso de Vc e diâmetro efetivo
vc / vcRecommended359.9 / 360 m/minVelocidade de superfície alcançada e recomendada
fz0.199 mmAvanço por dente após correção de afinamento de cavacos
chipThickness0.159 mmEspessura média resultante dos cavacos
feed / plungeFeed5696 / 2848 mm/minAlimentação de corte e mergulho
ap / ae10 / 3.2 milímetrosProfundidade axial e engate radial (20 % de passo lateral)
rampAngle / helixPitch5° / 4.398 mmGeometria de entrada
mrr182.258 cm³/minTaxa de remoção de material
powerKw / torqueNm / forceN1.862 / 1.986 / 248Carga estimada, verificada em relação aos limites da máquina
deflectionMm0.0157 mmDeflexão estimada da ferramenta
limitedBy, warnings, exceededvazioQual 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

CampoExemploHash de
identity.jobaa2159be8c7c4228…O trabalho canônico
identity.part91a5382540991195…A geometria da peça
identity.nc1614df331826682c…O texto NC exato
identity.algorithmcadcamfun-cam-kernel@1Nome 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

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)

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.

Em 3D

Um percurso e o que ele faz referência Arraste para orbitar · role para ampliar · arraste com o botão direito para deslocar
Chaves estrangeiras dos percursos da ferramenta das migrações: desenho, máquina, material, ferramenta, projeto e usuário, além de versões, comentários e estimativas de custos.