Code:

T=Part.makeTorus(R1,R2)

This instruction will create a torus with big radius R1 and small radius R2 at (0,0,0).

To move it to its position in the bearing:

V=(0,0,TH/2)

TH/2 because track is in the middle of the bearing z axis (remember TH variable defined in previous post "FreeCad Bearing Script")

Show:

Part.show(T)

With this you have a groove with a radius R2 a radial distance R1 just in middle of the bearing, a little improvement to our bearing.

**Added**

**: Round edges:**

**After a bit of research I found how to select edges and how to fillet them, just two commands.**

First, we create a new variable that I`ve called RR and contains the value of the rounding radius.

RR=1

To explain the commands I am going to use a box object:

B=Part.makeBox(30,30,30)

Do not create a very tiny box or making fillet will crash freecad.

Getting the box edges (all) and store them in Bedges new variable:

Bedges=B.Edges

Fillet:

BFillet=B.makeFillet(RR,Bedges)

This instructions creates BFillet object that is our B box with all its edges rounded with an RR radius.

Part.show(BFillet)

This should be the result:

How can we apply this to our bearing? (understand "FreeCad Bearing Script 1" needed)

This way:

Create inner ring:

B1=Part.makeCylinder(R1,TH)

B2=Part.makeCylinder(R2,TH)

IR=B2.cut(B1)

Now just round the ring:

FI=IR.Edges

IR=IR.makeFillet(RR,FI)

And its done!

Part.show(IR)

**Full code:**

**import Part**

import math

#VARIABLE VALUES#

R1=15.0

R2=25.0

R3=30.0

R4=40.0

TH=15.0

NBall=10

RBall=5.0

RR=1

#Program#

B1=Part.makeCylinder(R1,TH)

B2=Part.makeCylinder(R2,TH)

IR=B2.cut(B1)

FI=IR.Edges

IR=IR.makeFillet(RR,FI)

B3=Part.makeCylinder(R3,TH)

B4=Part.makeCylinder(R4,TH)

OR=B4.cut(B3)

FO=OR.Edges

OR=OR.makeFillet(RR,FO)

T1=Part.makeTorus(R2+(RBall/2),RBall)

VT=(0,0,TH/2)

T1.translate(VT)

IR=IR.cut(T1)

OR=OR.cut(T1)

Part.show(IR)

Part.show(OR)

CBall=((R3-R2)/2)+R2

PBall=TH/2

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)

**The output of that command is the picture at the beginning of this post.**

Added:

**Video of the script working**

Next things to do are grouping all entities in the same object and create a standard bearing generator script.

I have realized that there is no way (at least graphically) to create section views or cuts to 3d parts. A very useful tool to show internals. Also I have not found at the moment any way to measure distance or angles of points, edges, axis... Maybe in the next release.

Bye!