Aller au contenu
CADCAMFUN
Docs

Documentation

Cycle de vie du projet

Créez un projet, enregistrez ses données de conception, rouvrez-le et choisissez le bon type d'historique.

Traduit automatiquement de l'anglais. Voir l'original en anglais

Ce que contient un projet

Un projet regroupe des dessins, des composants réutilisables et des parcours d'outils enregistrés. Un dessin stocke un document JSON ; un composant stocke des données de conception réutilisables ; un parcours d'outil peut contenir des données CN et des métadonnées simples ou un document CAM portable validé. Les matériaux, les outils de coupe et les configurations de machine sont des enregistrements de ressources distincts auxquels les flux de travail d'usinage peuvent faire référence. Un identifiant de projet ne remplace aucun de ces identifiants de ressources.

Ce guide suit les mêmes familles utilisées par le bureau. Il sépare l'enregistrement de l'état de l'application, le téléchargement d'un fichier, l'enregistrement d'une version de parcours d'outil et la validation de l'historique du projet. Ces opérations préservent différentes informations. Commencez par un projet de développement jetable avant d’appliquer la séquence au travail de production.

Les exemples sont des modèles de requête dont les corps JSON correspondent aux schémas actuels. Ce ne sont pas des réponses capturées du serveur. Pour chaque champ et statut déclaré, utilisez le Projets, Dessins, Composants, et Parcours d'outils Références API.

Sélectionnez la vraie API

Exécutez le bureau avec bun run desktop:dev, ou démarrez un sidecar manuel isolé à l'aide du recette de développement local. Le processus manuel annonce un port éphémère. L'aperçu du navigateur sans point de terminaison utilise des appareils en mémoire ; il ne peut pas établir qu'un projet survit au redémarrage du serveur.

Deuxième terminal : remplacez l'exemple de port et le jeton
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 santé est publique, elle peut donc réussir même si une demande de projet protégé échoue à l'autorisation. Utilisez le jeton fourni pour ce processus. Conservez le même shell pour les exemples suivants afin que l'URL, le jeton, le répertoire temporaire et les identifiants extraits restent disponibles. Gardez le stdin du sidecar ouvert dans son terminal de lancement.

Créer et inspecter un projet

Créer un projet personnel privé
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 création renvoie HTTP 201 avec une ligne de projet. Le gestionnaire requiert un nom véridique même si le schéma de transport déclare ce champ facultatif. L’organisation fournie doit être celle à laquelle appartient l’appelant. La lecture du projet renvoie les informations sur le propriétaire/l'organisation et le nombre de dessins/composants ; c'est une forme de réponse différente de la création.

Sur le bureau, utilisez /projects pour parcourir et /projects/:id pour ouvrir le tableau de bord. Il comporte des onglets Dessins, Composants et Parcours d'outils, ainsi que des actions de contrôle de modification, de suppression et de version. La mise à jour du projet nécessite à nouveau le nom ; le propriétaire ou l'organisation ADMIN/MANAGER peut mettre à jour, tandis que la suppression est limitée au propriétaire ou à ADMIN.

Créer et ouvrir un dessin

Créer un document éditeur vide et conserver son identifiant
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"

La même forme de document vide est utilisée par le flux de création-dessin du tableau de bord du projet. Cela crée une ligne, pas une géométrie. Ouvrir /cad?drawingId=<id> ou /drawings/<id> pour le modifier. Avec /cad?projectId=<id>, CAD sélectionne le dessin le plus récent du projet ; un dessin nommé est prioritaire.

La création de dessins nécessite un accès au projet et un nom. La lecture/mise à jour d'un dessin individuel nécessite le propriétaire du projet ou un membre de l'organisation ; la suppression ajoute une vérification propriétaire/organisation-ADMIN. JSON data n'est pas validé en tant que document de géométrie dessinable complet par le point de terminaison générique. Une écriture réussie ne prouve donc pas que tous les éléments fournis peuvent être restitués.

Enregistrez, dupliquez et exportez les données de conception

Sur un dessin stocké déjà ouvert, l'action d'enregistrement CAO met à jour ce dessin et ajoute les composants de bibliothèque locale manquants à son projet. La page CAO implémente la sienne Cmd/Ctrl+S gestionnaire. Un document sans destination stockée ouvre le flux d'exportation/sauvegarde ; Enregistrer en tant que projet nécessite une géométrie ou un élément sélectionné et crée un nouveau projet et un nouveau dessin.

L'instantané du dessin comprend des éléments, des calques, un identifiant d'élément sélectionné, des paramètres de mesure et une version de format. Le chemin de chargement actuel restaure les éléments et les paramètres d'unités/tolérance valides, mappe les identifiants de calque inconnus au calque actif et efface la sélection. Ne déduisez pas la restauration complète des couches à partir des champs présents dans une exportation.

