Scripted Parts: Ball Bearing - Part 1/pl: Difference between revisions

From FreeCAD Documentation
(Created page with "===Wprowadzenie=== Ten samouczek ma na celu wprowadzenie początkujących urzytkowników w tworzenie części za pomocą skryptów Python w programie FreeCAD.<br /> Ten samouczek będzie omawiał, jak zbudować łożysko kulkowe przy użyciu metody CSG.<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 /> <br /> 400px")
(Created page with "===Przebieg pracy=== Przebieg pracy jest mniej więcej identyczny z tym, jak tworzyłbyś część w warsztacie częściowym.<br> Tylko kilka małych różnic.<br> * Utwórz nowy pusty dokument i ustaw go jako aktywny dokument. * Wstaw Cylinder. * Wstaw Cylinder. * Wykonaj operację logiczną - wycięcia, aby uzyskać podstawowy kształt wewnętrznej obręczy. * Wybierz wszystkie krawędzie i zastosuj filet. * Wstaw torus. * Przesuń torus w odpowiednie miejsce i wykonaj...")
Line 19: Line 19:




===Workflow===
===Przebieg pracy===
Przebieg pracy jest mniej więcej identyczny z tym, jak tworzyłbyś część w warsztacie częściowym.<br>
The workflow is more or less identical how you would create the part in part workbench.<br />
Just some small differences.<br />
Tylko kilka małych różnic.<br>
* Utwórz nowy pusty dokument i ustaw go jako aktywny dokument.
*Create a new empty document and make it the active document
*Insert Cylinder
* Wstaw Cylinder.
*Insert Cylinder
* Wstaw Cylinder.
* Wykonaj operację logiczną - wycięcia, aby uzyskać podstawowy kształt wewnętrznej obręczy.
*Do boolean cut to get basic shape of inner ring
* Wybierz wszystkie krawędzie i zastosuj filet.
*Select all edges and apply a fillet
*Insert torus
* Wstaw torus.
* Przesuń torus w odpowiednie miejsce i wykonaj operację logiczną wycięcia, aby utworzyć rowek na kule.
*Move torus into position and do a boolean cut to create the groove for the balls
* Powtórz wszystkie kroki, aby uzyskać kształt zewnętrznej obręczy.
*Repeat all steps for getting the shape for the outer ring
* Wstaw pierwszą kulę.
*Insert first ball
* Wstaw inne kule, używając matematyki do obliczenia pozycji kul.
*Insert other balls using math to calculate the position of the balls
* Ustaw widok na izometryczny.
*Set view to axometric
* Przybliż, aby zmieścić wszystko.
*Zoom to fit all





Revision as of 10:05, 19 March 2024

Ćwiczenie
Temat
Skrypty części: Łożysko kulkowe - część 1
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 samouczek ma na celu wprowadzenie początkujących urzytkownikó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 metody CSG.
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 warsztacie częściowym.
Tylko kilka małych różnic.

  • Utwórz nowy pusty dokument i ustaw go jako aktywny dokument.
  • Wstaw Cylinder.
  • Wstaw Cylinder.
  • Wykonaj operację logiczną - wycięcia, aby uzyskać podstawowy kształt wewnętrznej obręczy.
  • Wybierz wszystkie krawędzie i zastosuj filet.
  • Wstaw torus.
  • Przesuń torus w odpowiednie miejsce i wykonaj operację logiczną wycięcia, aby utworzyć rowek na kule.
  • Powtórz wszystkie kroki, aby uzyskać kształt zewnętrznej obręczy.
  • Wstaw pierwszą kulę.
  • Wstaw inne kule, używając matematyki do obliczenia pozycji kul.
  • Ustaw widok na izometryczny.
  • Przybliż, aby zmieścić wszystko.


Filleting edges

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.
Here we select all edges of a shape and apply fillets.
Therefore we need to select the edges BEFORE creating the groove.


Notes

This tutorial is using part primitives and boolean operations, which can be performance consuming.
For doing a scripted part with revolved sketches have a look at the tutorial Scripted Parts: Ball Bearing - Part 2.


Links

Scripted objects: The wiki page explaing the basics of scripting
Topological data scripting: A tutorial for covering basics of scripting
Scripted Parts: Ball Bearing - Part 2: Doing it with sketches
Bearing Script 1: Base for this tutorial, thanks to 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")