dimanche 18 décembre 2016

Code VB /VBA générique

Voici quelques codes générique que j'utilise dans tous mes développements  et qui me servent régulièrement dans du calcul mathématique ou de traitement de chaine de caractères :

'---------------------------------------------------------------------------
' Point en 3D
'---------------------------------------------------------------------------

Public Type Point3
    X As Double
    Y As Double
    Z As Double
End Type

'Longueur de vecteur
Function Longueur(ByRef P1 As Point3) As Double
  Longueur = Sqr((P1.X ^ 2) + (P1.Y ^ 2) + (P1.Z ^ 2))
End Function
 
'Distance entre 2 points
Function Distance(ByRef P1 As Point3, ByRef P2 As Point3) As Double
    Distance = Sqr((P2.X - P1.X) ^ 2 + (P2.Y - P1.Y) ^ 2 + (P2.Z - P1.Z) ^ 2)
End Function
 
'Addition de vecteur
Function VecAdd(ByRef P1 As Point3, ByRef P2 As Point3, Optional F As Double = 1) As Point3
 VecAdd.X = P1.X + F * P2.X
 VecAdd.Y = P1.Y + F * P2.Y
 VecAdd.Z = P1.Z + F * P2.Z
End Function
 
'Produit Scalaire
Function Dot(ByRef p As Point3, ByRef Q As Point3) As Double
    Dot = p.X * Q.X + p.Y * Q.Y + p.Z * Q.Z
End Function

'Soustraction de point
Function SubVect(ByRef P1 As Point3, ByRef P2 As Point3, ByRef F As Double) As Point3
 SubVect.X = P1.X - P2.X * F
 SubVect.Y = P1.Y - P2.Y * F
 SubVect.Z = P1.Z - P2.Z * F
End Function
 
'Produit vectoriel
Function VecProd(ByRef P1 As Point3, ByRef P2 As Point3) As Point3
Dim P4 As Point3

 P4.X = (P1.Y * P2.Z) - (P1.Z * P2.Y)
 P4.Y = (P1.Z * P2.X) - (P1.X * P2.Z)
 P4.Z = (P1.X * P2.Y) - (P1.Y * P2.X)
 VecProd = P4
End Function
 
' Soustraction de vecteur
Function VecSub(ByRef P1 As Point3, ByRef P2 As Point3, Optional t As Double = 1) As Point3
 VecSub.X = P1.X - t * P2.X
 VecSub.Y = P1.Y - t * P2.Y
 VecSub.Z = P1.Z - t * P2.Z
End Function
 
'Récupération du vecteur normal de 3 points
Function NormVec(ByRef P1 As Point3, ByRef P2 As Point3, ByRef P3 As Point3) As Point3
 NormVec = VecteurUnitaire(VecProd(VecSub(P1, P2), VecSub(P3, P2)))
End Function

' Transforme un vecteur en vecteur unitaire
Function VecteurUnitaire(ByRef P1 As Point3) As Point3
Dim Norm As Double
     Norm = Sqr(P1.X * P1.X + P1.Y * P1.Y + P1.Z * P1.Z)
     If Norm = 0 Then
            Exit Function
     End If
   
    VecteurUnitaire.X = P1.X / Norm
    VecteurUnitaire.Y = P1.Y / Norm
    VecteurUnitaire.Z = P1.Z / Norm
End Function
 
' Coordonnées du point Milieu
Function PointMilieu(ByRef P1 As Point3, ByRef P2 As Point3) As Point3
 PointMilieu.X = 0.5 * (P1.X + P2.X)
 PointMilieu.Y = 0.5 * (P1.Y + P2.Y)
 PointMilieu.Z = 0.5 * (P1.Z + P2.Z)
End Function
 
