Outils pour utilisateurs

Outils du site


issue125:freecad

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
issue125:freecad [2017/10/05 07:39] d52frissue125:freecad [2017/10/06 10:46] (Version actuelle) auntiee
Ligne 3: Ligne 3:
 In today’s part of this series, we will extend FreeCAD’s possibilities using a little Python programming to create a helicoidal surface in the shape of a mechanical gear wheel.** In today’s part of this series, we will extend FreeCAD’s possibilities using a little Python programming to create a helicoidal surface in the shape of a mechanical gear wheel.**
  
-Dans cette série, nous examinerons le monde de FreeCAD, une application Open Source de modélisation par CAO qui est encore en bêta, mais qui a reçu un bon accueil ces dernières années. Naturellement, elle est facilement disponible dans les dépôts d'Ubuntu. Dans le cinquième article sur l'utilisation de FreeCAD, nous avons travaillé sur un projet architectural de deux façons différentes. D'abord, nous avons utilisé l'atelier Arch pour créer un projet architectural moderne, dans lequel des informations complémentaires sont fournies à l'ordinateur, de telle sorte que FreeCAD est utilisé pour créer un Modèle Intégré de Construction (BIM - Building Integrated Model). Comme cette approche n'en est qu'au début de son développement, et qu'elle est limitée à des formes simples, nous avons ensuite utilisé une approche plus traditionnelle pour créer des volumes de la même manière que pour les projets précédents, mais à une échelle plus grande. La technique du balayage nous a permis de créer un élément avec la forme d'une arche en balayant une esquisse (un profil) le long d'une autre esquisse (le trait formant une arche).+Dans cette série, nous examinerons le monde de FreeCAD, une application Open Source de modélisation par CAO qui est encore en bêta, mais qui a reçu un bon accueil ces dernières années. Naturellement, elle est facilement disponible dans les dépôts d'Ubuntu. Dans le cinquième article sur l'utilisation de FreeCAD, nous avons travaillé sur un projet architectural de deux façons différentes. D'abord, nous avons utilisé l'atelier Arch pour créer un projet architectural moderne, dans lequel des informations complémentaires sont fournies à l'ordinateur, de telle sorte que FreeCAD est utilisé pour créer un Modèle intégré de construction (BIM - Building Integrated Model). Comme cette approche n'en est qu'au début de son développement, et qu'elle est limitée à des formes simples, nous avons ensuite utilisé une approche plus traditionnelle pour créer des volumes de la même manière que pour les projets précédents, mais à une échelle plus grande. La technique du balayage nous a permis de créer un élément avec la forme d'une arche en balayant une esquisse (un profil) le long d'une autre esquisse (le trait formant une arche).
  
-Dans cette nouvelle partie de cette série, nous allons étendre les possibilités de FreeCAD en utilisant un peu de programmation en Python, pour créer une surface hélicoïdale sous la forme d'un roue dentée.+Dans la nouvelle partie de cette série, nous allons étendre les possibilités de FreeCAD en utilisant un peu de programmation en Python, pour créer une surface hélicoïdale sous la forme d'une roue dentée.
  
 **Programming FreeCAD? And why Python? **Programming FreeCAD? And why Python?
Ligne 15: Ligne 15:
 Programmer dans FreeCAD ? Et pourquoi Python ? Programmer dans FreeCAD ? Et pourquoi Python ?
  
