Teaching t2c how to counterbore, countersink, and counterdrill (#6833)

* Teaching t2c how to counterbore, countersink, and counterdrill

* Delete public/kcl-samples/parametric-bearing-pillow-block directory

* Update mounting-wire.kcl

* new artifiacts

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* Update kcl-samples simulation test output

* Update kcl-samples simulation test output

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

---------

Signed-off-by: Jess Frazelle <github@jessfraz.com>
Co-authored-by: Jess Frazelle <jessfraz@users.noreply.github.com>
Co-authored-by: Jess Frazelle <github@jessfraz.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
This commit is contained in:
Nicholas Boone
2025-05-13 17:11:50 -04:00
committed by GitHub
parent cd79059d97
commit 4640f1a3ad
55 changed files with 44464 additions and 8134 deletions

View File

@ -39,6 +39,12 @@ When you submit a PR to add or modify KCL samples, images will be generated and
[![car-wheel-assembly](screenshots/car-wheel-assembly.png)](car-wheel-assembly/main.kcl) [![car-wheel-assembly](screenshots/car-wheel-assembly.png)](car-wheel-assembly/main.kcl)
#### [color-cube](color-cube/main.kcl) ([screenshot](screenshots/color-cube.png)) #### [color-cube](color-cube/main.kcl) ([screenshot](screenshots/color-cube.png))
[![color-cube](screenshots/color-cube.png)](color-cube/main.kcl) [![color-cube](screenshots/color-cube.png)](color-cube/main.kcl)
#### [counterdrilled-weldment](counterdrilled-weldment/main.kcl) ([screenshot](screenshots/counterdrilled-weldment.png))
[![counterdrilled-weldment](screenshots/counterdrilled-weldment.png)](counterdrilled-weldment/main.kcl)
#### [countersunk-plate](countersunk-plate/main.kcl) ([screenshot](screenshots/countersunk-plate.png))
[![countersunk-plate](screenshots/countersunk-plate.png)](countersunk-plate/main.kcl)
#### [cpu-cooler](cpu-cooler/main.kcl) ([screenshot](screenshots/cpu-cooler.png))
[![cpu-cooler](screenshots/cpu-cooler.png)](cpu-cooler/main.kcl)
#### [cycloidal-gear](cycloidal-gear/main.kcl) ([screenshot](screenshots/cycloidal-gear.png)) #### [cycloidal-gear](cycloidal-gear/main.kcl) ([screenshot](screenshots/cycloidal-gear.png))
[![cycloidal-gear](screenshots/cycloidal-gear.png)](cycloidal-gear/main.kcl) [![cycloidal-gear](screenshots/cycloidal-gear.png)](cycloidal-gear/main.kcl)
#### [dodecahedron](dodecahedron/main.kcl) ([screenshot](screenshots/dodecahedron.png)) #### [dodecahedron](dodecahedron/main.kcl) ([screenshot](screenshots/dodecahedron.png))
@ -89,8 +95,8 @@ When you submit a PR to add or modify KCL samples, images will be generated and
[![mounting-plate](screenshots/mounting-plate.png)](mounting-plate/main.kcl) [![mounting-plate](screenshots/mounting-plate.png)](mounting-plate/main.kcl)
#### [multi-axis-robot](multi-axis-robot/main.kcl) ([screenshot](screenshots/multi-axis-robot.png)) #### [multi-axis-robot](multi-axis-robot/main.kcl) ([screenshot](screenshots/multi-axis-robot.png))
[![multi-axis-robot](screenshots/multi-axis-robot.png)](multi-axis-robot/main.kcl) [![multi-axis-robot](screenshots/multi-axis-robot.png)](multi-axis-robot/main.kcl)
#### [parametric-bearing-pillow-block](parametric-bearing-pillow-block/main.kcl) ([screenshot](screenshots/parametric-bearing-pillow-block.png)) #### [pillow-block-bearing](pillow-block-bearing/main.kcl) ([screenshot](screenshots/pillow-block-bearing.png))
[![parametric-bearing-pillow-block](screenshots/parametric-bearing-pillow-block.png)](parametric-bearing-pillow-block/main.kcl) [![pillow-block-bearing](screenshots/pillow-block-bearing.png)](pillow-block-bearing/main.kcl)
#### [pipe](pipe/main.kcl) ([screenshot](screenshots/pipe.png)) #### [pipe](pipe/main.kcl) ([screenshot](screenshots/pipe.png))
[![pipe](screenshots/pipe.png)](pipe/main.kcl) [![pipe](screenshots/pipe.png)](pipe/main.kcl)
#### [pipe-flange-assembly](pipe-flange-assembly/main.kcl) ([screenshot](screenshots/pipe-flange-assembly.png)) #### [pipe-flange-assembly](pipe-flange-assembly/main.kcl) ([screenshot](screenshots/pipe-flange-assembly.png))

View File

@ -0,0 +1,120 @@
// Counterdrilled Weldment
// A metal weldment consisting of a counterdrilled plate, a centrally mounted housing tube, and four structural support fins.
// Set units
@settings(defaultLengthUnit = in)
// Define parameters
boltSpacingX = 5
boltSpacingY = 3
boltDiameter = 1 / 4
counterdrillDiameter = 7 / 16
counterdrillDepth = 3 / 16
tubeInnerDiameter = 1 + 1 / 4
tubeThickness = 0.115
tubeHeight = 2
stockThickness = .5
// Calculate the dimensions of the block using the specified bolt spacing. The size of the block can be defined by adding a multiple of the counterdrill diameter to the bolt spacing
blockLength = boltSpacingX + boltDiameter * 6
blockWidth = boltSpacingY + boltDiameter * 6
// Draw the base plate
plateSketch = startSketchOn(XY)
|> startProfile(at = [-blockLength / 2, -blockWidth / 2])
|> angledLine(angle = 0, length = blockLength, tag = $rectangleSegmentA001)
|> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = blockWidth, tag = $rectangleSegmentB001)
|> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001)
|> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD001)
|> close()
|> subtract2d(tool = circle(center = [0, 0], radius = tubeInnerDiameter / 2))
plateBody = extrude(plateSketch, length = stockThickness)
|> chamfer(
length = boltDiameter * 2,
tags = [
getNextAdjacentEdge(rectangleSegmentB001),
getNextAdjacentEdge(rectangleSegmentA001),
getNextAdjacentEdge(rectangleSegmentC001),
getNextAdjacentEdge(rectangleSegmentD001)
],
)
// Define hole positions
holePositions = [
[-boltSpacingX / 2, -boltSpacingY / 2],
[-boltSpacingX / 2, boltSpacingY / 2],
[boltSpacingX / 2, -boltSpacingY / 2],
[boltSpacingX / 2, boltSpacingY / 2]
]
// Function to create a counterdrilled hole
fn counterdrill(@holePosition) {
cbdrill = startSketchOn(plateBody, face = END)
|> circle(center = holePosition, radius = counterdrillDiameter / 2)
|> extrude(length = -counterdrillDepth)
cbBolt = startSketchOn(cbdrill, face = START)
|> circle(center = holePosition, radius = boltDiameter / 2, tag = $hole01)
|> extrude(length = -stockThickness + counterdrillDepth)
// Use a chamfer to create a 90-degree counterdrill edge
|> chamfer(length = (counterdrillDiameter - boltDiameter) / 2 * sqrt(2), tags = [hole01])
return { }
}
// Place a counterdrilled hole at each bolt hole position
map(holePositions, f = counterdrill)
// Drill a small pin hole in the side of the tube
pinhole = startSketchOn(YZ)
|> circle(center = [0, 2.2], radius = 0.125)
|> extrude(length = -10)
// Model the central tube and subtract the pin hole
centralTube = startSketchOn(offsetPlane(XY, offset = stockThickness))
|> circle(center = [0, 0], radius = tubeInnerDiameter / 2 + tubeThickness)
|> subtract2d(tool = circle(center = [0, 0], radius = tubeInnerDiameter / 2))
|> extrude(length = tubeHeight)
|> subtract(tools = [pinhole])
// Create a function to create a fin which spans from the central tube to the bolt hole
fn fin(@i) {
diagPlane = {
origin = [0.0, 0.0, 0.0],
xAxis = [
boltSpacingX / 2 * i,
boltSpacingY / 2,
0.0
],
yAxis = [0.0, 0.0, 1.0]
}
finSketch = startSketchOn(diagPlane)
|> startProfile(at = [
tubeInnerDiameter / 2 + tubeThickness,
stockThickness
])
|> xLine(endAbsolute = sqrt((boltSpacingX / 2) ^ 2 + (boltSpacingY / 2) ^ 2) - counterdrillDiameter)
|> yLine(length = 0.15)
|> line(endAbsolute = [
profileStartX(%) + 0.15,
stockThickness + tubeHeight * .8
])
|> xLine(length = -0.15)
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|> close()
|> extrude(length = tubeThickness, symmetric = true)
// Use a circular pattern to create an identical fin on the opposite side
otherFin = patternCircular3d(
finSketch,
instances = 2,
axis = [0, 0, 1],
center = [0, 0, 0],
arcDegrees = 360,
rotateDuplicates = true,
)
return { }
}
// Place a pair of support fins along each diagonal axis of the bolt pattern
fin(1)
fin(-1)

View File

@ -0,0 +1,50 @@
// Plate with countersunk holes
// A small mounting plate with a countersunk hole at each end
// Set units
@settings(defaultLengthUnit = in)
// Define parameters
boltSpacing = 5
boltDiameter = 1 / 4
centerHoleDiameter = 1 + 3 / 4
plateThickness = 0.375
// Check that the plate is thick enough to countersink a hole
// assertGreaterThan(plateThickness, boltDiameter, "This plate is not thick enough for the necessary countersink dimensions")
// A bit of math to calculate the tangent line between the two diameters
r1 = centerHoleDiameter / 2 * 1.5 + .35
r2 = boltDiameter * 2 + .25
d = boltSpacing / 2
tangentAngle = asin((r1 - r2) / d)
tangentLength = (r1 - r2) / tan(tangentAngle)
plateBody = startSketchOn(XY)
// Use polar coordinates to start the sketch at the tangent point of the larger radius
|> startProfile(at = polar(angle = 90 - tangentAngle, length = r1))
|> angledLine(angle = -tangentAngle, length = tangentLength)
|> tangentialArc(radius = r2, angle = (tangentAngle - 90) * 2)
|> angledLine(angle = tangentAngle, length = -tangentLength)
|> tangentialArc(radius = r1, angle = -tangentAngle * 2)
|> angledLine(angle = -tangentAngle, length = -tangentLength)
|> tangentialArc(radius = r2, angle = (tangentAngle - 90) * 2)
|> angledLine(angle = tangentAngle, length = tangentLength)
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|> close()
|> subtract2d(tool = circle(center = [0, 0], radius = centerHoleDiameter / 2 * 1.5))
|> extrude(%, length = plateThickness)
// Function to create a countersunk hole
fn countersink(@holePosition) {
startSketchOn(plateBody, face = END)
|> circle(center = [holePosition, 0], radius = boltDiameter / 2, tag = $hole01)
|> extrude(length = -plateThickness)
// Use a chamfer to create a 90-degree countersink
|> chamfer(length = boltDiameter, tags = [hole01])
return { }
}
// Place a countersunk hole at each bolt hole position
countersink(-boltSpacing / 2)
countersink(boltSpacing / 2)

View File

