Documentation
CAM et G-code
Générez des parcours d'outils, post-machinez des programmes, rejouez les CN émises et inspectez les preuves attachées à chaque résultat.
Traduit automatiquement de l'anglais. Voir l'original en anglais
De la géométrie à un programme
@cadcamfun/core expose les fonctionnalités de fabrication sous cam. Les générateurs d'opérations transforment les paramètres de géométrie et d'usinage en mouvements de parcours d'outil. Les publications transforment un programme neutre en machine en texte de contrôleur. L'adaptateur générateur prend également en charge les requêtes de fraisage, de tour et d'imprimante 3D utilisées par le formulaire de candidature.
Le noyau de fabrication natif ajoute un pipeline ordonné : préparer la pièce et les ressources, planifier ou accepter des opérations, calculer les données de coupe, générer un mouvement, émettre un programme CN, rejouer cette CN indépendamment et joindre des preuves. Le texte généré, un programme analysé et un artefact de fabrication vérifié sont des résultats différents avec des garanties différentes.
import { cam } from "@cadcamfun/core"
const post = cam.getPost("fanuc")
if (post === undefined) throw new Error("Post is unavailable")
const nc = post.emit(program, { decimals: 3, tolerance: 0.01 }) Représentation du parcours d'outil
Un programme contient des parcours d'outils ordonnés, chacun associé à un identifiant d'outil et à une liste de mouvements. Les coordonnées sont en millimètres, les avances de coupe sont en millimètres par minute et les durées sont en secondes. La profondeur de coupe est négative en Z par rapport au sommet du matériau dans les coordonnées d'opération conventionnelles. Les publications convertissent les unités de sortie sans modifier la convention de domaine.
Les mouvements sont Rapid, Linear, Arc, Dwell, Comment, Cycle, et Orient. Les centres des arcs sont des coordonnées XY absolues ; un poste calcule les décalages I/J relatifs au contrôleur. La correspondance des coordonnées XY de début et de fin indique un cercle complet. Un cycle conserve l'intention de percer, de s'arrêter, de piquer ou de briser les copeaux avec son plan de retrait et son avance.
Les champs rotatifs sur les mouvements linéaires et rapides expriment un mouvement d'axe simultané ; Orient exprime un positionnement indexé. Ces champs angulaires utilisent des degrés. Un dialecte qui ne peut pas prendre en charge le mouvement rotatif rejette un tel programme au lieu de supprimer ses champs rotatifs.
Opérations et API du générateur
La bibliothèque d'opérations comprend des profils, des poches, des perçages, des surfaçages, des gravures, des usinages de surfaces, des restes, des filetages, des chanfreinages, des usinages adaptatifs et la génération multiaxes. Chaque opération expose son contrat de paramètres et sa fonction de génération pure. Les dimensions de l'outil, les limites de profondeur, le jeu, les avances et la géométrie doivent satisfaire aux règles de validation de l'opération.
POST /api/toolpaths/generate accepte les paramètres du générateur, la géométrie et les extras et retours d'imprimante gcode, cycles, warnings, stats, program, et normalement générer des preuves. Une requête valide qui ne peut pas générer de programme renvoie 400 avec la raison ; un échec de calcul inattendu devient 500. La génération n'enregistre pas de parcours d'outil.
/api/toolpaths/suggest dérive les paramètres pilotés par les éléments, les commentaires, les statistiques de coupe, le texte de l'opération et les avertissements. /api/toolpaths/parse interprète le code G fourni en mouvements et statistiques du programme. Les suggestions et l'analyse n'établissent pas qu'un programme est sûr ou géométriquement correct.
Dialectes du contrôleur
Le registre intégré implémente generic, fanuc, grbl, et haas. linuxcnc est un identifiant de publication reconnu sans implémentation dans ce registre ; getPost peut revenir indéfini. Résolvez et vérifiez le message avant de l'appeler.
Les publications partagent un émetteur avec un formatage décimal fixe, une désinfection des commentaires, des changements d'outils, une gestion des arcs, une numérotation de ligne facultative et une extension de cycle. Les valeurs par défaut sont trois décimales, les cycles fixes activés, les arcs IJK, l'en-tête activé et la tolérance de 0,01 mm. Les formats d'arc non pris en charge dépendent des formes et de la linéarisation prises en charge par le dialecte.
toolNumbers mappe les identifiants d’outils sur des poches entières positives explicites. Les outils non mappés utilisent la numérotation de première utilisation tout en évitant les numéros occupés. retractBeforeToolChange est une option d'adhésion ; il élève Z à la position la plus élevée atteinte par le programme avant un changement d'outil. L'émission de sous-programmes est également facultative et dépend de la prise en charge du dialecte. Vérifiez la sortie du contrôleur sélectionné et la configuration de la machine avant son utilisation en production.
Des parcours d'outils répétés peuvent être émis en tant que sous-programmes. Un parcours d'outil est qualifié lorsque, après son mouvement de positionnement, son mouvement est le mouvement d'un autre parcours d'outil traduit dans 5 × 10⁻⁶ mm, avec les mêmes types de mouvement, avances et sens d'arc. Chaque groupe a besoin d'au moins six mouvements corporels et doit sauvegarder au moins douze mouvements au total. Les parcours d'outils avec des cycles prédéfinis ou des mots rotatifs ne sont jamais candidats (packages/core/src/cam/post/subprograms.ts).
Niveaux de fabrication et de sortie natifs
POST /api/toolpaths/manufacture accepte CamKernelRequest, un instantané CAO version 1 avec l'identité, le matériau, la machine facultative, le stock, les outils, les opérations, les contrôles qualité et le décalage de travail. Les opérations manquantes appellent le planificateur ; les outils manquants utilisent le berceau de coupe par défaut. Une saisie non prise en charge, un matériau ou un outil inconnu, une géométrie de pièce vide, un stock non valide et un travail imprévisible renvoient des problèmes explicites.
Le noyau calcule les avances par opération, la vitesse de broche, l'engagement, les estimations de puissance et de force, les avertissements, le temps et le volume retiré. Il publie un programme et interprète indépendamment son NC émis. L'artefact conserve le programme, les outils de découpe, le texte CN, les statistiques de stock, les résultats des opérations, les résumés d'identité, les réclamations et les problèmes.
release est blocked, preview, ou verified-program. Pannes matérielles ou libération de bloc CN vide. La vérification nécessite que les réclamations pertinentes soient acceptées ; la règle de publication actuelle autorise des preuves non étayées de déplacements de machines tout en marquant le programme comme vérifié. Inspectez chaque réclamation, y compris les statuts non étayés et non résolus, avant de décider si les preuves couvrent la machine concernée.
Les réclamations couvrent les données de coupe, les limites de la machine, les opérations terminées, le dégagement rapide, le dégagement du support, le gougeage, l'enlèvement de matière, la relecture CN, le déplacement de la machine et le dégagement de la machine. Les preuves sont liées à la NC de l'artefact et à l'identité de la source. La modification d'une CN ou la modification d'une configuration source invalide cette connexion à moins que le travail ne soit réévalué.
La vérification par relecture et ses limites
POST /api/toolpaths/verify relit soit le code G, soit un programme par rapport au stock aligné sur l'axe. Fournissez exactement une source de mouvement, un outil et des limites de stock. Les luminaires optionnels sont des enveloppes alignées sur les axes ; Les solides ou les maillages cibles en option permettent des comparaisons de gouge et de stock restant. Les dimensions manquantes de la flûte, de la tige, de la saillie ou du support laissent les contrôles correspondants non modélisés.
Le vérificateur échantillonne le mouvement dans un champ de hauteur et renvoie les problèmes, les statistiques de suppression, les longueurs d'engagement/coupe aérienne et un aperçu de l'affichage. La tolérance par défaut est de 0.05 mm. La résolution par défaut dépend du diamètre de la fraise et peut être augmentée pour s'adapter au budget de calcul ; ResolutionCoarsened rapports qui changent. La résolution de la grille limite les preuves géométriques que le résultat peut prendre en charge.
Un résultat avec ok: true n'a aucun problème de gravité des erreurs. Sans cible, il ne peut pas établir la précision de la pièce finie ; sans fixations ni géométrie de support, il ne peut pas établir leur jeu. La relecture et les vérifications machine intégrées au noyau ajoutent des preuves spécifiques à sa tâche capturée, tandis que la vérification autonome reflète uniquement la requête fournie.
Carte de mise en œuvre
cam/ir.ts est propriétaire des déménagements et des contrats de programme ; operations/ possède des générateurs de stratégie ; post/ possède un contrôleur d'émission ; generator/ adapte les paramètres de l'application et analyse le texte ; model/ construit la géométrie des pièces ; verify/ possède une relecture en hauteur ; kernel/ possède l’orchestration et les preuves de la fabrication. setup.ts et indexing.ts fournir une validation du cadre de travail et des transformations de tables indexées.
L'enregistrement de documents, la vérification de l'accès aux dessins et la conservation des preuves sources appartiennent aux services sidecar. Voir Configurations pour les documents d'exploitation portables et les contrôles de persistance.
Profondeurs, hauteurs, avances et valeurs par défaut
Les paramètres de fonctionnement du noyau distinguent la profondeur de coupe positive des plans Z absolus. totalDepth et stepdown sont nécessaires des longueurs finies positives ; une profondeur de 5 mm avec un abaissement de 2 mm produit des passes à 2, 4 et 5 mm en dessous du sommet. Les valeurs par défaut s'appliquent uniquement lorsqu'un champ est manquant, donc un zéro explicitement autorisé est conservé.
| Champ | Par défaut / unité | Signification |
|---|---|---|
clearanceHeight | 10 mm | Avion utilisé pour un positionnement rapide et clair. |
safeHeight | 5 mm | Hauteur d'entrée/sortie d'alimentation de fonctionnement. |
retractHeight | 2 mm | Hauteur de stationnement entre les passages ; zéro peut être valide. |
feed / plungeFeed | 800 / 300 mm/min | Avances positives de coupe et de plongée. |
spindleRpm / coolant | 10,000 / off | Broche au niveau de fonctionnement et intention du liquide de refroidissement. |
Les hauteurs doivent satisfaire au dégagement ≥ sécurité ≥ rétraction. Les valeurs par défaut du profil sont la compensation extérieure, la direction de montée, la tolérance de finition nulle, l'entrée directe, l'ajustement de l'arc et la tolérance de 0,01 mm. L'angle de la rampe est par défaut de 3° et accepte 0.1–45° ; Le pas d'hélice est par défaut de 1 mm par tour. Un côté et une surépaisseur déclarés déplacent la trajectoire du centre de l'outil, plutôt que de modifier le contour source.
Ce sont de purs paramètres par défaut de fonctionnement. Les paramètres du générateur d'application et les données de processus dérivées des matériaux du noyau natif sont des couches de paramètres distinctes ; ne supposez pas les mêmes noms de champs ou les mêmes valeurs par défaut entre eux.
Source: packages/core/src/cam/params.ts et operations/profile.ts.
Le fraisage de filetage utilise les hauteurs de profil de base ISO 68-1 : 0.54127 × pas pour les filetages internes et 0.61343 × pas pour les filetages externes (packages/core/src/cam/operations/thread.ts). La visionneuse de parcours d'outil suppose 500 mm/min pour les mouvements de coupe sans avance et 1,000 mm/min pour les rapides lors du chronométrage d'une animation ; ce sont des hypothèses de lecture, pas des estimations de la machine.
Rejouer un petit programme CN
Cet exemple en mémoire découpe une fente droite de 4 mm de large et 3 mm de profondeur à travers un modèle de stock de 40 × 40 × 10 mm. Il exerce le même vérificateur principal utilisé par le point de terminaison HTTP sans enregistrer de parcours d'outil.
import { cam } from "@cadcamfun/core"
const report = cam.verify.verifyToolpath({
gcode: "G21\nG90\nG0 X-10 Y0 Z5\nG0 Z0\nG1 Z-3 F200\nG1 X10 F400\nG0 Z5\nM30",
stock: { minX: -20, maxX: 20, minY: -20, maxY: 20, minZ: -10, maxZ: 0 },
tool: { kind: "endmill", diameter: 4 },
fixtures: [], tolerance: 0.05, resolution: 0.25
})
console.log(report.ok) // true for this stock/tool model
console.log(report.stats.removedVolume)
console.log(report.issues) Changer le plongeon en G0 Z-3 produit un RapidInMaterial découverte. L'ajout d'une longueur de coupe courte ou de dimensions de support peut introduire des résultats de tige/support que la demande initiale ne pouvait pas tester. La fourniture de la géométrie cible ajoute une comparaison des pièces finies ; cet exemple ne fait aucune déclaration sur une cible ou des appareils.
Le vérificateur budgétise au maximum 2,500,000 cellules de grille et 3,000,000 échantillons de chemin, avec un budget de travail de 80,000,000. Les demandes peuvent être réduites pour respecter ces limites. Le stock d’aperçu est sous-échantillonné pour l’affichage, de sorte que ses pixels ne constituent pas un deuxième résultat de vérification plus fin.
Source: packages/core/src/cam/verify/verify.ts et verify/verify.test.ts.
Lors de la relecture d'un texte qui appelle des sous-programmes, l'interprète suit M98 imbriquant jusqu'à huit niveaux de profondeur et arrête le déroulement aux lignes 2,000,000, de sorte qu'un grand nombre de répétitions ne peut pas épuiser la mémoire (packages/core/src/cam/subprogram-text.ts).
Lire un artefact ayant échoué ou un aperçu
Un problème de noyau inclut un tag, severity, stage, message, and optional operation ID, NC line, and point. Follow that stage to the input that caused it: preparation checks stock/material/tools; planning selects strategies; cutting-data checks process limits; generation creates motion; posting writes the controller format; replay/evidence checks the resulting bytes.
NoSuitableToolouUnknownTool: inspectez l'ID de la fraise sélectionnée et les limites géométriques, y compris le diamètre, la longueur de la cannelure, la saillie et la bibliothèque de fraises fournie.RapidInStockouHolderCollision: localisez l'opération/le point signalé et inspectez l'entrée, les rétractations, le stock et le dégagement du support/table. L'augmentation de l'avance de coupe ne répare pas un rapide dangereux.Gouge: vérifiez le côté du contour, les niveaux supérieur/inférieur, la surépaisseur de finition et la géométrie cible. Le noyau teste un profil intérieur de la partie extérieure comme un véritable échec de relecture.RemainingStock: inspectez les coins inaccessibles, le rayon de l'outil, la stratégie de finition et la résolution de vérification avant d'interpréter le volume restant.ReplayMismatch: traiter le mouvement publié et son IR revendiqué comme incohérents et régénérer à partir du travail capturé.
Les préréglages de machine représentent des classes typiques, et non des machines mesurées. Les ID de préréglage d'instantané disponibles sont vmc-standard, haas-vf2, hsc-mill, desktop-mill, et cnc-router. Le premier est celui par défaut. Inspectez le déplacement réel de la machine et les preuves de dégagement au lieu de les déduire du nom d'affichage d'un préréglage.
Source: packages/core/src/cam/kernel/execute.ts, machines.ts, et kernel.test.ts; les champs de problème de fil sont dans packages/api/src/cam-kernel.ts.
Générez une poche et publiez-la
La couche CAM est un pipeline de fonctions pures : la géométrie et les paramètres entrent dans une opération, l'opération renvoie un Toolpath de mouvements de représentation intermédiaire (RI), un Program regroupe les parcours d'outils et un post-processeur transforme le programme en texte spécifique au dialecte. Rien avant la publication ne connaît les mots du code G, donc le même parcours d'outil peut être émis pour GRBL, Fanuc, Haas ou le dialecte générique.
import { cam } from "@cadcamfun/core"
const tool = { id: "t6", name: "6 mm flat end mill", kind: "endmill",
diameter: 6, flutes: 3, maxRpm: 18000 }
// 60 × 40 × 10 mm block; its top face is at origin.z (Z = 0)
const stock = { x: 60, y: 40, z: 10, origin: { x: 0, y: 0, z: 0 },
material: "aluminium-6061" }
const params = new cam.PocketParams({
name: "Pocket 30x20",
totalDepth: 3, // mm below the stock top
stepdown: 1.5, // two levels: -1.5 and -3.0
entry: "ramp", // default is "helix"
})
const ring = [{ x: 15, y: 10 }, { x: 45, y: 10 }, { x: 45, y: 30 }, { x: 15, y: 30 }]
const pocket = cam.generatePocket(params, ring, tool, stock)
const program = { name: "pocket-demo", units: "mm", workOffset: "G54",
toolpaths: [pocket] }
const gcode = cam.getPost("grbl")!.emit(program)
console.log(gcode) (PROGRAM: pocket-demo)
(UNITS: MM)
(WORK OFFSET: G54)
(OP 1: Pocket 30x20 | T1 [t6] | S10000 | F300-800)
G21 G90 G17 G94
G54
(OPERATION: Pocket 30x20)
(TOOL T1)
M3 S10000
(Pocket: Pocket 30x20)
G0 X30.000 Y21.000 Z10.000
Z5.000
Z2.000
Z1.000
G1 X36.000 Z0.732 F300
Y19.000 Z0.643
X24.000 Z0.107
Y21.000 Z0.018
X30.000 Z-0.250
X36.000 Z-0.518
Y19.000 Z-0.607
X24.000 Z-1.143
Y21.000 Z-1.232
X30.000 Z-1.500
...
(the second level repeats the ramp from Z-1.500 to Z-3.000)
...
X18.000
Y27.000
G0 Z2.000
Z10.000
M5
M2 Lecture du résultat par le haut : les commentaires d'en-tête répertorient le programme, les unités, le décalage d'origine et un résumé par opération (numéro d'outil, ID, vitesse de broche et plage d'avance). G21 G90 G17 G94 sélectionne les millimètres, les coordonnées absolues, le plan XY et l'avance par minute. GRBL n'a pas de changeur d'outils, donc le premier outil est annoncé sous forme de commentaire et les changements d'outils ultérieurs deviennent (CHANGE TO TOOL Tn) suivi de M0. The pocket starts with rapids down through clearance (10), safe (5), and retract (2) heights, then ramps at the 300 mm/min plunge feed. Once the ramp reaches depth it switches to the 800 mm/min cutting feed. The program ends with M5 (arrêt de la broche) et M2.
La géométrie vide est signalée, non ignorée silencieusement
Si la région n'est pas une frontière fermée, l'opération émet le commentaire (nothing to cut: no closed boundary) et aucun mouvement. Passez les points de sonnerie comme { x, y } objets. Recherchez ce commentaire dans les programmes générés lorsqu'une opération ne produit aucune coupe.
Paramètres de fonctionnement et valeurs par défaut
La classe de paramètres de chaque opération étend les mêmes champs communs. Les hauteurs sont des valeurs Z absolues et doivent satisfaire au jeu ≥ sécurité ≥ rétraction ; le schéma rejette tout le reste. Les profondeurs sont des distances positives en dessous du dessus du stock ; la dernière passe est coupée à totalDepth.
| Champ commun | Défaut | Signification |
|---|---|---|
id, name | operation, Operation | Identité affichée dans les commentaires et les résumés. |
clearanceHeight | 10 | Hauteur pour les déplacements entre les opérations. |
safeHeight | 5 | Hauteur pour les déplacements entre régions. |
retractHeight | 2 | Hauteur avant plongée/alimentation. |
totalDepth | requis | Profondeur positive sous le dessus de la crosse. |
stepdown | requis | Profondeur positive par passe. |
feed | 800 | Avance de coupe, mm/min. |
plungeFeed | 300 | Avance pour la plongée et le ramping, mm/min. |
spindleRpm | 10000 | Vitesse de broche. |
coolant | off | Mode liquide de refroidissement. |
| Opération | Champs spécifiques (par défaut) |
|---|---|
Pocket | stepover 40 (% du diamètre, 1–100), allowance 0, finishPass fAUX, climb vrai, entry helix | ramp | plunge, order insideOut | outsideIn, helixPitch 1, helixRadius 0 (= rayon de l'outil), rampAngle 3° (0.1–45), tolerance 0.01, toolCentre fAUX. |
Profile | side outside | inside | onLine, climb vrai, allowance 0, leadIn direct | ramp | helix | arc, helixPitch 1, helixRadius 0, leadRadius 2, rampAngle 3°, tabs [] (chaque onglet : position 0–1 le long du chemin, width, height), arcFit fAUX, tolerance 0.01. |
Drill | Non stepdown ou feed. peck 0 (un seul coup), chipBreak fAUX, dwell 0 p. Les cycles de débourrage maintiennent un jeu de 0,5 mm au-dessus de la dernière profondeur et les retraits de brise-copeaux sont de 0,5 mm. |
Face | stepover 60, overshoot 0 (= rayon d'outil + 1 mm), alongX vrai, tolerance 0.01. |
Engrave | tolerance 0.01. |
Thread | Fraisage de filetage ; profondeur du profil 0.54127 × pas interne et 0.61343 × pas externe. |
Adaptive, repos, surface, chanfrein, multi-axes | Autres stratégies exportées à partir du même module ; chanfrein ajoute tipOffset 0.2 et lead 1. |
Construire des paramètres avec new cam.PocketParams({ ... }) (ou la classe correspondante) afin que les valeurs par défaut soient appliquées et que les contraintes soient vérifiées une fois. Chaque opération est également exportée par paire, par exemple cam.Pocket = { Params, generate }, pour le code distribué par type d'opération.
Post-processeurs et options de sortie
Les messages sont enregistrés par pièce d'identité dans cam.posts et j'ai levé les yeux avec cam.getPost(id). Le linuxcnc L'ID est réservé mais n'est pas implémenté, donc getPost("linuxcnc") retours undefined. Vérifiez cela avant d'appeler emit.
| Poste | Cycles en conserve | Unité de séjour | Axes rotatifs | Changement d'outil | Cadre du programme |
|---|---|---|---|---|---|
generic | oui | secondes | oui | Tn M6 | aucun |
grbl | non (étendu aux mouvements) | secondes | refusé | commente, alors M0 pause | aucun |
fanuc | oui | millisecondes | oui | Tn M6 + G43 Hn | % / O####, sous-programmes |
haas | oui | millisecondes | oui, G234 TCP | Tn M6 + G43 Hn | % / O####, sous-programmes |
Tous les quatre acceptent les arcs comme ijk ou radius; linearize est toujours possible. Un programme dont les mouvements comportent des angles de rotation est rejeté par GRBL plutôt que de perdre silencieusement les angles.
| option d'émission | Défaut | Effect |
|---|---|---|
decimals | 3 | Chiffres après la virgule. |
lineNumbers | désactivé | { start, step } écrit N mots, par exemple N10, N20. |
useCannedCycles | true | Émettez des cycles de forage là où le dialecte les contient. |
arcMode | ijk | ijk, radius, ou linearize. |
header | true | Écrivez l’en-tête du commentaire descriptif. |
tolerance | 0.01 | Tolérance de corde lorsque les arcs sont linéarisés. |
toolNumbers | commande de première utilisation | Carte de l'ID de l'outil vers la poche du carrousel. Les entrées manquantes conservent la numérotation de première utilisation sans entrer en collision avec les pochettes explicites. |
retractBeforeToolChange | désactivé | Relever Z jusqu'au point le plus haut atteint avant un changement d'outil. |
stamp | absent | Cachet d'en-tête. Laissez-le de côté pour une sortie déterministe. |
subprograms | désactivé | Écrivez une fois des parcours d'outils répétés et traduits en tant que sous-programme incrémentiel (Fanuc et Haas). |
const text = cam.getPost("fanuc")!.emit(program, { lineNumbers: { start: 10, step: 10 } })
// %
// O1000
// (PROGRAM: POCKET-DEMO) comments are upper-cased
// ...
// N10 G21 G90 G17 G94 G40 G49 G80
// N20 G54
// N30 T1 M6
// N40 G43 H1
// N50 M3 S10000 Octet identique par défaut
Les options qui modifient la sortie (retrait de changement d'outil, sous-programmes, tampons) sont désactivées par défaut, donc la régénération d'une requête stockée produit un texte identique. Le cam/gcode l’étape du workflow s’appuie sur cela pour détecter les programmes obsolètes.
Avant d'envoyer un programme à une machine
- Confirmez le brut : sa taille, l'origine de son coin minimum, et que sa face supérieure soit à
origin.z. Chaque profondeur est mesurée à partir de cette face. - Vérifiez les hauteurs par rapport aux luminaires. Les hauteurs de dégagement, de sécurité et de retrait sont des valeurs Z absolues dans le décalage d'origine.
- Choisissez le poste du contrôleur actuel et confirmez qu'il est implémenté (
getPosta renvoyé un message). - Rejouez le programme avec vérification et lisez chaque numéro. Ne considérez pas l’absence de commentaire d’erreur comme une preuve.
- Si le texte CN a été modifié manuellement, régénérez-le ou revérifiez-le. Les preuves calculées pour le texte original ne s'appliquent plus.
- Exécution à sec de la machine au-dessus de la pièce avec une avance réduite, comme vous le feriez pour tout nouveau programme.
Le code généré n'est pas une garantie de la machine
Le noyau et les publications vérifient la géométrie, les limites et les règles de dialecte qu'ils connaissent. Ils ne connaissent pas vos montages, la longueur des outils ou l'état de la machine. Un programme vérifié constitue une preuve et non une garantie d'une coupe sûre.
Revendications de preuves du noyau natif
Outre les générateurs présentés ci-dessus, le noyau natif renvoie un artefact avec dix revendications. Chacun est passed, failed, unsupported ou unresolved, avec une chaîne de détail. Le niveau de version les résume : blocked, preview ou verified-program.
| Réclamer | Exemple de statut | Détail renvoyé par le noyau |
|---|---|---|
cutting-data | passé | Chaque opération s'exécute aux données de coupe calculées pour l'acétal POM-C (Delrin) et son coupeur |
machine-limits | passé | Vitesse de broche, avance, puissance, couple et déflexion de la fraise dans les limites |
operations-complete | passé | 3 opérations générées ; chaque fonctionnalité planifiée a une opération |
no-rapid-in-stock | passé | Aucun mouvement rapide ne touche le titre tel que rejoué |
holder-clearance | passé | La tige et le support restent à l'écart du stock (relecture du champ de hauteur de l'axe 3) |
no-gouge | passé | Pas de coupe en dessous de la pièce au-delà de 0.030 mm (une cellule de jeu latéral) |
material-removed | passé | Le brut rejoué correspond à la pièce dans un rayon de 0.110 mm |
nc-replay | passé | Interpréter 3035 mouvements NC indépendamment du poteau ; les étendues conviennent dans un délai de 2.0e-3 mm |
machine-travel | non pris en charge | La machine n'a pas de limites de déplacement configurées |
machine-clearance | passé | 3035 mouvements vérifiés ; le support et la tige restent à au moins 6.500 mm de la table |
Les lignes sont le résultat réel du flan POM dans le guide de fabrication natif : 3 opérations, 3071 lignes CN, libération verified-program. Le poste machine de l'artefact peut également être linuxcnc dans le schéma, mais aucune publication LinuxCNC n'est implémentée, donc les préréglages ne l'utilisent pas.