thermocouple4.frink

Download or view thermocouple4.frink in plain text format


/** This designs a thermocouple holder for my sous vide controller for 3-D
    printing. */


width = 1.2 inch
height = 1.2 inch
depth = 1 inch


potInnerRadius = 23.4 cm / 2
thickness = 3.4 mm
potOuterRadius = potInnerRadius + thickness
cutDepth = .3 in

res = 254 / inch

v = newJava["frink.graphics.VoxelArray", [round[-width res/2], round[width res], round[-depth res/2], round[depth res], 0, round[height res], true]]

// The outer surface of the cut cylinder
c1 = newJava["frink.graphics.VoxelArray", [round[-width res/2], round[width res], round[-depth res/2], round[depth res], 0, round[height res], false]]

c1.drawCylinder[0, round[-potOuterRadius res], round[height res], 0, round[-potOuterRadius res], round[(height-cutDepth) res], round[potOuterRadius res]]

// Inner surface of cut cylinder
c2 = newJava["frink.graphics.VoxelArray", [round[-width res/2], round[width res], round[-depth res/2], round[depth res], 0, round[height res], false]]

c2.drawCylinder[0, round[-potOuterRadius res], round[height res], 0, round[-potOuterRadius res], round[(height-cutDepth) res], round[potInnerRadius res]]

c1.remove[c2]
c1.translate[0, round[thickness/2 res], 0]

v.remove[c1]

// This is a tool that will carve out the channels for the thermocouple
brush = v.makeCappedCylinder[0, 0, 0, 0, 0, round[.8 in res], 4.3 mm res/2]

// This is an insertion hole
brush2 = v.makeCappedCylinder[round[.35 * width/2 res], round[depth/2 res], round[(4 mm) res], round[-.35 * width/2 res], round[-depth/2 res], round[(4 mm) res], 6 mm res/2]

// This is the cap over the insertion hole.
cap = v.construct[round[-width res/2], round[width res], round[-depth res], round[depth res], -3 mm res, 3 mm res, true]

// The "straight through" channel
//v.removeAlongLine[brush, 0, round[depth/2 res], 0, 0, round[-depth/2 res], round[.1 in res], 0, 0, round[4.3 mm res/2]]

// The channel that points left (looking from the top outside)
v.removeAlongLine[brush,
                  round[.35 * width/2 res], round[depth/2 res], 0,
                  round[.35 * -width/2 res], round[-depth/2 res], round[.1 in res], 0, 0, round[4.3 mm res/2]]

v.add[cap]
v.remove[brush2]

// The channel that points right (looking from the top outside)
//v.removeAlongLine[brush, 0, round[depth/2 res], 0, round[.7 * width/2 res], round[-depth/2 res], round[.1 in res], 0, 0, round[4.3 mm res/2]]


v.projectX[undef].show["X"]
v.projectY[undef].show["Y"]
v.projectZ[undef].show["Z"]   

filename = "thermocouple4.obj"
print["Writing $filename..."]
w = new Writer[filename]
w.println[v.toObjFormat["thermocouple", 1/(res mm)]]
w.close[]
println["done."]


Download or view thermocouple4.frink in plain text format


This is a program written in the programming language Frink.
For more information, view the Frink Documentation or see More Sample Frink Programs.

Alan Eliasen was born 19350 days, 23 hours, 31 minutes ago.