Documentación
Generar un programa de fabricación nativo
Capture una pieza real, evalúe su trabajo de fabricación, inspeccione la evidencia NC publicada y guarde un documento que pueda verificarse nuevamente.
La traducción automática no está disponible ahora; el texto está en inglés con la interfaz en tu idioma. Ver el original en inglés
Sepa qué resultado está solicitando
La fabricación nativa es un cálculo CAD/CAM determinista, independiente de un modelo de lenguaje. POST /api/toolpaths/manufacture acepta una instantánea CAD explícita, prepara recursos de fabricación, planifica o acepta operaciones ordenadas, calcula datos de corte, genera trayectorias, publica un programa NC y reproduce ese texto de forma independiente. La respuesta incluye la evidencia que respalda su nivel de liberación.
Este punto final no crea un dibujo, no guarda una trayectoria ni actualiza el editor. Una respuesta exitosa es un valor que debemos inspeccionar y persistir deliberadamente. Es diferente de /api/toolpaths/generate, que adapta la configuración del generador de aplicaciones para la salida de fresadora/torno/impresora, y desde /api/toolpaths/verify, que reproduce un programa/CN suministrado contra un material y una herramienta modelados explícitamente.
Utilice el puntos finales de mecanizado para esquemas de solicitud/respuesta, referencia CAM para las representaciones centrales, y referencia del programa guardado para el comportamiento de persistencia. El siguiente trabajo es deliberadamente lo suficientemente pequeño como para reproducirlo e inspeccionarlo sin editar un proyecto existente.
Envíe una instantánea completa y validada
Guarde este JSON como native-job.json. Describe un espacio en blanco de POM de 40 × 40 × 10 mm centrado en (20,20,5), rodeado por 2 mm de material en cada lado X/Y y 1 mm arriba. La carga útil fue decodificada por el real. CamKernelRequest esquema y evaluado por el núcleo; su resultado de referencia contiene tres operaciones planificadas. Inspeccione siempre las reclamaciones devueltas en lugar de codificar una versión esperada en un 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 El archivo shell captura la respuesta exacta para su inspección. Proporcionar la misma solicitud capturada genera una salida nativa determinista; utilizar una nueva posición de pieza, cortador, operación o control de calidad es un trabajo diferente. Las etiquetas de identidad de solicitud son útiles para el seguimiento, pero los resúmenes del artefacto vinculan su fuente real y su contenido NC.
Resolver coordenadas de stock y trabajo.
El stock de instantáneas utiliza el centro X/Y y el ancho/alto/profundidad completos. El adaptador de instantáneas primero construye la geometría de la pieza seleccionada, encuentra su Z más baja y coloca el fondo original allí; su parte superior es esa parte inferior más la profundidad declarada. En el ejemplo, la pieza se extiende de Z0 a Z10 y el stock de Z0 a Z11. Los límites de stock en X/Y son −2 a 42.
El adaptador utiliza las dimensiones explícitas para esos límites. No vuelve a agregar la provisión para mostrar del registro de existencias y se topZ el campo no reemplaza el anclaje de la parte más baja en este adaptador de instantáneas nativo. Mantenga la distinción entre los metadatos del editor y los campos realmente consumidos para crear un trabajo de producción.
El origen del trabajo por defecto es stock-center: el centro de valores X/Y en su parte superior Z. stock-corner elige el mínimo X/Y en la misma parte superior. La geometría de operación de entrada está en milímetros del mundo CAD, mientras que los movimientos/NC del programa resultantes están en coordenadas de trabajo. El corte convencional va por debajo del trabajo Z0. workOffset es opcional; el valor predeterminado del programa es G54.
Sin stock suministrado, la preparación del trabajo de nivel inferior incluye límites de piezas con 2 mm adicionales en cada lado X/Y y 1 mm arriba. Se rechaza una pieza fuera del stock explícito; El aumento de la profundidad de corte solicitada no hace que el material incompatible contenga la pieza.
Seleccionar material, máquina y cortadoras.
El material es una cadena de búsqueda resuelta en la biblioteca de materiales del kernel, incluidos los ID, nombres y alias admitidos. El material desconocido devuelve un problema de preparación escrito. La máquina opcional de la instantánea HTTP es una ID preestablecida registrada: vmc-standard, haas-vf2, hsc-mill, desktop-mill o cnc-router. Omitirlo usa vmc-standard. Los ajustes preestablecidos describen clases y límites de máquinas típicas, no un modelo calificado de una instalación individual.
La omisión de herramientas utiliza la cuna de corte predeterminada. El suministro de herramientas reemplaza esa base y requiere 1–200 registros de corte. Un cortador identifica su tipo, diámetro, número de canales, material/recubrimiento, longitud de canales, diámetro del vástago y saliente. Las dimensiones del soporte opcional, las RPM máximas, el número de bolsillos y la geometría específica del tipo refinan la generación y el espacio libre. Las flautas deben ser un número entero de 1 a 24; Los números de bolsillo explícitos son 1–999.
Las ID de las herramientas de operación deben nombrar las cortadoras en esa biblioteca suministrada. Las identificaciones de cortadores duplicadas, las dimensiones no válidas y las combinaciones de estrategia/herramientas inalcanzables producen problemas en lugar de sustituciones adivinadas. El esquema acepta tipos planos, de bolas, de toro, de chaflán, de punta, de taladro, de planeado, de roscado y de grabado.
La cadena de máquina de instantáneas pública no acepta un registro de máquina personalizado. Una integración de código que llama al nivel inferior. ManufacturingJob La API puede proporcionar explícitamente los límites de la máquina, el recorrido y la geometría de la mesa. No envíe ese registro donde el esquema HTTP espera una cadena preestablecida.
Planifique automáticamente o especifique el orden de mecanizado
Cuando faltan operaciones, el planificador las deriva de la pieza. Una matriz de operaciones explícita es un orden de mecanizado autorizado, no una lista de sugerencias para reordenar silenciosamente. Cada operación tiene un ID único y una referencia de herramienta. Los registros de estrategias admitidos cubren trabajos de cara, adaptable, cajera, perfil, orificio, perforación, rosca, grabado, chaflán y superficie, con la geometría adecuada para cada uno.
Un perfil utiliza un bucle, un lado interior/exterior y una coordenada mundial superior/inferior. Un corte de bolsillo/adaptativo utiliza un límite cerrado con anillos de isla opcionales. La perforación utiliza puntos más arriba/abajo. Un registro de fresado de roscas incluye centro, diámetro, paso, bandera interna, parte superior y longitud. Un registro de superficie elige comportamiento rugoso, paralelo, línea de flotación o muy poco profundo; una referencia de descanso debe identificar el trabajo previo apropiado.
Las anulaciones de procesos por operación pueden incluir RPM, avance, avance por inmersión, reducción, paso por encima, refrigerante y acoplamiento radial. Los valores faltantes provienen de datos de corte del material/cortador/máquina. El paso por alto es un porcentaje de 1 a 100; La reducción y los feeds son positivos. Los registros de artefactos anularon los campos por separado de los parámetros calculados para que un revisor pueda ver de dónde provienen las opciones de proceso.
El kernel nativo mantiene un stock provisional entre operaciones y publica su IR combinado una vez. Por el contrario, combineCamOperations para las secciones de operaciones genéricas guardadas une el texto NC ya generado; no transforma esas secciones en un programa de controlador integrado. Utilice el artefacto nativo cuando se requiera esa generación y reproducción integradas.
Establecer controles de calidad y comprender su coste.
| Aporte | Significado y límites |
|---|---|
finishAllowance | 0–5 mm de margen de desbaste; omitido utiliza el valor predeterminado del material. |
scallop | Positivo, como máximo 1 mm; predeterminado 0.01 mm para acabado nativo. |
tolerance | Tolerancia de trayectoria positiva; valor predeterminado nativo 0.01 mm. |
resolution | Tamaño de celda de reproducción positiva; controla la resolución espacial de la evidencia del stock. |
deburr | Positivo, como máximo 5 mm; le pide al planificador que agregue trabajo de chaflán del borde superior soportado. |
subprograms | Emisión de repetición traducida opcional cuando el dialecto lo admite, como los subprogramas Fanuc/Haas M98. |
La solicitud admite 1–2,000 elementos CAD y como máximo 500 operaciones explícitas. Las tolerancias más pequeñas y las celdas de reproducción aumentan el trabajo computacional y no prueban automáticamente una geometría no compatible. Conserve la resolución informada con el resultado. Una malla de ventana gráfica y una vista previa del material reducido son resultados de visualización, no una simulación más fina e independiente.
La publicación nativa establece números de herramientas a partir de las asignaciones de cortadores y solicita retracción antes del cambio de herramientas. El formato de las publicaciones se coordina con decimales fijos. Inspeccionar el NC real y el dialecto seleccionado; un nombre de controlador no elimina la necesidad de validar el comportamiento posterior de la instalación.
Interpretar el estado, los reclamos y la liberación.
El resultado es una unión: status: "failed" con problemas, o status: "ok" con un artefacto. Un artefacto aceptable todavía puede tener release: "blocked". Lea ambas capas; comprobar el estado HTTP o el estado externo por sí solo no es suficiente.
El artefacto conserva resultados de operación ordenados, datos de corte, IR del programa, cortadores usados, NC, estadísticas de existencias, estimaciones de tiempo de ciclo, problemas y resúmenes de identidad. Las reclamaciones tienen estado aprobado, fallido, no admitido o no resuelto. Cubren datos de corte, límites de la máquina, finalización de la operación, separación rápida/de soporte, ranurado, eliminación de material, repetición NC independiente, desplazamiento de la máquina y separación de la máquina/mesa.
Problemas de errores graves o liberación de bloque NC vacío. Sin un fallo definitivo, la evidencia incompleta produce una vista previa a menos que se cumpla la regla de publicación. La regla actual permite un reclamo de viaje de máquina no respaldado mientras se sigue devolviendo un programa verificado; No todos los ajustes preestablecidos incorporados proporcionan un recorrido explícito del eje. Verifique esa afirmación al decidir si el resultado cubre una máquina en particular.
La evidencia tiene un límite de modelo.
La repetición de acciones/tenedores nativos es una verificación de campo de altura de tres ejes. La instantánea pública nativa no tiene campo de envolvente de dispositivo. La verificación independiente acepta sobres de accesorios, pero no se agregan a la evidencia nativa por implicación. Una etiqueta de programa verificado es evidencia de su modelo capturado y sus controles, no una certificación de la máquina.
Los resultados del kernel identifican a su productor: el identificador del algoritmo es cadcamfun-cam-kernel@1 y la versión del esquema del contrato es 1 (packages/core/src/cam/kernel/execute.ts, contracts.ts). Compare ambos al decidir si la evidencia almacenada proviene del mismo núcleo.
Cree un documento portátil a partir del resultado exacto
A CamProgramDocument conserva la configuración NC, el programa, el generador/impresora, el material y la instantánea del dibujo. KernelRequest/kernelArtifact opcional conserva la evidencia de fuente nativa. Este ejemplo convierte la solicitud capturada y el resultado en ese documento sin guardarlo; ejecútelo en un espacio de trabajo según el núcleo, la API y el efecto, como aplicaciones/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)) El ejemplo requiere stock explícito, como lo requiere la solicitud mínima proporcionada. La configuración genérica de su editor está reabriendo los controles, mientras que el kernelRequest capturado es la fuente nativa de verdad. Conserve todas las configuraciones reales del editor al realizar capturas desde el espacio de trabajo de una aplicación.
Guardar contra un dibujo real
Guarde el documento por separado mediante POST /api/drawings/:id/toolpaths, con nombre, código G y datos que contiene el documento portátil completo. Utilice una identificación de dibujo real accesible para la persona que llama. Los guardados portátiles requieren acceso de escritura del propietario del proyecto o de la organización ADMIN/MANAGER; un cálculo exitoso por sí solo no otorga permiso de persistencia.
El sidecar decodifica el documento, verifica que la fila NC sea igual al documento NC y vuelve a ejecutar una solicitud del kernel capturada antes de confiar en un nuevo artefacto nativo. Compara el artefacto resultante, el programa y el NC original. Se rechazan las pruebas editadas, una repetición bloqueada o bytes inconsistentes. Los campos de verificación/revisión de fuente proporcionados por el cliente no generan confianza.
Cuando los elementos seleccionados capturados y el stock coinciden con el dibujo asociado, el servicio genera un resumen de la revisión del dibujo. Un artefacto nativo guardado puede carecer de esa revisión cuando la fuente no coincide con el dibujo actual. Mantenga esa distinción visible: la salida capturada válida no es necesariamente una salida nueva para el último modelo almacenado.
Ver puntos finales de persistencia de trayectoria de herramienta y análisis CAD exacto al ensamblar un flujo de captura/guardado más rico. Evite la variante de ruta de herramienta del proyecto a menos que se pretenda utilizar un contrato de parámetro de consulta distinto.
Regenerarse después de los cambios y diagnosticar el rechazo.
Cambiar la geometría, el stock, el origen, las herramientas, el material, la máquina, el orden de operación o NC cambia la relación de evidencia. Regenerar a partir de la solicitud capturada actualizada. Una edición NC simple puede seguir siendo texto ordinario útil, pero no debe contener un artefacto nativo anterior como prueba de nuevos bytes. El servicio de guardado elimina los metadatos nativos incompatibles o rechaza un documento nuevo inconsistente.
El valor preestablecido de la máquina desconocido es un error de validación del adaptador. Material/herramienta desconocido, contención de stock no válida, geometría vacía y mecanizado sin soporte producen problemas de preparación/planificación. Las gubias, el stock rápido, la colisión entre soporte y mesa y la falta de coincidencia en la reproducción indican movimiento o evidencia generados. Localice el ID de la operación, la etapa, la línea y el punto del problema antes de cambiar los controles del proceso.
Una carga útil de origen puede pasar la decodificación del esquema JSON y aún así no generar un trabajo válido. Por el contrario, puede existir un artefacto con una versión bloqueada. Mantenga el par solicitud/resultado original al diagnosticar cualquiera de las condiciones, en lugar de sobrescribirlo con un cambio de configuración especulativo.
Procedencia de la implementación: packages/api/src/cam-kernel.ts, cam-program.ts, centro cam/kernel/snapshot.ts, execute.ts, schema.tsy sidecar services/cam-program.ts. Las pruebas de evidencia enfocada son packages/core/src/cam/kernel/kernel.test.ts y apps/sidecar/test/cam-program.test.ts.
Recorra el resultado del ejemplo
sin un operations en la matriz, el planificador eligió tres operaciones de la cuna de corte predeterminada, cada una con su propio cambio de herramienta. El encabezado del NC los resume antes de cualquier moción:
%
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 El programa termina con G0 Z10.000, M5, M30 y %. Longitud total: 3071 líneas. Como no se entregó ninguna máquina, el vmc-standard preset aplicado, cuya publicación es fanuc: de ahí el %/O1000 enmarcado, T1 M6 cambios de herramientas y G43 H1 compensación de longitud.
Leer los datos de corte de una operación.
Cada operación conlleva un cutting registro que muestra cómo se derivaron sus velocidades y avances. Estos son los valores para la operación de desbaste anterior:
| Campo | Valor | Significado |
|---|---|---|
rpm | 7160 | Velocidad del husillo a partir de Vc y diámetro efectivo. |
vc / vcRecommended | 359.9 / 360 m/min | Velocidad superficial alcanzada y recomendada |
fz | 0.199 mm | Avance por diente después de la corrección del adelgazamiento de la viruta |
chipThickness | 0.159 mm | Espesor medio de viruta resultante |
feed / plungeFeed | 5696 / 2848 mm/min | Alimentación de corte y inmersión |
ap / ae | 10 / 3.2 mm | Profundidad axial y compromiso radial (20 % de paso) |
rampAngle / helixPitch | 5° / 4.398 mm | Geometría de entrada |
mrr | 182.258 cm³/min | Tasa de eliminación de material |
powerKw / torqueNm / forceN | 1.862 / 1.986 / 248 | Carga estimada, comparada con los límites de la máquina |
deflectionMm | 0.0157 mm | Deflexión estimada de la herramienta |
limitedBy, warnings, exceeded | vacío | ¿Qué límite limitó un valor? nada hizo aquí |
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 el bloque enumera la fila de la tabla de materiales, las columnas utilizadas y cada factor multiplicador (aquí cutSpeed 1.2, diameterScale 1.326, chipThinning 1.25). Es basis afirma que estos son valores iniciales manuales, no datos certificados de un proveedor para el cortador.
Valores iniciales, no una garantía.
Trate los datos de corte como un primer intento razonado. Compruébelos con los datos de su proveedor de herramientas y la máquina antes de la producción, y anule por operación cuando sepa mejor: el artefacto luego registra el campo en overridden.
Identidad del artefacto
| Campo | Ejemplo | hash de |
|---|---|---|
identity.job | aa2159be8c7c4228… | El trabajo canónico |
identity.part | 91a5382540991195… | La geometría de la pieza. |
identity.nc | 1614df331826682c… | El texto NC exacto |
identity.algorithm | cadcamfun-cam-kernel@1 | Nombre y versión del kernel |
Volver a ejecutar la misma solicitud reproduce las mismas identidades. Cuando el sidecar guarda un artefacto nativo, vuelve a ejecutar la solicitud capturada y la compara; un CN editado cambia identity.nc y es rechazada como prueba.
Receta: generar y guardar desde 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) Para guardar como trayectoria de herramienta, además se necesita un dispositivo portátil. cadcamfun-cam documento construido a partir de este artefacto, su program, la solicitud capturada y la instantánea del dibujo, como se describe anteriormente. El método SDK toma el mismo objeto JSON que el cuerpo HTTP, escrito como ToolpathGeneratorManufactureInput.