Saltar al contenido
CADCAMFUN
Documentos

Documentación

Configuraciones y programas guardados

Capture el material, el marco de trabajo, las asignaciones de cortadores, las operaciones ordenadas y la evidencia de origen utilizada para producir un programa.

Traducido automáticamente del inglés. Ver el original en inglés

Una configuración es un contexto de fabricación.

Una configuración de fabricación define cómo se asienta una pieza en relación con el material, los accesorios y las herramientas. cam.ManufacturingSetup registra un identificador, revisión, marco de trabajo rígido, stock de coordenadas mundiales y envolventes de accesorios, y conjuntos de herramientas. El kernel nativo acepta una instantánea y recursos CAD y produce resultados de operación ordenados y un programa publicado.

Uso de programas de aplicaciones guardadas CamProgramDocument, el documento portátil también almacenado en Toolpath.data. Este contrato conserva NC y su representación del programa junto con la configuración, el stock y la instantánea del dibujo necesarios para reabrir el espacio de trabajo. Las operaciones opcionales preservan identidades de operación separadas; Los datos del kernel opcionales conservan la evidencia de la fuente nativa.

Contrato de documento portatil

Un documento se identifica con format: "cadcamfun-cam" y version: 1. Los campos obligatorios son gcode, program, generador settings, printer extras, stock, y una forma libre drawing instantánea. Los campos opcionales son operations, kernelArtifact, y kernelRequest.

Cada operación almacenada tiene un único id, name, gcode, y program, con herramientas opcionales, configuraciones e identificadores de elementos de origen. Mantener su NC e identidad realiza una operación de ida y vuelta independientemente de su etiqueta de visualización.

Orden y composición de las operaciones.

combineCamOperations preserva el orden de operación. Asigna espacios de nombres a los identificadores de trayectoria de herramientas con el identificador de operación, utiliza una herramienta de operación explícita cuando se proporciona y antepone nombres para mostrar cuando hay más de una operación. El programa combinado toma unidades y compensación de trabajo desde la primera operación.

Para una sola operación, el NC combinado es el texto original. Para operaciones múltiples, el ayudante une las secciones NC existentes con comentarios de operación. Este asistente no vuelve a publicar todas las secciones en un único programa de controlador. El kernel nativo es la ruta que genera operaciones ordenadas y emite un programa integrado.

Las personas que llaman y componen secciones pregeneradas deben garantizar unidades compatibles, compensaciones de trabajo, numeración de herramientas, encabezados y finales de programa. Una composición exitosa de un documento demuestra orden y coherencia con las secciones almacenadas; no agrega evidencia de autorización de la máquina.

Generar y guardar

  1. Capture los elementos de dibujo y el material a mecanizar. Elija un material, máquina, herramientas, compensación de trabajo y controles de calidad.
  2. Llamar POST /api/toolpaths/manufacture con schemaVersion: 1, identidad laboral, nombre y los elementos capturados. Suministre las operaciones explícitamente en el orden de mecanizado o permita que el núcleo las planifique.
  3. Inspeccionar el resultado devuelto, los problemas, los reclamos individuales y release. Un artefacto puede ser una vista previa o estar bloqueado; recibir un resultado no implica un resultado verificado.
  4. construir un CamProgramDocument cuyo código G, programa, artefacto y solicitud capturada describen el mismo resultado. Guárdelo a través de una ruta de herramienta, cree o actualice el punto final, junto con ese código G.

El punto final de fabricación evalúa la instantánea proporcionada sin escribir el dibujo ni crear una trayectoria. Generador /generate es una ruta independiente basada en configuraciones y también puede proporcionar NC para un documento portátil.

Validación de persistencia

El sidecar reconoce los documentos portátiles por su formato y decodifica el esquema completo antes de guardarlos. El código G del documento debe coincidir con el código G de la fila de la trayectoria. Los identificadores de operación deben ser únicos y su composición ordenada debe reproducir el texto guardado. El sidecar analiza la operación NC para reconstruir los movimientos del programa en lugar de confiar en los datos de movimientos proporcionados por el cliente.

