// 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")