CamBam V1.0 et utilisation du 4ième axe rotatif.

A la base, CamBam n'est pas conçu pour être utilisé en usinage 4 axes, mais moyennant quelques "ajouts" manuels dans les opérations d'usinage et quelques plugins, il est possible de l'utiliser pour de l'usinage avec un axe rotatif A ou B.

Les fichiers CamBam ainsi que les objets 3D sont disponibles dans cette archive

1. Usinage positionnel.

a) Usinage positionnel simple.

Le principe est simple, l'axe rotatif ne sert qu'à positionner la pièce à un angle voulu, puis se verrouille en position ; on usine alors normalement en XYZ.

Un exemple avec la pièce suivante:

On commencera avec l'axe rotatif à 0° et on usinera la partie en vert ; dans ce cas un simple surfaçage pouvant être fait avec une opération de poche ou de contour.

On fera ensuite tourner l'axe rotatif de 60°, puis on surfacera la partie en rouge de la même manière.

Et enfin, on fera tourner l'axe de 30° de plus pour atteindre la position 90° et on utilisera une opération de perçage pour usiner le trou en violet.

Les informations de rotation devront être ajoutées manuellement dans les opérations d'usinage concernées. Nous verrons plus loin comment le faire.

Notez que l'objet 3D n'est la que pour rendre les choses plus parlantes ; dans la réalité il n'est pas nécessaire tant que l'on n'utilise pas d'opérations de profilage 3D.

Cette méthode peut être utilisée avec tous les types d'opération d'usinage, y compris avec des opérations d'usinage 3D : dans ce cas il faudra bien sur disposer d'un modèle 3D et il sera possible d'utiliser la méthode d'usinage double-face des opérations d'usinage 3D pour faire les faces dessus/dessous.

b) Usinage positionnel avec répétitions

Dans le cas précédant chaque usinage est différent, que ce soit par son type (surfaçage, perçage), ses paramètres d'usinage (la profondeur à usiner n'est pas la même sur la face verte et la face rouge) et l'angle de positionnement n'est pas répétitif, ce qui impose de définir une rotation spécifique pour chaque usinage.

On peut toutefois avoir une pièce sur laquelle on veut répéter un même usinage de manière régulière sur le pourtour de la pièce ; exemple usiner un 6 pans ou un arbre cannelé. Dans ce cas, on aura un ou plusieurs usinages (surfaçage, poche, perçage, ou même usinage 3D ...) répété 6x à 60° d'intervalle pour un 6 pans. On utilisera alors la fonction répétition d'usinage de CamBam à laquelle on adjoindra un ordre de rotation de l'axe. (une valeur de rotation relative à sa dernière position).

Exemple de pièce pouvant être faite par répétition à intervalle angulaire régulier. (ici tous les 45°)

Notez que ces deux méthodes peuvent également être utilisées avec un 4ième axe non motorisé ; dans ce cas ce sera à vous de tourner et de verrouiller le 4ième axe à sa nouvelle position d'usinage ; il suffira d'insérer un M0 (pause) dans la propriété Fin d'opération personnalisée de la dernière opération d'usinage pour arrêter l'usinage le temps de tourner l'axe à sa nouvelle position.

2. Enroulement de GCode (Wrapping)

a) Gravure simple

Une autre méthode, adaptée à d'autres types d'usinages consiste à travailler "à plat", c'est à dire que, du point de vue de CamBam, on fait un simple usinage en XYZ, puis qu'ensuite une des coordonnées X ou Y, suivant l'orientation du 4ième axe sur la machine, est convertie en position angulaire. C'est comme si on enroulait l'usinage autour d'un cylindre. Sur CamBam V1.0, c'est le post-processeur qui se chargera de convertir les coordonnées X ou Y en coordonnées A ou B.

Un exemple avec un texte écrit "à plat" puis enroulé autour d'un cylindre.

Dans ce cas, le GCode produit est un simple GCode 3 axes XYZ, une fois produit, le GCode subit alors une modification pour convertir les coordonnées cartésiennes de l'axe X ou Y en coordonnées polaire pour un axe A ou B. Cette conversion peut être faite à l'aide d'un plugin, ou si vous utilisez la version 1.0 de CamBam, elle pourra être faite directement par le post processeur (qui devra avoir été configuré pour cela).

Exemple, gravure d'un logo simple sur un cylindre de 40mm de diamètre.

Les parcours d'outils "à plat" dans CamBam.

Notez que les parcours d'outil sont au rayon en Z (tracé bleu), le dessin lui-même est à Z = 0  ; c'est important en gravure.

Une fois le GCode fait et enroulé, on obtient ce résultat.

Tous les types d'opérations d'usinage peuvent être enroulés.

Les opérations de gravure et d'usinage 3D nécessiteront de tenir compte de leurs spécificités, notamment la manière dont le Z est géré en gravure (*), qui diffère des autres opérations d'usinage.

(*) En gravure, les coordonnées Z sont relatives à la position en Z de la ligne à graver et ne sont pas données en coordonnées absolues comme sur les autres opérations. Je parle ici de l'opération de gravure standard de CamBam ; le plugin V-Grave quand à lui, fonctionne comme les autres opérations d'usinage, c.à.d. que la position en Z des lignes à graver n'a aucune incidence, les valeurs de Surface pièce et de Profondeur finale sont en coordonnées absolues.

