Part Tutoriel écrire un script - Roulement à bille #1
| Thème |
|---|
| Part Tutoriel écrire un script - Roulement à bille #1 |
| Niveau |
| Débutant |
| Temps d'exécution estimé |
| 30 min |
| Auteurs |
| r-frank |
| Version de FreeCAD |
| 0.16.6706 |
| Fichiers exemples |
| None |
| Voir aussi |
| Part Tutoriel écrire un script - Roulement à bille #2 |
Introduction
Ce tutoriel est destiné à initier les débutants à la création de pièces à l'aide de scripts Python dans FreeCAD. Il explique comment créer un roulement à billes en utilisant la méthode CSG. Le code générera un nouveau document FreeCAD contenant 12 formes (bague intérieure, bague extérieure et 10 billes/sphères).
Voici à quoi cela ressemblera :
Flux de travail
La procédure est plus ou moins identique à celle que vous suivriez pour créer la pièce dans l'atelier Part. Il n'y a que quelques petites différences.
- Créez un nouveau document vide et définissez-le comme document actif.
- Insérez un cylindre.
- Insérez un cylindre.
- Effectuez une découpe booléenne pour obtenir la forme de base de la bague intérieure.
- Sélectionnez toutes les arêtes et appliquez un congé.
- Insérez un tore.
- Déplacez le tore en position et effectuez une découpe booléenne pour créer la rainure destinée aux billes.
- Répétez toutes les étapes pour obtenir la forme de la bague extérieure.
- Insérez la première bille.
- Insérez les autres billes en utilisant les fonctions mathématiques pour calculer leur position.
- Réglez la vue en axométrique.
- Zoomez pour que tout tienne dans le cadre.
Filetage des arêtes
Dans l'atelier Part, lorsque vous utilisez l'interface graphique, vous sélectionnez les chanfreins dans la vue 3D ou dans le menu dédié aux arrondis, puis vous appliquez ces derniers. Ici, nous sélectionnons toutes les arêtes d'une forme et nous leur appliquons des arrondis. Nous devons donc sélectionner les arêtes AVANT de créer la rainure.
Remarques
Ce tutoriel utilise des primitives de pièces et des opérations booléennes, ce qui peut avoir un impact sur les performances.
Pour réaliser une pièce par script à partir d'esquisses pivotées, consultez le tutoriel Part Tutoriel écrire un script - Roulement à bille #2
Liens
Objets créés par script : la page wiki expliquant les bases du langage de script.
- Script de données topologiques : tutoriel présentant les bases du script.
- Part Tutoriel écrire un script - Roulement à bille #2 : réalisation à l'aide d'esquisses.
- Script Roulement 1 : base de ce tutoriel, merci à JMG.
Code
## Ball-bearing script
## 11.08.2016 by r-frank (BPLRFE/LearnFreeCAD on Youtube)
## based on ball bearing script by JMG
## (http://linuxforanengineer.blogspot.de/2013/08/free-cad-bearing-script.html)
#needed for inserting primitives
import Part
#needed for calculating the positions of the balls
import math
#needed for translation of torus
from FreeCAD import Base
#VALUES#
#(radius of shaft/inner radius of inner ring)
R1=15.0
#(outer radius of inner ring)
R2=25.0
#(inner radius of outer ring)
R3=30.0
#(outer radius of outer ring)
R4=40.0
#(thickness of bearing)
TH=15.0
#(number of balls)
NBall=10
#(radius of ball)
RBall=5.0
#(rounding radius for fillets)
RR=1
#first coordinate of center of ball
CBall=((R3-R2)/2)+R2
#second coordinate of center of ball
PBall=TH/2
#Create new document
App.newDocument("Unnamed")
App.setActiveDocument("Unnamed")
App.ActiveDocument=App.getDocument("Unnamed")
Gui.ActiveDocument=Gui.getDocument("Unnamed")
#Inner Ring#
B1=Part.makeCylinder(R1,TH)
B2=Part.makeCylinder(R2,TH)
IR=B2.cut(B1)
#get edges and apply fillets
Bedges=IR.Edges
IRF=IR.makeFillet(RR,Bedges)
#create groove and show shape
T1=Part.makeTorus(CBall,RBall)
T1.translate(Base.Vector(0,0,TH/2))
InnerRing=IRF.cut(T1)
Part.show(InnerRing)
#Outer Ring#
B3=Part.makeCylinder(R3,TH)
B4=Part.makeCylinder(R4,TH)
OR=B4.cut(B3)
#get edges and apply fillets
Bedges=OR.Edges
ORF=OR.makeFillet(RR,Bedges)
#create groove and show shape
T2=Part.makeTorus(CBall,RBall)
T2.translate(Base.Vector(0,0,TH/2))
OuterRing=ORF.cut(T2)
Part.show(OuterRing)
#Balls#
for i in range(NBall):
Ball=Part.makeSphere(RBall)
Alpha=(i*2*math.pi)/NBall
BV=(CBall*math.cos(Alpha),CBall*math.sin(Alpha),TH/2)
Ball.translate(BV)
Part.show(Ball)
#Make it pretty#
App.activeDocument().recompute()
Gui.activeDocument().activeView().viewAxometric()
Gui.SendMsgToActiveView("ViewFit")
- Scripts FreeCAD : Python, Introduction à Python, Tutoriel sur les scripts Python, Débuter avec les scripts
- Modules : Modules intégrés, Unités, Quantity
- Ateliers : Création d'atelier, Commands Gui, Les commandes, Installer des ateliers supplémentaires
- Maillages et objets Parts : Scripts Mesh, Script de données topologiques, Conversion objet Mesh en Part, PythonOCC
- Objets paramétriques : Objets créés par script, Viewproviders (Icône personnalisée dans l'arborescence)
- Scénographie : Graphe de scène Coin (Inventor), Pivy
- Interface graphique : Création d'interface, Création d'une boite de dialogue (1, 2, 3, 4, 5), PySide, Exemples PySide débutant, intermédiaire, expérimenté
- Macros : Macros, Comment installer des macros
- Intégration : Intégrer FreeCAD, Intégration de FreeCADGui
- Autre : Expressions, Extraits de codes, Fonction - tracer une ligne, Bibliothèque mathématique vectorielle de FreeCAD (déprécié)