Documentation
Générer un programme de fabrication natif
Capturez une pièce réelle, évaluez son travail de fabrication, inspectez les preuves CN publiées et enregistrez un document qui peut être à nouveau vérifié.
Traduit automatiquement de l'anglais. Voir l'original en anglais
Sachez quel résultat vous demandez
La fabrication native est un calcul CAO/FAO déterministe, indépendant d'un modèle de langage. POST /api/toolpaths/manufacture accepte un instantané CAO explicite, prépare les ressources de fabrication, planifie ou accepte les opérations ordonnées, calcule les données de coupe, génère des parcours d'outils, publie un programme CN et relit indépendamment ce texte. La réponse comprend les preuves étayant son niveau de libération.
Ce point de terminaison ne crée pas de dessin, n'enregistre pas de parcours d'outil et ne met pas à jour l'éditeur. Une réponse réussie est une valeur à inspecter et à persister délibérément. C'est différent de /api/toolpaths/generate, qui adapte les paramètres du générateur d'application pour la sortie fraiseuse/tour/imprimante, et de /api/toolpaths/verify, qui rejoue une CN/un programme fourni par rapport à un brut explicitement modélisé et à un outil.
Utilisez le points finaux d'usinage pour les schémas de requête/réponse, Référence CAM pour les représentations de base, et référence du programme enregistré pour le comportement de persistance. Le travail suivant est délibérément suffisamment petit pour être reproduit et inspecté sans modifier un projet existant.
Envoyer un instantané complet et validé
Enregistrez ce JSON sous native-job.json. Il décrit un flan POM de 40 × 40 × 10 mm centré en (20,20,5), entouré de 2 mm de brut sur chaque côté X/Y et de 1 mm au-dessus. La charge utile a été décodée par le réel CamKernelRequest schéma et évalué par le noyau ; son résultat de référence contient trois opérations planifiées. Inspectez toujours les réclamations renvoyées plutôt que de coder en dur une version attendue chez un client.
{
"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 Le fichier shell capture la réponse exacte pour inspection. Fournir la même requête capturée produit une sortie native déterministe ; L'utilisation d'une nouvelle position de pièce, d'une nouvelle fraise, d'une opération ou d'un nouveau contrôle qualité est un travail différent. Les étiquettes d'identité de la demande sont utiles pour le suivi, mais les résumés de l'artefact lient sa source réelle et son contenu NC.
Résoudre les stocks et les coordonnées de travail
Le stock d'instantanés utilise le centre X/Y et la pleine largeur/hauteur/profondeur. L'adaptateur d'instantané construit d'abord la géométrie de la pièce sélectionnée, trouve son Z le plus bas et y place le fond du brut ; son sommet est ce bas plus la profondeur déclarée. Dans l'exemple, la pièce s'étend de Z0 à Z10 et le brut de Z0 à Z11. Les limites des stocks en X/Y sont de −2 à 42.
L'adaptateur utilise les dimensions explicites pour ces limites. Il n'ajoute pas à nouveau la tolérance d'affichage de l'enregistrement de stock, et un stock topZ ne remplace pas l’ancrage de la partie la plus basse dans cet adaptateur d’instantané natif. Conservez la distinction entre les métadonnées de l'éditeur et les champs réellement consommés pour construire une tâche de fabrication.
L'origine du travail est par défaut stock-center: le centre du stock X/Y en son sommet Z. stock-corner choisit le minimum X/Y au même sommet. La géométrie de l'opération d'entrée est en millimètres du monde CAO, tandis que les mouvements du programme/NC résultants sont en coordonnées de travail. La coupe conventionnelle passe en dessous du travail Z0. workOffset est facultatif ; la valeur par défaut du programme est G54.
Sans stock fourni, la préparation du travail de niveau inférieur englobe les limites de la pièce avec 2 mm supplémentaires sur chaque côté X/Y et 1 mm au-dessus. Une pièce hors stock explicite est rejetée ; L'augmentation de la profondeur de coupe demandée n'oblige pas les stocks incompatibles à contenir la pièce.
Sélectionnez le matériau, la machine et les couteaux
Material est une chaîne de recherche résolue par rapport à la bibliothèque de matériaux du noyau, comprenant les ID, noms et alias pris en charge. Un matériau inconnu renvoie un problème de préparation typé. La machine facultative de l'instantané HTTP est un ID prédéfini enregistré : vmc-standard, haas-vf2, hsc-mill, desktop-mill ou cnc-router. L'omettre utilise la norme VMC. Les préréglages décrivent les classes et les limites typiques des machines, et non un modèle qualifié d'une installation individuelle.
L'omission d'outils utilise le berceau de coupe par défaut. La fourniture d'outils remplace ce berceau et nécessite 1–200 enregistrements de coupe. Une fraise identifie son type, son diamètre, le nombre de cannelures, le matériau/revêtement, la longueur de la flûte, le diamètre de la tige et la saillie. Les dimensions du support en option, le régime maximal, le numéro de poche et la géométrie spécifique au type affinent la génération et le jeu. Les flûtes doivent être un nombre entier compris entre 1 et 24 ; les numéros de poche explicites sont 1–999.
Les ID des outils d’opération doivent nommer les couteaux dans cette bibliothèque fournie. Les ID d'outil de coupe en double, les dimensions invalides et les combinaisons stratégie/outil inaccessibles génèrent des problèmes plutôt que des substitutions devinées. Le schéma accepte les types de plat, boule, taureau, chanfrein, point, foret, facemill, threadmill et graveur.
La chaîne de machine d'instantané public n'accepte pas d'enregistrement de machine personnalisé. Une intégration de code appelant le niveau inférieur ManufacturingJob L'API peut fournir explicitement les limites de la machine, les déplacements et la géométrie de la table. N'envoyez pas cet enregistrement là où le schéma HTTP attend une chaîne prédéfinie.
Planifiez automatiquement ou spécifiez l'ordre d'usinage
Lorsque des opérations sont absentes, le planificateur les dérive de la pièce. Un tableau d'opérations explicites constitue un ordre d'usinage faisant autorité, et non une liste de suggestions à réorganiser silencieusement. Chaque opération possède un identifiant unique et une référence outil. Les enregistrements de stratégie pris en charge couvrent les travaux de face, adaptatifs, de poche, de profil, d'alésage, de perçage, de filetage, de gravure, de chanfrein et de surface, avec une géométrie appropriée à chacun.
Un profil utilise une boucle, un côté intérieur/extérieur et un haut/bas de coordonnées mondiales. Une coupe de poche/adaptative utilise une limite fermée avec des anneaux d'îlots en option. Le perçage utilise des points plus haut/bas. Un enregistrement de filetage comprend le centre, le diamètre, le pas, le drapeau interne, le sommet et la longueur. Un enregistrement de surface choisit un comportement ébauche, parallèle, à la ligne de flottaison ou raide-peu profond ; une référence de repos doit identifier les travaux antérieurs appropriés.
Les remplacements de processus par opération peuvent inclure le régime, l'avance, l'avance en plongée, la descente, le pas, le liquide de refroidissement et l'engagement radial. Les valeurs manquantes proviennent des données de découpe de matériau/couteau/machine. Le pas est un pourcentage de 1 à 100 ; Le stepdown et les flux sont positifs. L'artefact enregistre les champs remplacés séparément des paramètres calculés afin qu'un réviseur puisse voir d'où proviennent les choix de processus.
Le noyau natif transporte un stock provisoire entre les opérations et publie une fois leur IR combiné. En revanche, combineCamOperations pour les sections d'opérations génériques enregistrées, joint le texte CN déjà généré ; il ne transforme pas ces sections en un programme de contrôleur intégré. Utilisez l'artefact natif lorsque cette génération et cette relecture intégrées sont requises.
Définir des contrôles de qualité et comprendre leur coût
| Saisir | Signification et limites |
|---|---|
finishAllowance | Surépaisseur d'ébauche de 0–5 mm ; omis utilise la valeur par défaut du matériau. |
scallop | Positif, au plus 1 mm ; par défaut 0.01 mm pour la finition native. |
tolerance | Tolérance de chemin positive ; natif par défaut 0.01 mm. |
resolution | Taille de cellule de relecture positive ; contrôle la résolution spatiale des preuves de stock. |
deburr | Positif, au plus 5 mm ; demande au planificateur d'ajouter un travail de chanfrein du bord supérieur pris en charge. |
subprograms | Émission de répétition traduite facultative là où le dialecte la prend en charge, comme les sous-programmes Fanuc/Haas M98. |
La requête prend en charge 1–2,000 éléments CAO et au plus 500 opérations explicites. Des tolérances plus petites et des cellules de relecture augmentent le travail de calcul et ne prouvent pas automatiquement une géométrie non prise en charge. Conservez la résolution rapportée avec le résultat. Un maillage de fenêtre et un aperçu de stock sous-échantillonné sont des sorties d'affichage, et non une simulation indépendante plus fine.
La publication native définit les numéros d'outils à partir des affectations de fraises et demande le retrait avant le changement d'outil. Le format des publications est coordonné avec des décimales fixes. Inspectez la NC réelle et le dialecte sélectionné ; un nom de contrôleur n'élimine pas la nécessité de valider le comportement de post-installation de l'installation.
Interpréter le statut, les réclamations et la libération
Le résultat est une union : status: "failed" avec des problèmes, ou status: "ok" avec un artefact. Un artefact correct peut toujours avoir release: "blocked". Lisez les deux couches ; la vérification du statut HTTP ou du statut externe seul est insuffisante.
L'artefact conserve les résultats des opérations ordonnées, les données de coupe, les IR du programme, les couteaux utilisés, la CN, les statistiques de stock, les estimations de temps de cycle, les problèmes et les résumés d'identité. Les réclamations ont un statut réussi, échoué, non pris en charge ou non résolu. Ils couvrent les données de coupe, les limites de la machine, l'achèvement des opérations, le jeu rapide/support, le gougeage, l'enlèvement de matière, la relecture CN indépendante, le déplacement de la machine et le jeu machine/table.
Problèmes d'erreur matérielle ou libération de bloc CN vide. En l’absence d’échec majeur, des preuves incomplètes produisent un aperçu à moins que la règle de publication ne soit satisfaite. La règle actuelle autorise une réclamation de déplacement de machine non prise en charge tout en renvoyant un programme vérifié ; les préréglages intégrés ne fournissent pas tous un déplacement d'axe explicite. Vérifiez cette affirmation lorsque vous décidez si le résultat couvre une machine particulière.
Les preuves ont une limite de modèle
La relecture native du stock/détenteur est une vérification du champ de hauteur sur trois axes. L'instantané natif public n'a pas de champ d'enveloppe de luminaire. La vérification autonome accepte les enveloppes de luminaires, mais elles ne sont pas implicitement ajoutées aux preuves natives. Une étiquette de programme vérifié constitue une preuve du modèle capturé et des contrôles, et non une certification de la machine.
Les résultats du noyau identifient leur producteur : l'identifiant de l'algorithme est cadcamfun-cam-kernel@1 et la version du schéma de contrat est 1 (packages/core/src/cam/kernel/execute.ts, contracts.ts). Comparez les deux pour décider si les preuves stockées proviennent du même noyau.
Créez un document portable à partir du résultat exact
A CamProgramDocument préserve les paramètres CN, programme, générateur/imprimante, stock et instantané de dessin. Les kernelRequest/kernelArtifact facultatifs conservent les preuves de la source native. Cet exemple convertit la demande capturée et le résultat dans ce document sans l'enregistrer ; exécutez-le dans un espace de travail en fonction du noyau, de l'API et de l'effet, tel que les applications/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)) L'exemple nécessite un stock explicite, comme l'a fait la demande minimale fournie. Ses paramètres d'éditeur génériques rouvrent les contrôles, tandis que le kernelRequest capturé est la source native de vérité. Conservez tous les paramètres réels de l’éditeur lors de la capture à partir d’un espace de travail d’application.
Économisez contre un vrai dessin
Enregistrez le document séparément via POST /api/drawings/:id/toolpaths, avec le nom, le code G et les données contenant le document portable complet. Utilisez un véritable identifiant de dessin accessible à l'appelant. Les sauvegardes portables nécessitent un accès en écriture du propriétaire du projet ou de l'organisation ADMIN/MANAGER ; un calcul réussi n'accorde à lui seul aucune autorisation de persistance.
Le sidecar décode le document, vérifie que la ligne NC est égale au document NC et réexécute une requête de noyau capturée avant de faire confiance à un nouvel artefact natif. Il compare l'artefact, le programme et la CN d'origine résultants. Les preuves modifiées, une réexécution bloquée ou les octets incohérents sont refusés. Les champs de vérification/sourceRevision fournis par le client n’établissent pas la confiance.
Lorsque les éléments sélectionnés et le stock capturés correspondent au dessin associé, le service dérive un résumé de révision du dessin. Un artefact natif enregistré peut ne pas avoir cette révision lorsque la source ne correspond pas au dessin actuel. Gardez cette distinction visible : une sortie capturée valide n'est pas nécessairement une nouvelle sortie pour le dernier modèle stocké.
Voir points de terminaison de persistance du parcours d'outil et analyse CAO exacte lors de l’assemblage d’un flux de capture/sauvegarde plus riche. Évitez la variante de parcours d'outil du projet à moins que son contrat distinct de paramètre de requête ne soit prévu.
Régénérer après les changements et diagnostiquer le rejet
La modification de la géométrie, du brut, de l'origine, des outils, du matériau, de la machine, de l'ordre d'opération ou de la CN modifie la relation de preuve. Régénérez à partir de la demande capturée mise à jour. Une simple modification NC peut rester un texte ordinaire utile, mais elle ne doit pas contenir un artefact natif antérieur comme preuve de nouveaux octets. Le service de sauvegarde supprime les métadonnées natives incompatibles ou rejette un nouveau document incohérent.
Le préréglage de machine inconnu est une erreur de validation de l’adaptateur. Un matériau/outil inconnu, un confinement de stock invalide, une géométrie vide et un usinage non pris en charge génèrent des problèmes de préparation/planification. Gouge, rapide en stock, collision support/table et point de non-concordance de relecture avec le mouvement/preuve généré. Recherchez l'ID de l'opération, l'étape, la ligne et le point dans le problème avant de modifier les contrôles du processus.
Une charge utile source peut réussir le décodage du schéma JSON et ne parvient toujours pas à produire une tâche valide. À l’inverse, un artefact peut exister avec une version bloquée. Conservez la paire demande/résultat d'origine lors du diagnostic de l'une ou l'autre condition, plutôt que de l'écraser par une modification spéculative des paramètres.
Provenance de mise en œuvre : packages/api/src/cam-kernel.ts, cam-program.ts, cœur cam/kernel/snapshot.ts, execute.ts, schema.tset sidecar services/cam-program.ts. Les tests de preuves ciblées sont packages/core/src/cam/kernel/kernel.test.ts et apps/sidecar/test/cam-program.test.ts.
Parcourez l'exemple de résultat
Sans un operations tableau, le planificateur a choisi trois opérations dans le berceau de coupe par défaut, chacune avec son propre changement d'outil. L'en-tête NC les résume avant tout mouvement :
%
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 Le programme se termine par G0 Z10.000, M5, M30 et %. Longueur totale : 3071 lignes. Comme aucune machine n'a été donnée, le vmc-standard préréglage appliqué, dont le message est fanuc: d'où le %/O1000 encadrement, T1 M6 changements d'outils et G43 H1 compensation de longueur.
Lire les données de coupe d'une opération
Chaque opération comporte un cutting enregistrement qui montre comment ses vitesses et ses avances ont été dérivées. Voici les valeurs pour l'opération d'ébauche ci-dessus :
| Champ | Valeur | Signification |
|---|---|---|
rpm | 7160 | Vitesse de broche à partir de Vc et diamètre effectif |
vc / vcRecommended | 359.9 / 360 m/min | Vitesse de surface atteinte et recommandée |
fz | 0.199 mm | Avance par dent après correction de l'amincissement des copeaux |
chipThickness | 0.159 mm | Épaisseur moyenne des copeaux résultante |
feed / plungeFeed | 5696 / 2848 mm/min | Avance de coupe et de plongée |
ap / ae | 10 / 3.2 mm | Profondeur axiale et engagement radial (pas de 20 %) |
rampAngle / helixPitch | 5° / 4.398 mm | Géométrie d'entrée |
mrr | 182.258 cm³/min | Taux d'enlèvement de matière |
powerKw / torqueNm / forceN | 1.862 / 1.986 / 248 | Charge estimée, vérifiée par rapport aux limites de la machine |
deflectionMm | 0.0157 mm | Déviation estimée de l'outil |
limitedBy, warnings, exceeded | vide | Quelle limite plafonnait une valeur ; rien n'a fait ici |
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 le bloc répertorie la ligne de la table des matériaux, les colonnes utilisées et chaque facteur multiplicateur (ici cutSpeed 1.2, diameterScale 1.326, chipThinning 1.25). C'est basis indique qu'il s'agit de valeurs de départ manuelles et non de données certifiées par un fournisseur pour le coupeur.
Des valeurs de départ, pas une garantie
Considérez les données de découpe comme un premier essai raisonné. Vérifiez-les par rapport aux données de votre fournisseur d'outils et de la machine avant la production, et remplacez-les par opération lorsque vous en savez mieux : l'artefact enregistre ensuite le champ dans overridden.
Identité de l'artefact
| Champ | Exemple | Hachage de |
|---|---|---|
identity.job | aa2159be8c7c4228… | Le travail canonique |
identity.part | 91a5382540991195… | La géométrie de la pièce |
identity.nc | 1614df331826682c… | Le texte NC exact |
identity.algorithm | cadcamfun-cam-kernel@1 | Nom et version du noyau |
La réexécution de la même requête reproduit les mêmes identités. Lorsque le sidecar enregistre un artefact natif, il réexécute la requête capturée et compare ; une CN modifiée change identity.nc et est rejeté comme preuve.
Recette : générer et enregistrer à partir de 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) L'enregistrement en tant que parcours d'outil nécessite en outre un fichier portable cadcamfun-cam document construit à partir de cet artefact, son program, la requête capturée et l'instantané du dessin, comme décrit ci-dessus. La méthode SDK prend le même objet JSON que le corps HTTP, saisi comme suit : ToolpathGeneratorManufactureInput.