Para un nuevo artefacto nativo con una solicitud capturada, el sidecar vuelve a ejecutar esa solicitud y compara el artefacto resultante, el programa y el NC original. Se rechazan los resultados fallidos o bloqueados, los artefactos alterados y el texto no coincidente. Un artefacto recién proporcionado sin su solicitud capturada se elimina a menos que sea un artefacto sin cambios que ya se retenga en la fila.

Cuando los elementos de origen y el stock suministrados coinciden con el dibujo almacenado asociado, el servicio calcula un resumen de revisión del dibujo. Los clientes no pueden proporcionar una confianza sourceRevision o reclamación de verificación arbitraria. La revisión guardada la deriva el servicio o se conserva solo para el mismo artefacto existente.

Editar NC y conservar evidencia

Una actualización puede reemplazar NC mientras se envía el documento portátil anterior sin cambios. El servicio reconoce ese caso, reconstruye el programa analizado a partir del nuevo texto y elimina operaciones y evidencia de fuente nativa que ya no coincide. Se rechaza un documento nuevo inconsistente en lugar de combinar silenciosamente programas no relacionados.

Se siguen admitiendo datos de trayectorias de herramienta de formato libre ordinarios. Un cambio en NC elimina los metadatos de artefactos nativos obsoletos donde ya no coinciden. Proporcionado por el cliente verification y response los campos no se convierten en evidencia nativa confiable.

La implementación de la validación es apps/sidecar/src/services/cam-program.ts; runKernelRequest, prepareCamProgramData, y drawingRevision comparten el mismo adaptador de solicitud y lógica de identidad utilizados por la generación y los guardados.

Un programa guardado puede contener subprogramas generados a partir de trayectorias de herramientas repetidas. Las reglas para las cuales las trayectorias pueden compartir un subprograma se describen en la página CAM.

Marcos de trabajo rígidos

A WorkFrame tiene un origen y ejes X/Y/Z. validateWorkFrame requiere coordenadas finitas, ejes unitarios, ortogonalidad por pares y orientación hacia la derecha dentro de su tolerancia numérica. workToWorld aplica el marco; worldToWork proyectos de vuelta. Los fotogramas no válidos, los puntos no válidos y el desbordamiento numérico producen un error de rango.

validateSetup también verifica un identificador de configuración no vacío, una revisión de entero seguro no negativo, sobres finitos de volumen positivo, identificadores únicos de accesorios/herramientas y dimensiones finitas positivas de cortadores y portaherramientas. La longitud de corte no debe exceder el saliente. La validación devuelve problemas específicos de campo para que la persona que llama pueda identificar el valor que necesita corrección.

Mecanizado con mesa indexada

cam/indexing.ts resuelve orientaciones indexadas para table-AC y table-BC diseños. Gira el plano de trabajo seleccionado normal a la máquina +Z, respeta los límites de rotación y prefiere la menor inclinación alcanzable. Los puntos del programa pasan a través del marco de trabajo y la rotación de la mesa alrededor del pivote de la máquina.

Este adaptador modela la indexación de la mesa con un eje de herramienta fijo. Los cabezales inclinables, los ciclos de plano inclinado del controlador y el movimiento simultáneo de cinco ejes son capacidades independientes. Las posiciones rotativas son grados; Los ejes del marco siguen siendo vectores unitarios.

Tipos de configuración compartida

ManufacturingSetup, WorkFrame, ToolAssembly, validateSetup, validateWorkFrame, workToWorld, y worldToWork se exportan a través de cam. Los esquemas de documentos y operaciones portátiles se exportan desde @cadcamfun/api, lo que los hace disponibles tanto para la persistencia del sidecar como para la lógica de restauración del escritorio.

Reapertura en el escritorio

saved-program.ts captura la configuración actual, el stock, el dibujo y el NC exacto que se guarda. Conserva un artefacto del núcleo sólo cuando su NC y su hash coinciden con esos bytes. Al restaurar, verifica el artefacto almacenado y la versión, restaura los resultados de la operación compatible, restablece la verificación de reproducción, carga el editor y restaura los controles del generador y del stock desde la instantánea.