'****************************************************************
' Name: Round
'
' Inputs:DP is the decimal place to round to (0 to 14) e.g
' Round (3.56376, 3) will give the result 3.564
' Round (3.56376, 1) will give the result 3.6
' Round (3.56376, 0) will give the result 4
' Round (3.56376, 2) will give the result 3.56
' Round (1.4999, 3) will give the result 1.5
' Round (1.4899, 2) will give the result 1.49
' Returns:None
' Assumes:None
' Side Effects:None
'
'****************************************************************

Function Round(X1 As Double, DP As Integer) As Double
    Round = Int((X1 * 10 ^ DP) + 0.5) / 10 ^ DP
End Function

'****************************************************************
' Name: A 'strtok' function for VB
' Description:I wrote four functions to tokenize strings. He
'     re they are...
'The functions work like this TokLeftLeft finds the leftmost token and
'then returns the left part of the string (empty if not there). You
'can figure out the rest. Note that if the token is more than 1 character
'then the function will always return "".
'****************************************************************

Public Function TokLeftLeft(ByRef Source As String, ByRef token As String) As String
Dim I As Integer
       TokLeftLeft = Source

              For I = 1 To Len(Source)
                            If Mid(Source, I, 1) = token Then
                                   TokLeftLeft = Left(Source, I - 1)
                                   Exit Function
                            End If
              Next I

End Function


Public Function
TokLeftRight(ByRef Source As String, ByRef token As String) As String

Dim I As Integer
       TokLeftRight = Source

              For I = 1 To Len(Source)
                            If Mid(Source, I, 1) = token Then
                                   TokLeftRight = Right(Source, Len(Source) - I)
                                   Exit Function
                            End If
              Next I
End Function


Public Function
TokRightLeft(ByRef Source As String, ByRef token As String) As String 

Dim I As Integer
       TokRightLeft = ""

              For I = Len(Source) To 1 Step -1
                            If Mid(Source, I, 1) = token Then
                                   TokRightLeft = Left(Source, I - 1)
                                   Exit Function
                            End If
              Next I
End Function

 
Public Function TokRightRight(ByRef Source As String, ByRef token As String) As String
Dim I As Integer
       TokRightRight = ""
              For I = Len(Source) To 1 Step -1
                            If Mid(Source, I, 1) = token Then
                                   TokRightRight = Right(Source, Len(Source) - I)
                                   Exit Function
                            End If

              Next I
End Function

mercredi 9 novembre 2016

Réglage des options de relecture des données WorkNC dans Visu Outil

Dans les options de relecture des données WorkNC, la partie la plus complexe à appréhender, concerne les niveau de relecture. Les données définissants les conditions d'usinage de WorkNC ne contiennent pas l'information relative à la matière usinée, la matière de l'outil, le type d'opération ou la machine pour laquelle ces données sont adaptées. Mais traditionnellement les utilisateurs ont contourné cette limitation en structurant leurs données dans des dossiers qui reprennent cette information (figure 2) . Pour relire ces informations, Visu_Outil va donc analyser le nom des dossiers pour en extraire ces informations. Ce post permet donc de reprendre une information plus détaillé sur le réglage de ces options.



Figure 1 Options Import/Export WorkNC

·         Niveau relecture

Les options concernant le niveau de relecture permettent via le chemin de relecture du fichier WKZ de compléter les infos pour VISU_OUTIL. Ce chiffre indique le niveau à partir duquel les noms des répertoires vont constituer une source d’information pour VISU_OUTIL :



Figure 2 Niveau de relecture

L’exemple ci-dessus permet d’illustrer les réglages des options de relecture. Les données sont organisées de manière à classifier les données d’usinage selon, la machine (DMU_80, HERMLE_C30), la matière (X38CrMoV5 49HRC, X38CrMoV5 54HRC etc.) et le type d’opération (01-Ebauche, 02-Finition, 03-Percage …). La relecture des infos permettant de renseigner dans les données des conditions d’usinage les informations non présentes dans les définitions d’outils de WorkNC mais qui sont généralement intégrés par les utilisateurs en structurant leurs données sous ce type d’archivage par dossier.



Figure 2 Relecture dans Visu_Outil

