Simulation Enlèvement de matière


Développement Visual Basic



Version 0.0.21

Fichier source et exécutable NC_Visu.zip (756 Kb)
Exécutable et installation : NC_Visu0021.exe (2887 Kb)


Version 0.1.0

Exécutable et installation : NC_Visu010.exe (2941 Kb)

Version 0.0.21

Quelques corrections de bug, notamment sur la partie définition de porte-outil et test de collection avec ce dernier.

Concernant la définition du porte-outil et plus particulièrement pour la définition du profil.

Le profil du porte outil est créé à partir d'une polyligne. Vous devez donc avoir dans la zone graphique de la fenêtre un élément de type polyligne. Seul cet élément sera pris en compte.



Quand vous appuyez sur le bouton Ok qui permet de sauvegarder les données de l'outil, vous devez voir apparaître le profile du porte-outil en vert dans la zone graphique.

La courbe polyligne peut être obtenue de plusieurs manières, mais doit toujours avoir été créée du bas vers le haut.( Z0 vers Z+).
Vous pouvez vous aidez d'un fichier dxf pour définir le profil. Les fichiers dxf fournis par les fabriquant représente toujours les éléments à l'horizontal aussi il faut tourner le dessin de 90° pour pouvoir l'utiliser dans notre cas ( bouton ). Ensuite soit vous créez une polyligne à partir du bouton .
Ou vous créez plusieurs lignes (bouton ) qui seront ensuite liées grâce au bouton .Après bien évidemment avoir été sélectionnés par le bouton .

Ne pas oublier de renseigner la longueur sortie de l'outil dans le champ " Longueur Montage " avant de sauver les données .

Le programme

Ce programme permet de simuler un enlèvement de matière réalisé par fraisage 3 axes. L'idée d'origine vient d'une image et d'une petite phrase trouvée sur le net : A new simulating model, based on the so-called MSN code (Milling Simulation by Needles).




L'idée est de définir un champ de vecteur et selon la géométrie et le déplacement de l'outil, on va trouver l'intersection de ces lignes avec le volume de déplacement de mon outil en 3 axes. Ensuite les sommets de ces lignes seront utilisés pour matérialiser le maillage représentant notre pièce.

1ere Etape

Modeliser une petite application permettant de mettre en place les fonctions de base.
- Calcul du Volume de déplacement de l'outil
- Calcul de l'intersection Vecteur / Triangles
- Création du maillage final.

Définition du brut
Le brut doit être positionné comme sur l'image suivante avec l'origine dans le coin du bloc en bas.

Ses dimmensions sont définies par sa longueur ( suivant X), sa largeur ( suivant Y) et sa hauteur (selon Z).
Ce point Zéro sera lui positionné dans l'espace en donnant ses coordonnées dans la zone "Origine Pièce" .
.
Le bouton permet lui de mettre à jour le nouveau brut.


2ème Etape

Si le temps de calcul sur un parcours simple est valable, alors optimisation et réductions des calculs ...
3ème Etape

Optimisaion du maillage obtenu. Représentation des maillages en multi couleur suivant l'outil utilisé.




Pour tester le programme vous devez utiliser 3 fonctions
Charger un fichier iso : 3axes_d.nc

Régler la précision de calcul du maillage ( entre 2 et 0.1 ): attention non Pentium 4 s'abstenir
Simuler le fichier iso : Simulation -> Simulation fichier Après le calcul vous pouvez transformer le calcul en un maillage type STL et surtout exportable. Simulation -> Transformer en Maillage Au final il est possible de Sauvegardes le maillage visualisé sous forme de STL Ascii.
Note : l'option une fois cochée permet de visualiser l'enlévement de matière en même temps que le calcul.

Pour la manipulation graphique :
Double click dans la zone d'affichage : RAZ des orientaions et zoom d'affichage
Bouton de gauche de la souris : Translation
Bouton de droite de la souris   : Zoom

Bouton de gauche + touche Shift : Rotation XY
Bouton de droite + touche Shift : Rotation Z

Modifications


Version 0.0.2
Optimisation des temps de calcul (75 % ). mais il est possible de faire encore mieux.
Affichage des couleurs pour les outils.
Version 0.0.3
Ajout d'un mode de calcul exacte. Dans ce cas l'intersection entre les vecteurs et le volume de déplacement est calculée avec un modèle constitué de sphère et de cylindre: ( dans cette version ce mode est valable uniquement pour des fraises boule).
L'option une fois cochée permet de basculer sur l'autre mode de calcul. Ceci permet de comparer les temps de calcul et la qualité du résultat.
On peut déjà dire que si les temps sont plus long avec cette méthode, le résulat est lui meilleur.

  Maillage avec Calcul sur Triangle Maillage avec calcul sur géométrie exacte
