Files
modeling-app/public/kcl-samples/wing-spar/main.kcl

122 lines
5.3 KiB
Plaintext
Raw Permalink Normal View History

New single-file samples for the website (#6670) * New single-file samples for the website * Update kcl-samples simulation test output * Update kcl-samples simulation test output * Update kcl-samples simulation test output * Update kcl-samples simulation test output * Update kcl-samples simulation test output * Update kcl-samples simulation test output * Update kcl-samples simulation test output * Update kcl-samples simulation test output * Update kcl-samples simulation test output * Update kcl-samples simulation test output * Update kcl-samples simulation test output * Update kcl-samples simulation test output * Update kcl-samples simulation test output * Delete public/kcl-samples/piston directory * More * 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> * 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> * move another test 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: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Jess Frazelle <jessfraz@users.noreply.github.com> Co-authored-by: Jess Frazelle <github@jessfraz.com>
2025-05-13 18:05:57 -04:00
// Wing Spar
// In a fixed-wing aircraft, the spar is often the main structural member of the wing, running spanwise at right angles (or thereabouts depending on wing sweep) to the fuselage. The spar carries flight loads and the weight of the wings while on the ground. Other structural and forming members such as ribs may be attached to the spars
// Set units
@settings(defaultLengthUnit = mm)
// Define parameters
chordLength = 355
rearSpar = 205
frontSpar = 33
upperCamber = 30
lowerCamber = 18
foilThickness = 8
nSections = 5
sparSpan = 700
sparStockThicknes = 2.102
sparBendRadius = 2.102
// Sketch an airfoil using the chord length, spar positions, and camber heights
ribSketch = startSketchOn(offsetPlane(-XZ, offset = -foilThickness))
|> startProfile(at = [chordLength, 0])
|> line(endAbsolute = [rearSpar, upperCamber])
|> tangentialArc(endAbsolute = [frontSpar, upperCamber * 1.3])
|> tangentialArc(endAbsolute = [0, 0])
|> tangentialArc(angle = 76, radius = lowerCamber)
|> tangentialArc(endAbsolute = [rearSpar, -lowerCamber])
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|> close()
// Cut circular holes along the chord curve of the airfoil to reduce the mass of each part
|> subtract2d(tool = circle(center = [62, 9], radius = 17))
|> subtract2d(tool = circle(center = [113, 10], radius = 19))
|> subtract2d(tool = circle(center = [164, 9], radius = 17))
|> subtract2d(tool = circle(center = [228, 5], radius = 11))
|> subtract2d(tool = circle(center = [260, 3.5], radius = 6.5))
// Extrude the airfoil to material thicknes, then pattern along the length of the wing spars
|> extrude(length = -foilThickness)
|> patternLinear3d(instances = nSections, distance = (sparSpan - (3 * foilThickness)) / (nSections - 1), axis = [0, -1, 0])
// Model a thin sheet spar with a hemmed top edge for structure
sparSketch = startSketchOn(-XZ)
// Sketch the sheet metal profile for the front spar, then extrude
frontSparProfile = startProfile(sparSketch, at = [frontSpar, -lowerCamber * 0.85])
|> yLine(endAbsolute = upperCamber, tag = $seg01)
|> tangentialArc(angle = -90, radius = sparBendRadius + sparStockThicknes)
|> xLine(length = 4, tag = $seg02)
|> tangentialArc(angle = -90, radius = sparBendRadius + sparStockThicknes)
|> yLine(length = -4, tag = $seg03)
|> tangentialArc(angle = -90, radius = sparBendRadius + sparStockThicknes)
|> xLine(length = -3, tag = $seg04)
|> yLine(length = sparStockThicknes)
|> xLine(length = segLen(seg04))
|> tangentialArc(angle = 90, radius = sparBendRadius)
|> yLine(length = segLen(seg03))
|> tangentialArc(angle = 90, radius = sparBendRadius)
|> xLine(length = -segLen(seg02))
|> tangentialArc(angle = 90, radius = sparBendRadius)
|> yLine(length = -segLen(seg01), tag = $seg10)
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|> close()
|> extrude(length = -sparSpan)
// Sketch the sheet metal profile for the rear spar, then extrude
rearSparProfile = startProfile(sparSketch, at = [rearSpar, -lowerCamber * 0.7])
|> yLine(endAbsolute = upperCamber * 0.7, tag = $seg05)
|> tangentialArc(angle = 90, radius = sparBendRadius + sparStockThicknes)
|> xLine(length = -4, tag = $seg06)
|> tangentialArc(angle = 90, radius = sparBendRadius + sparStockThicknes)
|> yLine(length = -4, tag = $seg07)
|> tangentialArc(angle = 90, radius = sparBendRadius + sparStockThicknes)
|> xLine(length = 3, tag = $seg08)
|> yLine(length = sparStockThicknes)
|> xLine(length = -segLen(seg08))
|> tangentialArc(angle = -90, radius = sparBendRadius)
|> yLine(length = segLen(seg07))
|> tangentialArc(angle = -90, radius = sparBendRadius)
|> xLine(length = segLen(seg06))
|> tangentialArc(angle = -90, radius = sparBendRadius)
|> yLine(length = -segLen(seg05), tag = $seg09)
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|> close()
|> extrude(length = -sparSpan)
// Cut rectangular holes along the spar length between each rib
frontSparHoles = startSketchOn(frontSparProfile, face = seg10)
|> startProfile(at = [-lowerCamber * 0.1, -foilThickness * 3])
|> xLine(endAbsolute = upperCamber * 0.4, tag = $seg11)
|> tangentialArc(angle = -90, radius = 5)
|> yLine(endAbsolute = -(sparSpan - (3 * foilThickness)) / (nSections - 1) + 5, tag = $seg12)
|> tangentialArc(angle = -90, radius = 5)
|> xLine(length = -segLen(seg11))
|> tangentialArc(angle = -90, radius = 5)
|> yLine(length = segLen(seg12))
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|> close()
|> patternLinear2d(
%,
instances = nSections - 1,
distance = (sparSpan - (3 * foilThickness)) / (nSections - 1),
axis = [0, -1],
)
|> extrude(length = -10)
rearSparHoles = startSketchOn(rearSparProfile, face = seg09)
|> startProfile(at = [-lowerCamber * 0.3, -foilThickness * 3])
|> xLine(endAbsolute = -upperCamber * 0.01, tag = $seg14)
|> tangentialArc(angle = -90, radius = 5)
|> yLine(length = -segLen(seg12))
|> tangentialArc(angle = -90, radius = 5)
|> xLine(length = -segLen(seg14))
|> tangentialArc(angle = -90, radius = 5)
|> yLine(length = segLen(seg12))
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|> close()
|> patternLinear2d(
%,
instances = nSections - 1,
distance = (sparSpan - (3 * foilThickness)) / (nSections - 1),
axis = [0, -1],
)
|> extrude(length = -10)