Saltar al contenido
CADCAMFUN
Documentos

Documentación

Ciclo de vida del proyecto

Cree un proyecto, guarde sus datos de diseño, vuelva a abrirlo y elija el tipo de historial adecuado.

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

Que contiene un proyecto

Un proyecto agrupa dibujos, componentes reutilizables y trayectorias guardadas. Un dibujo almacena un documento JSON; un componente almacena datos de diseño reutilizables; una trayectoria de herramienta puede contener NC y metadatos simples o un documento CAM portátil validado. Los materiales, las cortadoras y las configuraciones de la máquina son registros de recursos separados a los que pueden hacer referencia los flujos de trabajo de mecanizado. Un identificador de proyecto no reemplaza a ninguno de esos identificadores de recursos.

Esta guía sigue las mismas familias utilizadas por el escritorio. Separa guardar el estado de la aplicación, descargar un archivo, registrar una versión de la ruta de herramienta y confirmar el historial del proyecto. Esas operaciones preservan información diferente. Comience con un proyecto de desarrollo desechable antes de aplicar la secuencia al trabajo de producción.

Los ejemplos son plantillas de solicitud cuyos cuerpos JSON coinciden con los esquemas actuales. No son respuestas del servidor capturadas. Para cada campo y estado declarado, utilice el Proyectos, Dibujos, Componentes, y Trayectorias Referencias API.

Seleccione la API real

Ejecute el escritorio con bun run desktop:dev, o iniciar un sidecar manual aislado usando el receta de desarrollo local. El proceso manual anuncia un puerto efímero. La vista previa del navegador sin un punto final utiliza dispositivos en memoria; no puede establecer que un proyecto sobrevive al reiniciar el servidor.

Segunda terminal: reemplace el puerto y el token de ejemplo
CADCAM_URL=http://127.0.0.1:43111
CADCAM_TOKEN=local-development-token
CADCAM_DEMO_DIR=$(mktemp -d /tmp/cadcamfun-project-guide.XXXXXX)

curl --fail-with-body "$CADCAM_URL/api/health"
curl --fail-with-body "$CADCAM_URL/api/projects"   -H "Authorization: Bearer $CADCAM_TOKEN"

La salud es pública, por lo que puede tener éxito mientras una solicitud de proyecto protegido no logra la autorización. Utilice el token proporcionado para este proceso. Mantenga el mismo shell para los siguientes ejemplos para que la URL, el token, el directorio temporal y los identificadores extraídos sigan disponibles. Mantenga abierta la entrada estándar del sidecar en su terminal de lanzamiento.

Crear e inspeccionar un proyecto

Crea un proyecto personal privado
curl --fail-with-body -X POST "$CADCAM_URL/api/projects"   -H "Authorization: Bearer $CADCAM_TOKEN"   -H 'Content-Type: application/json'   -d '{"name":"Bracket study","description":"Disposable guide project","organizationId":null,"isPublic":false}'   -o "$CADCAM_DEMO_DIR/project.json"

CADCAM_PROJECT_ID=$(bun --no-env-file -e   'console.write((await Bun.file(process.argv[1]).json()).id)'   "$CADCAM_DEMO_DIR/project.json")
curl --fail-with-body "$CADCAM_URL/api/projects/$CADCAM_PROJECT_ID"   -H "Authorization: Bearer $CADCAM_TOKEN"

La creación devuelve HTTP 201 con una fila de proyecto. El controlador requiere un nombre verdadero aunque el esquema de transporte declare que ese campo es opcional. La organización suministrada debe ser aquella a la que pertenece la persona que llama. La lectura del proyecto devuelve información del propietario/organización y recuentos de dibujos/componentes; es una forma de respuesta diferente a la de la creación.

En el escritorio, use /projects para navegar y /projects/:id para abrir el tablero. Tiene pestañas Dibujos, Componentes y Rutas de herramientas, además de acciones Editar, Eliminar y Control de versiones. La actualización del proyecto requiere el nombre nuevamente; El propietario u organización ADMIN/MANAGER puede actualizar, mientras que la eliminación está restringida al propietario o ADMIN.

Crear y abrir un dibujo.

Cree un documento de editor vacío y mantenga su identificador
curl --fail-with-body -X POST "$CADCAM_URL/api/projects/$CADCAM_PROJECT_ID/drawings"   -H "Authorization: Bearer $CADCAM_TOKEN"   -H 'Content-Type: application/json'   -d '{"name":"Main drawing","description":null,"data":{"elements":[],"version":"1.0"}}'   -o "$CADCAM_DEMO_DIR/drawing.json"