La synchronisation des composants du projet fait correspondre les noms tronqués et insensibles à la casse et ajoute les noms manquants ; il n'écrase pas une définition du même nom. La création de composants nécessite la meilleure des efforts et peut échouer de manière indépendante. Un dessin enregistré ne prouve pas que tous les composants locaux ont été copiés et le flux de sauvegarde multi-requêtes ne constitue pas une seule transaction de base de données.

A partir d'une fiche à dessiner, Duplicate charge ses données stockées et crée un nouvel identifiant. Le téléchargement exporte les données de ce dessin au format JSON ; il n'exporte pas un projet entier. Les mises à jour de dessins génériques appliquent des valeurs de nom/données/vignettes véridiques et permettent une description nulle explicite. Ils n'exposent pas le paramètre de hachage de comparaison et d'échange du référentiel.

Stocker un composant réutilisable

Créer un composant, puis valider ses données réutilisables lors de la mise à jour
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 création renvoie HTTP 201. L'opération de création de référentiel actuelle stocke le nom, la description, les données et l'association de projet ; il ne conserve pas les options type/public/vignette de niveau supérieur lors de la création. La mise à jour explicite ci-dessus définit le type de niveau supérieur et la visibilité prévus. La mise à jour valide les données véridiques des composants, normalise les champs facultatifs manquants et rejette un correctif vide.

Ouvrir /components/:id pour l'écran de détail ou parcourez /components avec un filtre de projet. La visibilité inclut actuellement les propriétaires de projet, les membres de l'organisation et les composants publics. Les gestionnaires de composants n'appliquent pas de porte supplémentaire réservée au propriétaire pour les modifications/suppressions de composants visibles ; ne traitez pas la visibilité publique comme un partage protégé en lecture seule.

Préparer les ressources d'usinage

Les écrans de ressources sont /materials, /tools, et /machine, avec des itinéraires détaillés individuels. Les matériaux nécessitent un nom et une valeur de propriétés. Les outils nécessitent un nom, un type, un diamètre non nul et un matériau. L'interface utilisateur fournit des contraintes de diamètre positives, mais les intégrations doivent valider explicitement les dimensions techniques plutôt que de s'appuyer sur des contrôles de véracité.

Exemple de corps de coupe pour POST /api/tools
{
  "name": "6 mm end mill",
  "type": "endmill",
  "diameter": 6,
  "material": "carbide",
  "numberOfFlutes": 3,
  "cuttingLength": 18,
  "shankDiameter": 6,
  "isPublic": false
}

Une configuration de machine nécessite un type mill, lathe, printer, ou laser; dimensions positives du volume de travail, vitesse de broche maximale et vitesse d'avance maximale ; et données optionnelles du contrôleur/des axes. Les configurations à quatre/cinq axes nécessitent une configuration rotative compatible vérifiée par le manutentionnaire. Ces dossiers décrivent l'équipement ; leur existence ne vérifie pas un programme généré particulier.

Utiliser Matériels, Outils, et Machines pour les corps exacts. Les listes de matériaux/outils renvoient des tableaux ; Les itinéraires machine utilisent une enveloppe de réussite. Lisez la réponse du point de terminaison sélectionné au lieu de supposer une forme de collection universelle.

Enregistrer et rouvrir un programme CAM

Un parcours d'outil peut être créé sous un projet avec POST /api/toolpaths en utilisant le nom et l'ID du projet, ou attaché à un dessin avec POST /api/drawings/:id/toolpaths en utilisant le nom et les données. Le tableau de bord du projet utilise la famille de niveau supérieur et ouvre le résultat via /cam?loadToolpath=<id>. La page CAM lit l'original enregistré via l'API.

Le modal de sauvegarde CAM propose un projet existant, un nouveau projet ou une mise à jour du programme enregistré. L'exportation du code G télécharge le texte. Téléchargements d'exportation portables .cam.json avec format: cadcamfun-cam, paramètres, programme, stock, contexte de dessin et preuves correspondantes si disponibles. L'enregistrement de l'application conserve ce document dans l'enregistrement du parcours d'outil.

Les documents portables sont validés et adaptés à leur NC. La modification du code peut supprimer des preuves obsolètes ou nécessiter une analyse. Les nouveaux artefacts du noyau sont revérifiés par rapport aux requêtes source capturées ; Les réclamations de vérification arbitraires fournies par le client ne sont pas acceptées comme preuve. Les restrictions Propriétaire/ADMIN/MANAGER s'appliquent également à l'enregistrement de programmes portables dans un projet.

