122 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			122 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
// 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 = 76deg, 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 = -90deg, radius = sparBendRadius + sparStockThicknes)
 | 
						|
  |> xLine(length = 4, tag = $seg02)
 | 
						|
  |> tangentialArc(angle = -90deg, radius = sparBendRadius + sparStockThicknes)
 | 
						|
  |> yLine(length = -4, tag = $seg03)
 | 
						|
  |> tangentialArc(angle = -90deg, radius = sparBendRadius + sparStockThicknes)
 | 
						|
  |> xLine(length = -3, tag = $seg04)
 | 
						|
  |> yLine(length = sparStockThicknes)
 | 
						|
  |> xLine(length = segLen(seg04))
 | 
						|
  |> tangentialArc(angle = 90deg, radius = sparBendRadius)
 | 
						|
  |> yLine(length = segLen(seg03))
 | 
						|
  |> tangentialArc(angle = 90deg, radius = sparBendRadius)
 | 
						|
  |> xLine(length = -segLen(seg02))
 | 
						|
  |> tangentialArc(angle = 90deg, 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 = 90deg, radius = sparBendRadius + sparStockThicknes)
 | 
						|
  |> xLine(length = -4, tag = $seg06)
 | 
						|
  |> tangentialArc(angle = 90deg, radius = sparBendRadius + sparStockThicknes)
 | 
						|
  |> yLine(length = -4, tag = $seg07)
 | 
						|
  |> tangentialArc(angle = 90deg, radius = sparBendRadius + sparStockThicknes)
 | 
						|
  |> xLine(length = 3, tag = $seg08)
 | 
						|
  |> yLine(length = sparStockThicknes)
 | 
						|
  |> xLine(length = -segLen(seg08))
 | 
						|
  |> tangentialArc(angle = -90deg, radius = sparBendRadius)
 | 
						|
  |> yLine(length = segLen(seg07))
 | 
						|
  |> tangentialArc(angle = -90deg, radius = sparBendRadius)
 | 
						|
  |> xLine(length = segLen(seg06))
 | 
						|
  |> tangentialArc(angle = -90deg, 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 = -90deg, radius = 5)
 | 
						|
  |> yLine(endAbsolute = -(sparSpan - (3 * foilThickness)) / (nSections - 1) + 5, tag = $seg12)
 | 
						|
  |> tangentialArc(angle = -90deg, radius = 5)
 | 
						|
  |> xLine(length = -segLen(seg11))
 | 
						|
  |> tangentialArc(angle = -90deg, 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 = -90deg, radius = 5)
 | 
						|
  |> yLine(length = -segLen(seg12))
 | 
						|
  |> tangentialArc(angle = -90deg, radius = 5)
 | 
						|
  |> xLine(length = -segLen(seg14))
 | 
						|
  |> tangentialArc(angle = -90deg, 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)
 |