Numbers such as those on the cover of "Technicheskaya estetika" 1989/12 magazine created in 3D for orthographical projection. https://issuu.com/0083398/docs/tech_aest_1989_12
This script for OpenSCAD creates 3D objects in accordance with the specified parameters. They can be substituted according to the viewing angle. The objects are made up of cubes with two edges of the same length, and third vertical edge changes length depending of the angle of view.
Supported symbols 1234567890+-.,:;
magazin cover | render |
---|---|
Made in OpenSCAD 2019.05. Support Window, Linux, MacOS.
Check View -> Orthogonal for best result.
Main library file is tech_estetika_numbers.scad
.
Add to project:
include <tech_estetika_numbers.scad>
Text in direction from top left to bottom right
include <tech_estetika_numbers.scad>
$angle=10;
$vpr=[$angle,0,45];
numbers("+1.2","down");
Then press F5
for preview.
Number one by one
include <tech_estetika_numbers.scad>
$angle=10;
$vpr=[$angle,0,45];
$edge=1;
$vert_edge_base=sqrt(2)/2;
$vert_edge_k=$vert_edge_base/cos(90-$angle);
$direction="down";
translate([0,0,0]) plus();
translate([6,0,0]) number_1();
translate([12,0,0]) dot();
translate([18,0,0]) number_2();
OpenSCAD:
- all_numbers.scad - all possible symbols in three directions.
- animation.scad - animation show how objects can be changed depending on view angle.
- book_cover.scad - same as numbers journal cover.
- print_numbers.scad - print custom numbers by variable.
- tech_estetika_numbers.scad - actually main library.
Animations:
- animation/animation.gif - shows how numbers recalculated in real time depending on view angle.
- animation/animation_20deg.gif - shows how numbers change shape from fixed view of $vpr=[20,0,45]
- animation/cover_animation.gid - animated compression cover and render.
$angle
- Angle of view for which the shape of objects will be changed for better view. Best view is rotation by X-axis is$angle
. Y-axis fixed to 0, Z-axis fixed to 45 degree. Default is5
$edge
- Size of cube's edge. Default is1
$vert_edge_base
- Coefficient for$edge
of vertical edge to fit length at the view angle. Default issqrt(2)/2
$vert_edge_k
- Calculated coefficient to match$vertical_edge_base
at view angle. Default is$vert_edge_base/cos(90-$angle)
$zero_rotate
- Bool rotate zero symbol. Default isfalse
$direction
- Text row direction "up", "down", "straight". Default is"down"
$x_axis_space
- Space between symbols along the X-axis. If not set then set by$direction
. Default isundef
$y_axis_space
- Space between symbols along the Y-axis. If not set then set by$direction
. Default isundef
$vpr
- OpenSCAD variable to set camera view rotation. Best is[angle,0,45]
$vpt
- OpenSCAD variable to set camera view translate. Best is[0,0,0]
$vpd
- OpenSCAD variable to set camera view distance to object. Best is80
numbers(numbers_text, direction, x_axis_space, y_axis_space, edge, vert_edge_k)
- print text
numbers_text
- String with symbols +-1234567890.,;:direction
- Direction of printing numbers "up" , "down", "straight". Default$direction
"up"
- To top right corner. Space only over Y-axis"down"
- To bottom left corner. Space only over X-axis"straight"
- From left to right as usual. X-axis == Y-axis
x_axis_space
- Space between symbols over X-axis. Default is$x_axis_space
y_axis_space
- Space between symbols over Y-axis. Default is$y_axis_space
edge
- Size of cube's edge. default is global variable$edge
vert_edge_k
- Coefficient to match vertical edge to fit length at view angle$vert_edge_k
$zero_rotate
- change shape of zero symbol.
number_0($edge,$vert_edge_k,$zero_rotate);
number_1($edge,$vert_edge_k);
number_2($edge,$vert_edge_k);
number_3($edge,$vert_edge_k);
number_4($edge,$vert_edge_k);
number_5($edge,$vert_edge_k);
number_6($edge,$vert_edge_k);
number_7($edge,$vert_edge_k);
number_8($edge,$vert_edge_k);
number_9($edge,$vert_edge_k);
$direction
- change shape of objects.
dot($edge,$vert_edge_k,$direction);
comma($edge,$vert_edge_k,$direction);
semicolon($edge,$vert_edge_k,$direction);
colon($edge,$vert_edge_k,$direction);
plus($edge,$vert_edge_k,$direction);
minus($edge,$vert_edge_k,$direction);
Commands for bash and zsh
Create a 3D objects in stl format. To use special symbols like +-.,:; pay attention to the quotes
openscad -o ./result_5_deg.stl -D "\$angle=5" -D "text=\"12:34\"" ./print_numbers.scad
or with command line variables. a - angle of view, text - text with supported symbols. pay attention to the quotes.
a=5;
text="12:34";
openscad -o "./result_${a}_deg.stl" -D "\$angle=$a" -D "text=\"${text}\"" ./print_numbers.scad
Make png screenshot. Angle and camera X-axis should be the same for best result.
Attention $vpr
,$vpt
,$vpd
does not work in command line mode, instead put data to command line according to the template --camera=$vpt[0],$vpt[1],$vpt[2],$vpr[0],$vpr[1],$vpr[2],$vpd
a=5;
text="12:34";
openscad -o "result_${a}_deg.png" \
-D "\$angle=${a}" \
-D "text=\"${text}\"" \
--projection=o \
--imgsize=256,256 \
--camera=10,2,0,"${a}",0,45,70 \
./print_numbers.scad
Add numbers to Blender 2.8
- Create new project. File -> New -> General
- Select Cube press Delete to delete Cube
- File -> Import -> .stl select stl created in OpenSCAD
- Select Camera in Scene Collection
- Object Data Properties -> Lens -> Type -> Orthographic
- Object Data Properties -> Lens -> "Orthographic Scale" make it fit to object
- Object Properties -> Transform -> Rotation X=$angle, Rotation Y=0, Rotation Z=45. $angle is variable used in OpenSCAD. Translate camera depending on object position. Use Ctrl+Numpad 0 to view result
- Any modification you like than press F12