Skip to content

Material: Add wood cards with machining model#16021

Merged
chennes merged 2 commits intoFreeCAD:mainfrom
jbaehr:material-add-machining-wood-cards
Aug 26, 2024
Merged

Material: Add wood cards with machining model#16021
chennes merged 2 commits intoFreeCAD:mainfrom
jbaehr:material-add-machining-wood-cards

Conversation

@jbaehr
Copy link
Contributor

@jbaehr jbaehr commented Aug 23, 2024

This is a follow up to #15910, which introduced machining model data for various classes of metals. This PR now provides data for various types of woods and engineed wood products.

I got the data from the German text book "Zerspanung von Holz und Holzwerkstoffen", ISBN 978-3-446-47769-8, 2. Edition 2023. However, the author did not perform the cutting experiments but again cites "Sägen Fräsen Hobeln Bohren, Die Spanung von Holz und ihre Werkzeuge" from Bernhard Ettelt; DRW-Verlag Stuttgart; 1987".
Usage of this data for our purpose is legal as facts are not protected by copyright according to German law.
A comprehensive summary is published by the German federal ministry of education an research: “Urheberrecht in der Wissenschaft”, Page 32. (There is an official English translation available, unfortunately not as detailed as the original.)

Note that there is not that much consent about the cutting force calculation for wood as there is for metals. I chose to use Ettelt's model as it is compatible with what our machinability model (cf #14460) requests and thus allows a single implementation in FreeCAD to handle metals and woods alike.

Here is an example of how to use the data to calculate the required cutting forces, spindle speed, power and torque as well as horizontal feed for contour milling:
(to fully integrate this into FC, we need to extend the tool bits with some additional properties, but that's another story)

from math import sin, cos, acos, tan, atan, sqrt
from math import degrees, radians, pi
import Materials;

materialManager = Materials.MaterialManager()
wood = materialManager.getMaterial('ba2474ee-f62c-45f5-b388-823ea105847f')
wood.Name
wood.Description

ToolDiameter = FreeCAD.Units.Quantity('3 mm')
ToolNumberOfFlutes = 2
ToolRakeAngle = FreeCAD.Units.Quantity('30°')
ToolHelixAngle = FreeCAD.Units.Quantity('15°')

ToolMaxChipLoad = FreeCAD.Units.Quantity('0.030 mm') # not a tool setting; differs per material! (ToolMaxTorque would be nice but no vendor specifies this. And for soft materials large chips jam the bit before max torque is reached)

ae = FreeCAD.Units.Quantity('3 mm') # width of cut (radial)
ap = FreeCAD.Units.Quantity('5 mm') # depth of cut (axial)

kc11 = FreeCAD.Units.Quantity(wood.PhysicalProperties['UnitCuttingForce'])
h0 = FreeCAD.Units.Quantity('1 mm') # unit chip thickness, per definition 1mm for k_c1.1
mc = float(wood.PhysicalProperties['ChipThicknessExponent'])

# project angle: https://math.stackexchange.com/questions/2207665/projecting-an-angle-from-one-plane-to-another-plane
# not really worth taking the helix into account here; below 40° the effect is neglectable
gamma_eff = degrees(atan(tan(ToolRakeAngle.getValueAs("rad")/cos(ToolHelixAngle.getValueAs("rad")))))
gamma = ToolRakeAngle.getValueAs("deg")
Kg = 1 - 0.01 * gamma_eff # correction factor for rake angle

kapr = radians(90) # straight milling cutter, i.e. chamfer=90° aka no chamfer

D = ToolDiameter

phie = acos(1 - (2 * ae / D)) # engangement angle

# honor chip-thinning: calculate fz from h_max when phi_e < 90°
hmax = ToolMaxChipLoad # maximum undeformed chip thickness
if ae >  D:
    raise ValueError("Width of cut must not exceed the tool diameter")
elif ae >= D/2:
    fz = hmax # feed per tooth
else:
    # due to the curvature of the cutter's cross section (i.e. a circle with diameter D)
    # we must increase the feed per tooth to still reach h_max for shallow width of cut (radial)
    # reference: https://www.machiningdoctor.com/calculators/chip-thinning-calculator/
    fz = hmax  / sqrt(1 - (1 - 2*ae/D)**2)

Sb = D * pi * (phie / (2*pi)) # chip arc length
hm = fz * (ae/Sb) * sin(kapr) # mean undeformed chip thickness using Cavalieri's principle

Kw = 1.2 # correction factor for tool wear: 1 for new sharp tools, 1.2 for used tools, 1.5 for dull tools that need to be replaced

kc = kc11 * (hm/h0)**-mc * Kg * Kw # specific cutting force

Fcz = ap * hm * kc # cutting force per flute

z = ToolNumberOfFlutes

ze = phie * z / (2*pi) # engaged flutes

Fc = Fcz * ze # cutting force

vc_set = FreeCAD.Units.Quantity(wood.PhysicalProperties['SurfaceSpeedCarbide'])
vc_set.getValueAs("m/min")

n_set = vc_set / (pi * D) # spindle speed
n_set.getValueAs("1/min")

n_max = FreeCAD.Units.Quantity("30000/min")
n = min(n_set, n_max)
n.getValueAs("1/min")

vc = n * (pi * D)
vc.getValueAs("m/min")

Pc = Fc * vc # mechanical cutting power

eff = 0.85 # machine efficiency: 
P = Pc / eff # electrical spindle power
P.getValueAs("kW")

Mc = Fc * D / 2 # cutting torque (maybe better base this on h_max instead of h_mean?)
Mc.getValueAs("Nm")

vf = n * z * fz # feed rate
vf.getValueAs("mm/min")

The existing "Wood-Generic" material was only rendered in the default
gray, which is now fixed. I'm aware that wood comes in may different
shades, and the current choice of a yellowish brown is arbitrary.
@github-actions github-actions bot added the Mod: Materials Materials related label Aug 23, 2024
@maxwxyz maxwxyz added this to the 1.0 milestone Aug 23, 2024
With PR FreeCAD#14460 the "machinability" model was introduced.
This commits adds material cards with complete machining model data
for various types of woods and engineed wood products.
The data comes from the German text book "Zerspanung von Holz und
Holzwerkstoffen", ISBN 978-3-446-47769-8, 2. Edition 2023,
https://www.hanser-fachbuch.de/fachbuch/artikel/9783446477698
Usage of this data for our purpose is legal as facts are not protected by
copyright according to German law.
@jbaehr jbaehr force-pushed the material-add-machining-wood-cards branch from 33e7d77 to bb01ec7 Compare August 23, 2024 19:58
@chennes chennes merged commit 4204ad3 into FreeCAD:main Aug 26, 2024
@prokoudine
Copy link
Contributor

prokoudine commented Aug 26, 2024

@jbaehr Is there an equivalent of the books that you used for materials like cardboard? Deutsch ist ok :)