-Comme le savent de nombreux lecteurs, le monde de l'implémentation des langages de programmation est divisé en deux catégories principales. Il y a des langages de programmation comme C ou Fortran dont le code source a besoin d'être compilé (dans le langage machine de l'ordinateur) pour être exécuté. Il y a aussi les langages interprétés qui n'ont pas besoin d'être compilés (ou « traduits », pour vous donner une image mentale de ce qui se passe en utilisant un compilateur), mais peuvent être directement interprétés par un programme spécial sur l'ordinateur de l'utilisateur, appelé interpréteur. C'est le cas de nombreux langages de programmation très utilisés de nos jours, tels que PHP sur les serveurs et Python sur les ordinateurs des utilisateurs. En aparté, le langage Java tend à se rapprocher largement de la catégorie précédente des interprétés (avec certaines restrictions) tandis que le Javascript, au nom très proche, est vraiment d'un genre différent et il est principalement utilisé par interprétation dans les navigateurs Web.+Comme le savent de nombreux lecteurs, le monde de l'implémentation des langages de programmation est divisé en deux catégories principales. Il y a des langages de programmation comme C ou Fortran dont le code source a besoin d'être compilé (dans le langage machine de l'ordinateur) pour être exécuté. Il y a aussi les langages interprétés qui n'ont pas besoin d'être compilés (ou « traduits », pour vous donner une image mentale de ce qui se passe en utilisant un compilateur), mais peuvent être directement interprétés par un programme spécial sur l'ordinateur de l'utilisateur, appelé interpréteur. C'est le cas de nombreux langages de programmation très utilisés de nos jours, tels que PHP sur les serveurs et Python sur les ordinateurs des utilisateurs. En aparté, le langage Java tend à se rapprocher largement de la catégorie précédente des interprétés (avec certaines restrictions) tandis que le Javascript, au nom très proche, est vraiment d'un genre différent il est principalement utilisé par interprétation dans les navigateurs Web.
  
-FreeCAD a été construit en Python, donc en langage interprété. C'est vraiment pratique pour plusieurs raisons. D'abord, cela facilite le transport de l'application vers d'autres architectures d'ordinateurs et de systèmes d'exploitation, pour autant que Python soit disponible sur la plateforme désirée - et Python est vraiment répandu, bien sûr. En deuxième lieu, nous pouvons ouvrir une vue en console des travaux internes de FreeCAD en choisissant simplement l'option de menu Affichage > Vues > Console Python. Chaque action que nous réalisons dans l'interface utilisateur est directement convertie en Python et commande la logique centrale du programme - et nous pouvons le voir en temps réel dans cette console. Si, par exemple, je crée un nouveau projet, passe dans l'atelier Draft et dessine une ligne, voyez ci-dessous ce qui se passe réellement.+FreeCAD est construit en Python, donc en langage interprété. C'est vraiment pratique pour plusieurs raisons. D'abord, cela facilite le transport de l'application vers d'autres architectures d'ordinateurs et systèmes d'exploitation, pour autant que Python soit disponible sur la plateforme désirée - et Python est vraiment répandu. En deuxième lieu, nous pouvons ouvrir une vue en console des travaux internes de FreeCAD en choisissant simplement l'option de menu Affichage > Vues > Console Python. Chaque action que nous réalisons dans l'interface utilisateur est directement convertie en Python et commande la logique centrale du programme - et nous pouvons le voir en temps réel dans cette console. Si, par exemple, je crée un nouveau projet, passe dans l'atelier Draft et dessine une ligne, voyez ci-dessous ce qui se passe réellement.
  
 **This is quite neat, since one can learn about the different commands used in an interactive way. Naturally, once one has a grasp of the fundamentals, they can be used to write one’s own scripts, and have them executed by FreeCAD.  **This is quite neat, since one can learn about the different commands used in an interactive way. Naturally, once one has a grasp of the fundamentals, they can be used to write one’s own scripts, and have them executed by FreeCAD. 
Ligne 31: Ligne 31:
 We will see FreeCAD start up and execute our script line-by-line, giving the final result shown below.** We will see FreeCAD start up and execute our script line-by-line, giving the final result shown below.**
  
-C'est plutôt chouette, car on peut apprendre de manière interactive les différentes commandes utilisées. Naturellement, une fois acquis un ensemble de fondamentaux, ils peuvent être utilisés pour écrire ses propres scripts et les faire exécuter par FreeCAD.+C'est très chouette, car on peut apprendre de manière interactive les différentes commandes utilisées. Naturellement, une fois acquis un ensemble de fondamentaux, ils peuvent être utilisés pour écrire ses propres scripts et les faire exécuter par FreeCAD.
  