Avec CamBam V1.0 et l'enroulement via le post-processeur (RotaryY ou RotaryX), c'est la valeur de Surface pièce qui est utilisée pour définir le rayon d'enroulement, en gravure il est donc nécessaire que le tracé soit à Z=0 et que Surface pièce = le rayon car contrairement aux autres opérations d'usinage où la valeur de Surface pièce est une valeur absolue, indépendante de la position en Z du tracé, ce n'est pas le cas en gravure ou la valeur de Surface pièce est relative à la position en Z du tracé.

b) Enroulement de GCode utilisé avec des opérations d'usinage 3D.

Il est également tout à fait possible d'enrouler des opérations d'usinage 3D, comme par exemple cette colonne qui peut être obtenue suite à un enroulement d'une opération de profilage 3D sur un objet surface (un maillage) représentant une texture pierre en 3D.

La surface texture 3D ci-dessus à été faite sous CamBam à l'aide du plugin Générateur de Voronoi, qui à permis de créer les cellules en 2D (les pierres) comme ci-dessous

Ensuite, j'ai utilisé "développer un modèle surface" dans le plugin, pour générer l'image en niveaux de gris ci-dessous, représentant un relief avec des zones bombées au niveau des "pierres".

Cette image à ensuite été utilisée pour produire la surface 3D à l'aide de: Dessiner/Surface/Depuis une image Bitmap.

Ici, on part d'une forme 3D déjà à plat, mais si l'on a un objet 3D "normal", il sera nécessaire de le "dérouler" afin d'obtenir la surface qui sera utilisée avec les opérations d'usinage 3D

Ce déroulage de l'objet de départ peut être fait à l'aide de mon plugin Dérouler objet 3D.

Ici, la statuette de la Vénus (en gris) à été déroulée pour obtenir la forme déroulée en rouge.

Une ou plusieurs opérations d'usinage 3D pourront être appliquées sur la forme déroulée, puis le GCode obtenu sera ensuite enroulé pour l'usinage avec le 4ième axe rotatif.

Voir ICI pour le plugin permettant de dérouler un objet 3D, ainsi que sa documentation.

3. Exemples pratiques

a) Usinage positionnel simple

Nous allons créer les opérations d'usinage permettant de créer les 3 usinages sur la pièce ci-dessous

Ouverture et mise en position de l'objet 3D

Ce tutoriel suppose que le plugin Déplacements numériques soit installé.
Il est basé sur un axe A aligné avec le Y de la fraiseuse.
Le 0 en Z doit être fait à l'axe de rotation du 4ième axe.

Le 4ième axe installé sur ma machine, aligné avec l'axe Y

Ouvrez le fichier Piece_1_positionel.stl contenu dans l'archive

L'objet surface obtenu va devoir être positionné correctement car il est mal orienté.

Sélectionnez l'objet surface, ouvrer le plugin Déplacements numériques (ctrl + maj + M) et faites tourner l'objet de 90° autour de X dans le sens anti-horaire pour obtenir le résultat suivant.

Cliquez ensuite sur le bouton Aligner pour ouvrir l'outil d'alignement et réglez les paramètres comme sur l'image, ensuite cliquez sur Appliquer pour positionner l'objet 3D.

Il devrait désormais être centré en Z et X, et la face avant devrait être alignée avec le 0 en Y comme ci-dessous.

Obtention des lignes 2D pour l'usinage

Nous allons maintenant créer la ligne 2D qui nous sera utile pour l'usinage du plat ; Cet usinage sera fait avec une opération de contour + largeur d'usinage.

Si vous utilisez la version 1.0 de CamBam, il suffit d'utiliser l'accrochage aux objets pour pouvoir tracer une ligne directement sur l'objet 3D (ligne verte sur l'image ci-dessous). Si vous utilisez une version plus ancienne, il faudra en passer par l'étape intermédiaire ci-dessous.

Créez un nouveau calque (ici Calque1), sélectionnez l'objet surface, puis utilisez le menu Edition/surface/détection des arrêtes. Vous devriez obtenir ce résultat.

J'ai surligné en vert l'arrête qui nous intéresse.

A partir de la, le but est de récupérer la ligne verte seule. Si tracé sur CamBam V1.0 avec l'accrochage aux objets, c'est déjà fait. Ici, je vais tout simplement décomposer les polylignes qui constituent les contours et récupérer uniquement la ligne qui m'intéresse, mais je pourrais aussi tracer la ligne directement vu que désormais, grâce à la détection des arrêtes, je peux m'accrocher aux extrémités de la ligne.

J'ai choisi de vous montrer la manière la plus complexe, car si ici on a juste une ligne droite, on pourrait avoir un contour plus complexe, et dans ce cas, il est plus simple de récupérer une ligne existante que d'en créer une nouvelle.

Pour bien voir à quoi ressemblent les lignes en question, vous pouvez masquer le calque sur lequel se trouve l'objet 3D pour ne voir que les lignes ; comme on peut voir, la polyligne 14 contient la ligne qui nous intéresse.

Je vais maintenant décomposer (Edition/Décomposer) la polyligne 14 et ne garder que la ligne qui m'intéresse, que je mettrais sur un autre calque appelé "plat 0°" ; les autres lignes ne serviront plus et peuvent être supprimées.

Pour mettre la ligne 20 obtenue après décomposition sur le nouveau calque, il suffit de la glisser/déplacer dans l'arborescence.

