Skrypty części: Łożysko kulkowe - część 2
| Temat |
|---|
| Skryptowe 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ż |
| Skryptowe części: Łożysko kulkowe - Część 1 |
Wprowadzenie
Ten poradnik ma na celu wprowadzenie początkujących użytkowników w tworzenie części za pomocą skryptów Pythona 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:
Przepływ pracy
Przebieg pracy jest mniej więcej taki sam jak podczas tworzenia części w środowisku Projekt Części. Występuje jedynie kilka niewielkich różnic.
- Utwórz nowy pusty dokument i ustaw go jako aktywny.
- Narysuj podstawowy kształt pierścienia zewnętrznego, składający się z czterech odcinków i czterech łuków.
. - Połącz odcinki i łuki, a następnie połącz je w jeden zamknięty kontur.
- Zamień kontur w ścianę.
- Wykonaj obrót ściany, aby utworzyć bryłę.
- Narysuj okrąg.
- Zamień okrąg w kontur.
- Zamień kontur w ścianę.
- Wykonaj obrót ściany i zastosuj operację wycięcia Boole'a, aby utworzyć rowek w pierścieniu zewnętrznym.
- Narysuj podstawowy kształt pierścienia wewnętrznego, składający się z czterech odcinków i czterech łuków.
- Połącz odcinki i łuki, a następnie połącz je w jeden zamknięty kontur.
- Zamień kontur w ścianę.
- Wykonaj obrót ściany, aby utworzyć bryłę.
- Narysuj okrąg.
- Zamień okrąg w kontur.
- Zamień kontur w ścianę.
- Wykonaj obrót ściany i zastosuj operację wycięcia Boole'a, aby utworzyć rowek w pierścieniu wewnętrznym.
- Wstaw kulki, korzystając z tego samego sposobu postępowania co w części 1 (ze względu na wydajność).
- Ustaw widok aksonometryczny.
- Dopasuj powiększenie tak, aby cały model był widoczny.
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 kulek
Poprawny sposób wstawiania kulek z wykorzystaniem Szkicownika wygląda następująco:
- Narysuj łuk (półokrąg), którego środek pokrywa się z początkiem układu współrzędnych, a następnie narysuj odcinek zamykający otwartą stronę łuku.
- Zamień oba elementy w kontur, przekształć go w ścianę, a następnie wykonaj obrót wokół osi Z, aby utworzyć bryłę kulki.
- Użyj polecenia "Przesuń", aby przenieść kulkę we właściwe położenie.
- Powtórz powyższe kroki dziewięć razy, wykorzystując funkcje matematyczne do wyznaczenia położenia pozostałych kulek.
- Tę powtarzalną operację można zautomatyzować za pomocą pętli.
Nie jest to jednak najbardziej efektywne rozwiązanie. W tym przypadku łatwiej i szybciej jest wstawiać prymitywy i odpowiednio ustawiać ich położenie. Dlatego zastosujemy tę samą metodę co w artykule Skryptowe części: Łożysko kulkowe - Część 1.
Łącza
- Obiekty tworzone skryptami: strona wiki wyjaśniająca podstawy tworzenia skryptów.
- Tworzenie skryptów z wykorzystaniem danych topologicznych: samouczek omawiający podstawy tworzenia skryptów.
- Skryptowe części: Łożysko kulkowe - Część 1: tworzenie łożyska z wykorzystaniem prymitywów Części.
- Łożyska tworzone za pomocą skryptów i szkiców: materiał stanowiący podstawę tego samouczka. 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