-Pour prendre un exemple, écrivons un script simple en Python qui créera la forme d'une simple boîte. Créez un fichier nommé « test1.py » et copiez le code présenté en haut à droite.+Pour prendre un exemple, écrivons un script simple en Python qui créera la forme d'une simple boîte. Créez un fichier nommé « test1.py » et copiez-y le code présenté en haut à droite.
  
 La bibliothèque Part contient les outils de l'atelier Part. Nous conmmençons par créer un nouveau projet, appelé « Box Model » (Modèle de boîte). Nous en faisons le document actif (la fenêtre active) et nous ajoutons un nouvel objet basé sur le protoptype « Part::Box », en le nommant « box1 ». Nous fixons ses dimensions et lançons un recalcul. Nous disons ensuite à l'interface utilisateur (« Gui ») d'agrandir la vue pour l'adapter à l'objet et de sélectionner la vue axionométrique (3D). La bibliothèque Part contient les outils de l'atelier Part. Nous conmmençons par créer un nouveau projet, appelé « Box Model » (Modèle de boîte). Nous en faisons le document actif (la fenêtre active) et nous ajoutons un nouvel objet basé sur le protoptype « Part::Box », en le nommant « box1 ». Nous fixons ses dimensions et lançons un recalcul. Nous disons ensuite à l'interface utilisateur (« Gui ») d'agrandir la vue pour l'adapter à l'objet et de sélectionner la vue axionométrique (3D).
Ligne 51: Ligne 51:
 Comme second exemple, construisons quelque chose de légèrement plus complexe : la forme d'une boîte de conserve qui consiste en une forme plate (deux arcs rattachés par des segments droits) qui sera ensuite extrudée pour former un volume. En bas à droite, voici le script, dans le fichier « test2.py ». Comme second exemple, construisons quelque chose de légèrement plus complexe : la forme d'une boîte de conserve qui consiste en une forme plate (deux arcs rattachés par des segments droits) qui sera ensuite extrudée pour former un volume. En bas à droite, voici le script, dans le fichier « test2.py ».
  
-Expliquons ce qui diffère de l'exemple précédent. Dans ce cas, nous commençons notre nouvel objet en créant quatre vecteurs V1 à V4, qui indiquent les positions des points de connexion entre les arcs et les lignes droites. Nous créons ensuite les segments droits, L1 et L2 , et, enfin, les arcs C1 et C2. Puis, nous avons besoin de convertir ces quatre éléments en objets Edge, E1 à E4, qui sont ensuite connectés en un objet Wire W. C'est le tracé du haut de la boîte de conserve. Assurez-vous bien, s'il vous plaît, que les lignes et les arcs sont correctement définis, sinon des erreurs de connectivité peuvent apparaître. Enfin, le Wire est converti en un objet bidimensionnel Face, F, qui est ensuite extrudé dans la forme P. Un volume générique est dérivé de « Part::Feature » et P est attribué à sa forme.+Expliquons ce qui diffère de l'exemple précédent. Dans ce cas, nous commençons notre nouvel objet en créant quatre vecteurs V1 à V4, qui indiquent la position des points de connexion entre les arcs et les lignes droites. Nous créons ensuite les segments droits, L1 et L2 , et, enfin, les arcs C1 et C2. Nous devons ensuite convertir ces quatre éléments en objets Edge, E1 à E4, qui sont alors connectés en un objet Wire W. C'est le tracé du haut de la boîte de conserve. Assurez-vous bien, s'il vous plaît, que les lignes et les arcs sont définis dans l'ordre exacte, sinon des erreurs de connectivité peuvent apparaître. Enfin, le Wire est converti en un objet bidimensionnel Face, F, qui est ensuite extrudé dans la forme P. Un volume générique est dérivé de « Part::Feature » et P est attribué à sa forme.
  
 En touche finale, l'objet fini peut être sauvegardé directement dans le script en appelant la procédure doc.saveAs. À l'exécution dans un terminal, le résultat de notre script est présenté ci-dessous. En touche finale, l'objet fini peut être sauvegardé directement dans le script en appelant la procédure doc.saveAs. À l'exécution dans un terminal, le résultat de notre script est présenté ci-dessous.
Ligne 63: Ligne 63:
 Dessinons quelques engrenages Dessinons quelques engrenages
  
