Pular para o conteúdo
CADCAMFUN
Docs

Documentação

Configurações e programas salvos

Capture o estoque, a estrutura de trabalho, as atribuições do cortador, as operações ordenadas e as evidências de origem usadas para produzir um programa.

Traduzido automaticamente do inglês. Ver o original em inglês

Uma configuração é o contexto de fabricação

Uma configuração de fabricação define como uma peça se posiciona em relação ao estoque, acessórios e ferramentas. cam.ManufacturingSetup registra um identificador, revisão, estrutura de trabalho rígida, estoque de coordenadas mundiais e envelopes de fixação e conjuntos de ferramentas. O kernel nativo aceita um instantâneo e recursos de CAD e produz resultados de operação ordenados e um programa publicado.

Os programas aplicativos salvos usam CamProgramDocument, o documento portátil também armazenado em Toolpath.data. Este contrato mantém o NC e sua representação do programa juntamente com as configurações, o estoque e o instantâneo do desenho necessários para reabrir o espaço de trabalho. As operações opcionais preservam identidades de operação separadas; os dados opcionais do kernel retêm evidências de origem nativa.

Contrato de documento portátil

Um documento se identifica com format: "cadcamfun-cam" e version: 1. Os campos obrigatórios são gcode, program, gerador settings, printer extras, stock, e uma forma livre drawing instantâneo. Os campos opcionais são operations, kernelArtifact, e kernelRequest.

Cada operação armazenada possui um único id, name, gcode, e program, com ferramentas opcionais, configurações e identificadores de elementos de origem. Manter seu NC e identidade faz uma operação de ida e volta independente de sua etiqueta de exibição.

Ordem e composição da operação

combineCamOperations preserva a ordem de operação. Ele cria namespaces para identificadores de percurso com o identificador de operação, usa uma ferramenta de operação explícita quando fornecida e prefixa nomes de exibição quando há mais de uma operação. O programa combinado utiliza unidades e deslocamento de trabalho da primeira operação.

Para uma única operação, NC combinado é o texto original. Para múltiplas operações, o auxiliar une as seções NC existentes com comentários de operação. Este auxiliar não publica novamente todas as seções em um único programa controlador. O kernel nativo é a rota que gera operações ordenadas e emite um programa integrado.

Os chamadores que compõem seções pré-geradas devem garantir unidades, deslocamentos de trabalho, numeração de ferramentas, cabeçalhos e finais de programa compatíveis. Uma composição de documento bem-sucedida demonstra ordem e consistência com suas seções armazenadas; não adiciona evidências de liberação automática.

Gerar e salvar

  1. Capture os elementos de desenho e o material a ser usinado. Escolha um material, máquina, ferramentas, deslocamento de trabalho e controles de qualidade.
  2. Chamar POST /api/toolpaths/manufacture com schemaVersion: 1, identidade do trabalho, nome e os elementos capturados. Forneça operações explicitamente na ordem de usinagem ou permita que o kernel as planeje.
  3. Inspecione o resultado retornado, problemas, reivindicações individuais e release. Um artefato pode ser uma visualização ou bloqueado; receber um resultado não implica saída verificada.
  4. Construa um CamProgramDocument cujo código G, programa, artefato e solicitação capturada descrevem o mesmo resultado. Salve-o através de um endpoint de criação ou atualização de percurso, junto com esse código G.

O ponto final de fabricação avalia o instantâneo fornecido sem gravar o desenho ou criar um percurso. Gerador /generate é uma rota separada baseada em configurações e também pode fornecer NC para um documento portátil.

Validação de persistência

O sidecar reconhece documentos portáteis pelo seu formato e decodifica o esquema completo antes de salvá-los. O código G do documento deve corresponder ao código G da linha do percurso. Os identificadores das operações devem ser únicos e sua composição ordenada deve reproduzir o texto salvo. O sidecar analisa novamente a operação NC para reconstruir movimentos do programa em vez de confiar nos dados de movimento fornecidos pelo cliente.

Para um novo artefato nativo com uma solicitação capturada, o sidecar executa novamente essa solicitação e compara o artefato resultante, o programa e o NC original. Resultados com falha ou bloqueados, artefatos alterados e texto incompatível são rejeitados. Um artefato recém-fornecido sem sua solicitação capturada é removido, a menos que seja um artefato inalterado já retido na linha.