Cette ligne va non seulement nous servir pour définir la position de l'usinage, mais elle va aussi nous permettre de connaître la position en Z du plat à usiner.

Pour connaître sa position en Z, sélectionnez la ligne 20, puis cliquez sur le bouton |...| de la propriété Points de la ligne. Comme on peut le voir, la surface est à Z = 8

La pièce fait 20mm de diamètre, la surface supérieure du cylindre est donc à Z = 10

Note: Dans le cas de l'utilisation d'un objet au format .STEP au lieu de .STL (CamBam V1.0 uniquement) ; les lignes de contour seront déjà disponibles à l'ouverture du fichier STEP et il ne sera pas nécessaire de faire une détection de contour.

Mise en place de la première opération d'usinage.

Nous allons maintenant créer l'opération de Contour qui va nous permettre de surfacer le premier plat.

Sélectionnez la ligne que nous avons créée (Ligne 20 dans le cas de l'exemple) puis affectez-lui une opération de Contour.

Réglez les propriétés suivantes comme suit:

  • Diamètre outil = 3
  • Forme d'outil = cylindrique
  • Surface pièce = 10 (le rayon)
  • Profondeur finale = 8
  • Plan de dégagement = 15
  • Incrément de passe = 2
  • Sens d'usinage = mixte
  • Ordre d'usinage = Niveaux d'abord

  • Réglez les autres propriétés telles que Vitesse d'avance, Rotation broche, etc en fonction de la matière que vous usinez et des performances de votre machine.

Activez l'affichage de la largeur de coupe (Affichage/Afficher largeur de coupe)

Générez les parcours d'outil pour cette opération.

Vous devriez obtenir le résultat suivant

Si l'usinage ne se fait pas du bon coté de la ligne, inversez la valeur de la propriété Intérieur/Extérieur et régénérez les parcours afin d'avoir l'usinage du bon coté.

Il ne reste plus qu'a donner une valeur pour Largeur d'usinage ; dans le cas présent, le plat fait 20mm de long, nous allons donner une valeur un peu plus grande afin que la fraise ne prenne pas toute la largeur de passe d'un coup ; entrez 22 pour Largeur d'usinage puis régénérez les parcours. Vous devriez obtenir le résultat suivant:

Nous en avons fini pour l'instant avec cette opération, sauvez votre travail avant de passer à la suite.

Mise en place de la deuxième opération d'usinage

Nous allons répéter le même processus pour créer le deuxième plat.

Nous allons faire tourner les lignes de contours du calque 1 pour les mettre dans la nouvelle position.

  • Cachez le calque contenant l'objet 3D, il n'est pas nécésaire de faire tourner l'objet lui-même car nous n'utiliseront que les lignes obtenues avec la détection des arrêtes.
  • cliquez droit sur calque 1 et choisissez Tout sélectionner sur ce calque dans le menu contextuel afin de sélectionner toutes les lignes de contour.
  • A l'aide du plugin Déplacements numériques, faites tourner la sélection de contour de 60° à gauche autour de Y pour amener le 2ieme plat à l'horizontal.
  • Pour avoir un affichage plus clair, désactivez l'opération d'usinage précédente (clic droit sur l'opération d'usinage > Activer / désactiver l'opération)

A partir de là, faite la même manip que précédemment pour récupérer la ligne qui nous intéresse et la placer dans un calque que nous appellerons "Plat 60°" ; nous obtenons la ligne en violet sur l'image. (ligne 14)

Faites un Copier/Coller de l'opération Contour1, puis assignez la ligne 14 à cette nouvelle opération (en faisant un glisser/déposer de la ligne 14 sur l'opération Contour 2, ou en utilisant le menu contextuel de l'opération d'usinage: Sélectionner les objets de dessin)

Activez l'opération Contour2, et modifiez Profondeur finale pour qu'elle corresponde à celle du plat ; ici 7.464 et générez les parcours d'outil. Si l'usinage n'est pas du bon coté, inverser la valeur de Intérieur/Extérieur.

Vous devriez obtenir le résultat suivant

Mise en place de la troisième opération d'usinage

Nous allons maintenant usiner le trou à l'aide d'un usinage de poche.

  • Désactivez Contour2 pour éclaircir l'affichage.
  • Sélectionnez tout le contenu du calque 1 (les contours)
  • A l'aide du plugin Déplacements numériques, faite tourner la sélection de contour de 30° à gauche autour de Y pour amener le trou en position verticale.

Vous devriez obtenir le résultat suivant.

Sélectionnez le cercle du haut, puis utilisez le menu Edition/Polyligne/Insérer des arcs avec une valeur de 0.02 ; Cela aura pour effet de créer un cercle "plat" constitué d'arcs à partir de la forme sélectionnée. Notez que la forme se positionne à Z = 0 ; c'est sans importance.

Comme précédemment, créez un nouveau calque, que nous appellerons "trou" et déplacer-y le cercle que nous venons de créer. Nous pouvons désormais supprimer ou masquer le calque 1 ; les contours ne nous seront plus utiles.

  • Sélectionnez le cercle que nous venons de créer, puis assignez lui une opération de Poche.
  • Cliquez droit sur contour 1 (ou contour 2) > Copier.
  • Cliquez droit sur l'opération de poche que nous venons de créer > Coller le format afin de copier les paramètres de l'opération Contour 1 dans l'opération de poche.
  • Activez l'opération de poche et modifiez la Profondeur finale à -10.5
  • Générez les parcours d'outil

Nous en avons terminé avec les opérations d'usinage.

Mise en place des instructions de rotation du 4ième axe

Nous allons maintenant insérer les codes qui vont permettre de faire tourner le 4ième axe pour le positionner avant chaque usinage.

Pour ce faire, nous allons directement écrire les instructions GCode à la main dans l'en-tête des opérations d'usinage.

Activez les opérations Contour1 et Contour2 qui sont actuellement inactives si vous avez suivi ce tutorial à la lettre.

Le GCode des exemples à été produit par le post-processeur Mach3 fournis avec CamBam, si vous utilisez un autre post processeur, le GCode peut avoir quelques variantes.

Notez que le sens de rotation sous Mach3 est positif dans le sens horaire et négatif  dans le sens anti-horaire.

Dans le cas de cet exemple comme nous faisons tourner la pièce en sens anti-horaire il faudra donc fournir des valeurs de rotation négatives pour que l'affichage soit dans le bon sens sur Mach3.

Mes réglages dans Mach3 sont les suivants:

Menu Config/General Config

Menu Config/ToolPath pour un axe A aligné sur l'axe Y

Menu Config/Homing-Limits (autorise 1000 tours en positif et négatif)

Si nous générons le GCode directement, sans avoir mis les instructions de rotation, nous allons obtenir le résultat suivant:

( Made using CamBam - http://www.cambam.co.uk )

( positionel_simple 8/29/2019 9:37:52 PM )

( T5 : 3.0 )
G21 G90 G91.1 G64 G40
G0 Z15.0
( T5 : 3.0 )
T5 M6
( Contour1 )
G17
M3 S12500
G0 X-6.0 Y-0.5
G0 Z11.0
.....
.....
G1 F600.0 Y18.5
G1 F800.0 X-6.0
( Contour2 )
S12500
G0 Z15.0
G0 X6.6549 Y-0.5
G0 Z11.0
.....
.....
G1 F600.0 Y18.5
G1 F800.0 X6.6549
( Poche1 )
S12500
G0 Z15.0
G0 X0.29 Y29.3642
G0 Z11.0
G1 F600.0 Z8.0
G3 F800.0 X0.6268 Y30.3108 I-0.3276 J0.6498
.....
.....
G3 X1.1003 Y27.7569 I-1.0237 J2.3111
G0 Z15.0
M5
M30

     

Pour insérer les instructions de rotation, nous allons utiliser la propriété En-tête d'opération personnalisée de chaque opération qui nécessite de positionner l'axe A à un angle donné, et y insérer le GCode suivant:

G0 Z15
G0 A-xx

Le G0 Z15 fait remonter le Z en rapide à la position 15 pour dégager l'outil
Le G0 A-xx fait tourner l'axe A à la position angulaire -xx°

Il est possible de remplacer le G0 Z15 par une macro qui retournera directement un G0 vers le plan de dégagement et qui utilisera la valeur de la propriété Plan de dégagement de l'opération d'usinage.

Par exemple, pour faire monter l'axe Z au plan de dégagement en cours et faire tourner l'axe A à la position absolue -60° j'écrirais

{$clearance}
G0 A-60

La macro {$clearance} retournera G0 Z15 dans le cas de cet exemple.

Notez que cette macro ne produira un G0 Zxx que si c'est nécessaire, c.à.d. si l'outil n'est pas déjà au plan de dégagement ou au dessus.

Il est vital de programmer cette remontée au plan de dégagement, que ce soit par une commande G0 ou via la macro car sans cela l'axe A risque de tourner avant que l'outil ne soit hors matière.

Sélectionnez l'opération d'usinage Contour1, puis cliquez sur le bouton |...| de la propriété En-tête d'opération personnalisée ; dans la fenêtre d'édition, entrez le texte suivant puis cliquez sur OK pour valider.

{$clearance}
G0 A0

Sélectionnez l'opération d'usinage Contour2 et entrez le texte suivant dans la propriété  En-tête d'opération personnalisée

{$clearance}
G0 A-60

Et enfin faites de même pour l'opération Poche1 et entrez le texte:

{$clearance}
G0 A-90

Sauvez votre projet puis générez le GCode pour le projet entier ; vous devriez obtenir le résultat suivant ou l'on peut voir que les instructions de rotation on bien été ajoutées.

( Made using CamBam - http://www.cambam.co.uk )
( positionel_simple 8/29/2019 10:12:08 PM )
( T5 : 3.0 )
G21 G90 G91.1 G64 G40
G0 Z15.0
( T5 : 3.0 )
T5 M6
( Contour1 )
G17
G0 A0
M3 S12500
G0 X-6.0 Y-0.5
G0 Z11.0
G1 F600.0 Z9.0
.....
.....
G1 F600.0 Y18.5
G1 F800.0 X-6.0
( Contour2 )
G0 Z15.0
G0 A-60

S12500
G0 X6.6549 Y-0.5
G0 Z11.0
G1 F600.0 Z9.0
G1 F800.0 X-4.9282
.....
.....
G1 F800.0 X6.6549
( Poche1 )
G0 Z15.0
G0 A-90

S12500
G0 X0.29 Y29.3642
G0 Z11.0
G1 F600.0 Z8.0
.....
.....
G3 X1.1003 Y27.7569 I-1.0237 J2.3111
G0 Z15.0
M5
M30

Sur l'affichage de CamBam, toutes les opérations restent superposées car le logiciel ne sait pas afficher des positions angulaires, mais sur une simulation sous Mach3, on voit bien que les différentes opérations sont effectuées à la bonne position angulaire.

S'il est nécessaire de faire plusieurs opérations à la suite à la même position angulaire, alors bien sûr, seule la première opération à cette position angulaire devra contenir un ordre de rotation.

Le fichier CamBam de l'exemple est disponibles dans l'archive sous le nom: positionel_simple.cb

b) Usinage positionnel avec répétitions

Ouvrez l'objet 3D canelures.stl, puis, si nécéssaire, tournez le et positionnez le de façon à l'aligner avec l'axe Y et à mettre sa face avant à 0 en Y à l'aide des fonctions d'alignement comme nous l'avons déjà fait pour la pièce précédente.

Obtention des lignes 2D pour l'usinage

Nous allons maintenant extraire les contours sur un nouveau calque.

Créez un nouveau calque appelé "contour" (par exemple), puis sélectionnez l'objet 3D et utilisez Edition/Surface/Détection des arrêtes.

Ici, j'ai caché le calque contenant l'objet 3D afin de mieux voir les lignes obtenues.

Sur la rainure du haut, nous allons sélectionner les polylignes qui nous donneront le contour de la rainure large et le contour de la rainure étroite ; la position en hauteur des polylignes n'a pas d'importance ; dans ce cas précis, le plus simple est de sélectionner la polyligne montrée sur l'image suivante car elle contient les 2 contours qui nous intéressent dans la même polyligne.

Créez un nouveau calque appelé "rainure" (par exemple), sélectionnez la polyligne est passez-la sur ce nouveau calque.

Masquez ou supprimez le calque "contours" qui ne nous servira plus.

Passez en vue de dessus (plan XY) par un ALT + double clic gauche dans la fenêtre de dessin (ou via la barre d'outil "vues" si elle est installée), puis double cliquez sur la polyligne pour passer en mode édition. Comme on le voit sur l'image, du fait que le tracé à été extrait d'un objet maillage, on n'obtient pas un arc sur les parties arrondies, mais une succession de petits segments.

La polyligne étant sélectionnée, utilisez Edition/Polyligne/Insérer des arcs avec une tolérance de 0.02 (mm)

Nous obtenons alors un résultat comme ci dessous.

Notez aussi que la polyligne à été alignée avec le 0 en Z.

Bien sûr, il aurait été possible de dessiner ces polylignes directement dans CamBam, ça aurait même été plus simple.

Pour faire l'usinage, nous avons besoin de séparer les 2 polylignes, et de les rallonger un peu vers le bas, afin que l'outil puisse descendre hors matière. Il nous faut aussi supprimer les 2 petits segments du bas, qui joignent les 2 contours.

Sélectionnez la polyligne, puis utilisez le menu Edition/Décomposer afin d'obtenir les composants de la polyligne.

Sélectionnez les 2 lignes du bas (entourées en bleu sur l'image) et supprimez-les.

Ensuite, sélectionnez tous les objets du calque "rainure" puis utilisez le menu Edition/Joindre avec une tolérance de 0.02 afin de reconstituer 2 polylignes complètes.

Nous allons maintenant rallonger les 2 polylignes vers le bas ; dans le cas présent, le plus simple c'est d'éditer la collection de points de chaque polyligne et de modifier la valeur des 2 points qui sont alignés sur l'axe X ; leur coordonnée Y est donc de 0 ; nous allons la passer à -3.5 en Y.

Pour chacune des deux polylignes:

  • sélectionnez-la
  • cliquez sur le |...| à droite de la propriété Points, et modifiez les valeurs qui sont à 0 en Y en leur mettant une valeur de -3.5
  • validez par OK

Une fois les deux polylignes rallongées, nous allons maintenant pouvoir ajouter deux opérations d'usinage pour faire les deux niveaux de rainure. Comme précédemment, nous allons utiliser une opération de Contour avec une Largeur d'usinage si nécessaire.

Voici les cotes de la pièce:

Mise en place des opérations d'usinage

Nous allons commencer par usiner la rainure profonde en utilisant la polyligne interne, puis à l'aide d'une deuxième opération d'usinage, nous usinerons la feuillure en haut de la rainure en utilisant la polyligne externe.

Sélectionnez la polyligne interne, puis assignez-lui une opération d'usinage de Contour avec les réglages suivants:

  • Diamètre outil = 3
  • Forme d'outil = cylindrique
  • Surface pièce = 25 (le rayon)
  • Profondeur finale = 20
  • Plan de dégagement = 35
  • Incrément de passe = 2
  • Sens d'usinage = à votre convenance suivant matière/machine utilisée.
  • Ordre d'usinage = Niveaux d'abord
  • La rainure faisant 10mm de large, régler la Largeur d'usinage sur 5.2 par exemple, pour avoir un recouvrement des passes au centre.

Réglez les autres propriétés telles que Vitesse d'avance, Rotation broche, etc.. en fonction de la matière que vous usinez.

Activez l'affichage de la largeur de coupe (Menu Affichage/Afficher largeur de coupe)

Générez les parcours d'outil pour cette opération.

Vous devriez obtenir le résultat suivant en vue de dessus ; si l'usinage ne se fait pas du bon coté, modifiez la propriété Intérieur/extérieur (sur une ligne ouverte, le coté d'usinage dépend du sens de tracé de la polyligne)

Et en vue perspective, vous pouvez constater que l'usinage se fait bien à la bonne position et à la bonne profondeur en affichant le calque contenant l'objet 3D.

Sélectionnez la polyligne externe, puis assignez-lui une opération d'usinage de Contour avec les réglages suivants:

  • Diamètre outil = 3
  • Forme d'outil = cylindrique
  • Surface pièce = 25 (le rayon)
  • Profondeur finale = 23
  • Plan de dégagement = 35
  • Incrément de passe = 2
  • Sens d'usinage = à votre convenance suivant matière/machine utilisée.
  • Largeur d'usinage = 0 (une seule passe latérale suffit)

Générez les parcours d'outil et vous devriez obtenir le résultat ci-dessous.

Nous en avons terminé avec la mise en place des opérations d'usinage.

Mise en place des instructions de rotation et de répétition

Nous allons maintenant mettre en place les instructions de rotation ainsi qu'une répétition d'usinage afin de reproduire ces 2 usinages 8x avec un décalage de 45°.

Dans le cas du positionnel simple, nous avons écrit les instructions de rotation dans les opérations d'usinage, et ce pour chaque position d'usinage, et ces instructions étaient en position absolu. (0°, -60°, -90°)

Dans le cas présent, par contre, nous allons répéter la même série d'usinage plusieurs fois, mais sans pour autant créer autant d'opérations que de positions en rotation ; nous allons donc devoir donner des instructions de rotation en relatif (mode incrémental) au début de la première opération d'usinage ; dans le cas de cette pièce, il y a 8 positions sur 360°, donc il faudra tourner l'axe rotatif de 360/8=45° à chaque répétition.

Dans l'en tête de la première opération d'usinage (Contour1) du Groupe d'usinage Groupe1 nous allons donc écrire:

{$clearance} > remonter au plan de dégagement
G91  > utiliser le mode de coordonnées relatives.
G0 A45 > tourner l'axe A de 45°
G90 > revenir aux coordonnées absolues pour le reste de l'usinage

Chaque fois que ce code sera exécuté, l'axe A tournera de 45°

Dans le cas présent, le sens de rotation de l'axe n'a pas d'importance et on peut aussi bien utiliser -45° que 45°

Maintenant, nous allons devoir répéter le groupe d'opérations d'usinage 8x

L'idée est d'utiliser les fonctions de Répétition d'usinages de CamBam ; cette fonction permet de répéter tous les usinages d'un Groupe un certain nombre de fois. En générale cette fonction est utilisée pour répéter des usinages à différents endroits d'un brut de matière.

Dans ce cas, nous allons créer une répétition qui reproduit les usinages du Groupe1 toujours au même endroit (X et Y ne changent donc pas) mais du fait du GCode de rotation inclus dans l'en tête de la première opération, à chaque répétition, l'axe A tournera d'abord de 45° avant que les deux opérations d'usinage du groupe1 ne soit exécutées.

Pour cela nous allons utiliser l'option Liste de Points de la propriété Méthode de Répétition du Groupe d'usinage Groupe1. Cette méthode permet de répéter le contenu du groupe d'usinage à chaque position définie par un point de la liste de points utilisée comme modèle.

Comme nous voulons que les usinages soient tous répétés au même endroit, il nous faut simplement créer une Liste de points contenant 8 points (pour 8 répétitions) dont les coordonnées seront toutes à 0,0,0 en XYZ.

Utilisez l'outil Dessiner une liste de points de la barre d'outil, et cliquez une fois dans la zone de dessin pour créer un point. (n'importe où)

Vous allez obtenir un objet ListeDePoints sur le calque courant ; sélectionnez le et dans ses propriétés, cliquez sur (Collection) dans la propriété Points, puis sur le |...| à droite pour éditer cette collection.

Remplacez les valeurs qui ne sont pas à 0 en les éditant, puis ensuite, cliquez 7 fois sur le bouton Ajouter de façon à obtenir 8 lignes, toutes à 0,0,0

Si vous devez supprimer une ligne, sélectionnez-la en cliquant dans la colonne de gauche et utilisez la touche Suppr du clavier pour la supprimer.

Cliquez sur OK pour terminer.

Nous allons maintenant définir la répétition et y assigner la liste de points que l'on vient de créer.

Sélectionnez le Groupe d'usinage contenant les opérations à répéter, dépliez la propriété Répétitions et réglez:

Méthode de répétition: Liste de points

Ensuite, pour sélectionner la Liste De Points à utiliser, cliquez sur la propriété ID Liste de points, puis sur le |...| qui apparait à droite, CamBam vous demande alors de sélectionner la liste de points à utiliser.

Cliquez alors sur la liste de points dans la liste des objets de dessin pour la sélectionner, et validez par la touche Entrée du clavier (ne pas oublier de valider par Entrée, sinon ça ne sera pas pris en compte). Dans le cas de cet exemple, la propriété ID Liste de points devrait alors contenir la valeur 50 (le n° d'ID de l'objet liste de points)

Vous pouvez aussi entrer manuellement le n° d'ID dans la propriété ID Liste de points si vous le souhaitez.

Nous en avons maintenant fini avec le paramétrage et nous pouvons produire le GCode et le vérifier sur Mach3 ou sur un simulateur d'usinage 4 axes comme NCnetic par exemple.

Vu sous Mach3

 

Note: si vous avez besoin de créer une liste contenant un grand nombre de points, une autre méthode consiste à:

  • Créer un point à 0,0,0 avec l'outil Liste De Points (utilisez la grille pour vous assurer que le point est bien créé à 0,0,0)
  • Ce point étant sélectionné, utilisez la commande Edition/Transformer/Copie en réseau et donnez une  valeur égale à nombre de points nécessaires moins 1 (-1 car il y a déjà un point existant) dans Nombre de copies, cliquez sur OK
  • Dans Décalage par pas entrez une valeur de 0,0,0 afin que tous les points soient créés au centre de l'univers CamBam.
  • Vous allez obtenir autant d'objet Liste de points que de points demandés.
  • Tout ces objets Liste De Points étant sélectionnés, utilisez la commande Edition/Joindre pour obtenir un objet Liste de Points unique contenant tous les points.

Voir aussi la documentation à propos des répétitions d'usinage

Le fichier CamBam de l'exemple est disponibles dans l'archive sous le nom: piece2_repetition_8x.cb

c) Gravure 2D sur un cylindre par enroulement du GCode

Nous allons maintenant passer à une autre méthode d'usinage 4 axes ; cette fois ci, nous allons travailler avec un usinage "à plat", puis, grâce à un post processeur spécifique, nous produirons un GCode qui "s'enroulera" sur lui-même ; il s'agit en fait de remplacer les coordonnées cartésiennes en X ou Y par des coordonnées polaires, l'axe X (ou Y) sera remplacé par l'axe A.

Nous allons commencer par une simple gravure tout à fait basique qui devra être faite sur un cylindre de 40mm de diamètre.

Dans un premier temps, on dessine le dessin à graver ; dans ce cas, mon axe A est aligné sur l'axe Y de la machine et c'est l'axe X que nous allons "courber" pour envelopper la forme cylindrique.

Voici le dessin

Comme on peut le voir, le dessin fait 60mm de large (en X donc), et c'est cet axe X qui sera enroulé. Sur un cylindre de 40mm de diamètre, un "tour" complet ferait 40 * Pi, soit environ 125.66 mm ; ici mon dessin ne faisant que 60mm, il ne fera donc pas un tour complet du cylindre mais seulement 60/125.66 = 0.477 fois la circonférence, donc 0.477*360° = 171.9°

Comme le post processeur utilise la valeur de Surface pièce comme rayon d'enroulement, nous devons laisser le dessin à Z=0 et définir la valeur de Surface pièce à la valeur du rayon d'enroulement, ici 20mm. Sur l'image on voit le dessin (en rouge) et les parcours d'outil (en bleu) à 19.5mm en Z soit une gravure de 0.5mm de profondeur par rapport au rayon de 20mm.

La suite est tout à fait similaire à une gravure à plat, sauf que l'on va sélectionner un post-processeur spécifique pour l'enroulement. Dans CamBam V1.0, ce post-processeur s'appelle RotaryY pour enroulement de X autour de Y, ou RotaryX pour enroulement de Y autour de X.  Dans le cas de cet exemple, l'axe rotatif est aligné avec l'axe Y, et je vais donc choisir le post-processeur RotaryY afin de courber X autour de Y.

Il suffit maintenant de produire le GCode comme à l'accoutumé. Le résultat ne pourra pas être simulé sur CamBam, il faudra examiner le GCode produit sur un soft capable d'afficher du GCode 4axes comme Mach3, NCnetic, NCplot, etc ...

Voici le résultat des parcours vus sous NCplot

On peut enrouler tout type de GCode, que ce soit une gravure, une poche un contour ou un usinage 3D.

Le fichier CamBam de l'exemple est disponibles dans l'archive sous le nom: grave_cylindre.cb

d) Gravure sur un cône ou autre forme de révolution non cylindrique

Il est également possible de graver sur une forme conique ou toute autre forme de révolution.

  1. Gravure sur un cône

Le principe est le même que pour la gravure sur un cylindre, si ce n'est que le dessin à graver devra être incliné avec le même angle que la pente du cône.

Comme pour un cylindre, ou la position du dessin à graver doit être à Z = 0 et Surface pièce = au rayon d'enroulement, ici, c'est le grand diamètre du cône qui devra être à Z=0, le dessin à graver quand à lui se trouvera donc en dessous du Z=0.

Sur cette image, les formes en violet on été inclinées de façon à suivre la pente du cône, ce qui donne les cercles en blanc ; les formes 3D (le cône et le plan incliné) ne sont pas nécessaires mais elles aident à vérifier que tout est à la bonne place.

Note: CamBam ne peut pas tourner/incliner des formes contenant des arcs, il est donc impératif  de supprimer les arcs afin d'avoir un tracé ne contenant que des segments droits ; cela peut être fait à l'aide de Edition/Polyligne/Supprimer les arcs.

Il est également possible de créer les formes inclinées par projection des formes planes sur une surface inclinée, toutefois cela induira une déformation ; dans le cas d'une projection, le plan incliné est donc nécessaire. Pour cela, utilisez Edition/Surface/projeter lignes sur surface

Comme on peut le voir sur cette image, une projection des cercles (en bleu) sur le plan incliné produit des formes ovales contrairement à une inclinaison qui ne déforme pas le dessin (en blanc)

Comme avec la gravure sur un cylindre, Surface pièce devra avoir une valeur égale au rayon. (le grand rayon dans la cas d'un cône)

Seule l'opération de gravure standard de CamBam peut être utilisée pour ce type d'usinage, car c'est la seule qui fonctionne en 3D (une poche ou un contour ne produirait que des parcours "à plat" et ne suivrait pas l'inclinaison des formes)

Ne pas oublier de régler le Plan de dégagement à une valeur supérieure au rayon de la pièce.

Le fichier CamBam de l'exemple est disponibles dans l'archive sous le nom: grave_cone.cb

  1. Gravure sur une forme de révolution quelconque.

Le principe reste le même, si ce n'est que la projection du dessin à graver se fera sur une forme ayant le profil du développé de la forme finale et non sur un simple plan incliné.

Après avoir tranchée la pièce avec Edition/Surface/Trancher en X, je garde la courbe en violet, que je vais extruder pour obtenir un développé de la forme. CamBam ne pouvant extruder qu'en Z, cela nécessitera quelques manipulations. (vous pouvez aussi utiliser mon plugin Dérouler objet 3D pour créer le développé)

Je projette ensuite le dessin à graver sur le développé.

Et j'utilise les lignes projetées comme dessin à graver.

La suite se passe comme avec une gravure sur cylindre/cône, Surface pièce = au rayon maxi de la forme.

Le fichier CamBam de l'exemple est disponibles dans l'archive sous le nom: grave_tonneau.cb

e) Usinage 3D avec enroulement du GCode

Tout comme pour la gravure ci-dessus, l'enroulement d'une forme 3D ne pose pas d'avantage de problème et se fait exactement de la même manière ; l'objet 3D "plat" devra être positionné au rayon et les parcours d'outil seront produits comme pour n'importe quel usinage 3D "standard", c'est le post processeur RotaryX ou RotaryY qui générera un GCode enroulé.

La seule particularité dans le cas d'une forme 3D, c'est qu'il faudra gérer finement la zone à usiner à l'aide des limites d'usinage car il ne faut pas que l'usinage "déborde" sur les cotés, sinon cela ferait un "trou" dans la pièce et il faut également que les parcours d'outil arrivent juste au bord de la pièce.

Dans cet exemple, la forme doit être enroulée sur un cylindre de 50mm de diamètre, et je veux qu'elle fasse le tour complet, il me faut donc une surface 3D de 50 * Pi = 157.075mm de large.

Le dessus de la forme doit être à Z = 25 (le rayon) ; J'utilise l'outil d'alignement pour positionner la surface supérieure de la forme 3D à 25mm en Z. (la forme est centrée sur X, mais ce n'est pas une obligation)