@ -0,0 +1,153 @@
// Fan Housing
// The plastic housing that contains the fan and the motor
// Set units
@settings(defaultLengthUnit = mm)
// Import parameters
import * from "parameters.kcl"
// Model the housing which holds the motor, the fan, and the mounting provisions
// Bottom mounting face
bottomFaceSketch = startSketchOn(YZ)
|> startProfile(at = [-fanSize / 2, -fanSize / 2])
|> angledLine(angle = 0, length = fanSize, tag = $rectangleSegmentA001)
|> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = fanSize, tag = $rectangleSegmentB001)
|> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001)
|> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD001)
|> close()
|> subtract2d(tool = circle(center = [0, 0], radius = 4))
|> subtract2d(tool = circle(
center = [
mountingHoleSpacing / 2,
mountingHoleSpacing / 2
],
radius = mountingHoleSize / 2,
))
|> subtract2d(tool = circle(
center = [
-mountingHoleSpacing / 2,
mountingHoleSpacing / 2
],
radius = mountingHoleSize / 2,
))
|> subtract2d(tool = circle(
center = [
mountingHoleSpacing / 2,
-mountingHoleSpacing / 2
],
radius = mountingHoleSize / 2,
))
|> subtract2d(tool = circle(
center = [
-mountingHoleSpacing / 2,
-mountingHoleSpacing / 2
],
radius = mountingHoleSize / 2,
))
|> extrude(length = 4)
// Add large openings to the bottom face to allow airflow through the fan
airflowPattern = startSketchOn(bottomFaceSketch, face = END)
|> startProfile(at = [fanSize * 7 / 25, -fanSize * 9 / 25])
|> angledLine(angle = 140, length = fanSize * 12 / 25, tag = $seg01)
|> tangentialArc(radius = fanSize * 1 / 50, angle = 90)
|> angledLine(angle = -130, length = fanSize * 8 / 25)
|> tangentialArc(radius = fanSize * 1 / 50, angle = 90)
|> angledLine(angle = segAng(seg01) + 180, length = fanSize * 2 / 25)
|> tangentialArc(radius = fanSize * 8 / 25, angle = 40)
|> xLine(length = fanSize * 3 / 25)
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|> close()
|> patternCircular2d(
instances = 4,
center = [0, 0],
arcDegrees = 360,
rotateDuplicates = true,
)
|> extrude(length = -4)
// Create the middle segment of the fan housing body
housingMiddleLength = fanSize / 3
housingMiddleRadius = fanSize / 3 - 1
bodyMiddle = startSketchOn(bottomFaceSketch, face = END)
|> startProfile(at = [
housingMiddleLength / 2,
-housingMiddleLength / 2 - housingMiddleRadius
])
|> tangentialArc(radius = housingMiddleRadius, angle = 90)
|> yLine(length = housingMiddleLength)
|> tangentialArc(radius = housingMiddleRadius, angle = 90)
|> xLine(length = -housingMiddleLength)
|> tangentialArc(radius = housingMiddleRadius, angle = 90)
|> yLine(length = -housingMiddleLength)
|> tangentialArc(radius = housingMiddleRadius, angle = 90)
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|> extrude(length = fanHeight - 4 - 4)
// Cut a hole in the body to accommodate the fan
bodyFanHole = startSketchOn(bodyMiddle, face = END)
|> circle(center = [0, 0], radius = fanSize * 23 / 50)
|> extrude(length = -(fanHeight - 4 - 4))
// Top mounting face. Cut a hole in the face to accommodate the fan
topFaceSketch = startSketchOn(bodyMiddle, face = END)
topHoles = startProfile(topFaceSketch, at = [-fanSize / 2, -fanSize / 2])
|> angledLine(angle = 0, length = fanSize, tag = $rectangleSegmentA002)
|> angledLine(angle = segAng(rectangleSegmentA002) + 90, length = fanSize, tag = $rectangleSegmentB002)
|> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002), tag = $rectangleSegmentC002)
|> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD002)
|> close()
|> subtract2d(tool = circle(center = [0, 0], radius = fanSize * 23 / 50))
|> subtract2d(tool = circle(
center = [
mountingHoleSpacing / 2,
mountingHoleSpacing / 2
],
radius = mountingHoleSize / 2,
))
|> subtract2d(tool = circle(
center = [
-mountingHoleSpacing / 2,
mountingHoleSpacing / 2
],
radius = mountingHoleSize / 2,
))
|> subtract2d(tool = circle(
center = [
mountingHoleSpacing / 2,
-mountingHoleSpacing / 2
],
radius = mountingHoleSize / 2,
))
|> subtract2d(tool = circle(
center = [
-mountingHoleSpacing / 2,
-mountingHoleSpacing / 2
],
radius = mountingHoleSize / 2,
))
|> extrude(length = 4)
// Create a housing for the electric motor to sit
motorHousing = startSketchOn(bottomFaceSketch, face = END)
|> circle(center = [0, 0], radius = 11.2)
|> extrude(length = 16)
startSketchOn(motorHousing, face = END)
|> circle(center = [0, 0], radius = 10)
|> extrude(length = -16)
|> appearance(color = "#a55e2c")
|> fillet(
radius = abs(fanSize - mountingHoleSpacing) / 2,
tags = [
getNextAdjacentEdge(rectangleSegmentA001),
getNextAdjacentEdge(rectangleSegmentB001),
getNextAdjacentEdge(rectangleSegmentC001),
getNextAdjacentEdge(rectangleSegmentD001),
getNextAdjacentEdge(rectangleSegmentA002),
getNextAdjacentEdge(rectangleSegmentB002),
getNextAdjacentEdge(rectangleSegmentC002),
getNextAdjacentEdge(rectangleSegmentD002)
],
)

View File

@ -0,0 +1,89 @@
// Fan
// Spinning axial fan that moves airflow
// Set units
@settings(defaultLengthUnit = mm)
// Import parameters
import * from "parameters.kcl"
// Model the center of the fan
fanCenter = startSketchOn(XY)
|> startProfile(at = [fanHeight, 0])
|> yLine(endAbsolute = -15 + 1.5)
|> tangentialArc(radius = 1.5, angle = -90)
|> xLine(endAbsolute = 4.5)
|> yLine(endAbsolute = -13)
|> xLine(endAbsolute = profileStartX(%) - 5)
|> tangentialArc(radius = 1, angle = 90)
|> yLine(endAbsolute = -1)
|> xLine(length = 2)
|> yLine(length = -0.15)
|> line(endAbsolute = [
profileStartX(%) - 1.4,
profileStartY(%) - 1
])
|> yLine(endAbsolute = profileStartY(%))
|> xLine(endAbsolute = profileStartX(%))
|> close()
|> revolve(axis = {
direction = [1.0, 0.0],
origin = [0.0, 0.0]
})
// Create a function for a lofted fan blade cross section that rotates about the center hub of the fan
fn fanBlade(offsetHeight, startAngle) {
fanBlade = startSketchOn(offsetPlane(YZ, offset = offsetHeight))
|> startProfile(at = [
15 * cos(startAngle),
15 * sin(startAngle)
])
|> arc(angleStart = startAngle, angleEnd = startAngle + 14, radius = 15)
|> arc(
endAbsolute = [
fanSize * 22 / 50 * cos(startAngle - 20),
fanSize * 22 / 50 * sin(startAngle - 20)
],
interiorAbsolute = [
fanSize * 11 / 50 * cos(startAngle + 3),
fanSize * 11 / 50 * sin(startAngle + 3)
],
)
|> arc(
endAbsolute = [
fanSize * 22 / 50 * cos(startAngle - 24),
fanSize * 22 / 50 * sin(startAngle - 24)
],
interiorAbsolute = [
fanSize * 22 / 50 * cos(startAngle - 22),
fanSize * 22 / 50 * sin(startAngle - 22)
],
)
|> arc(
endAbsolute = [profileStartX(%), profileStartY(%)],
interiorAbsolute = [
fanSize * 11 / 50 * cos(startAngle - 5),
fanSize * 11 / 50 * sin(startAngle - 5)
],
)
|> close()
return fanBlade
}
// Loft the fan blade cross sections into a single blade, then pattern them about the fan center
crossSections = [
fanBlade(offsetHeight = 4.5, startAngle = 50),
fanBlade(offsetHeight = (fanHeight - 2 - 4) / 2, startAngle = 30),
fanBlade(offsetHeight = fanHeight - 2, startAngle = 0)
]
bladeLoft = loft(crossSections)
|> patternCircular3d(
instances = 9,
axis = [1, 0, 0],
center = [0, 0, 0],
arcDegrees = 360,
rotateDuplicates = true,
)
[fanCenter, bladeLoft]
|> appearance(color = "#110803")

View File

@ -0,0 +1,171 @@
// Heat Sink
// Conductive metal device made from brazed tubes and fins
// Set units
@settings(defaultLengthUnit = mm)
// Import parameters
import * from "parameters.kcl"
// Draw the sweep path for the outermost tubes
endTubePath = startSketchOn(offsetPlane(YZ, offset = -20))
|> startProfile(at = [fanSize / 4, fanSize + 38])
|> yLine(endAbsolute = bendRadius + 10, tag = $seg01)
|> tangentialArc(radius = bendRadius, angle = -90)
|> xLine(endAbsolute = 0, tag = $seg02)
|> xLine(length = -segLen(seg02))
|> tangentialArc(radius = bendRadius, angle = -90)
|> yLine(length = segLen(seg01))
// Sweep and translate the outermost tube on each end
endTube = startSketchOn(offsetPlane(XY, offset = fanSize + 38))
|> circle(center = [-20, fanSize / 4], radius = 3)
|> subtract2d(tool = circle(center = [-20, fanSize / 4], radius = 2.5))
|> sweep(path = endTubePath)
|> patternCircular3d(
%,
instances = 2,
axis = [0, 0, 1],
center = [0, 0, 0],
arcDegrees = 360,
rotateDuplicates = false,
)
// Draw the sweep path for the 4 interior tubes
centerTubePath = startSketchOn(offsetPlane(YZ, offset = -4))
|> startProfile(at = [fanSize / 2.67, fanSize + 38])
|> yLine(endAbsolute = bendRadius + 15 + 10)
|> tangentialArc(radius = bendRadius, angle = -45)
|> angledLine(angle = -135, lengthY = 15)
|> tangentialArc(radius = bendRadius, angle = -45)
|> xLine(endAbsolute = 0, tag = $seg03)
|> xLine(length = -segLen(seg03))
|> tangentialArc(radius = bendRadius, angle = -155)
|> tangentialArc(radius = bendRadius, angle = 65)
|> yLine(endAbsolute = fanSize + 38)
// Draw the profile and sweep the 4 interior tubes
centerTube = startSketchOn(offsetPlane(XY, offset = fanSize + 38))
|> circle(center = [-4, fanSize / 2.67], radius = 3)
|> subtract2d(tool = circle(center = [-4, fanSize / 2.67], radius = 2.5))
|> sweep(path = centerTubePath)
|> patternCircular3d(
%,
instances = 2,
axis = [0, 0, 1],
center = [-4 * 2, 0, 0],
arcDegrees = 360,
rotateDuplicates = true,
)
|> patternLinear3d(
%,
instances = 2,
distance = 4 * 4,
axis = [1, 0, 0],
)
// Draw a heat fin with built-in clips to secure the mounting wire. Pattern the fin upwards by the height of the fan
heatFins = startSketchOn(offsetPlane(XY, offset = 45))
|> startProfile(at = [0, -fanSize / 2])
|> xLine(length = 9)
|> angledLine(angle = -60, length = 2.5, tag = $seg04)
|> xLine(length = 0.75)
|> arc(interiorAbsolute = [lastSegX(%) + 1, lastSegY(%) + 1.2], endAbsolute = [lastSegX(%) + 2, lastSegY(%)])
|> xLine(length = 0.75)
|> angledLine(angle = 60, length = segLen(seg04))
|> xLine(endAbsolute = heatSinkDepth / 2 - 3)
|> tangentialArc(angle = 90, radius = 3)
|> yLine(endAbsolute = 0)
|> mirror2d(axis = X)
|> mirror2d(axis = Y)
|> close()
|> extrude(length = 1)
|> patternLinear3d(
%,
instances = 31,
distance = (fanSize - 10) / 30,
axis = [0, 0, 1],
)
// Create the mounting base for the CPU cooler. The base should consist of two pieces that secure around each of the tubes at the bottom
coolerBase = startSketchOn(-XZ)
baseLower = startProfile(coolerBase, at = [0, 10])
|> xLine(length = -0.9)
|> arc(angleStart = 0, angleEnd = -180, radius = 3.1)
|> xLine(length = -1.8)
|> arc(angleStart = 0, angleEnd = -180, radius = 3)
|> xLine(length = -1.8)
|> arc(angleStart = 0, angleEnd = -180, radius = 3)
|> xLine(length = -1.8)
|> xLine(length = -2)
|> yLine(length = -10)
|> xLine(endAbsolute = 0)
|> mirror2d(axis = Y)
|> extrude(length = 2 * segLen(seg02), symmetric = true)
baseUpper = startProfile(coolerBase, at = [0, 10])
|> xLine(length = -0.9)
|> arc(angleStart = 0, angleEnd = 180, radius = 3.1)
|> xLine(length = -1.8)
|> arc(angleStart = 0, angleEnd = 180, radius = 3)
|> xLine(length = -1.8)
|> arc(angleStart = 0, angleEnd = 180, radius = 3)
|> xLine(length = -1.8)
|> xLine(length = -1)
|> yLine(length = 4)
|> tangentialArc(angle = -90, radius = 2)
|> xLine(endAbsolute = 0)
|> mirror2d(axis = Y)
|> extrude(length = 2 * segLen(seg02) * 3 / 4, symmetric = true)
// Create a flexible mounting bracket to secure the heat sink to the motherboard once adhered
mountingBracket = startSketchOn(XZ)
|> startProfile(at = [-10, 16])
|> xLine(length = -20)
|> tangentialArc(angle = 20, radius = bendRadius)
|> angledLine(angle = -160, length = 14, tag = $seg09)
|> tangentialArc(angle = -30, radius = bendRadius + sheetThickness)
|> angledLine(angle = 170, length = 21.5, tag = $seg04Q)
|> angledLine(angle = 170 - 90, length = sheetThickness, tag = $seg08)
|> angledLine(angle = segAng(seg04Q) + 180, length = segLen(seg04Q), tag = $seg05E)
|> tangentialArc(angle = 30, radius = bendRadius)
|> angledLine(angle = segAng(seg09) + 180, length = segLen(seg09))
|> tangentialArc(angle = -20, radius = bendRadius + sheetThickness)
|> xLine(endAbsolute = profileStartX(%))
|> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg07)
|> close()
|> extrude(
length = 16,
symmetric = true,
tagEnd = $capEnd001,
tagStart = $capStart001,
)
|> fillet(
radius = 2,
tags = [
getCommonEdge(faces = [seg07, capEnd001]),
getCommonEdge(faces = [seg08, capEnd001]),
getCommonEdge(faces = [seg08, capStart001]),
getCommonEdge(faces = [seg07, capStart001])
],
)
// Create a clearance hole in the bracket for an M3 screw and countersink the hole
thruHole = startSketchOn(mountingBracket, face = seg05E)
|> circle(center = [70, 0], radius = 3.4 / 2, tag = $seg06E)
|> extrude(length = -sheetThickness)
|> chamfer(
length = sheetThickness * 0.75,
tags = [
getCommonEdge(faces = [seg05E, seg06E])
],
)
// Duplicate the bracket to the other side of the heat sink base
|> patternCircular3d(
instances = 2,
axis = [0, 0, 1],
center = [0, 0, 0],
arcDegrees = 360,
rotateDuplicates = true,
)

View File