Cuando sólo está disponible el código G normal, el escritorio lo analiza para mostrarlo. Abrir el texto correctamente no recrea una solicitud de generación faltante ni actualiza el nivel de evidencia del programa.

Mantenga la fuente y el resultado juntos

Regenerar después de cambiar la geometría, el material, las dimensiones de las herramientas, el marco de trabajo, la máquina, el material o el orden de operación. Conserve las instantáneas de origen para su reproducibilidad y trate un archivo NC modificado como una nueva salida que requiere su propio análisis. Las comprobaciones de revisión del código fuente y la reproducción de artefactos evitan que un resultado anterior se presente como evidencia de diferentes bytes del programa.

Evaluar una configuración capturada

El adaptador de instantáneas es el límite común para la solicitud de fabricación nativa. Este ejemplo autónomo captura un polímero en blanco y una caja de material ligeramente más grande y luego devuelve el nivel de lanzamiento real del artefacto. No escribe ni un dibujo ni una trayectoria.

De las coordenadas del editor a un trabajo 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)

La posición del cubo es su centro; su parte inferior es Z0. El stock de instantáneas X/Y es su centro y el ancho/alto son las dimensiones completas. El adaptador coloca el fondo original en la Z más baja de la pieza seleccionada y luego agrega la profundidad declarada. El origen del trabajo del núcleo por defecto es el centro del stock en la parte superior del stock; stock-corner selecciona su X/Y mínimo y su Z superior.

Fuente: packages/core/src/cam/kernel/snapshot.ts, execute.ts, y kernel.test.ts.

Opciones y límites de instantáneas

La solicitud nativa HTTP requiere elementos 1–2,000, una versión de 1, un ID/nombre del trabajo que no esté vacío y un nombre de material de hasta 80 caracteres. Acepta hasta 500 operaciones explícitas y, cuando se suministran, 1–200 cortadores. Omitir operaciones invoca al planificador; una lista de operaciones vacía explícita no es una solicitud para inventar operaciones.

finishAllowance acepta 0–5 mm; scallop es positivo y como máximo 1 mm; deburr es positivo y como máximo 5 mm. Los valores predeterminados nativos utilizan el margen de acabado del material, 0.01 mm de festón y 0.01 mm de tolerancia de trayectoria. La resolución de reproducción se puede suministrar por separado. Opcional subprograms: true solicita la emisión repetida traducida solo cuando el dialecto seleccionado lo admita.

Un campo de máquina de instantáneas nombra un ajuste preestablecido registrado. El nivel inferior ManufacturingJob puede llevar un registro completo de la máquina, incluyendo recorridos explícitos y geometría de la mesa; la cadena de la máquina de instantáneas pública no acepta por sí misma un registro de máquina arbitrario.

Fuente: packages/api/src/cam-kernel.ts, ai-cam.ts, y packages/core/src/cam/kernel/contracts.ts.

Resolver guardados rechazados

Mensaje de respuestaCausa y remedio
Documento de ruta de herramienta CADCAMFUN no válidoEl formato portátil reconocido falló en su esquema. Conserve todas las configuraciones requeridas, impresora, material, dibujo, programa y campos de código G.
El documento de trayectoria y el código G deben contener el mismo programaLa fila NC y el nuevo documento NC son diferentes. Reconstruya la instantánea a partir de los bytes exactos que se guardan.
Las operaciones guardadas deben tener ID únicas y componer el código G almacenado en ordenLa operación de identidad o de pedido ya no reproduce el documento. Recomponer después de editar, reordenar o eliminar operaciones.
El artefacto del kernel guardado no coincide con su solicitud de origen y el NC originalLa reproducción de la solicitud capturada falló, devolvió una salida bloqueada o difirió del artefacto/programa/NC reclamado. Regenerar en lugar de editar los campos de evidencia.