-L'utilisation d'un script peut devenir utile quand nous avons besoin d'une forme qui contient de nombreux éléments similaires mais différents et calculables. Dans de tels cas, l'écriture d'un programme pour itérer nos formes peut être un vrai gain de temps. Un cas typique est lors de la création d'une roue dentée. Une telle roue peut être vue comme la combinaison d'une forme extérieure formée d'un certain nombre de dents ou pignons et d'une forme intérieure qui délimite l'axe. Celle-ci peut être lisse ou cannelé de sorte que l'axe peut transmettre le couple vers et depuis la roue. Les formes intérieures et extérieures de la roue sont toutes les deux formées d'un motif de base qui est répété avec un décalage fixe entre chaque dent.+L'utilisation d'un script peut devenir utile quand nous avons besoin d'une forme qui contient de nombreux éléments similairesmais différents et calculables. Dans de tels cas, l'écriture d'un programme pour itérer nos formes peut être un vrai gain de temps. Un cas typique est lors de la création d'une roue dentée. Une telle roue peut être vue comme la combinaison d'une forme extérieure faite d'un certain nombre de dents ou pignons et d'une forme intérieure qui délimite l'axe. Celle-ci peut être lisse ou cannelé de sorte que l'axe peut transmettre le couple vers et depuis la roue. Les formes intérieures et extérieures de la roue sont toutes les deux faites d'un motif de base qui est répété avec un décalage fixe entre chaque dent.
  
 Concentrons-nous sur la forme extérieure, légèrement plus complexe que les cannelures internes. Individuellement, chaque dent est centrée à un certain rayon du centre de la roue, ou surface d'appui. Dans notre cas, nous spécifions un rayon de 100 mm. En simplifiant quelque peu, c'est le point où les autres engrenages connectés à celui-ci vont transmettre leur force. Dans notre schéma, les points 3 et 6 sont sur cette surface. En allant vers l'extérieur, les dents s'étirent jusqu'à une limite extérieure, le plat sommital. Les points 4 et 5 sont sur ce rayon, fixé à 110 mm dans notre cas. Enfin, nous avons besoin de dégager de la place vers l'intérieur pour laisser passer les dents de l'autre roue. Aussi, nous allons vers l'intérieur jusqu'au fond plat, à un rayon de 90 mm dans notre cas, et obtenons les points 1 et 2. Nous répéterons cette forme de base sur les 16 dents de notre roue. Concentrons-nous sur la forme extérieure, légèrement plus complexe que les cannelures internes. Individuellement, chaque dent est centrée à un certain rayon du centre de la roue, ou surface d'appui. Dans notre cas, nous spécifions un rayon de 100 mm. En simplifiant quelque peu, c'est le point où les autres engrenages connectés à celui-ci vont transmettre leur force. Dans notre schéma, les points 3 et 6 sont sur cette surface. En allant vers l'extérieur, les dents s'étirent jusqu'à une limite extérieure, le plat sommital. Les points 4 et 5 sont sur ce rayon, fixé à 110 mm dans notre cas. Enfin, nous avons besoin de dégager de la place vers l'intérieur pour laisser passer les dents de l'autre roue. Aussi, nous allons vers l'intérieur jusqu'au fond plat, à un rayon de 90 mm dans notre cas, et obtenons les points 1 et 2. Nous répéterons cette forme de base sur les 16 dents de notre roue.
Ligne 73: Ligne 73:
 However, straight teeth do have the disadvantage of creating quite a bit of noise during operation, since, during each rotation, each tooth engages immediately with the other gear wheel’s corresponding tooth along the complete width of the tooth. This produces the typical whining noise that can be heard from some mechanical setups. In most modern applications where smoothness of operation and low noise emissions are valued, such as vehicle gear boxes, helicoidal gears can be preferred.** However, straight teeth do have the disadvantage of creating quite a bit of noise during operation, since, during each rotation, each tooth engages immediately with the other gear wheel’s corresponding tooth along the complete width of the tooth. This produces the typical whining noise that can be heard from some mechanical setups. In most modern applications where smoothness of operation and low noise emissions are valued, such as vehicle gear boxes, helicoidal gears can be preferred.**
  