@ -0,0 +1,51 @@
// CPU Cooler
// A CPU cooler is a device designed to dissipate heat generated by the CPU of a computer. They consist of a brazed heat sink made from aluminum or copper alloys, and one or two axial fans to move airflow across the heat sink.
// Set units
@settings(defaultLengthUnit = mm)
// Import all parts and parameters into assembly file
import * from "parameters.kcl"
import "fan-housing.kcl" as fanHousing
import "motor.kcl" as motor
import "fan.kcl" as fan
import "heat-sink.kcl" as heatSink
import "mounting-wire.kcl" as mountingWire
import "removable-sticker.kcl" as removableSticker
// Produce the model for each imported part
heatSink
fn translatePart(part) {
part
|> translate(x = heatSinkDepth / 2, z = 40 + fanSize / 2)
|> patternLinear3d(
%,
instances = 2,
distance = heatSinkDepth + fanHeight,
axis = [-1, 0, 0],
)
return { }
}
translatePart(part = fanHousing)
translatePart(part = motor)
translatePart(part = fan)
mountingWire
|> patternCircular3d(
%,
instances = 2,
axis = [0, 1, 0],
center = [0, 0, 40 + fanSize / 2],
arcDegrees = 360,
rotateDuplicates = true,
)
|> patternCircular3d(
%,
instances = 2,
axis = [0, 0, 1],
center = [0, 0, 0],
arcDegrees = 360,
rotateDuplicates = true,
)
removableSticker

View File

@ -0,0 +1,21 @@
// Motor
// A small electric motor to power the fan
// Set Units
@settings(defaultLengthUnit = mm)
// Import Parameters
import * from "parameters.kcl"
// Model the motor body and stem
startPlane = offsetPlane(YZ, offset = 4)
motorBody = startSketchOn(startPlane)
|> circle(center = [0, 0], radius = 10, tag = $seg04)
|> extrude(length = 17)
|> fillet(radius = 2, tags = [getOppositeEdge(seg04), seg04])
|> appearance(color = "#021b55")
motorStem = startSketchOn(offsetPlane(YZ, offset = 21))
|> circle(center = [0, 0], radius = 1)
|> extrude(length = 3.8)
|> appearance(color = "#cbcccd")
[motorBody, motorStem]

View File

@ -0,0 +1,79 @@
// Mounting Wire
// The flexible metal wire used to clip the fans onto the heat sink
// Set units
@settings(defaultLengthUnit = mm)
// Import parameters
import * from "parameters.kcl"
// Draw the XZ component of the mounting wire path
upperArm = startSketchOn(offsetPlane(XZ, offset = fanSize / 2 + 2))
|> startProfile(at = [-12, 40 + fanSize / 2])
|> yLine(length = 7)
|> tangentialArc(radius = 2, angle = 90)
|> xLine(length = -9)
|> tangentialArc(radius = 2, angle = -90)
|> yLine(length = 14)
|> tangentialArc(radius = 2, angle = 90)
|> xLine(length = -9)
|> tangentialArc(radius = 2, angle = -80)
|> angledLine(angle = 100, endAbsoluteY = 40 + fanSize / 2 + mountingHoleSpacing / 2 - 1.5)
|> tangentialArc(radius = 2, angle = 80, tag = $seg07)
// Draw the XZ component of the mounting wire path
lowerArm = startSketchOn(offsetPlane(XZ, offset = fanSize / 2 + 2))
|> startProfile(at = [-12, 40 + fanSize / 2])
|> yLine(length = -7)
|> tangentialArc(radius = 2, angle = -90)
|> xLine(length = -9)
|> tangentialArc(radius = 2, angle = 90)
|> yLine(length = -14)
|> tangentialArc(radius = 2, angle = -90)
|> xLine(length = -9)
|> tangentialArc(radius = 2, angle = 80)
|> angledLine(angle = -100, endAbsoluteY = 40 + fanSize / 2 - (mountingHoleSpacing / 2) + 1.5)
|> tangentialArc(radius = 2, angle = -80, tag = $seg08)
// Create the profile of the mounting wire and sweep along the XZ path
wireProfile = startSketchOn(offsetPlane(XY, offset = 40 + fanSize / 2))
sweepUpperArm = circle(wireProfile, center = [-12, -fanSize / 2 - 2], radius = 1)
|> sweep(%, path = upperArm)
sweepLowerArm = circle(wireProfile, center = [-12, -fanSize / 2 - 2], radius = 1)
|> sweep(%, path = lowerArm)
// Draw the XY components of the mounting wire path
upperHook = startSketchOn(offsetPlane(XY, offset = segEndY(seg07)))
|> startProfile(at = [segEndX(seg07), -fanSize / 2 - 2])
|> xLine(endAbsolute = -heatSinkDepth / 2 - fanHeight)
|> tangentialArc(radius = 2, angle = -90)
|> yLine(endAbsolute = -mountingHoleSpacing / 2 - 2)
|> tangentialArc(radius = 2, angle = -90)
|> xLine(length = fanHeight / 3)
// Draw the XY components of the mounting wire path
lowerHook = startSketchOn(offsetPlane(XY, offset = segEndY(seg08)))
|> startProfile(at = [segEndX(seg07), -fanSize / 2 - 2])
|> xLine(endAbsolute = -heatSinkDepth / 2 - fanHeight)
|> tangentialArc(radius = 2, angle = -90)
|> yLine(endAbsolute = -mountingHoleSpacing / 2 - 2)
|> tangentialArc(radius = 2, angle = -90)
|> xLine(length = fanHeight / 3)
// Sweep the wire profile around the hook-shaped segments of the mounting wire
hookProfile = startSketchOn(offsetPlane(YZ, offset = segEndX(seg07)))
sweepUpperHook = circle(hookProfile, center = [-fanSize / 2 - 2, segEndY(seg07)], radius = 1)
|> sweep(%, path = upperHook)
sweepLowerHook = circle(hookProfile, center = [-fanSize / 2 - 2, segEndY(seg08)], radius = 1)
|> sweep(%, path = lowerHook)
// Union each piece of the wire into a single continuous sweep
[
sweepLowerArm,
sweepLowerHook,
sweepUpperArm,
sweepUpperHook
]
|> appearance(color = "#0d0d0d")

View File

@ -0,0 +1,13 @@
// Global parameters for the CPU cooler
// Set units
@settings(defaultLengthUnit = mm)
// Define Parameters
export fanSize = 120
export fanHeight = 25
export mountingHoleSpacing = 105
export mountingHoleSize = 4.5
export bendRadius = 15
export sheetThickness = 2.125
export heatSinkDepth = 55

View File

@ -0,0 +1,28 @@
// Removable Sticker
// Protective sticker to be removed before adhering the heat sink to the CPU
// Set units
@settings(defaultLengthUnit = mm)
// Import parameters
import * from "parameters.kcl"
// Create a simple body to represent the removable warning sticker. Brightly color the sticker so that the user will not forget to remove it before installing the device
removableSticker = startSketchOn(-XY)
|> startProfile(at = [-12, -12])
|> angledLine(angle = 0, length = 24, tag = $rectangleSegmentA001)
|> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = 24, tag = $rectangleSegmentB001)
|> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001)
|> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD001)
|> close()
|> extrude(length = .3)
|> appearance(color = "#021b55")
|> chamfer(
length = 3,
tags = [
getNextAdjacentEdge(rectangleSegmentA001),
getNextAdjacentEdge(rectangleSegmentB001),
getNextAdjacentEdge(rectangleSegmentC001),
getNextAdjacentEdge(rectangleSegmentD001)
],
)

View File

@ -90,6 +90,43 @@
"main.kcl" "main.kcl"
] ]
}, },
{
"file": "main.kcl",
"pathFromProjectDirectoryToFirstFile": "counterdrilled-weldment/main.kcl",
"multipleFiles": false,
"title": "Counterdrilled Weldment",
"description": "A metal weldment consisting of a counterdrilled plate, a centrally mounted housing tube, and four structural support fins.",
"files": [
"main.kcl"
]
},
{
"file": "main.kcl",
"pathFromProjectDirectoryToFirstFile": "countersunk-plate/main.kcl",
"multipleFiles": false,
"title": "Plate with countersunk holes",
"description": "A small mounting plate with a countersunk hole at each end",
"files": [
"main.kcl"
]
},
{
"file": "main.kcl",
"pathFromProjectDirectoryToFirstFile": "cpu-cooler/main.kcl",
"multipleFiles": true,
"title": "CPU Cooler",
"description": "A CPU cooler is a device designed to dissipate heat generated by the CPU of a computer. They consist of a brazed heat sink made from aluminum or copper alloys, and one or two axial fans to move airflow across the heat sink.",
"files": [
"fan-housing.kcl",
"fan.kcl",
"heat-sink.kcl",
"main.kcl",
"motor.kcl",
"mounting-wire.kcl",
"parameters.kcl",
"removable-sticker.kcl"
]
},
{ {
"file": "main.kcl", "file": "main.kcl",
"pathFromProjectDirectoryToFirstFile": "cycloidal-gear/main.kcl", "pathFromProjectDirectoryToFirstFile": "cycloidal-gear/main.kcl",
@ -347,12 +384,15 @@
}, },
{ {
"file": "main.kcl", "file": "main.kcl",
"pathFromProjectDirectoryToFirstFile": "parametric-bearing-pillow-block/main.kcl", "pathFromProjectDirectoryToFirstFile": "pillow-block-bearing/main.kcl",
"multipleFiles": false, "multipleFiles": true,
"title": "Parametric Bearing Pillow Block", "title": "Pillow Block Bearing",
"description": "A bearing pillow block, also known as a plummer block or pillow block bearing, is a pedestal used to provide support for a rotating shaft with the help of compatible bearings and various accessories. Housing a bearing, the pillow block provides a secure and stable foundation that allows the shaft to rotate smoothly within its machinery setup. These components are essential in a wide range of mechanical systems and machinery, playing a key role in reducing friction and supporting radial and axial loads.", "description": "A bearing pillow block, also known as a plummer block or pillow block bearing, is a pedestal used to provide support for a rotating shaft with the help of compatible bearings and various accessories. Housing a bearing, the pillow block provides a secure and stable foundation that allows the shaft to rotate smoothly within its machinery setup. These components are essential in a wide range of mechanical systems and machinery, playing a key role in reducing friction and supporting radial and axial loads.",
"files": [ "files": [
"main.kcl" "ball-bearing.kcl",
"block.kcl",
"main.kcl",
"parameters.kcl"
] ]
}, },
{ {

View File

@ -1,51 +0,0 @@
// Parametric Bearing Pillow Block
// A bearing pillow block, also known as a plummer block or pillow block bearing, is a pedestal used to provide support for a rotating shaft with the help of compatible bearings and various accessories. Housing a bearing, the pillow block provides a secure and stable foundation that allows the shaft to rotate smoothly within its machinery setup. These components are essential in a wide range of mechanical systems and machinery, playing a key role in reducing friction and supporting radial and axial loads.
// Set units
@settings(defaultLengthUnit = in, kclVersion = 1.0)
// Define parameters
length = 6
width = 4
height = 1
cbDepth = .25
cbDia = .7
holeDia = .375
padding = 1.5
bearingDia = 3
// Sketch the block body
body = startSketchOn(XY)
|> startProfile(at = [-width / 2, -length / 2])
|> line(endAbsolute = [width / 2, -length / 2])
|> line(endAbsolute = [width / 2, length / 2])
|> line(endAbsolute = [-width / 2, length / 2])
|> close()
|> extrude(length = height)
counterBoreHoles = startSketchOn(body, face = END)
|> circle(
center = [
-(width / 2 - (padding / 2)),
-(length / 2 - (padding / 2))
],
radius = cbDia / 2,
)
|> patternLinear2d(instances = 2, distance = length - padding, axis = [0, 1])
|> patternLinear2d(instances = 2, distance = width - padding, axis = [1, 0])
|> extrude(%, length = -cbDepth)
boltHoles = startSketchOn(body, face = START)
|> circle(
center = [
-(width / 2 - (padding / 2)),
-(length / 2 - (padding / 2))
],
radius = holeDia / 2,
)
|> patternLinear2d(instances = 2, distance = length - padding, axis = [0, 1])
|> patternLinear2d(instances = 2, distance = width - padding, axis = [1, 0])
|> extrude(length = -height + cbDepth)
centerHole = startSketchOn(body, face = END)
|> circle(center = [0, 0], radius = bearingDia / 2)
|> extrude(length = -height)

View File

@ -0,0 +1,101 @@
// Pillow Block Bearing
// The ball bearing for the pillow block bearing assembly
// Set units
@settings(defaultLengthUnit = in)
// Import Parameters
import * from "parameters.kcl"
// Create the sketch of one of the balls. The ball diameter is sized as a fraction of the difference between inner and outer radius of the bearing
ballsSketch = startSketchOn(offsetPlane(XY, offset = stockThickness / 2))
|> startProfile(at = [bearingBoreDiameter / 2 + 0.1, 0.001])
|> arc(angleEnd = 0, angleStart = 180, radius = sphereDia / 2)
|> close()
// Revolve the ball to make a sphere and pattern around the inside wall
balls = revolve(ballsSketch, axis = X)
|> patternCircular3d(
arcDegrees = 360,
axis = [0, 0, 1],
center = [0, 0, 0],
instances = 16,
rotateDuplicates = true,
)
// Create the sketch for the chain around the balls
chainSketch = startSketchOn(offsetPlane(XY, offset = stockThickness / 2))
|> startProfile(at = [
bearingBoreDiameter / 2 + 0.1 + sphereDia / 2 - (chainWidth / 2),
0.125 * sin(60deg)
])
|> arc(angleEnd = 60, angleStart = 120, radius = sphereDia / 2)
|> line(end = [0, chainThickness])
|> line(end = [-chainWidth, 0])
|> close()
// Revolve the chain sketch
chainHead = revolve(chainSketch, axis = X)
|> patternCircular3d(
arcDegrees = 360,
axis = [0, 0, 1],
center = [0, 0, 0],
instances = 16,
rotateDuplicates = true,
)
// Create the sketch for the links in between the chains
linkSketch = startSketchOn(XZ)
|> circle(
center = [
bearingBoreDiameter / 2 + 0.1 + sphereDia / 2,
stockThickness / 2
],
radius = linkDiameter / 2,
)
// Create the walls of the bearing
bearingBody = startSketchOn(XZ)
bearingUpper = startProfile(
bearingBody,
at = [
bearingOuterDiameter / 2 - .07,
stockThickness
],
)
|> angledLine(angle = -91, length = 0.05)
|> xLine(length = -(bearingOuterDiameter / 2 - (bearingBoreDiameter / 2)) + .145)
|> yLine(endAbsolute = 0.105)
|> xLine(length = -0.025)
|> angledLine(angle = 91, endAbsoluteY = profileStartY(%))
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|> close()
|> revolve(angle = 360, axis = Y)
|> appearance(%, color = "#121212")
bearingLower = startProfile(bearingBody, at = [bearingBoreDiameter / 2, 0.025])
|> xLine(length = 0.05)
|> angledLine(angle = 75, length = 0.04, tag = $seg01)
|> xLine(length = 0.05)
|> angledLine(angle = -75, length = segLen(seg01))
|> xLine(endAbsolute = bearingOuterDiameter / 2)
|> yLine(length = stockThickness)
|> xLine(length = -0.07)
|> angledLine(angle = -91, endAbsoluteY = profileStartY(%) + .075)
|> xLine(endAbsolute = profileStartX(%) + .05)
|> angledLine(angle = 91, endAbsoluteY = stockThickness * 1.25)
|> xLine(endAbsolute = profileStartX(%))
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|> close()
|> revolve(angle = 360, axis = Y)
|> appearance(%, color = "#f0f0f0")
// Revolve the link sketch
revolve(linkSketch, axis = Y, angle = 360 / 16)
|> patternCircular3d(
arcDegrees = 360,
axis = [0, 0, 1],
center = [0, 0, 0],
instances = 16,
rotateDuplicates = true,
)

View File

@ -0,0 +1,56 @@
// Pillow Block Bearing
// The machined block for the pillow block bearing assembly. The block is dimensioned using the bolt pattern spacing, and each bolt hole includes a counterbore
// Set units
@settings(defaultLengthUnit = in)
// Import Parameters
import * from "parameters.kcl"
// Calculate the dimensions of the block using the specified bolt spacing. The size of the block can be defined by adding a multiple of the counterbore diameter to the bolt spacing
blockLength = boltSpacingX + counterboreDiameter + boltDiameter
blockWidth = boltSpacingY + counterboreDiameter + boltDiameter
// Draw the base plate
plateSketch = startSketchOn(XY)
|> startProfile(at = [-blockLength / 2, -blockWidth / 2])
|> angledLine(angle = 0, length = blockLength, tag = $rectangleSegmentA001)
|> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = blockWidth, tag = $rectangleSegmentB001)
|> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001)
|> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD001)
|> close()
|> subtract2d(tool = circle(center = [0, 0], radius = bearingOuterDiameter / 2))
plateBody = extrude(plateSketch, length = stockThickness)
|> appearance(%, color = "#1e62eb")
|> fillet(
radius = boltDiameter * 1 / 3,
tags = [
getNextAdjacentEdge(rectangleSegmentB001),
getNextAdjacentEdge(rectangleSegmentA001),
getNextAdjacentEdge(rectangleSegmentC001),
getNextAdjacentEdge(rectangleSegmentD001)
],
)
// Define hole positions
holePositions = [
[-boltSpacingX / 2, -boltSpacingY / 2],
[-boltSpacingX / 2, boltSpacingY / 2],
[boltSpacingX / 2, -boltSpacingY / 2],
[boltSpacingX / 2, boltSpacingY / 2]
]
// Function to create a counterbored hole
fn counterbore(@holePosition) {
cbBore = startSketchOn(plateBody, face = END)
|> circle(center = holePosition, radius = counterboreDiameter / 2)
|> extrude(length = -counterboreDepth)
cbBolt = startSketchOn(cbBore, face = START)
|> circle(center = holePosition, radius = boltDiameter / 2, tag = $hole01)
|> extrude(length = -stockThickness + counterboreDepth)
return { }
}
// Place a counterbored hole at each bolt hole position
map(holePositions, f = counterbore)