La figure ci-dessus permet d’illustrer la relecture de ces données dans le logiciel Visu_Outil et le traitement fait de ces données.

Dernière version de Visu_Outil 2.13.02 : http://5axes.free.fr/Outil/Visu_outil_213X.exe

jeudi 1 septembre 2016

Une de plus mais la premiere qui me parrait pertinente dans l'idée


Ces derniers mois, les offres en machine hybride se sont multipliées. Et Thermwood offre aujourd'hui une nouvelle solution. Une de plus à rajouter dans la série des machines Hybrides :

Thermwood LSAM system.
Mais cette fois la solution semble pertinente dans la mesure ou la déposition  d’un polymère permet un volume de déposition assez important (68kg /h) en lien avec la taille de la machine.  Cette application est en phase avec les produits Thermwood qui sont très présent dans les composites et le thermoformage ( Comme Normaprofil chez nous). 



Tête de déposition 4 axes ( XYZ + Rotation tête dépose)

Cette activité requière la réalisation de montage d’usinage généralement réalisé pour les petites séries en contre-plaqué+ forme 3D en Lab pour grande pièce et lab + support métallique pour les petites pièces . La prise de pièce étant assuré par des venturis comme pour le placage des plaques dans le moule de formage.

 

Modèle outillage (Image bischoff-pelloux)



Dans ce cas on peut imaginer l’utilisation de la partie additive pour la réalisation de l’outillage , avec  la partie aspiration intégrée et réusinage/détourage avec la tête 5 axes.

vendredi 26 août 2016

Critères de classement des données d'usinage


Pour structurer les données d'usinage que ce soit dans votre base de données personnel ou dans le logiciel d'un CFAO, il est nécessaire de faire le lien avec la réalité de l’atelier (moyens et procédés). Dans ce cadre l'on doit dans un premier temps définir une structure de classement qui va permettre de retrouver les bons outils avec les conditions de coupe associées. Comme critères de structuration pour un outil donné* vous pouvez utiliser les éléments ci-après :

Groupe Machines ou Machine

§   Machine Ugv

§   DMU50

§  

On classera soit les outils pour un groupe de machines comparables ou alors pour une machine dédiée pour une gestion plus fine (mais plus complexe)



Groupe de matière / Matière usinée       

On classera ensuite les données en prenant en compte la matière usinée. soit sur un niveau macro avec un groupe de matière ou sur un niveau plus fin sur une référence matière.



Type opération

§   Ebauche

§   Finition

§  

Le deuxième niveau doit permettre de classer les outils et les conditions d'usinage  par leur utilisation (Ebauche, Finition etc.)



Matière outil

Si pour un même outil géométrique (Fraise boule Ø10 par exemple) Il existe plusieurs revêtement ou type de plaquette on pourra rajouter un critère lié à la matière de l’outil (type de revêtement) ou le type de plaquette.



Phase

§   Avant trempe

§   Perçage

§   Taraudage/Alésage

§  

Dernier critère de classement on pourra aussi intégrer la notion de phase. Par exemple pour une reprise d’ébauche réalisée avant traitement ou après traitement ou un perçage qui serait réalisé comme simple perçage ou qui nécessiterai par la suite une opération complémentaire comme un taraudage ou un alésage.



La notion de phase est de mon point de vue plus utilisée pour la définition de gamme opératoire. Les conditions d'usinage étant subordonnées à la matière il est possible de définir au travers d'un état matière des conditions différentes. Mais on peut aussi utiliser ce critères dans la définition des conditions par exemple en lien avec une qualité attendue : Si l'on est dans une Phase d'ébauche il n'est pas forcément nécessaire d'avoir un bon état de surface. Les conditions d'usinage peuvent donc être plus sévères.

*Par outil donné j'entend la notion de référence outil ou d'assemblage outil. Dans  les deux cas la longueur totale de l'outil ou la longueur sortie aura une influence sur les données de coupe et implique souvent la nécessité de définir un nouvel enregistrement.

mercredi 24 août 2016