-Notre script (à droite) dessinera simplement une série de lignes des sommets 1 à 6 puis vers le sommet 1 de la dent suivante. Comme Python a une bibliothèque mathématique « math », les fonctions sinus et cosinus peuvent être utilisées pour calculer une paire de coordonnées X-Y pour chaque sommet. Le script lui-même est vraiment fluide. À noter : dans notre exemple, nous utilisons seulement des segments droits. Cependant, dans un engrenage réel, les surfaces de fond et sommitale et les surfaces de contact seraient le plus souvent dessinées avec des arcs.+Notre script (à droite) dessinera simplement une série de lignes des sommets 1 à 6 puis vers le sommet 1 de la dent suivante. Comme Python a une bibliothèque mathématique « math », les fonctions sinus et cosinus peuvent être utilisées pour calculer une paire de coordonnées X-Y pour chaque sommet. Le script lui-même est vraiment simple. À noter : dans notre exemple, nous utilisons seulement des segments droits. Cependant, dans un engrenage réel, les surfaces de fond et sommitale et les surfaces de contact seraient le plus souvent dessinées avec des arcs.
  
-Une fois que nous avons la forme du pignon dans FreeCAD, nous poursuivons en l'utilisant « à la main » dans l'interface utilisateur habituel, comme base d'une extrusion ou d'un autre opération que nous souhaiterions. Avec un script similaire pour dessiner la forme centrale crénelée des cannelures, nous pouvons extruder en même temps la forme extérieure de la roue dentée et le volume intérieur de l'axe, puis utiliser une opération booléenne pour extraire l'une de l'autre. Nous pouvons ainsi obtenir la forme traditionnelle d'un engrenage droit que nous trouverions dans de nombreuses applications classiques telles qu'une boîte de transfert d'un véhicule 4x4.+Une fois que nous avons la forme du pignon dans FreeCAD, nous poursuivons en l'utilisant « à la main » dans l'interface utilisateur habituelle, comme base d'une extrusion ou d'une autre opération que nous souhaiterions. Avec un script similaire pour dessiner la forme centrale crénelée des cannelures, nous pouvons extruder en même temps le volume extérieure de la roue dentée et le volume intérieur de l'axe, puis utiliser une opération booléenne pour extraire l'une de l'autre. Nous pouvons ainsi obtenir la forme traditionnelle d'un engrenage droit que nous trouverions dans de nombreuses applications classiques telles qu'une boîte de transfert d'un véhicule 4x4.
  
 Cependant, les dents droites ont le désavantage de créer pas mal de bruit à l'utilisation, car, lors de chaque rotation, chaque dent engage immédiatement la dent correspondante de l'autre roue dentée sur toute la largeur de la dent. Ceci produit le bruit typique de gémissement que nous pouvons entendre sur certains montages mécaniques. Dans des applications plus modernes où la douceur de fonctionnement et les faibles émissions sonores sont appréciées, comme dans les boîtes de vitesse de véhicules, les engrenages hélicoïdaux peuvent être préférés. Cependant, les dents droites ont le désavantage de créer pas mal de bruit à l'utilisation, car, lors de chaque rotation, chaque dent engage immédiatement la dent correspondante de l'autre roue dentée sur toute la largeur de la dent. Ceci produit le bruit typique de gémissement que nous pouvons entendre sur certains montages mécaniques. Dans des applications plus modernes où la douceur de fonctionnement et les faibles émissions sonores sont appréciées, comme dans les boîtes de vitesse de véhicules, les engrenages hélicoïdaux peuvent être préférés.
Ligne 87: Ligne 87:
 Pour dessiner un tel engrenage, le même motif de dent peut être utilisé, mais il est balayé le long d'un chemin hélicoïdal plutôt qu'avec un simple outil d'extrusion linéaire. Pour dessiner un tel engrenage, le même motif de dent peut être utilisé, mais il est balayé le long d'un chemin hélicoïdal plutôt qu'avec un simple outil d'extrusion linéaire.
  
-Commencez, dans l'atelier Part, par sélectionner l'option de menu Pièce > Créer des primitives. Là, vous pouvez sélectionner la forme Hélice. Comme je souhaite créer une engrenage de 50 mm d'épaisseur, avec des dents penchées à environ 1:20 sur l'épaisseur de la dent, je choisis une hauteur d'hélice de 50 mm, mais un axe de tangage de 1000 mm entre les spires de l'hélice. Le rayon extérieur de l'hélice devrait correspondre à celui du point où elle sera créée. Des hélices à pas droit ou gauche peuvent être utilisées, suivant le besoin.+Commencez, dans l'atelier Part, par sélectionner l'option de menu Pièce > Créer des primitives. Là, vous pouvez sélectionner la forme Hélice. Comme je souhaite créer une engrenage de 50 mm d'épaisseur, avec des dents penchées à environ 1:20 sur l'épaisseur de la roue, je choisis une hauteur d'hélice de 50 mm, mais un axe de tangage de 1000 mm entre les spires de l'hélice. Le rayon extérieur de l'hélice devrait correspondre à celui du point où elle sera créée. Des hélices à pas droit ou gauche peuvent être utilisées, suivant le besoin.
  