View File

@ -0,0 +1,14 @@
// Pillow Block Bearing
// A bearing pillow block, also known as a plummer block or pillow block bearing, is a pedestal used to provide support for a rotating shaft with the help of compatible bearings and various accessories. Housing a bearing, the pillow block provides a secure and stable foundation that allows the shaft to rotate smoothly within its machinery setup. These components are essential in a wide range of mechanical systems and machinery, playing a key role in reducing friction and supporting radial and axial loads.
// Set units
@settings(defaultLengthUnit = in)
// Import parts and parameters
import * from "parameters.kcl"
import "ball-bearing.kcl" as ballBearing
import "block.kcl" as block
// Render each part
ballBearing
block

View File

@ -0,0 +1,18 @@
// Global parameters for the pillow block bearing
// Set units
@settings(defaultLengthUnit = in)
// Export parameters
export boltSpacingX = 5
export boltSpacingY = 3
export boltDiameter = 3 / 8
export counterboreDiameter = 3 / 4
export counterboreDepth = 3 / 16
export stockThickness = .5
export bearingBoreDiameter = 1 + 3 / 4
export bearingOuterDiameter = bearingBoreDiameter * 1.5
export sphereDia = (bearingOuterDiameter - bearingBoreDiameter) / 4
export chainWidth = sphereDia / 2
export chainThickness = sphereDia / 8
export linkDiameter = sphereDia / 4

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 67 KiB

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
--- ---
source: kcl-lib/src/simulation_tests.rs source: kcl-lib/src/simulation_tests.rs
description: Artifact graph flowchart parametric-bearing-pillow-block.kcl description: Artifact graph flowchart counterdrilled-weldment.kcl
extension: md extension: md
snapshot_kind: binary snapshot_kind: binary
--- ---

View File