Classement CFAO, ou la règle de 3


A l’école nous avons tous appris la règle de 3 ou règle de proportionnalité, j’utilise la règle de 3 sous une autre forme. J’ai constaté que lors des discussions avec certains commerciaux ces derniers ont tendance à utiliser cette règle lors qu’il s’agit d’évoquer leur base installée. La société qui désire investir dans une nouvelle solution CFAO après les critères objectifs de prix ou de fonctionnalités, s’intéresse souvent à la popularité du système envisagé. Donc à son nombre de clients ou d’utilisateurs. Et c’est là que la règle de 3 arrive :
L’utilisateur : Combien avez-vous de clients en France ?
Le commercial : 30 !
En réalité nous pourrons en compter 10 …

D'où la fameuse règle de 3. Sachant que plus cette base installée est faible et plus cette règle aura tendance à être surutilisé. Donc personnellement, j’ai toujours tendance à appliquer un coefficient correcteur de l’ordre de 3 pour avoir le nombre réel.

Attention ! Je ne dis pas là, que commercial rime avec menteur. Non mentir c’est mal et ça fini toujours pas vous retomber sur la gueule un jour où l’autre. Simplement leur méthode de comptabilité a tendance à différer de votre propre méthode. En effet votre interlocuteur aura pris en compte l’ensemble des clients de son système CRM, là où vous vous attendiez le nombre réel de licence ou de client actif, dans le chiffre annoncé sont inclus toutes les licences enregistrées depuis la création de la société. Donc sont inclus, les clients disparus depuis 15 ans, ceux dont les sociétés ont fusionnées pour ne faire plus qu’une, dans ce cas il applique le principe de la constance des masses 1+1 égale toujours 2. Et, je passe sur les licences de démo, de prêt, celles perdues etc.

Il est donc assez difficile d’avoir une idée de l’audience réel d’une solution chacun se proclamant Leader de quelque chose. De plus dans certains cas on s’aperçoit que le nombre de licence vendu n’a rien à voir avec la réelle utilisation du produit, particulièrement en FAO.