CADCAM_DRAWING_ID=$(bun --no-env-file -e   'console.write((await Bun.file(process.argv[1]).json()).id)'   "$CADCAM_DEMO_DIR/drawing.json")
curl --fail-with-body "$CADCAM_URL/api/drawings/$CADCAM_DRAWING_ID"   -H "Authorization: Bearer $CADCAM_TOKEN"

El flujo de creación y dibujo del panel del proyecto utiliza la misma forma de documento vacío. Crea una fila, no una geometría. Abierto /cad?drawingId=<id> o /drawings/<id> para editarlo. Con /cad?projectId=<id>, CAD selecciona el dibujo más nuevo del proyecto; un dibujo con nombre tiene prioridad.

La creación de dibujos necesita acceso al proyecto y un nombre. Una lectura/actualización de dibujo individual requiere que el propietario del proyecto o un miembro de la organización; la eliminación agrega una verificación de propietario/organización-ADMIN. JSON data el punto final genérico no lo valida como un documento de geometría dibujable completo. Por lo tanto, una escritura exitosa no prueba que todos los elementos suministrados puedan renderizarse.

Guarde, duplique y exporte datos de diseño

En un dibujo almacenado ya abierto, la acción de guardar de CAD actualiza ese dibujo y agrega los componentes faltantes de la biblioteca local a su proyecto. La página CAD implementa su propia Cmd/Ctrl+S entrenador de animales. Un documento sin un destino almacenado abre el flujo de exportación/guardado; Guardar como proyecto requiere geometría o un elemento seleccionado y crea un nuevo proyecto y dibujo.

La instantánea del dibujo incluye elementos, capas, identificador de elemento seleccionado, configuraciones de medición y una versión de formato. La ruta de carga actual restaura elementos y configuraciones de unidades/tolerancia válidas, asigna identificadores de capa desconocidos a la capa activa y borra la selección. No infiera la restauración completa de la capa a partir de los campos presentes en una exportación.

La sincronización de componentes del proyecto coincide con nombres recortados que no distinguen entre mayúsculas y minúsculas y agrega nombres faltantes; no sobrescribe una definición del mismo nombre. La creación de componentes es el mejor esfuerzo y puede fallar de forma independiente. Un dibujo guardado no prueba que se hayan copiado todos los componentes locales y el flujo de guardado de solicitudes múltiples no es una transacción de base de datos.

Desde una tarjeta de dibujo, Duplicate carga sus datos almacenados y crea un nuevo identificador. Descargar exporta los datos de ese dibujo como JSON; no exporta un proyecto completo. Las actualizaciones de dibujos genéricas aplican valores de nombre/datos/miniatura verdaderos y permiten una descripción nula explícita. No exponen el parámetro hash de comparación e intercambio del repositorio.

Almacenar un componente reutilizable

Cree un componente y luego valide sus datos reutilizables al actualizar
curl --fail-with-body -X POST "$CADCAM_URL/api/projects/$CADCAM_PROJECT_ID/components"   -H "Authorization: Bearer $CADCAM_TOKEN"   -H 'Content-Type: application/json'   -d '{"name":"Bracket insert","description":"Reusable empty template","data":{"name":"Bracket insert","type":"custom","elements":[]}}'   -o "$CADCAM_DEMO_DIR/component.json"

CADCAM_COMPONENT_ID=$(bun --no-env-file -e   'console.write((await Bun.file(process.argv[1]).json()).id)'   "$CADCAM_DEMO_DIR/component.json")
curl --fail-with-body -X PUT "$CADCAM_URL/api/components/$CADCAM_COMPONENT_ID"   -H "Authorization: Bearer $CADCAM_TOKEN"   -H 'Content-Type: application/json'   -d '{"type":"custom","isPublic":false,"data":{"name":"Bracket insert","type":"custom","elements":[]}}'

La creación devuelve HTTP 201. La operación de creación del repositorio actual almacena el nombre, la descripción, los datos y la asociación del proyecto; no persiste las opciones de tipo/público/miniatura de nivel superior en el momento de la creación. La actualización explícita anterior establece el tipo de nivel superior y la visibilidad previstos. La actualización valida los datos veraces de los componentes, normaliza los campos opcionales que faltan y rechaza un parche vacío.