L'objet 3D est disponible dans l'archive sous le nom: colonne_wrap3D.stl

Mise en position de la face supérieure à Z = 25

Comme on le voit sur l'image suivante, les parcours doivent s'arrêter juste au bord de la forme 3D (flèches rouges)

Pour m'assurer que les parcours ne redescendront pas sur les cotés de la forme, ce qui produirait un trou dans la pièce, ou que les parcours ne s'arrêteront pas avant la fin de la pièce ce qui laisserait une partie non usinée, j'utilise un rectangle de la largeur exacte à usiner, ici 157.075, qui sera utilisé comme limite d'usinage.

Dans les limites d'usinage, je règle Méthode sur Formes sélectionnées, j'utilise mon rectangle (Rectangle1) comme ID Formes limites et je règle Etendre limites à une valeur  égale au rayon de l'outil utilisé ; ici mon outil fait 1.5mm de diamètre, je règle donc ma limite à 0.75

Pourquoi ajouter le rayon d'outil ? .... parce que CamBam gère les limites de manière à ce que l'outil reste à l'intérieur des limites, les parcours s'arrêtent donc à une distance égale au rayon de l'outil par rapport aux limites.

Sur cette image, avec Etendre limites à 0, on voit que les parcours n'arrivent pas au bout de la forme délimitée par le rectangle utilisé pour définir les limites.