Quando os elementos de origem e o estoque fornecidos correspondem ao desenho armazenado associado, o serviço calcula um resumo da revisão do desenho. Os clientes não podem fornecer um confiável sourceRevision ou reivindicação de verificação arbitrária. A revisão salva é derivada pelo serviço ou retida apenas para o mesmo artefato existente.

Editando NC e retendo evidências

Uma atualização pode substituir o NC enquanto envia o documento portátil anterior inalterado. O serviço reconhece esse caso, reconstrói o programa analisado a partir do novo texto e remove operações e evidências de origem nativa que não correspondem mais. Um novo documento inconsistente é rejeitado em vez de combinar silenciosamente programas não relacionados.

Dados comuns de percurso de forma livre permanecem suportados. Uma alteração no NC remove metadados de artefatos nativos obsoletos onde eles não correspondem mais. Fornecido pelo cliente verification e response campos não se tornam evidências nativas confiáveis.

A implementação de validação é apps/sidecar/src/services/cam-program.ts; runKernelRequest, prepareCamProgramData, e drawingRevision compartilham o mesmo adaptador de solicitação e lógica de identidade usados pela geração e salvamentos.

Um programa salvo pode conter subprogramas gerados a partir de percursos da ferramenta repetidos. As regras pelas quais os percursos da ferramenta podem compartilhar um subprograma estão descritas na Página CAM.

Estruturas de trabalho rígidas

A WorkFrame tem uma origem e eixos X/Y/Z. validateWorkFrame requer coordenadas finitas, eixos unitários, ortogonalidade aos pares e orientação para destros dentro de sua tolerância numérica. workToWorld aplica o quadro; worldToWork projetos de volta. Quadros inválidos, pontos inválidos e estouro numérico produzem um erro de intervalo.

validateSetup também verifica um identificador de configuração não vazio, revisão de número inteiro seguro não negativo, envelopes finitos de volume positivo, identificadores exclusivos de acessórios/ferramentas e dimensões finitas positivas de cortadores e suportes. O comprimento de corte não deve exceder o relevo. A validação retorna problemas específicos do campo para que o chamador possa identificar o valor que precisa de correção.

Usinagem de mesa indexada

cam/indexing.ts resolve orientações indexadas para table-AC e table-BC layouts. Ele gira o plano de trabalho selecionado normal à máquina +Z, respeita os limites de rotação e prefere a menor inclinação alcançável. Os pontos do programa passam pela estrutura de trabalho e pela rotação da mesa em torno do pivô da máquina.

Este adaptador modela a indexação de mesa com um eixo de ferramenta fixo. Cabeças inclinadas, ciclos de plano inclinado do controlador e movimento simultâneo de cinco eixos são recursos separados. Os cargos rotativos são diplomas; os eixos do quadro permanecem vetores unitários.

Tipos de configuração compartilhada

ManufacturingSetup, WorkFrame, ToolAssembly, validateSetup, validateWorkFrame, workToWorld, e worldToWork são exportados através cam. A operação portátil e os esquemas de documentos são exportados de @cadcamfun/api, o que os torna disponíveis para persistência secundária e lógica de restauração de desktop.

Reabrindo na área de trabalho

saved-program.ts captura configurações atuais, material, desenho e o NC exato que está sendo salvo. Ele retém um artefato do kernel somente quando seu NC e hash correspondem a esses bytes. Na restauração, ele verifica o artefato armazenado e a liberação, restaura resultados de operação compatíveis, redefine a verificação de reprodução, carrega o editor e restaura o gerador e os controles de estoque do instantâneo.

Quando apenas o código G comum está disponível, a área de trabalho o analisa para exibição. A abertura do texto com êxito não recria uma solicitação de geração ausente nem atualiza o nível de evidência do programa.

Mantenha a fonte e o resultado juntos

Regenere após alterar geometria, material, dimensões de ferramenta, estrutura de trabalho, máquina, material ou ordem de operação. Preserve os instantâneos de origem para fins de reprodutibilidade e trate um arquivo NC alterado como uma nova saída que exige sua própria análise. As verificações de revisão de origem e a reprodução de artefatos evitam que um resultado anterior seja apresentado como evidência de diferentes bytes de programa.

Avaliar uma configuração capturada

O adaptador de captura instantânea é o limite comum para a solicitação de fabricação nativa. Este exemplo independente captura uma placa de polímero e uma caixa de estoque um pouco maior e, em seguida, retorna o nível de liberação real do artefato. Ele não grava nem um desenho nem um percurso.

Das coordenadas do editor a um trabalho nativo
import { cam } from "@cadcamfun/core"