-Une fois que la ligne hélicoïdale a été tracée, elle peut être utilisée comme chemin le long duquel la face extérieure du pignon  peut être balayée, en utilisant les mêmes outils que lors de la création de l'arche gothique dans la partie précédente de la série. La surface intérieure sera créée en utilisant une extrusion linéaire comme précédemment, car les cannelures intérieures d'un engrenage hélicoïdal restent droites pour faciliter l'assemblage de la roue sur l'axe support. La roue résultante est en fait une approximation d'une vraie roue dentée. Cependant, certains aspects pour être mieux rendus, tels que les bords extérieurs biseautés pour les rendre moins agressifs ou l'enlèvement d'un partie de la matière de la roue pour l'alléger et utiliser moins de matière pour la fabriquer. Ces opérations peuvent être faites dans FreeCAD et sont laissées au lecteur comme exercice (indice : utiliser une surface de révolution pour créer les évidements sur chaque face).+Une fois la ligne hélicoïdale tracée, elle peut être utilisée comme chemin le long duquel la face extérieure du pignon peut être balayée, en utilisant les mêmes outils que lors de la création de l'arche gothique dans la partie précédente de la série. La surface intérieure sera créée en utilisant une extrusion linéaire comme précédemment, car les cannelures intérieures d'un engrenage hélicoïdal restent droites pour faciliter l'assemblage de la roue sur l'axe support. La roue résultante est en fait une assez bonne approximation d'une vraie roue dentée. Cependant, certains aspects pourraient être mieux rendus, tels que les bords extérieurs biseautés pour les rendre moins agressifs ou l'enlèvement d'un partie de la matière de la roue pour l'alléger et utiliser moins de matière pour la fabriquer. Ces opérations peuvent être faites dans FreeCAD et sont laissées au lecteur comme exercice (indice : utiliser une surface de révolution pour créer les évidements sur chaque face).
  
 **What next? **What next?
Ligne 99: Ligne 99:
 Et ensuite ? Et ensuite ?
  
-Dans cet article sur l'utilisation de FreeCAD, nous avons étendu les possibilités de FreeCAD en utilisant un peu de programmation en Python pour créer une surface hélicoïdale dans la forme de la roue dentée. Une fois la forme de base dessinée en utilisant un script, elle peut être utilisée en combinaison avec une autre des techniques disponibles dans l'interface graphique pour créer l'objet final. Python est un ensemble de programmation complètement développé, contenant des bibliothèques à la fois pour les mathématiques et pour d'autres besoins, et il peut être utilisé en combinaison avec FreeCAD pour créer des objets qui n'existent pas dans la bibliothèque d'origine des formes de base.+Dans cet article sur l'utilisation de FreeCAD, nous avons étendu les possibilités de FreeCAD en utilisant un peu de programmation en Python pour créer une surface hélicoïdale dans la forme d'une roue dentée. Une fois la forme de base dessinée en utilisant un script, elle peut être utilisée en combinaison avec une autre des techniques disponibles dans l'interface graphique pour créer l'objet final. Python est un ensemble de programmation complètement développé, contenant des bibliothèques à la fois pour les mathématiques et pour d'autres besoins, et il peut être utilisé en combinaison avec FreeCAD pour créer des objets qui n'existent pas dans la bibliothèque d'origine des formes de base.
  
 Dans la prochaine partie de la série, nous nous concentrerons sur un objet à la primitive plus complexe qui nous permettra de créer des formes et des volumes avec moins de régularité, le maillage. Dans la prochaine partie de la série, nous nous concentrerons sur un objet à la primitive plus complexe qui nous permettra de créer des formes et des volumes avec moins de régularité, le maillage.
  
  
issue125/freecad.1507181975.txt.gz · Dernière modification : 2017/10/05 07:39 de d52fr