Lorsqu'une sauvegarde d'un nouveau projet réussit partiellement, le modal conserve sa destination créée pour une nouvelle tentative. Inspectez cet identifiant avant de redémarrer le flux et de créer un autre projet. Voir Parcours d'outils et documents de programme enregistrés.

Choisissez l'historique dont vous avez besoin

MécanismeConservesUtiliser
Annuler/rétablir dans l'éditeurInstantanés d'interaction/session localeAnnulez l'action d'édition en cours.
Versions de parcours d'outilDonnées enregistrées, CN, auteur et message de modification pour un programmeExaminez ou restaurez une révision de programme.
Historique du projetInstantanés de projet validés et fichiers d'entité modifiésComparez, branchez, examinez ou restaurez l'état du projet.
JSON/NC téléchargéLe contenu exporté particulierConserver ou transférer un artefact externe.

La mise à jour via le mode de sauvegarde CAM enregistre d'abord le programme précédent. L'enregistrement manuel sur l'écran de détail du parcours d'outil enregistre l'état mis à jour sous forme de version. La restauration de version enregistre l'état actuel avant de le remplacer, de sorte qu'une restauration peut être annulée via une autre opération de version. Ce sont des flux distincts ; un PUT générique n'est pas automatiquement une validation de projet.

Ouvrir /toolpaths/:id pour les détails, le G-code, les versions et les commentaires. Ouvrir /projects/:id/history pour l'historique du projet ; les boutons par élément filtrent par chemins tels que drawings/<id>.json. Le aPI d'historique de parcours d'outil accepte versionId pour restauration.

Les modifications de l'historique sont également publiées sous forme d'événements en direct (commit, pr.*, workflow.started/workflow.finished, ai.session). Un nouvel abonné reçoit d'abord jusqu'à 20 événements correspondants récents.

Vérifier la persistance et résoudre les échecs

  1. Lisez le projet, le dessin et le composant créés via leurs points de terminaison d'identifiant.
  2. Ouvrez les itinéraires de bureau correspondants et confirmez le contenu réel de la conception/du programme.
  3. Redémarrez le même répertoire de données sidecar, mettez à jour l'URL éphémère et répétez les lectures.
  4. Téléchargez une exportation séparément et inspectez ses champs ; une ligne de base de données ne prouve pas qu'un fichier a été exporté.

Un 400 indique généralement des champs professionnels obligatoires manquants ou des données de document non valides ; un 403 indique une opération refusée ; un 404 peut signifier des données absentes ou inaccessibles. Le tableau de bord du projet transforme actuellement les échecs individuels de la liste de ressources en tableaux vides, donc un onglet vide à lui seul ne constitue pas une preuve suffisante de suppression. Inspectez le résultat direct de l'API avant de créer des doublons.

Les points d’ancrage de la mise en œuvre sont projects.ts et groups/{drawings,components,toolpaths}.ts dans le package API ; les gestionnaires/dépôts sidecar correspondants ; projectSnapshot.ts, CadPage.tsx, SaveCamModal.tsx, et ToolpathDetailScreen.tsx. Utilisez un projet isolé pour les tests de suppression et préservez le travail de l'utilisateur avant la restauration.

Recette : tout le cycle de vie avec curl

projet → dessin → parcours d'outil → validation
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
ÉtapeOpérationChamps du corps
Créer un projetPOST /api/projectsname (requis par le gestionnaire), description, organizationId, isPublic
Créer un dessinPOST /api/projects/{id}/drawingsname, description, data, thumbnail
Mettre à jour le dessinPUT /api/drawings/{id}mêmes champs, partiel
Créer un parcours d'outilPOST /api/drawings/{id}/toolpathsname, data, gcode, type, operationType, materialId, toolId, machineConfigId, …
CommettrePOST /api/projects/{id}/vcs/commitmessage (requis), authorKind, files
BifurquerPOST /api/projects/{id}/vcs/branchesname (requis), from
RestaurerPOST /api/projects/{id}/vcs/restorerev (requis), paths

Exécuté sur un nouveau sidecar, le commit répond avec le nouvel objet commit et le journal le répertorie :

réponse vcs/commit
{"oid":"44d2d03d23b27fbbc4b388e32e15dfb0f39fff87","parents":[],"message":"First version\n","author":{"name":"Local user","email":"local@cadcamfun.local","time":1792037121}}

Sans en-tête de session, l'auteur est le profil local de l'installation. La recette utilise jq. Parcours d'outil de forme libre data est accepté tel quel ; un portable cadcamfun-cam le document est strictement validé, comme décrit dans le guide de fabrication natif.

En 3D

Ce qui bloque un projet Faites glisser vers l'orbite · faites défiler pour zoomer · faites glisser vers la droite pour effectuer un panoramique
Tables avec une clé étrangère vers Project et leurs propres enfants, issus des migrations Drizzle.