const prepared = cam.kernel.jobOfSnapshot({
  schemaVersion: 1, id: "blank-job", name: "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
})
if (prepared.status === "failed") throw new Error(JSON.stringify(prepared.issues))
const result = cam.kernel.runJob(prepared.value)
if (result.status === "failed") throw new Error(JSON.stringify(result.issues))
console.log(result.value.release)
console.log(result.value.claims)
console.log(result.value.identity.nc)

A posição do cubo é o seu centro; seu fundo é Z0. O estoque de instantâneo X/Y é seu centro e largura/altura são dimensões completas. O adaptador coloca o fundo bruto no Z mais baixo da peça selecionada e depois adiciona a profundidade declarada. A origem do trabalho do kernel é padronizada como centro de estoque no topo do estoque; stock-corner seleciona seu mínimo X/Y e Z superior.

Fonte: packages/core/src/cam/kernel/snapshot.ts, execute.ts, e kernel.test.ts.

Opções e limites de instantâneo

A solicitação HTTP nativa requer 1–2,000 elementos, uma versão de 1, ID/nome do trabalho não vazio e um nome de material de até 80 caracteres. Aceita até 500 operações explícitas e, quando fornecido, 1–200 cortadores. A omissão de operações invoca o planejador; uma lista de operações vazia explícita não é uma solicitação para inventar operações.

finishAllowance aceita 0–5 mm; scallop é positivo e no máximo 1 mm; deburr é positivo e no máximo 5 mm. Os padrões nativos usam a margem de acabamento do material, 0,01 mm de vieira e 0,01 mm de tolerância de caminho. A resolução de repetição pode ser fornecida separadamente. Opcional subprograms: true solicita emissão repetida traduzida apenas onde o dialeto selecionado a suporta.

Um campo de máquina de instantâneo nomeia uma predefinição registrada. O nível inferior ManufacturingJob pode transportar um registro completo da máquina, incluindo percurso explícito e geometria da mesa; a string da máquina de instantâneo público não aceita um registro de máquina arbitrário.

Fonte: packages/api/src/cam-kernel.ts, ai-cam.ts, e packages/core/src/cam/kernel/contracts.ts.

Resolver salvamentos rejeitados

Mensagem de respostaCausa e solução
Documento de percurso CADCAMFUN inválidoO formato portátil reconhecido falhou em seu esquema. Preserve todas as configurações necessárias, impressora, material, desenho, programa e campos de código G.
O documento do percurso e o código G devem conter o mesmo programaA linha NC e o novo documento NC são diferentes. Reconstrua o instantâneo a partir dos bytes exatos que estão sendo salvos.
As operações salvas devem ter IDs exclusivos e compor o código G armazenado paraA operação de identidade ou pedido não reproduz mais o documento. Recomponha após editar, reordenar ou excluir operações.
O artefato do kernel salvo não corresponde à solicitação de origem e ao NC originalA reprodução da solicitação capturada falhou, retornou saída bloqueada ou diferiu do artefato/programa/NC reivindicado. Gere novamente em vez de editar os campos de evidência.

Um artefato nativo válido pode ser retido sem uma revisão do desenho de origem quando sua seleção/estoque de origem não corresponder ao desenho armazenado associado. Essa ausência não significa que o NC salvo foi regenerado em relação ao desenho atual. Leia a revisão do desenho e o instantâneo de origem de forma independente ao relatar a atualização.

Fonte: apps/sidecar/src/services/cam-program.ts e apps/sidecar/test/cam-program.test.ts.

Veja uma vaga nativa em 3D

Trabalho nativo: POM em branco, três operações Arraste para orbitar · role para ampliar · arraste com o botão direito para deslocar
O programa real gerado pelo kernel nativo para o instantâneo abaixo, desenhado em milímetros mundiais. Roxo: fresa de facear Ø50 em Z10. Verde: Ø16 desbaste adaptativo. Azul: Ø10 finalização de bola. Tracejado: corredeiras. Caixas translúcidas: o estoque 44 × 44 × 11 e a parte 40 × 40 × 10. O programa está em coordenadas de trabalho; a origem do trabalho é o topo do centro de estoque, mundo (20, 20, 11), então cada movimento aqui é o movimento do programa mais essa origem.
Op.EstratégiaFerramentaComprimento de corteTempoRemovido
Top de estoque facialfacefacemill-50334.0 mm12.4 s1936 mm³
3D desbaste adaptativosurfaceflat-16472.2 mm5.3 s3360 mm³
3D acabamento íngreme e rasosurfaceball-105660.6 mm113.4 s0 mm³

