Difference between revisions of "Scripted Parts: Ball Bearing - Part 1/de"

From FreeCAD Documentation
Jump to navigation Jump to search
(Created page with "===Einleitung=== Dieses Tutorial ist gedacht als Einführung wie man Modelle erstellt mit Hilfe von Python Skripten innerhalb von FreeCAD.<br /> Dieses Tutorial erklärt wie m...")
(Updating to match new version of source page)
 
(7 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
<languages/>
 
{{TutorialInfo/de
 
{{TutorialInfo/de
 
|Topic= Part Scripting - Ball Bearing #1
 
|Topic= Part Scripting - Ball Bearing #1
Line 13: Line 14:
 
Dieses Tutorial erklärt wie man ein Kugellager erstellt mittels eines CSG-Arbeitsablaufes.<br />
 
Dieses Tutorial erklärt wie man ein Kugellager erstellt mittels eines CSG-Arbeitsablaufes.<br />
 
Der Code wird ein neues FreeCAD-Dokument erstellen mit 12 einzelnen Körpern (Innerer Ring, äußerer Ring und 10 Kugeln).<br />
 
Der Code wird ein neues FreeCAD-Dokument erstellen mit 12 einzelnen Körpern (Innerer Ring, äußerer Ring und 10 Kugeln).<br />
Da Ergebnis sieht so aus:<br />
+
Das Ergebnis sieht so aus:<br />
 
<br />
 
<br />
 
[[Image:Tutorial_BallBearing01.jpg|400px]]
 
[[Image:Tutorial_BallBearing01.jpg|400px]]
  
  
===Workflow===
+
===Arbeitsablauf===
The workflow is more or less identical how you would create the part in part workbench.<br />
+
Der Arbeitsablauf ist mehr oder weniger identisch mit dem Ablauf, mit dem Sie ein Modell im Arbeitsbereich "Part" erstellen würden.<br />
Just some small differences.<br />
+
Es gibt nur wenige Unterschiede.<br />
*Create a new empty document and make it the active document
+
*Erstelle ein neues leeres Dokument und mache es zum aktiven Dokument
*Insert Cylinder
+
*Einfügen eines Zylinders
*Insert Cylinder
+
*Einfügen eines Zylinders
*Do boolean cut to get basic shape of inner ring
+
*Durchführung einer boolschen Verschneidung um die grundlegende Form des inneren Ringes zu bekommen
*Select all edges and apply a fillet
+
*Alle Kanten auswählen und einen Radius anbringen
*Insert torus
+
*Einfügen eines Torus
*Move torus into position and do a boolean cut to create the groove for the balls
+
*Bewege den Torus in die korrekte Position und führe eine boolsche Verschneidung durch um die Rille für die Kugeln zu bekommen
*Repeat all steps for getting the shape for the outer ring
+
*Wiederhole alle Schritte um den äußeren Ring zu erstellen
*Insert first ball
+
*Einfügel der ersten Kugel
*Insert other balls using math to calculate the position of the balls
+
*Einfügen der restlichen Kugeln und benutzen von Formeln um die korrekten Positionen der Kugeln zu berechnen
*Set view to axometric
+
*Wechsle in die axometrische Ansicht
*Zoom to fit all
+
*Zoom auf Alles
  
  
===Filleting edges===
+
===Kanten verrunden===
In part workbench using the GUI, you would select chamfers in the 3D view or in the menu for fillets and then apply the fillets.<br />
+
Im Arbeitsbereich Part  würde man mittels Benutzeroberfläche die Kanten in der 3D-Ansicht markieren und dann die Radien anbringen.<br />
Here we select all edges of a shape and apply fillets.<br />
+
Hier wählen wir alle Kanten eines Körpers aus und bringen die Radien an.<br />
Therefore we need to select the edges BEFORE creating the groove.
+
Deshalb müssen wir die Kanten auswählen BEVOR wir die Rille für die Kugeln herstellen.
  
  
===Notes===
+
===Bemerkungen===
This tutorial is using part primitives and boolean operations, which can be performance consuming.<br />
+
Dieses Tutorial benutzt Grundkörper und boolsche Operationen, welche sehr rechenintensiv sein können.<br />
For doing a scripted part with revolved sketches have a look at the tutorial [[Scripted Parts: Ball Bearing - Part 2]].
+
Um zu sehen, wie man einen Körper mittels rotierten Skizzen erstellt, werfen Sie bitte einen Blick auf das Tutorial [[Scripted Parts: Ball Bearing - Part 2/de]].
  
  
 
===Links===
 
===Links===
[[Scripted objects]]: The wiki page explaing the basics of scripting<br />
+
[[Scripted objects]]: Diese Wiki-Seite erklärt die Grundlagen für part scripting<br />
[[Topological data scripting]]: A tutorial for covering basics of scripting<br />
+
[[Topological data scripting]]: Ein Tutorial für die Grundlagen des part scriptings<br />
[[Scripted Parts: Ball Bearing - Part 2]]: Doing it with sketches<br />
+
[[Scripted Parts: Ball Bearing - Part 2]]: Erstellen des Modelles mittels Skizzen<br />
[http://linuxforanengineer.blogspot.de/2013/08/free-cad-bearing-script.html Bearing Script 1]: Base for this tutorial, thanks to JMG ...<br />
+
[http://linuxforanengineer.blogspot.de/2013/08/free-cad-bearing-script.html Bearing Script 1]: Basis für dieses Tutorial, vielen Dank an JMG ...<br />
  
  
 
===Code===
 
===Code===
 
{{Code|code=
 
{{Code|code=
## Ball-bearing script
+
## Ball-bearing Skript
## 11.08.2016 by r-frank (BPLRFE/LearnFreeCAD on Youtube)
+
## 11.08.2016 von r-frank (BPLRFE/LearnFreeCAD on Youtube)
## based on ball bearing script by JMG
+
## basierend auf dem ball bearing script by JMG
 
## (http://linuxforanengineer.blogspot.de/2013/08/free-cad-bearing-script.html)
 
## (http://linuxforanengineer.blogspot.de/2013/08/free-cad-bearing-script.html)
 
#
 
#
#needed for inserting primitives
+
#um Grundkoerper einzufuegen
 
import Part
 
import Part
#needed for calculating the positions of the balls
+
#um die Position der Kugeln berechnen zu koennen
 
import math
 
import math
#needed for translation of torus
+
#zum Bewegen des Torus
 
from FreeCAD import Base
 
from FreeCAD import Base
 
#
 
#
#VALUES#
+
#Werte#
#(radius of shaft/inner radius of inner ring)
+
#(Radius des Schaftes/innerer Radius des inneren Ringes)
 
R1=15.0
 
R1=15.0
#(outer radius of inner ring)
+
#(Aussenradius des Innenringes)
 
R2=25.0
 
R2=25.0
#(inner radius of outer ring)
+
#(Innenradius des Aussenringes)
 
R3=30.0
 
R3=30.0
#(outer radius of outer ring)
+
#(Aussenradius des Aussenringes)
 
R4=40.0
 
R4=40.0
#(thickness of bearing)
+
#(Dicke des Lagers)
 
TH=15.0
 
TH=15.0
#(number of balls)
+
#(Anzahl der Kugeln)
 
NBall=10
 
NBall=10
#(radius of ball)
+
#(Radius der Kugeln)
 
RBall=5.0
 
RBall=5.0
#(rounding radius for fillets)
+
#(Verrundungs-Radius)
 
RR=1
 
RR=1
#first coordinate of center of ball
+
#Erste Koordinate des Zentrums der Kugel
 
CBall=((R3-R2)/2)+R2
 
CBall=((R3-R2)/2)+R2
#second coordinate of center of ball
+
#Zweite Koordinate des Zentrums der Kugel
 
PBall=TH/2
 
PBall=TH/2
 
#
 
#
#Create new document
+
#Erstelle neues Dokument
 
App.newDocument("Unnamed")
 
App.newDocument("Unnamed")
 
App.setActiveDocument("Unnamed")
 
App.setActiveDocument("Unnamed")
Line 95: Line 96:
 
Gui.ActiveDocument=Gui.getDocument("Unnamed")
 
Gui.ActiveDocument=Gui.getDocument("Unnamed")
 
#
 
#
#Inner Ring#
+
#Innerer Ring#
 
B1=Part.makeCylinder(R1,TH)
 
B1=Part.makeCylinder(R1,TH)
 
B2=Part.makeCylinder(R2,TH)
 
B2=Part.makeCylinder(R2,TH)
 
IR=B2.cut(B1)
 
IR=B2.cut(B1)
#get edges and apply fillets
+
#Kanten auswaehlen und Radius anbringen
 
Bedges=IR.Edges
 
Bedges=IR.Edges
 
IRF=IR.makeFillet(RR,Bedges)
 
IRF=IR.makeFillet(RR,Bedges)
#create groove and show shape
+
#Rille erstellen und Koerper einblenden
 
T1=Part.makeTorus(CBall,RBall)
 
T1=Part.makeTorus(CBall,RBall)
 
T1.translate(Base.Vector(0,0,TH/2))
 
T1.translate(Base.Vector(0,0,TH/2))
Line 108: Line 109:
 
Part.show(InnerRing)
 
Part.show(InnerRing)
 
#
 
#
#Outer Ring#
+
#Aeusserer Ring#
 
B3=Part.makeCylinder(R3,TH)
 
B3=Part.makeCylinder(R3,TH)
 
B4=Part.makeCylinder(R4,TH)
 
B4=Part.makeCylinder(R4,TH)
 
OR=B4.cut(B3)
 
OR=B4.cut(B3)
#get edges and apply fillets
+
#Kanten auswaehlen und Radius anbringen
 
Bedges=OR.Edges
 
Bedges=OR.Edges
 
ORF=OR.makeFillet(RR,Bedges)
 
ORF=OR.makeFillet(RR,Bedges)
#create groove and show shape
+
#Rille erstellen und Koerper einblenden
 
T2=Part.makeTorus(CBall,RBall)
 
T2=Part.makeTorus(CBall,RBall)
 
T2.translate(Base.Vector(0,0,TH/2))
 
T2.translate(Base.Vector(0,0,TH/2))
Line 121: Line 122:
 
Part.show(OuterRing)
 
Part.show(OuterRing)
 
#
 
#
#Balls#
+
#Kugeln#
 
for i in range(NBall):
 
for i in range(NBall):
 
   Ball=Part.makeSphere(RBall)
 
   Ball=Part.makeSphere(RBall)
Line 129: Line 130:
 
   Part.show(Ball)
 
   Part.show(Ball)
 
#
 
#
#Make it pretty#
+
#Und das Ganze noch huebsch machen ...#
 
App.activeDocument().recompute()
 
App.activeDocument().recompute()
 
Gui.activeDocument().activeView().viewAxometric()
 
Gui.activeDocument().activeView().viewAxometric()
Line 136: Line 137:
  
  
 +
{{Powerdocnavi{{#translation:}}}}
 +
[[Category:Developer Documentation{{#translation:}}]]
 +
[[Category:Python Code{{#translation:}}]]
 
{{clear}}
 
{{clear}}
<languages/>
 

Latest revision as of 21:37, 23 August 2020

Other languages:
Deutsch • ‎English • ‎français • ‎italiano • ‎polski • ‎română • ‎русский
Freecad.svg Tutorium
Thema
Part Scripting - Ball Bearing #1
Niveau
Beginner
Zeit zum Abschluss
30 min
Autoren
r-frank
FreeCAD version
0.16.6706
Beispieldateien
None


Einleitung

Dieses Tutorial ist gedacht als Einführung wie man Modelle erstellt mit Hilfe von Python Skripten innerhalb von FreeCAD.
Dieses Tutorial erklärt wie man ein Kugellager erstellt mittels eines CSG-Arbeitsablaufes.
Der Code wird ein neues FreeCAD-Dokument erstellen mit 12 einzelnen Körpern (Innerer Ring, äußerer Ring und 10 Kugeln).
Das Ergebnis sieht so aus:

Tutorial BallBearing01.jpg


Arbeitsablauf

Der Arbeitsablauf ist mehr oder weniger identisch mit dem Ablauf, mit dem Sie ein Modell im Arbeitsbereich "Part" erstellen würden.
Es gibt nur wenige Unterschiede.

  • Erstelle ein neues leeres Dokument und mache es zum aktiven Dokument
  • Einfügen eines Zylinders
  • Einfügen eines Zylinders
  • Durchführung einer boolschen Verschneidung um die grundlegende Form des inneren Ringes zu bekommen
  • Alle Kanten auswählen und einen Radius anbringen
  • Einfügen eines Torus
  • Bewege den Torus in die korrekte Position und führe eine boolsche Verschneidung durch um die Rille für die Kugeln zu bekommen
  • Wiederhole alle Schritte um den äußeren Ring zu erstellen
  • Einfügel der ersten Kugel
  • Einfügen der restlichen Kugeln und benutzen von Formeln um die korrekten Positionen der Kugeln zu berechnen
  • Wechsle in die axometrische Ansicht
  • Zoom auf Alles


Kanten verrunden

Im Arbeitsbereich Part würde man mittels Benutzeroberfläche die Kanten in der 3D-Ansicht markieren und dann die Radien anbringen.
Hier wählen wir alle Kanten eines Körpers aus und bringen die Radien an.
Deshalb müssen wir die Kanten auswählen BEVOR wir die Rille für die Kugeln herstellen.


Bemerkungen

Dieses Tutorial benutzt Grundkörper und boolsche Operationen, welche sehr rechenintensiv sein können.
Um zu sehen, wie man einen Körper mittels rotierten Skizzen erstellt, werfen Sie bitte einen Blick auf das Tutorial Scripted Parts: Ball Bearing - Part 2/de.


Links

Scripted objects: Diese Wiki-Seite erklärt die Grundlagen für part scripting
Topological data scripting: Ein Tutorial für die Grundlagen des part scriptings
Scripted Parts: Ball Bearing - Part 2: Erstellen des Modelles mittels Skizzen
Bearing Script 1: Basis für dieses Tutorial, vielen Dank an JMG ...


Code

## Ball-bearing Skript
## 11.08.2016 von r-frank (BPLRFE/LearnFreeCAD on Youtube)
## basierend auf dem ball bearing script by JMG
## (http://linuxforanengineer.blogspot.de/2013/08/free-cad-bearing-script.html)
#
#um Grundkoerper einzufuegen
import Part
#um die Position der Kugeln berechnen zu koennen
import math
#zum Bewegen des Torus
from FreeCAD import Base
#
#Werte#
#(Radius des Schaftes/innerer Radius des inneren Ringes)
R1=15.0
#(Aussenradius des Innenringes)
R2=25.0
#(Innenradius des Aussenringes)
R3=30.0
#(Aussenradius des Aussenringes)
R4=40.0
#(Dicke des Lagers)
TH=15.0
#(Anzahl der Kugeln)
NBall=10
#(Radius der Kugeln)
RBall=5.0
#(Verrundungs-Radius)
RR=1
#Erste Koordinate des Zentrums der Kugel
CBall=((R3-R2)/2)+R2
#Zweite Koordinate des Zentrums der Kugel
PBall=TH/2
#
#Erstelle neues Dokument
App.newDocument("Unnamed")
App.setActiveDocument("Unnamed")
App.ActiveDocument=App.getDocument("Unnamed")
Gui.ActiveDocument=Gui.getDocument("Unnamed")
#
#Innerer Ring#
B1=Part.makeCylinder(R1,TH)
B2=Part.makeCylinder(R2,TH)
IR=B2.cut(B1)
#Kanten auswaehlen und Radius anbringen
Bedges=IR.Edges
IRF=IR.makeFillet(RR,Bedges)
#Rille erstellen und Koerper einblenden
T1=Part.makeTorus(CBall,RBall)
T1.translate(Base.Vector(0,0,TH/2))
InnerRing=IRF.cut(T1)
Part.show(InnerRing)
#
#Aeusserer Ring#
B3=Part.makeCylinder(R3,TH)
B4=Part.makeCylinder(R4,TH)
OR=B4.cut(B3)
#Kanten auswaehlen und Radius anbringen
Bedges=OR.Edges
ORF=OR.makeFillet(RR,Bedges)
#Rille erstellen und Koerper einblenden
T2=Part.makeTorus(CBall,RBall)
T2.translate(Base.Vector(0,0,TH/2))
OuterRing=ORF.cut(T2)
Part.show(OuterRing)
#
#Kugeln#
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)
#
#Und das Ganze noch huebsch machen ...#
App.activeDocument().recompute()
Gui.activeDocument().activeView().viewAxometric()
Gui.SendMsgToActiveView("ViewFit")