Abierto /components/:id para la pantalla de detalles o navegar /components con un filtro de proyecto. Actualmente, la visibilidad incluye propietarios de proyectos, miembros de organizaciones y componentes públicos. Los controladores de componentes no imponen una puerta adicional exclusiva del propietario para ediciones/eliminación de componentes visibles; no trate la visibilidad pública como un recurso compartido protegido de solo lectura.

Preparar recursos de mecanizado.

Las pantallas de recursos son /materials, /tools, y /machine, con rutas detalladas individuales. Los materiales requieren un nombre y un valor de propiedades. Las herramientas requieren nombre, tipo, diámetro distinto de cero y material. La interfaz de usuario proporciona restricciones de diámetro positivas, pero las integraciones deben validar las dimensiones de ingeniería explícitamente en lugar de depender de comprobaciones de veracidad.

Ejemplo de cuerpo de corte para POST /api/tools
{
  "name": "6 mm end mill",
  "type": "endmill",
  "diameter": 6,
  "material": "carbide",
  "numberOfFlutes": 3,
  "cuttingLength": 18,
  "shankDiameter": 6,
  "isPublic": false
}

Una configuración de máquina necesita tipo mill, lathe, printer, o laser; dimensiones positivas del volumen de trabajo, velocidad máxima del husillo y velocidad de avance máxima; y datos de ejes/controlador opcionales. Las configuraciones de cuatro/cinco ejes requieren una configuración rotativa compatible verificada por el manipulador. Estos registros describen el equipo; su existencia no verifica un programa generado en particular.

Usar Materiales, Herramientas, y maquinas para cuerpos exactos. Las listas de materiales/herramientas devuelven matrices; Las rutas de las máquinas utilizan una envolvente de éxito. Lea la respuesta del punto final seleccionado en lugar de asumir una forma de colección universal.

Guardar y volver a abrir un programa CAM

Se puede crear una trayectoria de herramienta en un proyecto con POST /api/toolpaths usando nombre e ID de proyecto, o adjunto a un dibujo con POST /api/drawings/:id/toolpaths utilizando nombre y datos. El panel del proyecto utiliza la familia de nivel superior y abre el resultado a través de /cam?loadToolpath=<id>. La página CAM lee el original guardado a través de la API.

El modo de guardado CAM ofrece un proyecto existente, un proyecto nuevo o una actualización del programa guardado. Texto de descargas de exportación de código G. Descargas de exportación portátiles .cam.json con format: cadcamfun-cam, configuración, programa, stock, contexto del dibujo y evidencia coincidente cuando esté disponible. El guardado de la aplicación conserva ese documento en el registro de la trayectoria.

Los documentos portátiles se validan y cotejan con su NC. La edición de código puede eliminar evidencia obsoleta o requerir una nueva análisis. Los nuevos artefactos del kernel se vuelven a verificar con las solicitudes de origen capturadas; Las afirmaciones de verificación arbitrarias proporcionadas por el cliente no se aceptan como prueba. Las restricciones de propietario/ADMIN/ADMINISTRADOR también se aplican al guardar programas portátiles en un proyecto.

Cuando el guardado de un nuevo proyecto se realiza parcialmente correctamente, el modal conserva su destino creado para volver a intentarlo. Inspeccione ese identificador antes de reiniciar el flujo y crear otro proyecto. Ver Trayectorias y documentos del programa guardados.

Elige el historial que necesitas

MecanismoConservasUsar
Editor deshacer/rehacerInstantáneas de interacción/sesión localDeshace la acción de edición actual.
Versiones de trayectoriaDatos grabados, NC, autor y mensaje de cambio para un programaRevisar o restaurar una revisión del programa.
Historia del proyectoInstantáneas del proyecto confirmadas y archivos de entidad modificadosCompare, bifurque, revise o restaure el estado del proyecto.
JSON/NC descargadoEl contenido exportado particularConservar o transferir un artefacto externo.

La actualización a través del modo de guardado CAM registra primero el programa anterior. El guardado manual en la pantalla de detalles de la trayectoria registra el estado actualizado como una versión. La restauración de versión registra el estado actual antes de reemplazarlo, por lo que una restauración se puede revertir mediante otra operación de versión. Estos son flujos distintos; un PUT genérico no es automáticamente una confirmación del proyecto.