@ -0,0 +1,565 @@
```mermaid
flowchart LR
subgraph path15 [Path]
15["Path<br>[757, 811, 0]"]
30["Segment<br>[817, 889, 0]"]
31["Segment<br>[895, 998, 0]"]
32["Segment<br>[1004, 1121, 0]"]
33["Segment<br>[1127, 1212, 0]"]
34["Segment<br>[1218, 1225, 0]"]
64[Solid2d]
end
subgraph path16 [Path]
16["Path<br>[1249, 1304, 0]"]
35["Segment<br>[1249, 1304, 0]"]
73[Solid2d]
end
subgraph path17 [Path]
17["Path<br>[1995, 2059, 0]"]
37["Segment<br>[1995, 2059, 0]"]
61[Solid2d]
end
subgraph path18 [Path]
18["Path<br>[1995, 2059, 0]"]
38["Segment<br>[1995, 2059, 0]"]
62[Solid2d]
end
subgraph path19 [Path]
19["Path<br>[1995, 2059, 0]"]
36["Segment<br>[1995, 2059, 0]"]
67[Solid2d]
end
subgraph path20 [Path]
20["Path<br>[1995, 2059, 0]"]
39["Segment<br>[1995, 2059, 0]"]
72[Solid2d]
end
subgraph path21 [Path]
21["Path<br>[2159, 2230, 0]"]
43["Segment<br>[2159, 2230, 0]"]
60[Solid2d]
end
subgraph path22 [Path]
22["Path<br>[2159, 2230, 0]"]
42["Segment<br>[2159, 2230, 0]"]
63[Solid2d]
end
subgraph path23 [Path]
23["Path<br>[2159, 2230, 0]"]
41["Segment<br>[2159, 2230, 0]"]
65[Solid2d]
end
subgraph path24 [Path]
24["Path<br>[2159, 2230, 0]"]
40["Segment<br>[2159, 2230, 0]"]
68[Solid2d]
end
subgraph path25 [Path]
25["Path<br>[2643, 2684, 0]"]
44["Segment<br>[2643, 2684, 0]"]
70[Solid2d]
end
subgraph path26 [Path]
26["Path<br>[2840, 2911, 0]"]
45["Segment<br>[2840, 2911, 0]"]
71[Solid2d]
end
subgraph path27 [Path]
27["Path<br>[2935, 2990, 0]"]
46["Segment<br>[2935, 2990, 0]"]
69[Solid2d]
end
subgraph path28 [Path]
28["Path<br>[3369, 3470, 0]"]
47["Segment<br>[3478, 3575, 0]"]
49["Segment<br>[3583, 3603, 0]"]
52["Segment<br>[3611, 3717, 0]"]
54["Segment<br>[3725, 3746, 0]"]
56["Segment<br>[3754, 3810, 0]"]
57["Segment<br>[3818, 3825, 0]"]
59[Solid2d]
end
subgraph path29 [Path]
29["Path<br>[3369, 3470, 0]"]
48["Segment<br>[3478, 3575, 0]"]
50["Segment<br>[3583, 3603, 0]"]
51["Segment<br>[3611, 3717, 0]"]
53["Segment<br>[3725, 3746, 0]"]
55["Segment<br>[3754, 3810, 0]"]
58["Segment<br>[3818, 3825, 0]"]
66[Solid2d]
end
1["Plane<br>[734, 751, 0]"]
2["Plane<br>[2620, 2637, 0]"]
3["Plane<br>[2793, 2833, 0]"]
4["Plane<br>[3337, 3361, 0]"]
5["Plane<br>[3337, 3361, 0]"]
6["StartSketchOnPlane<br>[2779, 2834, 0]"]
7["StartSketchOnFace<br>[2115, 2151, 0]"]
8["StartSketchOnFace<br>[1951, 1987, 0]"]
9["StartSketchOnFace<br>[2115, 2151, 0]"]
10["StartSketchOnFace<br>[2115, 2151, 0]"]
11["StartSketchOnFace<br>[2115, 2151, 0]"]
12["StartSketchOnFace<br>[1951, 1987, 0]"]
13["StartSketchOnFace<br>[1951, 1987, 0]"]
14["StartSketchOnFace<br>[1951, 1987, 0]"]
74["Sweep Extrusion<br>[1318, 1363, 0]"]
75["Sweep Extrusion<br>[2067, 2103, 0]"]
76["Sweep Extrusion<br>[2067, 2103, 0]"]
77["Sweep Extrusion<br>[2067, 2103, 0]"]
78["Sweep Extrusion<br>[2067, 2103, 0]"]
79["Sweep Extrusion<br>[2238, 2291, 0]"]
80["Sweep Extrusion<br>[2238, 2291, 0]"]
81["Sweep Extrusion<br>[2238, 2291, 0]"]
82["Sweep Extrusion<br>[2238, 2291, 0]"]
83["Sweep Extrusion<br>[2690, 2711, 0]"]
84["Sweep Extrusion<br>[2997, 3025, 0]"]
85["Sweep Extrusion<br>[3833, 3882, 0]"]
86["Sweep Extrusion<br>[3833, 3882, 0]"]
87["CompositeSolid Subtract<br>[3031, 3058, 0]"]
88[Wall]
89[Wall]
90[Wall]
91[Wall]
92[Wall]
93[Wall]
94[Wall]
95[Wall]
96[Wall]
97[Wall]
98[Wall]
99[Wall]
100[Wall]
101[Wall]
102[Wall]
103[Wall]
104[Wall]
105[Wall]
106[Wall]
107[Wall]
108[Wall]
109[Wall]
110[Wall]
111[Wall]
112["Cap Start"]
113["Cap Start"]
114["Cap Start"]
115["Cap Start"]
116["Cap Start"]
117["Cap Start"]
118["Cap Start"]
119["Cap Start"]
120["Cap Start"]
121["Cap End"]
122["Cap End"]
123["Cap End"]
124["Cap End"]
125["Cap End"]
126["SweepEdge Opposite"]
127["SweepEdge Opposite"]
128["SweepEdge Opposite"]
129["SweepEdge Opposite"]
130["SweepEdge Opposite"]
131["SweepEdge Opposite"]
132["SweepEdge Opposite"]
133["SweepEdge Opposite"]
134["SweepEdge Opposite"]
135["SweepEdge Opposite"]
136["SweepEdge Opposite"]
137["SweepEdge Opposite"]
138["SweepEdge Opposite"]
139["SweepEdge Opposite"]
140["SweepEdge Opposite"]
141["SweepEdge Opposite"]
142["SweepEdge Opposite"]
143["SweepEdge Opposite"]
144["SweepEdge Opposite"]
145["SweepEdge Opposite"]
146["SweepEdge Opposite"]
147["SweepEdge Opposite"]
148["SweepEdge Opposite"]
149["SweepEdge Opposite"]
150["SweepEdge Adjacent"]
151["SweepEdge Adjacent"]
152["SweepEdge Adjacent"]
153["SweepEdge Adjacent"]
154["SweepEdge Adjacent"]
155["SweepEdge Adjacent"]
156["SweepEdge Adjacent"]
157["SweepEdge Adjacent"]
158["SweepEdge Adjacent"]
159["SweepEdge Adjacent"]
160["SweepEdge Adjacent"]
161["SweepEdge Adjacent"]
162["SweepEdge Adjacent"]
163["SweepEdge Adjacent"]
164["SweepEdge Adjacent"]
165["SweepEdge Adjacent"]
166["SweepEdge Adjacent"]
167["SweepEdge Adjacent"]
168["SweepEdge Adjacent"]
169["SweepEdge Adjacent"]
170["SweepEdge Adjacent"]
171["SweepEdge Adjacent"]
172["SweepEdge Adjacent"]
173["SweepEdge Adjacent"]
174["EdgeCut Chamfer<br>[1369, 1651, 0]"]
175["EdgeCut Chamfer<br>[1369, 1651, 0]"]
176["EdgeCut Chamfer<br>[1369, 1651, 0]"]
177["EdgeCut Chamfer<br>[1369, 1651, 0]"]
178["EdgeCut Chamfer<br>[2360, 2446, 0]"]
179["EdgeCut Chamfer<br>[2360, 2446, 0]"]
180["EdgeCut Chamfer<br>[2360, 2446, 0]"]
181["EdgeCut Chamfer<br>[2360, 2446, 0]"]
1 --- 15
1 --- 16
2 --- 25
3 <--x 6
3 --- 26
3 --- 27
4 --- 29
5 --- 28
113 x--> 7
123 x--> 8
120 x--> 9
116 x--> 10
119 x--> 11
123 x--> 12
123 x--> 13
123 x--> 14
15 --- 30
15 --- 31
15 --- 32
15 --- 33
15 --- 34
15 --- 64
15 ---- 74
16 --- 35
16 --- 73
17 --- 37
17 --- 61
17 ---- 78
123 --- 17
18 --- 38
18 --- 62
18 ---- 76
123 --- 18
19 --- 36
19 --- 67
19 ---- 77
123 --- 19
20 --- 39
20 --- 72
20 ---- 75
123 --- 20
21 --- 43
21 --- 60
21 ---- 79
119 --- 21
22 --- 42
22 --- 63
22 ---- 82
120 --- 22
23 --- 41
23 --- 65
23 ---- 80
113 --- 23
24 --- 40
24 --- 68
24 ---- 81
116 --- 24
25 --- 44
25 --- 70
25 ---- 83
25 --- 87
26 --- 45
26 --- 71
26 ---- 84
26 --- 87
27 --- 46
27 --- 69
28 --- 47
28 --- 49
28 --- 52
28 --- 54
28 --- 56
28 --- 57
28 --- 59
28 ---- 85
29 --- 48
29 --- 50
29 --- 51
29 --- 53
29 --- 55
29 --- 58
29 --- 66
29 ---- 86
30 --- 110
30 x--> 115
30 --- 148
30 --- 170
31 --- 108
31 x--> 115
31 --- 145
31 --- 171
32 --- 107
32 x--> 115
32 --- 147
32 --- 169
33 --- 109
33 x--> 115
33 --- 146
33 --- 172
36 --- 99
36 x--> 123
36 --- 137
36 --- 161
37 --- 106
37 x--> 123
37 --- 144
37 --- 168
38 --- 98
38 x--> 123
38 --- 136
38 --- 160
39 --- 97
39 x--> 123
39 --- 135
39 --- 159
40 --- 105
40 x--> 116
40 --- 143
40 --- 167
40 --- 180
41 --- 89
41 x--> 113
41 --- 127
41 --- 151
41 --- 181
42 --- 111
42 x--> 120
42 --- 149
42 --- 173
42 --- 178
43 --- 88
43 x--> 119
43 --- 126
43 --- 150
43 --- 179
44 --- 90
44 x--> 122
44 --- 128
44 --- 152
45 --- 91
45 x--> 112
45 --- 129
45 --- 153
47 --- 92
47 x--> 118
47 --- 131
47 --- 158
48 --- 104
48 x--> 117
48 --- 139
48 --- 164
49 --- 93
49 x--> 118
49 --- 133
49 --- 157
50 --- 103
50 x--> 117
50 --- 141
50 --- 162
51 --- 100
51 x--> 117
51 --- 142
51 --- 163
52 --- 94
52 x--> 118
52 --- 134
52 --- 156
53 --- 102
53 x--> 117
53 --- 138
53 --- 166
54 --- 95
54 x--> 118
54 --- 132
54 --- 154
55 --- 101
55 x--> 117
55 --- 140
55 --- 165
56 --- 96
56 x--> 118
56 --- 130
56 --- 155
74 --- 107
74 --- 108
74 --- 109
74 --- 110
74 --- 115
74 --- 123
74 --- 145
74 --- 146
74 --- 147
74 --- 148
74 --- 169
74 --- 170
74 --- 171
74 --- 172
75 --- 97
75 --- 120
75 --- 135
75 --- 159
76 --- 98
76 --- 119
76 --- 136
76 --- 160
77 --- 99
77 --- 116
77 --- 137
77 --- 161
78 --- 106
78 --- 113
78 --- 144
78 --- 168
79 --- 88
79 --- 126
79 --- 150
80 --- 89
80 --- 127
80 --- 151
81 --- 105
81 --- 143
81 --- 167
82 --- 111
82 --- 149
82 --- 173
83 --- 90
83 --- 114
83 --- 122
83 --- 128
83 --- 152
84 --- 91
84 --- 112
84 --- 121
84 --- 129
84 --- 153
85 --- 92
85 --- 93
85 --- 94
85 --- 95
85 --- 96
85 --- 118
85 --- 125
85 --- 130
85 --- 131
85 --- 132
85 --- 133
85 --- 134
85 --- 154
85 --- 155
85 --- 156
85 --- 157
85 --- 158
86 --- 100
86 --- 101
86 --- 102
86 --- 103
86 --- 104
86 --- 117
86 --- 124
86 --- 138
86 --- 139
86 --- 140
86 --- 141
86 --- 142
86 --- 162
86 --- 163
86 --- 164
86 --- 165
86 --- 166
126 <--x 88
150 <--x 88
127 <--x 89
151 <--x 89
128 <--x 90
152 <--x 90
129 <--x 91
153 <--x 91
131 <--x 92
155 <--x 92
158 <--x 92
133 <--x 93
157 <--x 93
158 <--x 93
134 <--x 94
156 <--x 94
157 <--x 94
132 <--x 95
154 <--x 95
156 <--x 95
130 <--x 96
154 <--x 96
155 <--x 96
135 <--x 97
159 <--x 97
136 <--x 98
160 <--x 98
137 <--x 99
161 <--x 99
142 <--x 100
162 <--x 100
163 <--x 100
140 <--x 101
165 <--x 101
166 <--x 101
138 <--x 102
163 <--x 102
166 <--x 102
141 <--x 103
162 <--x 103
164 <--x 103
139 <--x 104
164 <--x 104
165 <--x 104
143 <--x 105
167 <--x 105
144 <--x 106
168 <--x 106
147 <--x 107
145 <--x 108
146 <--x 109
148 <--x 110
149 <--x 111
173 <--x 111
144 <--x 113
128 <--x 114
126 <--x 115
127 <--x 115
143 <--x 115
149 <--x 115
137 <--x 116
136 <--x 119
135 <--x 120
129 <--x 121
145 <--x 123
146 <--x 123
147 <--x 123
148 <--x 123
138 <--x 124
139 <--x 124
140 <--x 124
141 <--x 124
142 <--x 124
130 <--x 125
131 <--x 125
132 <--x 125
133 <--x 125
134 <--x 125
169 <--x 175
170 <--x 174
171 <--x 177
172 <--x 176
```

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

View File

@ -0,0 +1,6 @@
---
source: kcl-lib/src/simulation_tests.rs
description: Artifact graph flowchart countersunk-plate.kcl
extension: md
snapshot_kind: binary
---

View File

@ -0,0 +1,208 @@
```mermaid
flowchart LR
subgraph path4 [Path]
4["Path<br>[812, 876, 0]"]
8["Segment<br>[882, 939, 0]"]
9["Segment<br>[945, 1004, 0]"]
10["Segment<br>[1010, 1067, 0]"]
11["Segment<br>[1073, 1126, 0]"]
12["Segment<br>[1132, 1190, 0]"]
13["Segment<br>[1196, 1255, 0]"]
14["Segment<br>[1261, 1317, 0]"]
15["Segment<br>[1323, 1388, 0]"]
16["Segment<br>[1394, 1401, 0]"]
23[Solid2d]
end
subgraph path5 [Path]
5["Path<br>[1425, 1487, 0]"]
17["Segment<br>[1425, 1487, 0]"]
20[Solid2d]
end
subgraph path6 [Path]
6["Path<br>[1650, 1726, 0]"]
18["Segment<br>[1650, 1726, 0]"]
21[Solid2d]
end
subgraph path7 [Path]
7["Path<br>[1650, 1726, 0]"]
19["Segment<br>[1650, 1726, 0]"]
22[Solid2d]
end
1["Plane<br>[700, 717, 0]"]
2["StartSketchOnFace<br>[1606, 1642, 0]"]
3["StartSketchOnFace<br>[1606, 1642, 0]"]
24["Sweep Extrusion<br>[1494, 1529, 0]"]
25["Sweep Extrusion<br>[1734, 1767, 0]"]
26["Sweep Extrusion<br>[1734, 1767, 0]"]
27[Wall]
28[Wall]
29[Wall]
30[Wall]
31[Wall]
32[Wall]
33[Wall]
34[Wall]
35[Wall]
36[Wall]
37["Cap Start"]
38["Cap End"]
39["SweepEdge Opposite"]
40["SweepEdge Opposite"]
41["SweepEdge Opposite"]
42["SweepEdge Opposite"]
43["SweepEdge Opposite"]
44["SweepEdge Opposite"]
45["SweepEdge Opposite"]
46["SweepEdge Opposite"]
47["SweepEdge Opposite"]
48["SweepEdge Opposite"]
49["SweepEdge Adjacent"]
50["SweepEdge Adjacent"]
51["SweepEdge Adjacent"]
52["SweepEdge Adjacent"]
53["SweepEdge Adjacent"]
54["SweepEdge Adjacent"]
55["SweepEdge Adjacent"]
56["SweepEdge Adjacent"]
57["SweepEdge Adjacent"]
58["SweepEdge Adjacent"]
59["EdgeCut Chamfer<br>[1830, 1877, 0]"]
60["EdgeCut Chamfer<br>[1830, 1877, 0]"]
1 --- 4
1 --- 5
38 x--> 2
38 x--> 3
4 --- 8
4 --- 9
4 --- 10
4 --- 11
4 --- 12
4 --- 13
4 --- 14
4 --- 15
4 --- 16
4 --- 23
4 ---- 24
5 --- 17
5 --- 20
6 --- 18
6 --- 21
6 ---- 25
38 --- 6
7 --- 19
7 --- 22
7 ---- 26
38 --- 7
8 --- 33
8 x--> 37
8 --- 41
8 --- 53
9 --- 30
9 x--> 37
9 --- 43
9 --- 54
10 --- 29
10 x--> 37
10 --- 46
10 --- 49
11 --- 31
11 x--> 37
11 --- 40
11 --- 55
12 --- 28
12 x--> 37
12 --- 45
12 --- 50
13 --- 27
13 x--> 37
13 --- 42
13 --- 52
14 --- 32
14 x--> 37
14 --- 39
14 --- 56
15 --- 34
15 x--> 37
15 --- 44
15 --- 51
18 --- 35
18 x--> 38
18 --- 47
18 --- 57
18 --- 59
19 --- 36
19 x--> 38
19 --- 48
19 --- 58
19 --- 60
24 --- 27
24 --- 28
24 --- 29
24 --- 30
24 --- 31
24 --- 32
24 --- 33
24 --- 34
24 --- 37
24 --- 38
24 --- 39
24 --- 40
24 --- 41
24 --- 42
24 --- 43
24 --- 44
24 --- 45
24 --- 46
24 --- 49
24 --- 50
24 --- 51
24 --- 52
24 --- 53
24 --- 54
24 --- 55
24 --- 56
25 --- 35
25 --- 47
25 --- 57
26 --- 36
26 --- 48
26 --- 58
42 <--x 27
50 <--x 27
52 <--x 27
45 <--x 28
50 <--x 28
55 <--x 28
46 <--x 29
49 <--x 29
54 <--x 29
43 <--x 30
53 <--x 30
54 <--x 30
40 <--x 31
49 <--x 31
55 <--x 31
39 <--x 32
52 <--x 32
56 <--x 32
41 <--x 33
51 <--x 33
53 <--x 33
44 <--x 34
51 <--x 34
56 <--x 34
47 <--x 35
57 <--x 35
48 <--x 36
58 <--x 36
47 <--x 37
48 <--x 37
39 <--x 38
40 <--x 38
41 <--x 38
42 <--x 38
43 <--x 38
44 <--x 38
45 <--x 38
46 <--x 38
```

View File