Il existe bien des sociétés spécialisées qui publient annuellement des rapports par secteur d’activité. Pour la CFAO le plus connu est l’américain CIMData (http://www.cimdata.com). Qui publie pour la modique somme de 2995$ son rapport anuel : http://www.cimdata.com/en/online-store/market-analysis-reports/product/161-2016-cam-market-analysis-report.

Et dont certains éditeurs s’empressent de relayer une partie de l’information, notamment quand leur nom apparait en première position sur une des analyses comme (Figure 1) :
Ou là :

Figure 1 Données CIMData
J’ai pour ma part toujours eu un peu de mal à vraiment faire confiance à ces chiffres et dans les deux exemples précédents on trouve pour les mêmes années des classements différents. Je suis assez proche de rejoindre ce qui est écrit dans ce post ou l’auteur reprenait les propos de l’ancien directeur d’AlphaCAM qui disait «Be aware that the CIMDATA report simply quotes figures for the number of customers given to them by the vendors«. Donc là aussi la règle de 3 doit s’appliquer.

Pour ma part j’ai essayé de faire mon petit classement en utilisant une autre source de données qui vaut ce qu’elle vaut mais qui est simple à vérifier. Aujourd’hui les médias sociaux sont devenus un incontournable de notre société et en terme de média professionnel LinkedIn (Figure 2) est devenu un des incontournables.
Figure 2 Réseau LinkedIN
La méthode d’analyse
J’ai donc repris pour les entreprises de la CFAO le nombre de personnes abonnées sur la page LinkedIn des sociétés. En partant du principe que l’utilisateur d’un système aura tendance à chercher à suivre l’activité de l’outil numérique qu’il utilise, notamment si il est satisfait de ce dernier. Les grincheux me diront que l’on va aussi trouver dans le total des abonnés, les concurrents inscrits pour faire de la veille. Ok, mais dans ce cas je considère que si l’on regarde ce que vous faites, c’est que vous êtes potentiellement intéressant. Mieux vaut être suivi que suiveur.

Les données sont donc issues du nombre d’abonnés à une entreprise sur le réseau LinkedIn au 24/08/2016 (Figure 3).
Figure 3 Abonnés LinkedIn
Il est à noter que j’avais déjà enregistré les mêmes chiffres en début d’année et que si le nombre d’abonnés a progressé pour chaque entreprise le classement n’a pas bougé en 6 mois.

Etant donné que pour certaines grosses entreprises, il est difficile de séparer l’activité FAO du PLM ou de la CAO j’ai donc fait trois catégories une partie CAO/PLM avec Autodesk, Dassault, PTC et Siemens. Un autre groupe avec des sociétés plus reconnus dans le domaine de la FAO mécanicienne (Les solutions FAO du travail de la tôle ne sont pas intégrées dans cette liste par exemple) . Et enfin un dernier groupe plus consacré à la partie Simulation.
CAO/PLM 

Premiers groupe les solutions globales où il est difficile de pouvoir classer par activité la société (Figure 4).
Rank Société Followers CAO/PLM
1 Autodesk 165885
2 Dassault Systemes 91619
3 PTC 79283
4 SolidWorks 68866
5 Siemens PLM 63459

Le classement semble assez logique en effet Autodesk avec la multitude de produits offerts couvre aussi bien la mécanique, que le génie civil, l’animation, le design. Il est probable que ce soit le numéro un même si je suis bien conscient que l’on compare ici un peu des choux et des carottes.
Figure 4 Classement CAO/PLM

FAO
La partie qui nous (qui m’intéresse le plus) (Figure 5). Là aussi ça semble assez logique, pour bien faire il faudrait pourvoir regrouper tous les produits de VERO (aujourd’hui chez Hexagone métrologie) et Delcam risque bientôt de disparaitre pour passer dans la nébuleuse Autodesk donc profitons en tant qu’il est encore temps. Je suis un peu surpris par la place d’OpenMind, mais étant donné une activité assez forte sur LinkedIn ceci peut faire monter le classement. Et je suis aussi étonné par la place de BobCad-CAM qui est un produit que l’on ne trouve pas sur le marché européen. Mais d’autres sondages (sujet à caution parait-il) vue récemment plaçaient ce produit en bonne position. C’est un produit d’entrée de gamme qui peut certainement trouver une audience auprès des petites structures.
Rank Société Followers FAO
1 Mastercam 5318
2 Delcam 4990
3 DP Technology 2639
4 BobCad-CAM 2324
5 GibbsCAM 2292
6 OpenMind 1697
7 Cimatron 1638
8 Vero Software 1519
9 Missler 1310
10 SolidCAM 1104
11 ZWSoft 683
12 Sescoi WorkNc 589
13 EdgeCam 564
14 Tebis  307
15 CamWorks 245
16 Alphacam 243
17 HSMWork 195
18 NCG CAM 146
19 MecSoft 140
20 SprutCAM 101
21 GO2CAM 91
22 ERCII (e-NC) 22
Figure 5 Classement FAO
Un petit encouragement pour nos petits Français de queue de peloton. Et comme au jeu olympique on se consolera avec au moins un français dans les 10 premiers.
Simulation
Enfin pour la partie simulation (Figure 6), j’aurais personnellement pensé que SPRING se classerait avant ICAM, peut être que l’activité postprocesseur sur le marché nord-américain lui donne une meilleur notoriété.
Rank Société Followers Simulation
1 CGTECH 1223
2 ICAM 1074
3 Spring 509
4 IMS 128
5 Roboris LTD 71
 
Figure 6 Classement Simulation
Conclusions
Voilà, pas de conclusions à ces chiffres, c’était juste une méthode comme une autre pour établir un classement sans débourser 3000$. Nous dirons que s’il ne préjuge en rien des capacités techniques des produits il permet de mesurer l’estime numérique des sociétés.