Vue globale
Détail du maillage

Version 0.0.5
Ajout d'un mode de calcul à partir du fichier directement et pas depuis le controle RICHTEXT (traitement beaucoup moins long). Ajout d'une fonction pour "Supprimer" la matière restante et ne faisant pas partie de la pièce.
après supression des morceaux

Version 0.0.6
Ajout d'une fonction permettant de recréer un mappage de calcul à partir d'un fichier STL ( importation de brut).
Version 0.0.7
Ajout d'une fonction permettant de limiter la zone de simulation, pour ensuite affiner le maillage de manière a obtenir plus de précision dans la zone.
 Description de la barre d'outil
 


Ouverture d'un fichier ISO.
Sauvegarde le fichier ISO.
Création d'un nouveau fichier ISO.
Accès au dimension du brut.
Affiche la bibliothèque outil.
Affiche le fichier ISO.
Bouton 6 non affecté pour le moment.
Bouton 7 non affecté pour le moment.
Bouton 8 non affecté pour le moment.
Simulation du fichier ISO directement depuis le fichier.
( Pas de défilement de code dans la fenêtre texte, méthode plus rapide )
Simulation du fichier ISO depuis la fenetre texte. (Défilement du code traité)
Conversion du mappage de calcul en modèle STL.
Réinitialisation du mappage de calcul.
Activation de la sélection des triangles et suppression des parties usinées non désirées.
Activation du mode de sélection. La ligne de code qui a générée la géométrie est sélectionnée dans la fenêtre texte. L'ensemble des facettes ayant été générées par cette ligne de code est visualisé en rouge.
Activation du mode de sélection. Après deux points sélectionnés sur le modèle affichage de la zone de zoom via l'affichage de l'enveloppe du nouveau brut.
Restriction de la zone de simulation aux dimensions sélectionnées à l'aide de la fonction précedente.


Version 0.0.8
Intégration de la simulation des fraises plattes en mode exacte. (Simulation des fraises toriques non encore intégré).
Version 0.0.9
Intégration de code dans le fichier ISO (dans les commentaires ) pour fixer les paramètres de simulation en automatique.
BLK FORM DIM : BLK FORM MAX X100.0 Y50.0 Z50.0 : Dimenssions du brut.
ORIGINE : ORIGINE X0.0 Y0.0 Z0.0 : Coordonnées du point inférieur du brut (Brut en position quelconque).
INCREMENT : INCREMENT 0.5 : Définition de l'incrément de mappage.
TOOL_LIB : TOOL_LIB voiture 4 : Définition d'une nouvelle librairie outil. Donner le nom du fichier sans extension (.bat) et le nombre d'emplacement dans le magasin.
TOOL_DEF TOOL_DEF : |1|2|20|0|60|30|20|16744576|FP20|0| : Définition d'un nouvel outil .

FORMAT : TOOL_DEF : |Numéro outil|Type outil (1=boule 2=plat 3= torique)|Diamètre|Rayon de coin|Longueur|Longueur de coupe|Diamètre de queue|Couleur|Nom de l'outil|Décalage de la programmation ( 0 = Centre outil )|
INIT_LIB : INIT_LIB : Réinitialisation de la librairie après modification des outils ( indispensable aprés code TOOL_DEF).


Fichier exemple ISO voiture.nc (385 kb)

Exemple de résultat avec trois niveaux de tolérance.

Vue des 3 maillages superposés.


Maillage à 0.5 mm
Maillage à 0.1 mm
Maillage à 0.025 mm


Version 0.0.10 & 0.0.11
J'ai démarré récement ce projet de simulation d'enlèvement de matière en VB+Opengl. J'ai déjà réalisé la partie du projet concernant la simulation des fraises plattes et boules. Mais j'ai un problème maintenant pour les fraises toriques :
Je pensais que le problème serait assez simple comme pour les autres types de fraise. Mais là je sèche ... Pour résumer : Je pensais que le "volume" de matière enlevé était constitué d'un élèment géométrique de base qui avait pour génératrice l'intersection d'un plan et du tore : - Ce qui m'aurait donné une ellipse (courbe Rose sur l'image) et encore je ne suis même pas certain que ce soit une ellipse.
Sauf qu'après avoir creusé un peu plus la question, il apparait que la courbe génératice est un peu plus compliquée ( courbe verte sur l'image ). Bon c'est peut être pas très clair, et le problème dans ce cas me dépasse un peu ( un peu beaucoup ) . Donc si quelqu'un avait une idée, une formule ...
Ci vous ce projet vous intéresse et si vous pensez pouvoir m'aider, vos idées ou votre savoir sont les bienvenus.
 Version 0.0.11
