Add brake disc to samples. (#7059)
* Add brake disc. * Update kcl-samples simulation test output * Update public/kcl-samples/brake-rotor/main.kcl Co-authored-by: Adam Chalmers <adam.chalmers@zoo.dev> * Update public/kcl-samples/brake-rotor/main.kcl Co-authored-by: Adam Chalmers <adam.chalmers@zoo.dev> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> --------- Signed-off-by: Jess Frazelle <github@jessfraz.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Adam Chalmers <adam.chalmers@zoo.dev> Co-authored-by: Jess Frazelle <jessfraz@users.noreply.github.com> Co-authored-by: Jess Frazelle <github@jessfraz.com>
This commit is contained in:
@ -37,6 +37,8 @@ When you submit a PR to add or modify KCL samples, images will be generated and
|
||||
[](bottle/main.kcl)
|
||||
#### [bracket](bracket/main.kcl) ([screenshot](screenshots/bracket.png))
|
||||
[](bracket/main.kcl)
|
||||
#### [brake-rotor](brake-rotor/main.kcl) ([screenshot](screenshots/brake-rotor.png))
|
||||
[](brake-rotor/main.kcl)
|
||||
#### [car-wheel-assembly](car-wheel-assembly/main.kcl) ([screenshot](screenshots/car-wheel-assembly.png))
|
||||
[](car-wheel-assembly/main.kcl)
|
||||
#### [cold-plate](cold-plate/main.kcl) ([screenshot](screenshots/cold-plate.png))
|
||||
|
||||
179
public/kcl-samples/brake-rotor/main.kcl
Normal file
179
public/kcl-samples/brake-rotor/main.kcl
Normal file
@ -0,0 +1,179 @@
|
||||
// A 320mm vented brake disc (rotor), with straight vanes, 30mm thick. The disc bell should accommodate 5 M12 wheel studs on a 114.3mm pitch circle diameter.
|
||||
|
||||
|
||||
|
||||
|
||||
@settings(defaultLengthUnit = mm)
|
||||
|
||||
// Define parameters.
|
||||
dDisc = 320
|
||||
dPitchCircle = 114.3
|
||||
dBore = 64
|
||||
nStuds = 5
|
||||
dStudDrilling = 12.5 // M12
|
||||
hFrictionSurface = 60
|
||||
tDiscHalf = 10
|
||||
|
||||
// Vent parameters.
|
||||
tVent = 10
|
||||
wVent = 6
|
||||
rVentFillet = 2
|
||||
nVentBosses = 36
|
||||
|
||||
// Drilling parameters.
|
||||
dDrillDia = 6
|
||||
aBase = 90
|
||||
aSweep = 30
|
||||
nArcs = 12
|
||||
|
||||
// Bell parameters.
|
||||
aDraftBell = 5
|
||||
tBell = 5 // Wall thickness.
|
||||
hBellAboveDiscFace = 40
|
||||
hBellSubflush = 4
|
||||
wUndercut = 8
|
||||
|
||||
fn drillHole(activeSketch, t) {
|
||||
// Sketch a vent hole at line parameter value t on an arc drawn across the disc surface.
|
||||
rInner = dDisc / 2 - hFrictionSurface
|
||||
rOuter = dDisc / 2
|
||||
|
||||
aStart = aBase
|
||||
aEnd = aBase - aSweep
|
||||
|
||||
// Linear interpolation of radius.
|
||||
rCurrent = rInner + t * (rOuter - rInner)
|
||||
|
||||
// Linear interpolation of angle.
|
||||
aCurrent = aStart + t * (aEnd - aStart)
|
||||
|
||||
// Calculate position.
|
||||
xCenter = rCurrent * cos(aCurrent)
|
||||
yCenter = rCurrent * sin(aCurrent)
|
||||
|
||||
// Draw.
|
||||
drillCircle = circle(activeSketch, center = [xCenter, yCenter], radius = dDrillDia / 2)
|
||||
return drillCircle
|
||||
}
|
||||
|
||||
fn createDiscHalf(plane, dDiscParam, hFrictionSurfaceParam, tDiscHalfParam) {
|
||||
// Create a disc half with a vent hole pattern.
|
||||
sketchFace = startSketchOn(plane)
|
||||
profileFace = circle(sketchFace, center = [0, 0], radius = dDiscParam / 2)
|
||||
|> subtract2d(tool = circle(sketchFace, center = [0, 0], radius = dDiscParam / 2 - hFrictionSurfaceParam))
|
||||
|
||||
// Create three circles at t = 0, 0.5, and 1
|
||||
hole1 = drillHole(activeSketch = sketchFace, t = 0.2)
|
||||
hole2 = drillHole(activeSketch = sketchFace, t = 0.5)
|
||||
hole3 = drillHole(activeSketch = sketchFace, t = 0.8)
|
||||
|
||||
// Pattern and cut.
|
||||
holes = patternCircular2d(
|
||||
[hole1, hole2, hole3],
|
||||
instances = nArcs,
|
||||
center = [0, 0],
|
||||
arcDegrees = 360,
|
||||
rotateDuplicates = true,
|
||||
)
|
||||
profileDrilled = subtract2d(profileFace, tool = holes)
|
||||
|
||||
// Extrude.
|
||||
discHalf = extrude(profileFace, length = tDiscHalfParam)
|
||||
return discHalf
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
// Create inboard half.
|
||||
discInboard = createDiscHalf(
|
||||
plane = XY,
|
||||
dDiscParam = dDisc,
|
||||
hFrictionSurfaceParam = hFrictionSurface,
|
||||
tDiscHalfParam = tDiscHalf,
|
||||
)
|
||||
|
||||
// Create vents.
|
||||
planeVent = offsetPlane(XY, offset = tDiscHalf)
|
||||
sketchVent = startSketchOn(planeVent)
|
||||
profileVent = startProfile(sketchVent, at = [-wVent, dDisc / 2])
|
||||
|> angledLine(angle = 0, length = wVent, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = hFrictionSurface, tag = $seg02)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $seg03)
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg01)
|
||||
|> close()
|
||||
|
||||
ventPad = extrude(profileVent, length = tVent)
|
||||
|> fillet(
|
||||
radius = rVentFillet,
|
||||
tags = [
|
||||
getCommonEdge(faces = [seg01, rectangleSegmentA001]),
|
||||
getCommonEdge(faces = [seg02, rectangleSegmentA001]),
|
||||
getCommonEdge(faces = [seg01, seg03]),
|
||||
getCommonEdge(faces = [seg03, seg02])
|
||||
],
|
||||
)
|
||||
ventSet = patternCircular3d(
|
||||
ventPad,
|
||||
instances = nVentBosses,
|
||||
axis = [0, 0, 1],
|
||||
center = [0, 0, tDiscHalf],
|
||||
arcDegrees = 360,
|
||||
rotateDuplicates = true,
|
||||
)
|
||||
|
||||
// Create outboard half.
|
||||
planeOutboard = offsetPlane(XY, offset = tDiscHalf + tVent)
|
||||
discOutboard = createDiscHalf(
|
||||
plane = planeOutboard,
|
||||
dDiscParam = dDisc,
|
||||
hFrictionSurfaceParam = hFrictionSurface,
|
||||
tDiscHalfParam = tDiscHalf,
|
||||
)
|
||||
|
||||
// Now create bell.
|
||||
rCenter = dDisc / 2 - hFrictionSurface - wUndercut
|
||||
rBore = dBore / 2
|
||||
lDraftExterior = hBellAboveDiscFace / tan(90 - aDraftBell)
|
||||
lDraftInterior = (hBellAboveDiscFace - tBell) / tan(90 - aDraftBell)
|
||||
|
||||
// Inner and outer radius of outboard face of disc bell.
|
||||
rOuter = rCenter - lDraftExterior - rBore
|
||||
rInner = rOuter + lDraftExterior - (tBell + lDraftInterior)
|
||||
|
||||
sketchDiscBell = startSketchOn(-YZ)
|
||||
bodyDiscBell = startProfile(
|
||||
sketchDiscBell,
|
||||
at = [
|
||||
-dDisc / 2 + hFrictionSurface,
|
||||
tDiscHalf * 2 + tVent
|
||||
],
|
||||
)
|
||||
|> arc(
|
||||
%,
|
||||
angleStart = -180,
|
||||
angleEnd = 0,
|
||||
radius = wUndercut / 2,
|
||||
)
|
||||
|> line(end = [lDraftExterior, hBellAboveDiscFace])
|
||||
|> xLine(length = rOuter, tag = $seg04)
|
||||
|> yLine(length = -tBell)
|
||||
|> xLine(length = -rInner)
|
||||
|> line(end = [-lDraftInterior, -hBellAboveDiscFace])
|
||||
|> line(end = [0, -2]) // Wall thickness.
|
||||
|> xLine(length = -1 * (tBell + wUndercut))
|
||||
|> close(%)
|
||||
|> revolve(axis = Y)
|
||||
|
||||
// Drill lug holes.
|
||||
sketchLugs = startSketchOn(bodyDiscBell, face = seg04)
|
||||
profileStud = circle(sketchLugs, center = [0, dPitchCircle / 2], radius = dStudDrilling / 2)
|
||||
|> patternCircular2d(
|
||||
%,
|
||||
instances = nStuds,
|
||||
center = [0, 0],
|
||||
arcDegrees = 360,
|
||||
rotateDuplicates = true,
|
||||
)
|
||||
|
||||
clearance = 2 // Some margin on negative extrude.
|
||||
lugs = extrude(profileStud, length = -1 * (tBell + clearance))
|
||||
@ -74,6 +74,16 @@
|
||||
"main.kcl"
|
||||
]
|
||||
},
|
||||
{
|
||||
"file": "main.kcl",
|
||||
"pathFromProjectDirectoryToFirstFile": "brake-rotor/main.kcl",
|
||||
"multipleFiles": false,
|
||||
"title": "A 320mm vented brake disc (rotor), with straight vanes, 30mm thick. The disc bell should accommodate 5 M12 wheel studs on a 114.3mm pitch circle diameter.",
|
||||
"description": "",
|
||||
"files": [
|
||||
"main.kcl"
|
||||
]
|
||||
},
|
||||
{
|
||||
"file": "main.kcl",
|
||||
"pathFromProjectDirectoryToFirstFile": "car-wheel-assembly/main.kcl",
|
||||
|
||||
BIN
public/kcl-samples/screenshots/brake-rotor.png
Normal file
BIN
public/kcl-samples/screenshots/brake-rotor.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 82 KiB |
Reference in New Issue
Block a user