Se puede conservar un artefacto nativo válido sin una revisión del dibujo de origen cuando su selección/stock de origen no coincide con el dibujo almacenado asociado. Esa ausencia no implica que el NC guardado se haya regenerado con respecto al dibujo actual. Lea la revisión del dibujo y la instantánea de origen de forma independiente cuando informe la actualización.

Fuente: apps/sidecar/src/services/cam-program.ts y apps/sidecar/test/cam-program.test.ts.

Ver un trabajo nativo en 3D

Trabajo nativo: POM en blanco, tres operaciones Arrastrar para orbitar · desplazarse para hacer zoom · arrastrar con el botón derecho para desplazarse
El programa real generado por el kernel nativo para la siguiente instantánea, dibujado en milímetros mundiales. Púrpura: fresa frontal Ø50 en Z10. Verde: Ø16 desbaste adaptativo. Azul: Ø10 remate de bola. Discontinuo: rápidos. Cajas translúcidas: la parte 44 × 44 × 11 y la parte 40 × 40 × 10. El programa está en coordenadas de trabajo; el origen del trabajo es la parte superior del centro de existencias, mundo (20, 20, 11), por lo que cada movimiento aquí es el movimiento del programa más ese origen.
Op.EstrategiaHerramientaLongitud de corteTiempoRemoto
Cara superiorfacefacemill-50334.0 mm12.4 s1936 mm³
3D desbaste adaptativosurfaceflat-16472.2 mm5.3 s3360 mm³
3D acabado empinado y poco profundosurfaceball-105660.6 mm113.4 s0 mm³

Máquina vmc-standard (Centro de mecanizado vertical (BT40, 12 000 rpm, 11 kW), post fanuc), material 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. El NC tiene 3071 líneas de largo.

AfirmarEstado
cutting-dataaprobado
machine-limitsaprobado
operations-completeaprobado
no-rapid-in-stockaprobado
holder-clearanceaprobado
no-gougeaprobado
material-removedaprobado
nc-replayaprobado
machine-travelsin soporte
machine-clearanceaprobado
machine-travel es unsupported aquí porque el ajuste preestablecido no tiene un sobre de viaje explícito con el que comparar. Una afirmación sin fundamento no es un fracaso, pero tampoco es una prueba; la versión del programa verificado cubre los reclamos que pasaron.

Matemáticas del marco de trabajo, elaboradas

z = (0.707, 0, 0.707)x = (0.707, 0, −0.707) origen (40, 0, 10)mundo Xmundo Z
Construya, verifique y use un marco de 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 lo normal como Z y proyecta la pista X (mundo X por defecto) en el avión. Cuando la pista es paralela a la normal, elige otra perpendicular. Y es siempre Z × X, por lo que el resultado es diestro por construcción.

Soluciones rotativas para caras comunes

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), lado 45°A45 C90, luego A-45 C-90B-45 C0, luego B45 C180
(1, 0, 0), +X caraA90 C90, luego A-90 C-90B-90 C0, luego B90 C180
(0, −1, 0), cara frontalA90 C180, luego A−90 C0B-90 C90, luego B90 C-90
(0, 0, −1), parte inferiorninguno (matriz vacía)ninguno (matriz vacía)

La parte inferior necesita una inclinación de 180°, fuera de los límites predeterminados, por lo que la lista está vacía y indexToolpath arroja "Los ejes giratorios de la máquina no pueden alcanzar este plano de trabajo dentro de sus límites". En su lugar, mecanice la parte inferior en una segunda configuración.

Dónde queda el origen del marco después de la indexación
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

Mensajes de validación de configuración

Todo mal a la 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 }],
})
campomensaje
idEl ID de configuración no debe estar vacío
revisionLa revisión de la configuración debe ser un número entero seguro no negativo
stockEl sobre debe tener coordenadas finitas y volumen positivo.
tools.tLa longitud de corte no debe exceder el saliente

Los problemas se devuelven, no se descartan, y todos se informan de una sola vez, por lo que un formulario puede marcar todos los campos incorrectos juntos.