I need to modify the code I included above because Maximize and Minimize did not always find the global maximum and minimum, respectively. Below all of the searches for the minimum and maximum for each dimension use FindMinimum and FindMaximum with starting values generated by evaluating the surface with a 3D grid (i.e., a table).
As far as "what units" I think I have something more helpful than what I said earlier: the units must be what the makerbot expects. Hope this helps.
(* Set parameter values *)
a = 1.06;
b = 6;
c = 1.5;
d = 1;
e = 1.2;
tr = 0;
tmax = 50;
(* Construct table of values as a crude check *)
v = Flatten[
Table[{t, \[Theta],
a^t (Cos[
t] (1 + c (Cos[e] Cos[\[Theta]] + d Sin[e] Sin[\[Theta]]))),
a^t (Sin[
t] (1 + c (Cos[e] Cos[\[Theta]] + d Sin[e] Sin[\[Theta]]))),
a^t (b +
c (Cos[\[Theta]] Sin[e] -
d Cos[e] Sin[\[Theta]]))}, {\[Theta], -Pi, Pi,
Pi/200}, {t, -tmax, 0, tmax/200}], 1];
(* Reasonable approximations for minimums and maximums using the \
values from the table *)
{t1Max, \[Theta]1Max} =
N[Flatten[
v[[Flatten[Position[v[[All, 3]], Max[v[[All, 3]]]]]]]]][[{1, 2}]];
{t1Min, \[Theta]1Min} =
N[Flatten[
v[[Flatten[Position[v[[All, 3]], Min[v[[All, 3]]]]]]]]][[{1, 2}]];
{t2Max, \[Theta]2Max} =
N[Flatten[
v[[Flatten[Position[v[[All, 4]], Max[v[[All, 4]]]]]]]]][[{1, 2}]];
{t2Min, \[Theta]2Min} =
N[Flatten[
v[[Flatten[Position[v[[All, 4]], Min[v[[All, 4]]]]]]]]][[{1, 2}]];
{t3Max, \[Theta]3Max} =
N[Flatten[
v[[Flatten[Position[v[[All, 5]], Max[v[[All, 5]]]]]]]]][[{1, 2}]];
{t3Min, \[Theta]3Min} =
N[Flatten[
v[[Flatten[Position[v[[All, 5]], Min[v[[All, 5]]]]]]]]][[{1, 2}]];
(* Find maximum and mininum for each dimension using an iterative \
method *)
(* 1st dimension *)
max1 = FindMaximum[{a^
t (Cos[t] (1 +
c (Cos[e] Cos[\[Theta]] + d Sin[e] Sin[\[Theta]]))), -tmax <=
t <= 0 && -\[Pi] <= \[Theta] <= \[Pi]}, {t,
t1Max}, {\[Theta], \[Theta]1Max}];
min1 = FindMinimum[{a^
t (Cos[t] (1 +
c (Cos[e] Cos[\[Theta]] + d Sin[e] Sin[\[Theta]]))), -tmax <=
t <= 0 && -\[Pi] <= \[Theta] <= \[Pi]}, {t,
t1Min}, {\[Theta], \[Theta]1Min}];
(* 2nd dimension *)
max2 = FindMaximum[{a^
t (Sin[t] (1 +
c (Cos[e] Cos[\[Theta]] + d Sin[e] Sin[\[Theta]]))), -tmax <=
t <= 0 && -\[Pi] <= \[Theta] <= \[Pi]}, {t,
t2Max}, {\[Theta], \[Theta]2Max}];
min2 = FindMinimum[{a^
t (Sin[t] (1 +
c (Cos[e] Cos[\[Theta]] + d Sin[e] Sin[\[Theta]]))), -tmax <=
t <= 0 && -\[Pi] <= \[Theta] <= \[Pi]}, {t,
t2Min}, {\[Theta], \[Theta]2Min}];
(* 3rd dimension *)
max3 = FindMaximum[{a^
t (b + c (Cos[\[Theta]] Sin[e] -
d Cos[e] Sin[\[Theta]])), -tmax <= t <=
0 && -\[Pi] <= \[Theta] <= \[Pi]}, {t,
t3Max}, {\[Theta], \[Theta]2Max}];
min3 = FindMinimum[{a^
t (b + c (Cos[\[Theta]] Sin[e] -
d Cos[e] Sin[\[Theta]])), -tmax <= t <=
0 && -\[Pi] <= \[Theta] <= \[Pi]}, {t,
t3Min}, {\[Theta], \[Theta]2Min}];
(* Construct points where minimums and maximums occur *)
{max11, max12,
max13} = {max1[[1]],
a^t (Sin[
t] (1 + c (Cos[e] Cos[\[Theta]] + d Sin[e] Sin[\[Theta]]))),
a^t (b + c (Cos[\[Theta]] Sin[e] - d Cos[e] Sin[\[Theta]]))} /.
max1[[2]];
{min11, min12,
min13} = {min1[[1]],
a^t (Sin[
t] (1 + c (Cos[e] Cos[\[Theta]] + d Sin[e] Sin[\[Theta]]))),
a^t (b + c (Cos[\[Theta]] Sin[e] - d Cos[e] Sin[\[Theta]]))} /.
min1[[2]];
{max21, max22,
max23} = {a^
t (Cos[
t] (1 + c (Cos[e] Cos[\[Theta]] + d Sin[e] Sin[\[Theta]]))),
max2[[1]],
a^t (b + c (Cos[\[Theta]] Sin[e] - d Cos[e] Sin[\[Theta]]))} /.
max2[[2]];
{min21, min22,
min23} = {a^
t (Cos[t] (1 +
c (Cos[e] Cos[\[Theta]] + d Sin[e] Sin[\[Theta]]))),
min2[[1]],
a^t (b + c (Cos[\[Theta]] Sin[e] - d Cos[e] Sin[\[Theta]]))} /.
min2[[2]];
{max31, max32,
max33} = {a^
t (Cos[t] (1 +
c (Cos[e] Cos[\[Theta]] + d Sin[e] Sin[\[Theta]]))),
a^t (Sin[
t] (1 + c (Cos[e] Cos[\[Theta]] + d Sin[e] Sin[\[Theta]]))),
max3[[1]]} /. max3[[2]];
{min31, min32,
min33} = {a^
t (Cos[t] (1 +
c (Cos[e] Cos[\[Theta]] + d Sin[e] Sin[\[Theta]]))),
a^t (Sin[
t] (1 + c (Cos[e] Cos[\[Theta]] + d Sin[e] Sin[\[Theta]]))),
min3[[1]]} /. min3[[2]];
(* Object dimensions from using tables *)
{Max[v[[All, 3]]] - Min[v[[All, 3]]],
Max[v[[All, 4]]] - Min[v[[All, 4]]],
Max[v[[All, 5]]] - Min[v[[All, 5]]]}
(* Object dimensions from using NMaximum and NMinimum *)
{max1[[1]] - min1[[1]], max2[[1]] - min2[[1]], max3[[1]] - min3[[1]]}
(* Construct object *)
g = ParametricPlot3D[
a^t {Cos[
t] (1 + c (Cos[e] Cos[\[Theta]] + d Sin[e] Sin[\[Theta]])),
Sin[t] (1 + c (Cos[e] Cos[\[Theta]] + d Sin[e] Sin[\[Theta]])),
b + c (Cos[\[Theta]] Sin[e] -
d Cos[e] Sin[\[Theta]])}, {\[Theta], -Pi, Pi}, {t, -tmax, 0},
PlotStyle ->
Directive[Opacity[0.5], Lighter[Yellow, .3],
Specularity[White, 10], Thickness[.1]], Axes -> True,
ViewPoint -> {2, 2, -6}, Boxed -> True,
PlotRange -> {{-3, 3}, {-3, 3}, {0, 7.5}}, ImageSize -> {400, 450},
Mesh -> None, PlotPoints -> 400,
MaxRecursion -> ControlActive[0, Automatic],
RotationAction -> "Clip", SphericalRegion -> True];
(* Graph object and maximum and minimum points *)
p = Graphics3D[{PointSize[0.05],
Point[{{max11, max12, max13}, {min11, min12, min13}, {max21,
max22, max23}, {min21, min22, min23}, {max31, max32,
max33}, {min31, min32, min33}}]}];
Show[{g, p}]