Scripted Parts: Ball Bearing - Part 2/pl: Difference between revisions
(Created page with "Skrypty części: Łożysko kulkowe - część 2") |
(Created page with "===Kod=== {{Code|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/12/bearings-from-scripted-sketches.html) # #needed for doing boolean operations import Part #needed for calculating the positions of the balls import math #needed for translation and rotation of objects from FreeCAD import Base # #VALUES# #(radius of shaft/inner radius of inner ring)...") |
||
(6 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
<languages/> |
<languages/> |
||
{{TutorialInfo |
{{TutorialInfo/pl |
||
|Topic= |
|Topic= Skrypty części: Łożysko kulkowe - część 2 |
||
|Level= |
|Level= Początkujący |
||
|Time= 30 min |
|Time= 30 min |
||
|Author=r-frank |
|Author=r-frank |
||
|FCVersion=0.16.6706 |
|FCVersion=0.16.6706 |
||
|Files= |
|Files= nie dołączono |
||
}} |
}} |
||
=== |
===Wprowadzenie=== |
||
Ten poradnik ma na celu wprowadzenie początkujących użytkowników w tworzenie części za pomocą skryptów Python w programie FreeCAD.<br> |
|||
This tutorial is meant as a beginner's introduction to creating parts with python scripts within FreeCAD.<br /> |
|||
Ten samouczek będzie omawiał, jak zbudować łożysko kulkowe przy użyciu szkiców i ich wyciągnięcia przez obrót.<br> |
|||
This tutorial will cover how to build a ball bearing with a workflow that consists of creating sketches and revolving them.<br /> |
|||
Kod wygeneruje nowy dokument FreeCAD zawierający 12 kształtów ''(wewnętrzną obręcz, zewnętrzną obręcz i 10 kul/sfer)''.<br> |
|||
Będzie to wyglądać tak:<br> |
|||
It will look like this:<br /> |
|||
<br /> |
<br /> |
||
[[Image:Tutorial_BallBearing01.jpg|400px]] |
[[Image:Tutorial_BallBearing01.jpg|400px]] |
||
=== |
===Przebieg pracy=== |
||
Przebieg pracy jest mniej więcej identyczny z tym, jak tworzyłbyś część w środowisku projektowania Część.<br> |
|||
The workflow is more or less identical how you would create the part in part design workbench.<br /> |
|||
Istnieje tylko kilka drobnych różnic.<br> |
|||
Just some small differences.<br /> |
|||
*Utwórz nowy pusty dokument i ustaw go jako aktywny dokument |
|||
*Create a new empty document and make it the active document |
|||
*Narysuj podstawowy kształt zewnętrznego pierścienia składający się z czterech prostych linii i czterech łuków |
|||
*Draw the basic shape of the outer ring consisting of four straight lines and four arcs |
|||
[[Image:TutorialBallBearing_P2-Sketch.png|150px]] |
[[Image:TutorialBallBearing_P2-Sketch.png|150px]] |
||
*Połącz linie i łuki, a następnie zaktualizuj je do jednego ciągu. |
|||
*Connect the lines and arcs and upgrade them to one single wire |
|||
*Zaktualizuj ciąg do powierzchni. |
|||
*Upgrade the wire to a face |
|||
*Obróć powierzchnię, aby uzyskać kształt. |
|||
*Revolve the face to get a shape |
|||
*Narysuj koło. |
|||
*Draw a circle |
|||
*Zaktualizuj koło do ciągu. |
|||
*Upgrade circle to wire |
|||
*Zaktualizuj ciąg do powierzchni. |
|||
*Upgrade wire to face |
|||
*Obróć powierzchnię i zastosuj odcięcie funkcją logiczną, aby uzyskać rowek w zewnętrznym pierścieniu. |
|||
*Revolve face and apply boolean cut to obtain groove in outer ring |
|||
*Narysuj podstawowy kształt wewnętrznego pierścienia składający się z czterech prostych linii i czterech łuków. |
|||
*Draw the basic shape of the inner ring consisting of four straight lines and four arcs |
|||
*Połącz linie i łuki, a następnie zaktualizuj je do jednej polilinii. |
|||
*Connect the lines and arcs and upgrade them to one single wire |
|||
*Zaktualizuj ciąg do powierzchni. |
|||
*Upgrade the wire to a face |
|||
*Obróć powierzchnię, aby uzyskać kształt. |
|||
*Revolve the face to get a shape |
|||
*Narysuj koło. |
|||
*Draw a circle |
|||
*Zaktualizuj koło do ciągu. |
|||
*Upgrade circle to wire |
|||
*Zaktualizuj ciąg do powierzchni. |
|||
*Upgrade wire to face |
|||
*Obróć powierzchnię i zastosuj odcięcie funkcją logiczną, aby uzyskać rowek wewnętrznym pierścieniu. |
|||
*Revolve face and apply boolean cut to obtain groove in inner ring |
|||
*Wstaw kule tak samo jak w części 1 ''(ze względu na efektywność)'' |
|||
*Insert balls with same workflow as in part 1 (because of effectiveness) |
|||
*Ustaw widok na aksometryczny. |
|||
*Set view to axometric |
|||
*Powiększ, aby wszystko zmieściło się na ekranie. |
|||
*Zoom to fit all |
|||
=== |
===Tworzenie rowka=== |
||
Narysowanie łuku wymaga podania trzech punktów lub kąta początkowego i końcowego.<br> |
|||
Drawing an arc needs either three points or a start angle and an end angle.<br /> |
|||
W narzędziu do rysowania będziemy korzystać z wiązań, aby zdefiniować punkt początkowy i punkt końcowy łuku.<br> |
|||
In the sketcher we would use constraints to define the start point and the end point of the arc.<br /> |
|||
Ponieważ nie możemy tego zrobić w skrypcie, narysujemy zaokrąglony prostokąt i dokonamy jego obrotu, aby uzyskać podstawowy "kształt pierścienia".<br> |
|||
Since we can't do this in scripting, we draw a rounded rectangle and revolve it to get a basic "ring shape".<br /> |
|||
Następnie narysujemy okrąg i dokonamy jego obrotu, aby uzyskać geometrię rowka.<br> |
|||
Then we draw a circle and revolve it to get the geometry of the groove.<br /> |
|||
Następnie zastosujemy odcięcie operacją logiczną do dwóch obrotowych kształtów i uzyskamy kompletny kształt wewnętrznego / zewnętrznego pierścienia.<br> |
|||
Then we apply a boolean cut to the two revolved shapes and we have the complete shape of the inner/outer ring.<br /> |
|||
=== |
===Wstawianie kul=== |
||
Prawidłowy sposób wstawiania kul przy użyciu narzędzia do rysowania byłby następujący:<br> |
|||
The correct sketcher-based workflow of inserting the balls would be:<br /> |
|||
*Narysuj łuk ''(półkole)'' z ośrodkiem identycznym z początkiem układu współrzędnych i narysuj linię zamykającą "otwartą" stronę łuku. |
|||
*Draw an arc (semi-circle) with center being identical with the origin and draw a line closing the "open" side of the arc |
|||
*Przekształć oba elementy w polilinię, podnieś do postaci twarzy, obróć wokół osi z, aby uzyskać kształt kuli. |
|||
*Convert the two elements to a wire, upgrade to a face, revolve around z-axis to get a ball shape |
|||
*Użyj polecenia "przesuń", aby przenieść kulę w odpowiednie miejsce. |
|||
*Use "translate" command to move the ball into correct position |
|||
*Powtórz powyższe kroki dziewięć razy, wykorzystując funkcję matematyczną do tworzenia i pozycjonowania kolejnych kul. |
|||
*Repeat the above steps nine times involving math function to create and position the other balls |
|||
*Tę operację powtarzania można zaprogramować za pomocą pętli. |
|||
*This repeat-operation could be programmed with a loop |
|||
<br |
<br> |
||
Jednakże ten sposób nie jest efektywny, wstawianie podstawowych kształtów i ich pozycjonowanie jest łatwiejsze i szybsze w tym przypadku.<br> |
|||
Now this is not effective, inserting primitives and positioning them is easier and faster in this case.<br /> |
|||
Więc używamy tego samego sposobu co w "[[Scripted_Parts:_Ball_Bearing_-_Part_1/pl|Skrypty części: Łożysko kulkowe - część 1]]". |
|||
So we use the same method as in "[[Scripted Parts: Ball Bearing - Part 1]]". |
|||
=== |
===Odnośniki internetowe=== |
||
[[Scripted_objects/pl|Obiekty tworzone skryptami]]: Strona Wiki wyjaśniająca podstawy tworzenia skryptów<br> |
|||
[[Scripted objects]]: The wiki page explaining the basics of scripting<br /> |
|||
[[Topological_data_scripting/pl|Skrypty danych topologicznych]]: Poradnik odsłaniający podstawy tworzenia skryptów<br> |
|||
[[Topological data scripting]]: A tutorial for covering basics of scripting<br /> |
|||
[[Scripted_Parts:_Ball_Bearing_-_Part_1/pl|Skrypty części: Łożysko kulkowe - część 1]]: Wykonanie za pomocą szkiców<br> |
|||
[[Scripted Parts: Ball Bearing - Part 1]]: Doing it with part primitives<br /> |
|||
[http://linuxforanengineer.blogspot.de/2013/12/bearings-from-scripted-sketches.html |
[http://linuxforanengineer.blogspot.de/2013/12/bearings-from-scripted-sketches.html Łożyska ze szkiców tworzonych skryptami]: Baza dla tego poradnika, podziękowania dla JMG ...<br> |
||
=== |
===Kod=== |
||
{{Code|code= |
{{Code|code= |
||
## Ball-bearing script |
## Ball-bearing script |
Latest revision as of 12:16, 19 March 2024
Ćwiczenie |
Temat |
---|
Skrypty części: Łożysko kulkowe - część 2 |
Poziom trudności |
Początkujący |
Czas wykonania |
30 min |
Autorzy |
r-frank |
Wersja FreeCAD |
0.16.6706 |
Pliki z przykładami |
nie dołączono |
Zobacz również |
- |
Wprowadzenie
Ten poradnik ma na celu wprowadzenie początkujących użytkowników w tworzenie części za pomocą skryptów Python w programie FreeCAD.
Ten samouczek będzie omawiał, jak zbudować łożysko kulkowe przy użyciu szkiców i ich wyciągnięcia przez obrót.
Kod wygeneruje nowy dokument FreeCAD zawierający 12 kształtów (wewnętrzną obręcz, zewnętrzną obręcz i 10 kul/sfer).
Będzie to wyglądać tak:
Przebieg pracy
Przebieg pracy jest mniej więcej identyczny z tym, jak tworzyłbyś część w środowisku projektowania Część.
Istnieje tylko kilka drobnych różnic.
- Utwórz nowy pusty dokument i ustaw go jako aktywny dokument
- Narysuj podstawowy kształt zewnętrznego pierścienia składający się z czterech prostych linii i czterech łuków
- Połącz linie i łuki, a następnie zaktualizuj je do jednego ciągu.
- Zaktualizuj ciąg do powierzchni.
- Obróć powierzchnię, aby uzyskać kształt.
- Narysuj koło.
- Zaktualizuj koło do ciągu.
- Zaktualizuj ciąg do powierzchni.
- Obróć powierzchnię i zastosuj odcięcie funkcją logiczną, aby uzyskać rowek w zewnętrznym pierścieniu.
- Narysuj podstawowy kształt wewnętrznego pierścienia składający się z czterech prostych linii i czterech łuków.
- Połącz linie i łuki, a następnie zaktualizuj je do jednej polilinii.
- Zaktualizuj ciąg do powierzchni.
- Obróć powierzchnię, aby uzyskać kształt.
- Narysuj koło.
- Zaktualizuj koło do ciągu.
- Zaktualizuj ciąg do powierzchni.
- Obróć powierzchnię i zastosuj odcięcie funkcją logiczną, aby uzyskać rowek wewnętrznym pierścieniu.
- Wstaw kule tak samo jak w części 1 (ze względu na efektywność)
- Ustaw widok na aksometryczny.
- Powiększ, aby wszystko zmieściło się na ekranie.
Tworzenie rowka
Narysowanie łuku wymaga podania trzech punktów lub kąta początkowego i końcowego.
W narzędziu do rysowania będziemy korzystać z wiązań, aby zdefiniować punkt początkowy i punkt końcowy łuku.
Ponieważ nie możemy tego zrobić w skrypcie, narysujemy zaokrąglony prostokąt i dokonamy jego obrotu, aby uzyskać podstawowy "kształt pierścienia".
Następnie narysujemy okrąg i dokonamy jego obrotu, aby uzyskać geometrię rowka.
Następnie zastosujemy odcięcie operacją logiczną do dwóch obrotowych kształtów i uzyskamy kompletny kształt wewnętrznego / zewnętrznego pierścienia.
Wstawianie kul
Prawidłowy sposób wstawiania kul przy użyciu narzędzia do rysowania byłby następujący:
- Narysuj łuk (półkole) z ośrodkiem identycznym z początkiem układu współrzędnych i narysuj linię zamykającą "otwartą" stronę łuku.
- Przekształć oba elementy w polilinię, podnieś do postaci twarzy, obróć wokół osi z, aby uzyskać kształt kuli.
- Użyj polecenia "przesuń", aby przenieść kulę w odpowiednie miejsce.
- Powtórz powyższe kroki dziewięć razy, wykorzystując funkcję matematyczną do tworzenia i pozycjonowania kolejnych kul.
- Tę operację powtarzania można zaprogramować za pomocą pętli.
Jednakże ten sposób nie jest efektywny, wstawianie podstawowych kształtów i ich pozycjonowanie jest łatwiejsze i szybsze w tym przypadku.
Więc używamy tego samego sposobu co w "Skrypty części: Łożysko kulkowe - część 1".
Odnośniki internetowe
Obiekty tworzone skryptami: Strona Wiki wyjaśniająca podstawy tworzenia skryptów
Skrypty danych topologicznych: Poradnik odsłaniający podstawy tworzenia skryptów
Skrypty części: Łożysko kulkowe - część 1: Wykonanie za pomocą szkiców
Łożyska ze szkiców tworzonych skryptami: Baza dla tego poradnika, podziękowania dla JMG ...
Kod
## 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/12/bearings-from-scripted-sketches.html)
#
#needed for doing boolean operations
import Part
#needed for calculating the positions of the balls
import math
#needed for translation and rotation of objects
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")
#
#Lines for basic shape of outer ring
L1o=Part.makeLine((R4,0,TH-RR),(R4,0,RR))
L2o=Part.makeLine((R4-RR,0,0),(R3+RR,0,0))
L3o=Part.makeLine((R3,0,RR),(R3,0,TH-RR))
L4o=Part.makeLine((R3+RR,0,TH),(R4-RR,0,TH))
#Corner rounding for basic shape of outer ring
A1o=Part.makeCircle(RR,Base.Vector(R4-RR,0,RR),Base.Vector(0,1,0),0,90)
A2o=Part.makeCircle(RR,Base.Vector(R3+RR,0,RR),Base.Vector(0,1,0),90,180)
A3o=Part.makeCircle(RR,Base.Vector(R3+RR,0,TH-RR),Base.Vector(0,1,0),180,270)
A4o=Part.makeCircle(RR,Base.Vector(R4-RR,0,TH-RR),Base.Vector(0,1,0),270,360)
#Connect Lines and arcs to make wire and upgrade to face, revolve and apply cut to obtain groove
OR=Part.Wire([L1o,A1o,L2o,A2o,L3o,A3o,L4o,A4o])
OR=Part.Face(OR)
OR=OR.revolve(Base.Vector(0,0,1),Base.Vector(0,0,360))
C1=Part.makeCircle(RBall,Base.Vector(R2+(R3-R2)/2,0,TH/2),Base.Vector(0,1,0),0,360)
GRo=Part.Wire([C1])
GRo=Part.Face(GRo)
GRo=GRo.revolve(Base.Vector(0,0,1),Base.Vector(0,0,360))
OR=OR.cut(GRo)
Part.show(OR)
#
#Lines for basic shape of inner ring
L1i=Part.makeLine((R2,0,TH-RR),(R2,0,RR))
L2i=Part.makeLine((R2-RR,0,0),(R1+RR,0,0))
L3i=Part.makeLine((R1,0,RR),(R1,0,TH-RR))
L4i=Part.makeLine((R1+RR,0,TH),(R2-RR,0,TH))
#Corner rounding for basic shape of inner ring
A1i=Part.makeCircle(RR,Base.Vector(R2-RR,0,RR),Base.Vector(0,1,0),0,90)
A2i=Part.makeCircle(RR,Base.Vector(R1+RR,0,RR),Base.Vector(0,1,0),90,180)
A3i=Part.makeCircle(RR,Base.Vector(R1+RR,0,TH-RR),Base.Vector(0,1,0),180,270)
A4i=Part.makeCircle(RR,Base.Vector(R2-RR,0,TH-RR),Base.Vector(0,1,0),270,360)
#Connect Lines and arcs to make wire and upgrade to face, revolve and apply cut to obtain groove
IR=Part.Wire([L1i,A1i,L2i,A2i,L3i,A3i,L4i,A4i])
IR=Part.Face(IR)
IR=IR.revolve(Base.Vector(0,0,1),Base.Vector(0,0,360))
C2=Part.makeCircle(RBall,Base.Vector(R2+(R3-R2)/2,0,TH/2),Base.Vector(0,1,0),0,360)
GRi=Part.Wire([C2])
GRi=Part.Face(GRi)
GRi=GRi.revolve(Base.Vector(0,0,1),Base.Vector(0,0,360))
IR=IR.cut(GRi)
Part.show(IR)
#
#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")
- Tworzenie skryptów FreeCAD: Python, Wprowadzenie do środowiska Python, Poradnik: Tworzenie skryptów Python, Podstawy tworzenia skryptów FreeCAD
- Moduły: Moduły wbudowane, Jednostki miar, Ilość
- Środowiska pracy: Tworzenie Środowiska pracy, Polecenia Gui, Polecenia, Instalacja większej liczby Środowisk pracy
- Siatki i elementy: Skrytpy w Środowisku Siatek, v, Konwerska Mesh na Part, PythonOCC
- Obiekty parametryczne: Obiekty tworzone skryptami, Obsługa obrazu (Ikonka niestandardowa w widoku drzewa)
- Scenegraph: Coin (Inventor) scenegraph, Pivy
- Interfejs graficzny: Stworzenie interfejsu, Kompletne stworzenie interfejsu w środowisku Python (1, 2, 3, 4, 5), PySide, PySide examples początkujący, średniozaawansowany, zaawansowany
- Makrodefinicje: Makrodefinicje, Instalacja makrodefinicji
- Osadzanie programu: Osadzanie programu FreeCAD, Osadzanie GUI FreeCAD
- Pozostałe: Wyrażenia, Wycinki kodu, Funkcja kreślenia linii, Biblioteka matematyczna FreeCAD dla wektorów (deprecated)
- Węzły użytkowników: Centrum użytkownika, Centrum Power użytkowników, Centrum programisty