Passage aux fonctions glNewList et glCallList pour l'affichage du rendu ( l'affichage n'est plus recalculé à chaque réaffichage ).

Version 0.0.12
Les affaires reprennent ... Après une petite mise en sommeil. Et à la faveur de vacances pluvieuses j'ai remis le nez dans le sujet.
J'ai rajouté une simulation d'outil torique basée sur le calcul avec le maillage ( calcul non géométrique ). J'ai pu trouver de l'aide pour le calcul de la fameuse courbe silhouette notamment grâce à un article de l'université de Waterloo ( Canada )
http://www.me.uwaterloo.ca/~machlab/papers/2001_Surface_swept.pdf
Le calcul des points de la courbe est en réalité assez simple (voir image suivante tirée de l'article précédemment cité)


Mais mes problèmes avec les maths ne sont pas finis...
Pour continuer le projet de rajouter cette fois le calcul exact je dois maintenant pouvoir résoudre cette équation et là, ça coince encore ... ne désespérons pas . Le problème dans ce cas est : connaissant le point Pt XY qu'elles sont les coordonnées du point d'intersection entre la courbe silhouette est le plan vertical passant par notre point ...



Version 0.0.13
Optimisations sur problème mémoire. Changement sur calcul mode affichage ( plus de recalcul entre mode fin et grossier )

Version 0.0.14
Ajout de la représentation des bords du brut. Ajout d'un contrôle des rentrants matière ( usinages réalisées en mode G00 ). Fonction disponible uniquement en mode exacte.
Ajout d'un mode d'affichage de type "Arborescent", pour visualiser les différentes informations.


Ce bouton permet maintenant d'alterner entre l'affichage du contenu du fichier ISO et l'arborescence d'affichage des informations sur les fichiers NC.


Version 0.0.15
J'ai travaillé sur le calcul en mode exacte pour les fraises toriques. Le résultat n'est pas parfait car il me manque encore la résolution à mon problème d'angle en fonction de Y :{
Les points représentant une anomalie dans la représentation ci-contre sont dûs à un problème sur le calcul de l'angle en fonction de Y dans le cas des fraises torique.
J'utilise dans ce cas une résolution selon la méthode de Newton (Merci à Gabriel gracin pour son aide). Malheureusement dans le cas où le vecteur de déplacement est proche de l'horizontal les résulats sont très aléatoires. Il faudra remédier à ce problème dans les versions suivantes.


Version 0.0.16
Après pas mal de temps passé sur la résolution de l'équation de la courbe silhouette et de guerre lasse, je me suis rabattu sur une méthode dichotomique pour le calcul de l'angle en fonction de Y. (voir notes sur version 0.010 à 0.015) C'est plus long en calcul, mais plus simple et surtout ça marche ! Donc Voilà version 0.016 avec calcul des toriques en mode exact.

Version 0.0.17
Encore une petite évolution sur le projet. Là ce n'est plus la pluie et le froid mais une mini canicule ( après s'être fait sucrer le lundi de Pentecôte, j'ai pas envie de perdre encore un jour moi; alors je reste au frais ) qui m'a amené devant le clavier ce Week-end. J'ai donc mis à profit ce temps; pour intégrer la simulation de différent outil: Vous trouverez maintenant dans la bibliothèque outil 5 types d'outil.
Fraise boule / Fraise platte / Fraise torique / Fraise conique / Foret


Version 0.0.18
J'ai modifié dans cette version la définition du brut. ainsi que le masque de définition des outils. Il est possible depuis cette nouvelle définition des outils de définir le porte outil en créant une polyline dans la zone graphique. Les Fonctions ne sont pas encore documentées ... Ca viendra . Il est aussi possible de relire une fichier DXF pour servir de support à la création du Porte-outil.



Version 0.0.19
La version 0.019 permet de tester la collision avec le porte-outil. A la première collision le calcul d'enlèvement de matière s'arrête.



Version 0.0.20
Peu de nouveautées dans cette version. Juste la correction de petits Bugs et un grand nettoyage des sources (variables et fonctions inutiles) avec un peu plus de commentaires.

Liens


Vous pouvez retrouver une version permettant de calculer l'intersection d'une ligne avec des triangles sur le site de www.vbfrance.com (code 27759)

Liens sur le site www.vbfrance.com






Merci d'envoyer vos commentaires, bug reports et autres à : usinage5axes@free.fr

page principale   |  lisez moi !