@ -1,6 +1,6 @@
--- ---
source: kcl-lib/src/simulation_tests.rs source: kcl-lib/src/simulation_tests.rs
description: Operations executed parametric-bearing-pillow-block.kcl description: Operations executed countersunk-plate.kcl
--- ---
[ [
{ {
@ -16,12 +16,77 @@ description: Operations executed parametric-bearing-pillow-block.kcl
"sourceRange": [] "sourceRange": []
} }
}, },
{
"type": "GroupBegin",
"group": {
"type": "FunctionCall",
"name": "polar",
"functionSourceRange": [],
"unlabeledArg": null,
"labeledArgs": {
"angle": {
"value": {
"type": "Number",
"value": 1.1971635237196154,
"ty": {
"type": "Known",
"type": "Angle",
"type": "Radians"
}
},
"sourceRange": []
},
"length": {
"value": {
"type": "Number",
"value": 1.6625,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
}
},
"sourceRange": []
},
{
"labeledArgs": {
"tool": {
"value": {
"type": "Sketch",
"value": {
"artifactId": "[uuid]"
}
},
"sourceRange": []
}
},
"name": "subtract2d",
"sourceRange": [],
"type": "StdLibCall",
"unlabeledArg": {
"value": {
"type": "Sketch",
"value": {
"artifactId": "[uuid]"
}
},
"sourceRange": []
}
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {
"value": { "value": {
"type": "Number", "type": "Number",
"value": 1.0, "value": 0.375,
"ty": { "ty": {
"type": "Default", "type": "Default",
"len": { "len": {
@ -71,139 +136,6 @@ description: Operations executed parametric-bearing-pillow-block.kcl
"sourceRange": [] "sourceRange": []
} }
}, },
{
"labeledArgs": {
"length": {
"value": {
"type": "Number",
"value": -0.25,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"name": "extrude",
"sourceRange": [],
"type": "StdLibCall",
"unlabeledArg": {
"value": {
"type": "Array",
"value": [
{
"type": "Sketch",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Sketch",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Sketch",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Sketch",
"value": {
"artifactId": "[uuid]"
}
}
]
},
"sourceRange": []
}
},
{
"labeledArgs": {
"face": {
"value": {
"type": "String",
"value": "start"
},
"sourceRange": []
}
},
"name": "startSketchOn",
"sourceRange": [],
"type": "StdLibCall",
"unlabeledArg": {
"value": {
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
"sourceRange": []
}
},
{
"labeledArgs": {
"length": {
"value": {
"type": "Number",
"value": -0.75,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"name": "extrude",
"sourceRange": [],
"type": "StdLibCall",
"unlabeledArg": {
"value": {
"type": "Array",
"value": [
{
"type": "Sketch",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Sketch",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Sketch",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Sketch",
"value": {
"artifactId": "[uuid]"
}
}
]
},
"sourceRange": []
}
},
{ {
"labeledArgs": { "labeledArgs": {
"face": { "face": {
@ -232,7 +164,7 @@ description: Operations executed parametric-bearing-pillow-block.kcl
"length": { "length": {
"value": { "value": {
"type": "Number", "type": "Number",
"value": -1.0, "value": -0.375,
"ty": { "ty": {
"type": "Default", "type": "Default",
"len": { "len": {
@ -258,5 +190,188 @@ description: Operations executed parametric-bearing-pillow-block.kcl
}, },
"sourceRange": [] "sourceRange": []
} }
},
{
"labeledArgs": {
"length": {
"value": {
"type": "Number",
"value": -0.375,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"name": "extrude",
"sourceRange": [],
"type": "StdLibCall",
"unlabeledArg": {
"value": {
"type": "Sketch",
"value": {
"artifactId": "[uuid]"
}
},
"sourceRange": []
}
},
{
"type": "KclStdLibCall",
"name": "chamfer",
"unlabeledArg": {
"value": {
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
"sourceRange": []
},
"labeledArgs": {
"length": {
"value": {
"type": "Number",
"value": 0.25,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
},
"tags": {
"value": {
"type": "Array",
"value": [
{
"type": "TagIdentifier",
"value": "hole01",
"artifact_id": "[uuid]"
}
]
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "KclStdLibCall",
"name": "chamfer",
"unlabeledArg": {
"value": {
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
"sourceRange": []
},
"labeledArgs": {
"length": {
"value": {
"type": "Number",
"value": 0.25,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
},
"tags": {
"value": {
"type": "Array",
"value": [
{
"type": "TagIdentifier",
"value": "hole01",
"artifact_id": "[uuid]"
}
]
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "GroupBegin",
"group": {
"type": "FunctionCall",
"name": "countersink",
"functionSourceRange": [],
"unlabeledArg": {
"value": {
"type": "Number",
"value": -2.5,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
},
"labeledArgs": {}
},
"sourceRange": []
},
{
"type": "GroupBegin",
"group": {
"type": "FunctionCall",
"name": "countersink",
"functionSourceRange": [],
"unlabeledArg": {
"value": {
"type": "Number",
"value": 2.5,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
},
"labeledArgs": {}
},
"sourceRange": []
},
{
"type": "GroupEnd"
},
{
"type": "GroupEnd"
},
{
"type": "GroupEnd"
} }
] ]

View File

@ -0,0 +1,446 @@
---
source: kcl-lib/src/simulation_tests.rs
description: Variables in memory after executing countersunk-plate.kcl
---
{
"boltDiameter": {
"type": "Number",
"value": 0.25,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"boltSpacing": {
"type": "Number",
"value": 5.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"centerHoleDiameter": {
"type": "Number",
"value": 1.75,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"countersink": {
"type": "Function",
"value": null
},
"d": {
"type": "Number",
"value": 2.5,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"plateBody": {
"type": "Solid",
"value": {
"type": "Solid",
"id": "[uuid]",
"artifactId": "[uuid]",
"value": [
{
"faceId": "[uuid]",
"id": "[uuid]",
"sourceRange": [],
"tag": null,
"type": "extrudePlane"
},
{
"faceId": "[uuid]",
"id": "[uuid]",
"sourceRange": [],
"tag": null,
"type": "extrudeArc"
},
{
"faceId": "[uuid]",
"id": "[uuid]",
"sourceRange": [],
"tag": null,
"type": "extrudePlane"
},
{
"faceId": "[uuid]",
"id": "[uuid]",
"sourceRange": [],
"tag": null,
"type": "extrudeArc"
},
{
"faceId": "[uuid]",
"id": "[uuid]",
"sourceRange": [],
"tag": null,
"type": "extrudePlane"
},
{
"faceId": "[uuid]",
"id": "[uuid]",
"sourceRange": [],
"tag": null,
"type": "extrudeArc"
},
{
"faceId": "[uuid]",
"id": "[uuid]",
"sourceRange": [],
"tag": null,
"type": "extrudePlane"
},
{
"faceId": "[uuid]",
"id": "[uuid]",
"sourceRange": [],
"tag": null,
"type": "extrudeArc"
}
],
"sketch": {
"type": "Sketch",
"id": "[uuid]",
"paths": [
{
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
},
"from": [
0.6068,
1.5478
],
"tag": null,
"to": [
2.7738,
0.6983
],
"type": "ToPoint",
"units": {
"type": "Inches"
}
},
{
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
},
"ccw": false,
"center": [
2.5,
-0.0
],
"from": [
2.7738,
0.6983
],
"tag": null,
"to": [
2.7737,
-0.6983
],
"type": "TangentialArc",
"units": {
"type": "Inches"
}
},
{
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
},
"from": [
2.7737,
-0.6983
],
"tag": null,
"to": [
0.6068,
-1.5478
],
"type": "ToPoint",
"units": {
"type": "Inches"
}
},
{
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
},
"ccw": false,
"center": [
-0.0,
-0.0
],
"from": [
0.6068,
-1.5478
],
"tag": null,
"to": [
-0.6068,
-1.5478
],
"type": "TangentialArc",
"units": {
"type": "Inches"
}
},
{
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
},
"from": [
-0.6068,
-1.5478
],
"tag": null,
"to": [
-2.7738,
-0.6983
],
"type": "ToPoint",
"units": {
"type": "Inches"
}
},
{
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
},
"ccw": false,
"center": [
-2.5,
-0.0
],
"from": [
-2.7738,
-0.6983
],
"tag": null,
"to": [
-2.7738,
0.6983
],
"type": "TangentialArc",
"units": {
"type": "Inches"
}
},
{
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
},
"from": [
-2.7738,
0.6983
],
"tag": null,
"to": [
-0.6068,
1.5478
],
"type": "ToPoint",
"units": {
"type": "Inches"
}
},
{
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
},
"ccw": false,
"center": [
-0.0,
-0.0
],
"from": [
-0.6068,
1.5478
],
"tag": null,
"to": [
0.6068,
1.5478
],
"type": "TangentialArcTo",
"units": {
"type": "Inches"
}
},
{
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
},
"from": [
0.6068,
1.5478
],
"tag": null,
"to": [
0.6068,
1.5478
],
"type": "ToPoint",
"units": {
"type": "Inches"
}
}
],
"on": {
"artifactId": "[uuid]",
"id": "[uuid]",
"origin": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"units": {
"type": "Mm"
}
},
"type": "plane",
"value": "XY",
"xAxis": {
"x": 1.0,
"y": 0.0,
"z": 0.0,
"units": {
"type": "Unknown"
}
},
"yAxis": {
"x": 0.0,
"y": 1.0,
"z": 0.0,
"units": {
"type": "Unknown"
}
}
},
"start": {
"from": [
0.6068,
1.5478
],
"to": [
0.6068,
1.5478
],
"units": {
"type": "Inches"
},
"tag": null,
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
}
},
"artifactId": "[uuid]",
"originalId": "[uuid]",
"units": {
"type": "Inches"
}
},
"height": 0.375,
"startCapId": "[uuid]",
"endCapId": "[uuid]",
"units": {
"type": "Inches"
},
"sectional": false
}
},
"plateThickness": {
"type": "Number",
"value": 0.375,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"r1": {
"type": "Number",
"value": 1.6625,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"r2": {
"type": "Number",
"value": 0.75,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"tangentAngle": {
"type": "Number",
"value": 0.3736,
"ty": {
"type": "Known",
"type": "Angle",
"type": "Radians"
}
},
"tangentLength": {
"type": "Number",
"value": 2.3275,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,6 @@
---
source: kcl-lib/src/simulation_tests.rs
description: Artifact graph flowchart cpu-cooler.kcl
extension: md
snapshot_kind: binary
---

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,955 @@
---
source: kcl-lib/src/simulation_tests.rs
description: Operations executed cpu-cooler.kcl
---
[
{
"type": "GroupBegin",
"group": {
"type": "ModuleInstance",
"name": "parameters.kcl",
"moduleId": 0
},
"sourceRange": []
},
{
"type": "GroupBegin",
"group": {
"type": "ModuleInstance",
"name": "fan-housing.kcl",
"moduleId": 0
},
"sourceRange": []
},
{
"type": "GroupBegin",
"group": {
"type": "ModuleInstance",
"name": "motor.kcl",
"moduleId": 0
},
"sourceRange": []
},
{
"type": "GroupBegin",
"group": {
"type": "ModuleInstance",
"name": "fan.kcl",
"moduleId": 0
},
"sourceRange": []
},
{
"type": "GroupBegin",
"group": {
"type": "ModuleInstance",
"name": "heat-sink.kcl",
"moduleId": 0
},
"sourceRange": []
},
{
"type": "GroupBegin",
"group": {
"type": "ModuleInstance",
"name": "mounting-wire.kcl",
"moduleId": 0
},
"sourceRange": []
},
{
"type": "GroupBegin",
"group": {
"type": "ModuleInstance",
"name": "removable-sticker.kcl",
"moduleId": 0
},
"sourceRange": []
},
{
"labeledArgs": {
"axis": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": -1.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"distance": {
"value": {
"type": "Number",
"value": 80.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
},
"instances": {
"value": {
"type": "Number",
"value": 2.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"name": "patternLinear3d",
"sourceRange": [],
"type": "StdLibCall",
"unlabeledArg": {
"value": {
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
"sourceRange": []
}
},
{
"labeledArgs": {
"axis": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": -1.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"distance": {
"value": {
"type": "Number",
"value": 80.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
},
"instances": {
"value": {
"type": "Number",
"value": 2.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"name": "patternLinear3d",
"sourceRange": [],
"type": "StdLibCall",
"unlabeledArg": {
"value": {
"type": "Array",
"value": [
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
}
]
},
"sourceRange": []
}
},
{
"labeledArgs": {
"axis": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": -1.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"distance": {
"value": {
"type": "Number",
"value": 80.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
},
"instances": {
"value": {
"type": "Number",
"value": 2.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"name": "patternLinear3d",
"sourceRange": [],
"type": "StdLibCall",
"unlabeledArg": {
"value": {
"type": "Array",
"value": [
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
}
]
},
"sourceRange": []
}
},
{
"type": "GroupBegin",
"group": {
"type": "FunctionCall",
"name": "translatePart",
"functionSourceRange": [],
"unlabeledArg": null,
"labeledArgs": {
"part": {
"value": {
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
"sourceRange": []
}
}
},
"sourceRange": []
},
{
"type": "GroupBegin",
"group": {
"type": "FunctionCall",
"name": "translatePart",
"functionSourceRange": [],
"unlabeledArg": null,
"labeledArgs": {
"part": {
"value": {
"type": "Array",
"value": [
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
}
]
},
"sourceRange": []
}
}
},
"sourceRange": []
},
{
"type": "GroupBegin",
"group": {
"type": "FunctionCall",
"name": "translatePart",
"functionSourceRange": [],
"unlabeledArg": null,
"labeledArgs": {
"part": {
"value": {
"type": "Array",
"value": [
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
}
]
},
"sourceRange": []
}
}
},
"sourceRange": []
},
{
"labeledArgs": {
"arcDegrees": {
"value": {
"type": "Number",
"value": 360.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
},
"axis": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 1.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 100.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"instances": {
"value": {
"type": "Number",
"value": 2.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
},
"rotateDuplicates": {
"value": {
"type": "Bool",
"value": true
},
"sourceRange": []
}
},
"name": "patternCircular3d",
"sourceRange": [],
"type": "StdLibCall",
"unlabeledArg": {
"value": {
"type": "Array",
"value": [
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
}
]
},
"sourceRange": []
}
},
{
"labeledArgs": {
"arcDegrees": {
"value": {
"type": "Number",
"value": 360.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
},
"axis": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 1.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"instances": {
"value": {
"type": "Number",
"value": 2.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
},
"rotateDuplicates": {
"value": {
"type": "Bool",
"value": true
},
"sourceRange": []
}
},
"name": "patternCircular3d",
"sourceRange": [],
"type": "StdLibCall",
"unlabeledArg": {
"value": {
"type": "Array",
"value": [
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
{
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
}
]
},
"sourceRange": []
}
},
{
"type": "GroupEnd"
},
{
"type": "GroupEnd"
},
{
"type": "GroupEnd"
},
{
"type": "GroupEnd"
},
{
"type": "GroupEnd"
},
{
"type": "GroupEnd"
},
{
"type": "GroupEnd"
},
{
"type": "GroupEnd"
},
{
"type": "GroupEnd"
},
{
"type": "GroupEnd"
}
]

View File

@ -0,0 +1,125 @@
---
source: kcl-lib/src/simulation_tests.rs
description: Variables in memory after executing cpu-cooler.kcl
---
{
"bendRadius": {
"type": "Number",
"value": 15.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"fan": {
"type": "Module",
"value": 4
},
"fanHeight": {
"type": "Number",
"value": 25.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"fanHousing": {
"type": "Module",
"value": 2
},
"fanSize": {
"type": "Number",
"value": 120.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"heatSink": {
"type": "Module",
"value": 5
},
"heatSinkDepth": {
"type": "Number",
"value": 55.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"motor": {
"type": "Module",
"value": 3
},
"mountingHoleSize": {
"type": "Number",
"value": 4.5,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"mountingHoleSpacing": {
"type": "Number",
"value": 105.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"mountingWire": {
"type": "Module",
"value": 6
},
"removableSticker": {
"type": "Module",
"value": 7
},
"sheetThickness": {
"type": "Number",
"value": 2.125,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"translatePart": {
"type": "Function",
"value": null
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

View File

@ -1,162 +0,0 @@
```mermaid
flowchart LR
subgraph path5 [Path]
5["Path<br>[791, 835, 0]"]
9["Segment<br>[841, 885, 0]"]
10["Segment<br>[891, 934, 0]"]
11["Segment<br>[940, 984, 0]"]
12["Segment<br>[990, 997, 0]"]
19[Solid2d]
end
subgraph path6 [Path]
6["Path<br>[1084, 1231, 0]"]
13["Segment<br>[1084, 1231, 0]"]
18[Solid2d]
end
subgraph path7 [Path]
7["Path<br>[1478, 1627, 0]"]
14["Segment<br>[1478, 1627, 0]"]
17[Solid2d]
end
subgraph path8 [Path]
8["Path<br>[1879, 1927, 0]"]
15["Segment<br>[1879, 1927, 0]"]
16[Solid2d]
end
1["Plane<br>[768, 785, 0]"]
2["StartSketchOnFace<br>[1842, 1873, 0]"]
3["StartSketchOnFace<br>[1439, 1472, 0]"]
4["StartSketchOnFace<br>[1047, 1078, 0]"]
20["Sweep Extrusion<br>[1003, 1027, 0]"]
21["Sweep Extrusion<br>[1396, 1425, 0]"]
22["Sweep Extrusion<br>[1396, 1425, 0]"]
23["Sweep Extrusion<br>[1396, 1425, 0]"]
24["Sweep Extrusion<br>[1396, 1425, 0]"]
25["Sweep Extrusion<br>[1792, 1827, 0]"]
26["Sweep Extrusion<br>[1792, 1827, 0]"]
27["Sweep Extrusion<br>[1792, 1827, 0]"]
28["Sweep Extrusion<br>[1792, 1827, 0]"]
29["Sweep Extrusion<br>[1933, 1958, 0]"]
30[Wall]
31[Wall]
32[Wall]
33[Wall]
34[Wall]
35[Wall]
36[Wall]
37["Cap Start"]
38["Cap Start"]
39["Cap End"]
40["SweepEdge Opposite"]
41["SweepEdge Opposite"]
42["SweepEdge Opposite"]
43["SweepEdge Opposite"]
44["SweepEdge Opposite"]
45["SweepEdge Opposite"]
46["SweepEdge Opposite"]
47["SweepEdge Adjacent"]
48["SweepEdge Adjacent"]
49["SweepEdge Adjacent"]
50["SweepEdge Adjacent"]
51["SweepEdge Adjacent"]
52["SweepEdge Adjacent"]
53["SweepEdge Adjacent"]
1 --- 5
39 x--> 2
38 x--> 3
39 x--> 4
5 --- 9
5 --- 10
5 --- 11
5 --- 12
5 --- 19
5 ---- 20
6 --- 13
6 --- 18
6 ---- 23
39 --- 6
7 --- 14
7 --- 17
7 ---- 26
38 --- 7
8 --- 15
8 --- 16
8 ---- 29
39 --- 8
9 --- 34
9 x--> 38
9 --- 42
9 --- 48
10 --- 32
10 x--> 38
10 --- 41
10 --- 51
11 --- 31
11 x--> 38
11 --- 44
11 --- 50
12 --- 33
12 x--> 38
12 --- 43
12 --- 49
13 --- 35
13 x--> 39
13 --- 45
13 --- 52
14 --- 30
14 x--> 38
14 --- 40
14 --- 47
15 --- 36
15 x--> 39
15 --- 46
15 --- 53
20 --- 31
20 --- 32
20 --- 33
20 --- 34
20 --- 38
20 --- 39
20 --- 41
20 --- 42
20 --- 43
20 --- 44
20 --- 48
20 --- 49
20 --- 50
20 --- 51
23 --- 35
23 --- 37
23 --- 45
23 --- 52
26 --- 30
26 --- 40
26 --- 47
29 --- 36
29 --- 46
29 --- 53
40 <--x 30
47 <--x 30
44 <--x 31
50 <--x 31
51 <--x 31
41 <--x 32
48 <--x 32
51 <--x 32
43 <--x 33
49 <--x 33
50 <--x 33
42 <--x 34
48 <--x 34
49 <--x 34
45 <--x 35
52 <--x 35
46 <--x 36
53 <--x 36
45 <--x 37
46 <--x 38
41 <--x 39
42 <--x 39
43 <--x 39
44 <--x 39
```

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,6 @@
---
source: kcl-lib/src/simulation_tests.rs
description: Artifact graph flowchart pillow-block-bearing.kcl
extension: md
snapshot_kind: binary
---

View File

@ -0,0 +1,613 @@
```mermaid
flowchart LR
subgraph path6 [Path]
6["Path<br>[410, 467, 2]"]
21["Segment<br>[473, 532, 2]"]
22["Segment<br>[538, 545, 2]"]
64[Solid2d]
end
subgraph path7 [Path]
7["Path<br>[953, 1079, 2]"]
23["Segment<br>[1085, 1145, 2]"]
24["Segment<br>[1151, 1182, 2]"]
25["Segment<br>[1188, 1216, 2]"]
26["Segment<br>[1222, 1229, 2]"]
69[Solid2d]
end
subgraph path8 [Path]
8["Path<br>[1559, 1719, 2]"]
27["Segment<br>[1559, 1719, 2]"]
72[Solid2d]
end
subgraph path9 [Path]
9["Path<br>[1803, 1932, 2]"]
28["Segment<br>[1938, 1976, 2]"]
29["Segment<br>[1982, 2060, 2]"]
30["Segment<br>[2066, 2092, 2]"]
31["Segment<br>[2098, 2120, 2]"]
32["Segment<br>[2126, 2181, 2]"]
33["Segment<br>[2187, 2243, 2]"]
34["Segment<br>[2249, 2256, 2]"]
71[Solid2d]
end
subgraph path10 [Path]
10["Path<br>[2347, 2411, 2]"]
35["Segment<br>[2417, 2437, 2]"]
36["Segment<br>[2443, 2494, 2]"]
37["Segment<br>[2500, 2520, 2]"]
38["Segment<br>[2526, 2573, 2]"]
39["Segment<br>[2579, 2624, 2]"]
40["Segment<br>[2630, 2660, 2]"]
41["Segment<br>[2666, 2687, 2]"]
42["Segment<br>[2693, 2756, 2]"]
43["Segment<br>[2762, 2805, 2]"]
44["Segment<br>[2811, 2871, 2]"]
45["Segment<br>[2877, 2914, 2]"]
46["Segment<br>[2920, 2976, 2]"]
47["Segment<br>[2982, 2989, 2]"]
70[Solid2d]
end
subgraph path11 [Path]
11["Path<br>[655, 709, 3]"]
48["Segment<br>[715, 787, 3]"]
49["Segment<br>[793, 896, 3]"]
50["Segment<br>[902, 1019, 3]"]
51["Segment<br>[1025, 1110, 3]"]
52["Segment<br>[1116, 1123, 3]"]
67[Solid2d]
end
subgraph path12 [Path]
12["Path<br>[1147, 1205, 3]"]
53["Segment<br>[1147, 1205, 3]"]
74[Solid2d]
end
subgraph path13 [Path]
13["Path<br>[1933, 1996, 3]"]
54["Segment<br>[1933, 1996, 3]"]
62[Solid2d]
end
subgraph path14 [Path]
14["Path<br>[1933, 1996, 3]"]
57["Segment<br>[1933, 1996, 3]"]
65[Solid2d]
end
subgraph path15 [Path]
15["Path<br>[1933, 1996, 3]"]
55["Segment<br>[1933, 1996, 3]"]
68[Solid2d]
end
subgraph path16 [Path]
16["Path<br>[1933, 1996, 3]"]
56["Segment<br>[1933, 1996, 3]"]
75[Solid2d]
end
subgraph path17 [Path]
17["Path<br>[2094, 2165, 3]"]
60["Segment<br>[2094, 2165, 3]"]
63[Solid2d]
end
subgraph path18 [Path]
18["Path<br>[2094, 2165, 3]"]
58["Segment<br>[2094, 2165, 3]"]
66[Solid2d]
end
subgraph path19 [Path]
19["Path<br>[2094, 2165, 3]"]
59["Segment<br>[2094, 2165, 3]"]
73[Solid2d]
end
subgraph path20 [Path]
20["Path<br>[2094, 2165, 3]"]
61["Segment<br>[2094, 2165, 3]"]
76[Solid2d]
end
1["Plane<br>[359, 403, 2]"]
2["Plane<br>[902, 946, 2]"]
3["Plane<br>[1536, 1553, 2]"]
4["Plane<br>[1770, 1787, 2]"]
5["Plane<br>[632, 649, 3]"]
77["Sweep Revolve<br>[627, 657, 2]"]
78["Sweep Revolve<br>[1271, 1301, 2]"]
79["Sweep Revolve<br>[2262, 2292, 2]"]
80["Sweep Revolve<br>[2995, 3025, 2]"]
81["Sweep Revolve<br>[3092, 3139, 2]"]
82["Sweep Extrusion<br>[1219, 1264, 3]"]
83["Sweep Extrusion<br>[2004, 2039, 3]"]
84["Sweep Extrusion<br>[2004, 2039, 3]"]
85["Sweep Extrusion<br>[2004, 2039, 3]"]
86["Sweep Extrusion<br>[2004, 2039, 3]"]
87["Sweep Extrusion<br>[2173, 2225, 3]"]
88["Sweep Extrusion<br>[2173, 2225, 3]"]
89["Sweep Extrusion<br>[2173, 2225, 3]"]
90["Sweep Extrusion<br>[2173, 2225, 3]"]
91[Wall]
92[Wall]
93[Wall]
94[Wall]
95[Wall]
96[Wall]
97[Wall]
98[Wall]
99[Wall]
100[Wall]
101[Wall]
102[Wall]
103[Wall]
104[Wall]
105[Wall]
106[Wall]
107[Wall]
108[Wall]
109[Wall]
110[Wall]
111[Wall]
112[Wall]
113[Wall]
114[Wall]
115[Wall]
116[Wall]
117[Wall]
118[Wall]
119[Wall]
120[Wall]
121[Wall]
122[Wall]
123[Wall]
124[Wall]
125[Wall]
126[Wall]
127[Wall]
128["Cap Start"]
129["Cap Start"]
130["Cap Start"]
131["Cap Start"]
132["Cap Start"]
133["Cap Start"]
134["Cap End"]
135["Cap End"]
136["SweepEdge Opposite"]
137["SweepEdge Opposite"]
138["SweepEdge Opposite"]
139["SweepEdge Opposite"]
140["SweepEdge Opposite"]
141["SweepEdge Opposite"]
142["SweepEdge Opposite"]
143["SweepEdge Opposite"]
144["SweepEdge Opposite"]
145["SweepEdge Opposite"]
146["SweepEdge Opposite"]
147["SweepEdge Opposite"]
148["SweepEdge Opposite"]
149["SweepEdge Adjacent"]
150["SweepEdge Adjacent"]
151["SweepEdge Adjacent"]
152["SweepEdge Adjacent"]
153["SweepEdge Adjacent"]
154["SweepEdge Adjacent"]
155["SweepEdge Adjacent"]
156["SweepEdge Adjacent"]
157["SweepEdge Adjacent"]
158["SweepEdge Adjacent"]
159["SweepEdge Adjacent"]
160["SweepEdge Adjacent"]
161["SweepEdge Adjacent"]
162["SweepEdge Adjacent"]
163["SweepEdge Adjacent"]
164["SweepEdge Adjacent"]
165["SweepEdge Adjacent"]
166["SweepEdge Adjacent"]
167["SweepEdge Adjacent"]
168["SweepEdge Adjacent"]
169["SweepEdge Adjacent"]
170["SweepEdge Adjacent"]
171["SweepEdge Adjacent"]
172["SweepEdge Adjacent"]
173["SweepEdge Adjacent"]
174["SweepEdge Adjacent"]
175["SweepEdge Adjacent"]
176["SweepEdge Adjacent"]
177["SweepEdge Adjacent"]
178["SweepEdge Adjacent"]
179["SweepEdge Adjacent"]
180["SweepEdge Adjacent"]
181["SweepEdge Adjacent"]
182["SweepEdge Adjacent"]
183["SweepEdge Adjacent"]
184["SweepEdge Adjacent"]
185["SweepEdge Adjacent"]
186["EdgeCut Fillet<br>[1308, 1593, 3]"]
187["EdgeCut Fillet<br>[1308, 1593, 3]"]
188["EdgeCut Fillet<br>[1308, 1593, 3]"]
189["EdgeCut Fillet<br>[1308, 1593, 3]"]
1 --- 6
2 --- 7
3 --- 8
4 --- 9
4 --- 10
5 --- 11
5 --- 12
6 --- 21
6 --- 22
6 --- 64
6 ---- 77
7 --- 23
7 --- 24
7 --- 25
7 --- 26
7 --- 69
7 ---- 78
8 --- 27
8 --- 72
8 ---- 81
9 --- 28
9 --- 29
9 --- 30
9 --- 31
9 --- 32
9 --- 33
9 --- 34
9 --- 71
9 ---- 79
10 --- 35
10 --- 36
10 --- 37
10 --- 38
10 --- 39
10 --- 40
10 --- 41
10 --- 42
10 --- 43
10 --- 44
10 --- 45
10 --- 46
10 --- 47
10 --- 70
10 ---- 80
11 --- 48
11 --- 49
11 --- 50
11 --- 51
11 --- 52
11 --- 67
11 ---- 82
12 --- 53
12 --- 74
13 --- 54
13 --- 62
13 ---- 86
134 --- 13
14 --- 57
14 --- 65
14 ---- 83
134 --- 14
15 --- 55
15 --- 68
15 ---- 85
134 --- 15
16 --- 56
16 --- 75
16 ---- 84
134 --- 16
17 --- 60
17 --- 63
17 ---- 87
132 --- 17
18 --- 58
18 --- 66
18 ---- 90
129 --- 18
19 --- 59
19 --- 73
19 ---- 89
130 --- 19
20 --- 61
20 --- 76
20 ---- 88
131 --- 20
77 <--x 21
21 --- 92
21 --- 150
77 <--x 22
22 --- 93
22 --- 151
78 <--x 23
23 --- 125
23 --- 182
78 <--x 24
24 --- 122
24 --- 180
78 <--x 25
25 --- 123
25 --- 181
78 <--x 26
26 --- 124
26 --- 183
27 --- 94
27 x--> 135
27 --- 137
27 --- 152
79 <--x 28
28 --- 120
28 --- 174
79 <--x 29
29 --- 115
29 --- 177
79 <--x 30
30 --- 119
30 --- 173
79 <--x 31
31 --- 117
31 --- 178
79 <--x 32
32 --- 116
32 --- 175
79 <--x 33
33 --- 118
33 --- 176
80 <--x 35
35 --- 106
35 --- 165
80 <--x 36
36 --- 96
36 --- 156
80 <--x 37
37 --- 98
37 --- 164
80 <--x 38
38 --- 101
38 --- 159
80 <--x 39
39 --- 100
39 --- 162
80 <--x 40
40 --- 105
40 --- 160
80 <--x 41
41 --- 104
41 --- 158
80 <--x 42
42 --- 107
42 --- 154
80 <--x 43
43 --- 97
43 --- 155
80 <--x 44
44 --- 102
44 --- 157
80 <--x 45
45 --- 103
45 --- 163
80 <--x 46
46 --- 99
46 --- 161
48 --- 112
48 x--> 128
48 --- 143
48 --- 172
49 --- 113
49 x--> 128
49 --- 145
49 --- 169
50 --- 114
50 x--> 128
50 --- 142
50 --- 171
51 --- 111
51 x--> 128
51 --- 144
51 --- 170
54 --- 126
54 x--> 134
54 --- 147
54 --- 184
55 --- 121
55 x--> 134
55 --- 146
55 --- 179
56 --- 110
56 x--> 134
56 --- 141
56 --- 168
57 --- 108
57 x--> 134
57 --- 139
57 --- 166
58 --- 127
58 x--> 129
58 --- 148
58 --- 185
59 --- 109
59 x--> 130
59 --- 140
59 --- 167
60 --- 91
60 x--> 132
60 --- 136
60 --- 149
61 --- 95
61 x--> 131
61 --- 138
61 --- 153
77 --- 92
77 --- 93
77 --- 150
77 --- 151
78 --- 122
78 --- 123
78 --- 124
78 --- 125
78 --- 180
78 --- 181
78 --- 182
78 --- 183
79 --- 115
79 --- 116
79 --- 117
79 --- 118
79 --- 119
79 --- 120
79 --- 173
79 --- 174
79 --- 175
79 --- 176
79 --- 177
79 --- 178
80 --- 96
80 --- 97
80 --- 98
80 --- 99
80 --- 100
80 --- 101
80 --- 102
80 --- 103
80 --- 104
80 --- 105
80 --- 106
80 --- 107
80 --- 154
80 --- 155
80 --- 156
80 --- 157
80 --- 158
80 --- 159
80 --- 160
80 --- 161
80 --- 162
80 --- 163
80 --- 164
80 --- 165
81 --- 94
81 --- 133
81 --- 135
81 --- 137
81 --- 152
82 --- 111
82 --- 112
82 --- 113
82 --- 114
82 --- 128
82 --- 134
82 --- 142
82 --- 143
82 --- 144
82 --- 145
82 --- 169
82 --- 170
82 --- 171
82 --- 172
83 --- 108
83 --- 131
83 --- 139
83 --- 166
84 --- 110
84 --- 132
84 --- 141
84 --- 168
85 --- 121
85 --- 130
85 --- 146
85 --- 179
86 --- 126
86 --- 129
86 --- 147
86 --- 184
87 --- 91
87 --- 136
87 --- 149
88 --- 95
88 --- 138
88 --- 153
89 --- 109
89 --- 140
89 --- 167
90 --- 127
90 --- 148
90 --- 185
136 <--x 91
149 <--x 91
150 <--x 92
151 <--x 92
150 <--x 93
151 <--x 93
137 <--x 94
152 <--x 94
138 <--x 95
153 <--x 95
156 <--x 96
165 <--x 96
154 <--x 97
155 <--x 97
156 <--x 98
164 <--x 98
161 <--x 99
163 <--x 99
159 <--x 100
162 <--x 100
159 <--x 101
164 <--x 101
155 <--x 102
157 <--x 102
157 <--x 103
163 <--x 103
158 <--x 104
160 <--x 104
160 <--x 105
162 <--x 105
161 <--x 106
165 <--x 106
154 <--x 107
158 <--x 107
139 <--x 108
166 <--x 108
140 <--x 109
167 <--x 109
141 <--x 110
168 <--x 110
144 <--x 111
143 <--x 112
145 <--x 113
142 <--x 114
174 <--x 115
177 <--x 115
175 <--x 116
178 <--x 116
173 <--x 117
178 <--x 117
175 <--x 118
176 <--x 118
173 <--x 119
177 <--x 119
174 <--x 120
176 <--x 120
146 <--x 121
179 <--x 121
180 <--x 122
182 <--x 122
180 <--x 123
181 <--x 123
181 <--x 124
183 <--x 124
182 <--x 125
183 <--x 125
147 <--x 126
184 <--x 126
148 <--x 127
185 <--x 127
136 <--x 128
138 <--x 128
140 <--x 128
148 <--x 128
147 <--x 129
146 <--x 130
139 <--x 131
141 <--x 132
137 <--x 133
142 <--x 134
143 <--x 134
144 <--x 134
145 <--x 134
169 <--x 188
170 <--x 186
171 <--x 187
172 <--x 189
```

View File

@ -0,0 +1,193 @@
---
source: kcl-lib/src/simulation_tests.rs
description: Result of parsing pillow-block-bearing.kcl
---
{
"Ok": {
"body": [
{
"commentStart": 0,
"end": 0,
"path": {
"type": "Kcl",
"filename": "parameters.kcl"
},
"preComments": [
"// Import parts and parameters"
],
"selector": {
"commentStart": 0,
"end": 0,
"start": 0,
"type": "Glob"
},
"start": 0,
"type": "ImportStatement",
"type": "ImportStatement"
},
{
"commentStart": 0,
"end": 0,
"path": {
"type": "Kcl",
"filename": "ball-bearing.kcl"
},
"selector": {
"type": "None",
"alias": {
"commentStart": 0,
"end": 0,
"name": "ballBearing",
"start": 0,
"type": "Identifier"
}
},
"start": 0,
"type": "ImportStatement",
"type": "ImportStatement"
},
{
"commentStart": 0,
"end": 0,
"path": {
"type": "Kcl",
"filename": "block.kcl"
},
"selector": {
"type": "None",
"alias": {
"commentStart": 0,
"end": 0,
"name": "block",
"start": 0,
"type": "Identifier"
}
},
"start": 0,
"type": "ImportStatement",
"type": "ImportStatement"
},
{
"commentStart": 0,
"end": 0,
"expression": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "ballBearing",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
},
"preComments": [
"",
"",
"// Render each part"
],
"start": 0,
"type": "ExpressionStatement",
"type": "ExpressionStatement"
},
{
"commentStart": 0,
"end": 0,
"expression": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "block",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
},
"start": 0,
"type": "ExpressionStatement",
"type": "ExpressionStatement"
}
],
"commentStart": 0,
"end": 0,
"innerAttrs": [
{
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "settings",
"start": 0,
"type": "Identifier"
},
"preComments": [
"// Pillow Block Bearing",
"// A bearing pillow block, also known as a plummer block or pillow block bearing, is a pedestal used to provide support for a rotating shaft with the help of compatible bearings and various accessories. Housing a bearing, the pillow block provides a secure and stable foundation that allows the shaft to rotate smoothly within its machinery setup. These components are essential in a wide range of mechanical systems and machinery, playing a key role in reducing friction and supporting radial and axial loads.",
"",
"",
"// Set units"
],
"properties": [
{
"commentStart": 0,
"end": 0,
"key": {
"commentStart": 0,
"end": 0,
"name": "defaultLengthUnit",
"start": 0,
"type": "Identifier"
},
"start": 0,
"type": "ObjectProperty",
"value": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "in",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
}
}
],
"start": 0,
"type": "Annotation"
}
],
"nonCodeMeta": {
"nonCodeNodes": {},
"startNodes": [
{
"commentStart": 0,
"end": 0,
"start": 0,
"type": "NonCodeNode",
"value": {
"type": "newLine"
}
}
]
},
"start": 0
}
}

View File

@ -0,0 +1,42 @@
---
source: kcl-lib/src/simulation_tests.rs
description: Operations executed pillow-block-bearing.kcl
---
[
{
"type": "GroupBegin",
"group": {
"type": "ModuleInstance",
"name": "parameters.kcl",
"moduleId": 0
},
"sourceRange": []
},
{
"type": "GroupBegin",
"group": {
"type": "ModuleInstance",
"name": "ball-bearing.kcl",
"moduleId": 0
},
"sourceRange": []
},
{
"type": "GroupBegin",
"group": {
"type": "ModuleInstance",
"name": "block.kcl",
"moduleId": 0
},
"sourceRange": []
},
{
"type": "GroupEnd"
},
{
"type": "GroupEnd"
},
{
"type": "GroupEnd"
}
]

View File

@ -0,0 +1,170 @@
---
source: kcl-lib/src/simulation_tests.rs
description: Variables in memory after executing pillow-block-bearing.kcl
---
{
"ballBearing": {
"type": "Module",
"value": 2
},
"bearingBoreDiameter": {
"type": "Number",
"value": 1.75,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"bearingOuterDiameter": {
"type": "Number",
"value": 2.625,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"block": {
"type": "Module",
"value": 3
},
"boltDiameter": {
"type": "Number",
"value": 0.375,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"boltSpacingX": {
"type": "Number",
"value": 5.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"boltSpacingY": {
"type": "Number",
"value": 3.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"chainThickness": {
"type": "Number",
"value": 0.0273,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"chainWidth": {
"type": "Number",
"value": 0.1094,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"counterboreDepth": {
"type": "Number",
"value": 0.1875,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"counterboreDiameter": {
"type": "Number",
"value": 0.75,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"linkDiameter": {
"type": "Number",
"value": 0.0547,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sphereDia": {
"type": "Number",
"value": 0.2188,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"stockThickness": {
"type": "Number",
"value": 0.5,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

View File

@ -678,7 +678,7 @@ flowchart LR
99 --- 245 99 --- 245
99 --- 293 99 --- 293
106 --- 193 106 --- 193
106 x--> 206 106 x--> 207
106 --- 272 106 --- 272
106 --- 321 106 --- 321
126 --- 194 126 --- 194
@ -1012,7 +1012,7 @@ flowchart LR
233 <--x 205 233 <--x 205
234 <--x 205 234 <--x 205
235 <--x 205 235 <--x 205
272 <--x 207 272 <--x 206
254 <--x 213 254 <--x 213
255 <--x 213 255 <--x 213
256 <--x 213 256 <--x 213