Le but est de faire en sorte que le centre de la fraise arrive exactement au bout de la forme, pas plus sinon on redescend sur le coté, mais pas moins sinon la forme ne sera pas usinée jusqu'au bout.

Avec Etendre limites égale au  rayon de l'outil, le centre de la fraise arrive juste à la limite de la forme.

Maintenant, il ne reste plus qu'à produire le GCode, bien entendu en utilisant un post processeur RotaryY dans ce cas.

Le fichier CamBam de l'exemple est disponibles dans l'archive sous le nom: colonne_wrap3D.cb

Dans le cas ou l'objet 3D n'est pas une forme développée, il faut utiliser mon plugin Dérouler objet 3D pour obtenir le déroulé de la forme, le reste de la procédure est ensuite identique à ce que l'on vient de voir avec la 3D "texture pierre" ci-dessus.

Ici, c'est la forme déroulée en rouge qui serait utilisée pour produire le GCode.

Le sens de balayage (horizontal/vertical) de l'opération d'usinage 3D déterminera si on usine la forme en tournant, ou par bandes parallèles le long de l'axe de rotation.

Pour gagner du temps lors de l'usinage et éviter des retours outil en l'air, il est souhaitable de mettre le Sens d'usinage sur Mixte.

Usinage en rotation

Usinage par bandes

++
David

 

 

Copyright (c) 2011 HexRay Ltd