Abierto /toolpaths/:id para Detalles, Código G, Versiones y Comentarios. Abierto /projects/:id/history para el historial del proyecto; Los botones por elemento filtran por rutas como drawings/<id>.json. El aPI de historial de trayectoria de herramienta acepta versionId para restauración.

Los cambios del historial también se publican como eventos en vivo (commit, pr.*, workflow.started/workflow.finished, ai.session). Un nuevo suscriptor recibe primero hasta 20 eventos coincidentes recientes.

Verificar la persistencia y resolver fallas

  1. Lea el proyecto, dibujo y componente creados a través de sus puntos finales identificadores.
  2. Abra las rutas de escritorio correspondientes y confirme el contenido real del diseño/programa.
  3. Reinicie el mismo directorio de datos del sidecar, actualice la URL efímera y repita las lecturas.
  4. Descargue una exportación por separado e inspeccione sus campos; una fila de la base de datos no prueba que se haya exportado un archivo.

Un 400 normalmente indica que faltan campos comerciales obligatorios o datos de documentos no válidos; un 403 indica una operación rechazada; un 404 puede significar datos ausentes o inaccesibles. Actualmente, el panel del proyecto convierte los errores de la lista de recursos individuales en matrices vacías, por lo que una pestaña vacía por sí sola no es prueba suficiente de eliminación. Inspeccione el resultado directo de la API antes de crear duplicados.

Los anclajes de implementación son projects.ts y groups/{drawings,components,toolpaths}.ts en el paquete API; los correspondientes manipuladores/repositorios de sidecars; projectSnapshot.ts, CadPage.tsx, SaveCamModal.tsx, y ToolpathDetailScreen.tsx. Utilice un proyecto aislado para pruebas de eliminación y conserve el trabajo del usuario antes de la restauración.

Receta: todo el ciclo de vida con curl

proyecto → dibujo → ruta de herramienta → confirmar
A=(--header "Authorization: Bearer $CADCAMFUN_TOKEN" --header "Content-Type: application/json")
U="$CADCAMFUN_URL"

project=$(curl -sS "${A[@]}" -d '{"name":"Bracket"}' "$U/api/projects" | jq -r .id)
drawing=$(curl -sS "${A[@]}" -d '{"name":"Plate","data":{}}' "$U/api/projects/$project/drawings" | jq -r .id)

curl -sS "${A[@]}" "$U/api/projects/$project/drawings" | jq 'length'

curl -sS "${A[@]}" -X PUT -d '{"name":"Plate v2"}' "$U/api/drawings/$drawing"

curl -sS "${A[@]}" -d '{"name":"Program","gcode":"G21\nM30","data":{}}' \
  "$U/api/drawings/$drawing/toolpaths" | jq .id

curl -sS "${A[@]}" -d '{"message":"First version"}' "$U/api/projects/$project/vcs/commit"
curl -sS "${A[@]}" "$U/api/projects/$project/vcs/log" | jq
PasoOperaciónCampos del cuerpo
Crear proyectoPOST /api/projectsname (requerido por el manejador), description, organizationId, isPublic
crear dibujoPOST /api/projects/{id}/drawingsname, description, data, thumbnail
Actualizar dibujoPUT /api/drawings/{id}mismos campos, parciales
Crear trayectoriaPOST /api/drawings/{id}/toolpathsname, data, gcode, type, operationType, materialId, toolId, machineConfigId, …
ComprometersePOST /api/projects/{id}/vcs/commitmessage (requerido), authorKind, files
RamaPOST /api/projects/{id}/vcs/branchesname (requerido), from
RestaurarPOST /api/projects/{id}/vcs/restorerev (requerido), paths

Ejecute contra un sidecar nuevo, la confirmación responde con el nuevo objeto de confirmación y el registro lo enumera:

vcs/respuesta de confirmación
{"oid":"44d2d03d23b27fbbc4b388e32e15dfb0f39fff87","parents":[],"message":"First version\n","author":{"name":"Local user","email":"local@cadcamfun.local","time":1792037121}}

Sin encabezado de sesión, el autor es el perfil local de la instalación. La receta utiliza jq. Ruta de herramienta de forma libre data se acepta tal cual; un portátil cadcamfun-cam el documento está validado estrictamente, como se describe en la guía de fabricación nativa.

En 3D

Lo que cuelga de un proyecto Arrastrar para orbitar · desplazarse para hacer zoom · arrastrar con el botón derecho para desplazarse
Tablas con una clave externa para Project y sus propios hijos, de las migraciones de Drizzle.