Máquina vmc-standard (Centro de usinagem vertical (BT40, 12 000 rpm, 11 kW), pós fanuc), materiais pom-c (Acetal POM-C (Delrin)). Stock volume 21296 mm³, final 16000 mm³, equal to the part volume, so remaining volume is 0. Estimated cycle time 149 s. Release: verified-program. O NC tem 3071 linhas.

AlegarStatus
cutting-datapassou
machine-limitspassou
operations-completepassou
no-rapid-in-stockpassou
holder-clearancepassou
no-gougepassou
material-removedpassou
nc-replaypassou
machine-travelsem suporte
machine-clearancepassou
machine-travel é unsupported aqui porque a predefinição não possui envelope de viagem explícito para verificar. Uma afirmação sem fundamento não é um fracasso, mas também não é uma prova; a versão do programa verificado cobre as reivindicações aprovadas.

Matemática da estrutura de trabalho, elaborada

z = (0.707, 0, 0.707)x = (0.707, 0, −0.707) origem (40, 0, 10)mundo Xmundo Z
Construa, verifique e use um quadro 45°
import { cam } from "@cadcamfun/core"

const frame = cam.frameFromNormal({ x: 40, y: 0, z: 10 }, { x: 1, y: 0, z: 1 })
// xAxis (0.707, 0, -0.707)  yAxis (0, 1, 0)  zAxis (0.707, 0, 0.707)
cam.validateWorkFrame(frame)                     // []

const world = cam.workToWorld(frame, { x: 10, y: 5, z: 0 })   // (47.071, 5, 2.929)
cam.worldToWork(frame, world)                    // (10, 5, 0)

cam.validateWorkFrame({ origin: { x: 0, y: 0, z: 0 },
  xAxis: { x: 1, y: 0, z: 0 }, yAxis: { x: 0, y: 0, z: 1 }, zAxis: { x: 0, y: 1, z: 0 } })
// [{ field: "frame", message: "Work frame axes must be orthonormal and right-handed" }]
frameFromNormal toma o normal como Z e projeta a dica X (mundo X por padrão) no plano. Quando a dica é paralela à normal, ela escolhe outra perpendicular. Y é sempre Z × X, então o resultado é destro por construção.

Soluções rotativas para faces comuns

anglesFor(normal, layout, limits) returns every way the table can bring a part direction to machine +Z, smallest tilt first, with the tilt inside the limits (default −120° to 120°). C is wrapped into (−180°, 180°]. These are real outputs:
Parte normalmesa-ACmesa-BC
(1, 0, 1), 45° ladoA45 C90, então A−45 C−90B−45 C0, então B45 C180
(1, 0, 0), +X faceA90 C90, então A−90 C−90B−90 C0, então B90 C180
(0, −1, 0), face frontalA90 C180, então A−90 C0B−90 C90, então B90 C−90
(0, 0, −1), parte inferiornenhum (matriz vazia)nenhum (matriz vazia)

Um lado inferior precisa de uma inclinação de 180°, fora dos limites padrão, então a lista está vazia e indexToolpath lança "Os eixos rotativos da máquina não conseguem alcançar este plano de trabalho dentro dos seus limites". Usine a parte inferior em uma segunda configuração.

Onde a origem do quadro chega após a indexação
const [angles] = cam.anglesFor({ x: 1, y: 0, z: 1 }, "table-BC")   // { b: -45, c: 0 }
cam.partToMachine({ x: 40, y: 0, z: 10 }, angles, "table-BC", { x: 0, y: 0, z: 0 })
// (21.213, 0, 35.355): the origin rotated -45° about Y around the pivot

Configurar mensagens de validação

Tudo errado de uma vez
cam.validateSetup({
  id: "", revision: -1, frame,
  stock: { min: { x: 0, y: 0, z: 0 }, max: { x: 0, y: 10, z: 10 } },
  fixtures: [],
  tools: [{ toolId: "t", cuttingDiameter: 6, cuttingLength: 30, stickout: 20,
            holderDiameter: 32, holderLength: 40 }],
})
campomensagem
idO ID de configuração não deve estar vazio
revisionA revisão da configuração deve ser um número inteiro seguro não negativo
stockO envelope deve ter coordenadas finitas e volume positivo
tools.tO comprimento de corte não deve exceder o relevo

Os problemas são retornados, não lançados, e todos são relatados de uma só vez, para que um formulário possa marcar todos os campos incorretos juntos.