P.S. Perhaps https://www.hanser-fachbuch.de/fachbuch/artikel/9783446474819?number=978-3-446-47481-9 ? Do you think it may have data for material cards?

@jbaehr
Copy link
Contributor Author

jbaehr commented Aug 26, 2024

Is there an equivalent of the books that you used for materials like cardboard?

I have not performed any research for paper-based materials yet. But from my (selective) perception, cutting cardboard by chip removal is rather uncommon...

P.S. Perhaps https://www.hanser-fachbuch.de/fachbuch/artikel/9783446474819?number=978-3-446-47481-9 ? Do you think it may have data for material cards?

I can check whether it's available in my library. From a quick glance at the index (freely available as part of the "Leseprobe" using your link), there are at least entries for cutting speed and cutting force. Disclaimer: Machining cardboard is not by primary interest, so I won't invest much time (or even money) here.

@prokoudine
Copy link
Contributor

cutting cardboard by chip removal is rather uncommon...

I think I should have mentioned that cardboard is interesting in the context of the Sheet Metal workbench rather than the CAM workbench.

I can check whether it's available in my library.

Only if you have the time, thanks.

@jbaehr
Copy link
Contributor Author

jbaehr commented Aug 26, 2024

I think I should have mentioned that cardboard is interesting in the context of the Sheet Metal workbench

So which information are you after, then? bending forces, k-factor, ...? can you please provide an example of another material where we have the required information, or even better: a fully described material model? I'm quite inexperienced in this area...

I can check whether it's available in my library.

Only if you have the time, thanks.

It is available -- I just ordered it. let's see what this brings :-)

@prokoudine
Copy link
Contributor

I may have jumped the gun too soon here.

@shaise, is there a material definition required for SheetMetal? Or is it too early?

@jbaehr
Copy link
Contributor Author

jbaehr commented Aug 31, 2024

Perhaps https://www.hanser-fachbuch.de/fachbuch/artikel/9783446474819?number=978-3-446-47481-9 ?

I can check whether it's available in my library.

Only if you have the time, thanks.

It is available -- I just ordered it. let's see what this brings :-)

So I had a look. It goes very deep into many aspects, including cutting and folding. However, while there is some application of machining (e.g. in book production) and sawing (e.g. for cutting toilette paper rolls to length), there is nothing of interest for FreeCAD's material system for the CAM WB.

Regarding the SheetMetal WB, I don't know whether the knowledge of this book applies here or whether (corrugated or not) paper/cardboard requires a completely different folding model than metals. Could be interesting for someone creating a CardboardBox-WB, but I'm not that guy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Mod: Materials Materials related

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants