mirror of https://github.com/vitalif/openscad
#1065 The text module is no longer experimental
parent
1aef9f2758
commit
6492d25265
|
@ -18,7 +18,6 @@ Feature::list_t Feature::feature_list;
|
||||||
* argument to enable the option and for saving the option value in GUI
|
* argument to enable the option and for saving the option value in GUI
|
||||||
* context.
|
* context.
|
||||||
*/
|
*/
|
||||||
const Feature Feature::ExperimentalTextModule("text", "Enable the <code>text()</code> module.");
|
|
||||||
|
|
||||||
Feature::Feature(const std::string &name, const std::string &description)
|
Feature::Feature(const std::string &name, const std::string &description)
|
||||||
: enabled(false), name(name), description(description)
|
: enabled(false), name(name), description(description)
|
||||||
|
|
|
@ -12,8 +12,6 @@ public:
|
||||||
typedef std::vector<Feature *> list_t;
|
typedef std::vector<Feature *> list_t;
|
||||||
typedef list_t::iterator iterator;
|
typedef list_t::iterator iterator;
|
||||||
|
|
||||||
static const Feature ExperimentalTextModule;
|
|
||||||
|
|
||||||
const std::string& get_name() const;
|
const std::string& get_name() const;
|
||||||
const std::string& get_description() const;
|
const std::string& get_description() const;
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@ using namespace boost::assign; // bring 'operator+=()' into scope
|
||||||
class TextModule : public AbstractModule
|
class TextModule : public AbstractModule
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
TextModule() : AbstractModule(Feature::ExperimentalTextModule) { }
|
TextModule() : AbstractModule() { }
|
||||||
virtual AbstractNode *instantiate(const Context *ctx, const ModuleInstantiation *inst, EvalContext *evalctx) const;
|
virtual AbstractNode *instantiate(const Context *ctx, const ModuleInstantiation *inst, EvalContext *evalctx) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use <../../ttf/marvosym-3.10/marvosym.ttf>
|
use <../../../ttf/marvosym-3.10/marvosym.ttf>
|
||||||
use <../../ttf/liberation-2.00.1/LiberationSans-Regular.ttf>
|
use <../../../ttf/liberation-2.00.1/LiberationSans-Regular.ttf>
|
||||||
use <../../ttf/amiri-0.106/amiri-regular.ttf>
|
use <../../../ttf/amiri-0.106/amiri-regular.ttf>
|
||||||
|
|
||||||
// FIXME: Needs a freely distributable font that is encoded like Webdings
|
// FIXME: Needs a freely distributable font that is encoded like Webdings
|
||||||
// FIXME: with Microsoft/System charmap and charcodes at 0xf000. Using
|
// FIXME: with Microsoft/System charmap and charcodes at 0xf000. Using
|
|
@ -1,5 +1,5 @@
|
||||||
use <../../ttf/amiri-0.106/amiri-regular.ttf>
|
use <../../../ttf/amiri-0.106/amiri-regular.ttf>
|
||||||
use <../../ttf/liberation-2.00.1/LiberationSans-Regular.ttf>
|
use <../../../ttf/liberation-2.00.1/LiberationSans-Regular.ttf>
|
||||||
|
|
||||||
t1="OpenSCAD";
|
t1="OpenSCAD";
|
||||||
t2="الخط الأميري";
|
t2="الخط الأميري";
|
|
@ -913,7 +913,7 @@ function(add_cmdline_test TESTCMD_BASENAME)
|
||||||
if( "${match_result1}" STREQUAL "" )
|
if( "${match_result1}" STREQUAL "" )
|
||||||
if( "${match_result2}" STREQUAL "" )
|
if( "${match_result2}" STREQUAL "" )
|
||||||
if( "${match_result3}" STREQUAL "" )
|
if( "${match_result3}" STREQUAL "" )
|
||||||
set(EXPERIMENTAL_OPTION "--enable=text")
|
set(EXPERIMENTAL_OPTION "")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
@ -1085,8 +1085,7 @@ list(APPEND CGALPNGTEST_3D_FILES ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/inclu
|
||||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/bad-stl-pcbvicebar.scad
|
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/bad-stl-pcbvicebar.scad
|
||||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/bad-stl-tardis.scad
|
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/bad-stl-tardis.scad
|
||||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/bad-stl-wing.scad
|
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/bad-stl-wing.scad
|
||||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/rotate_extrude-hole.scad
|
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/rotate_extrude-hole.scad)
|
||||||
${CMAKE_SOURCE_DIR}/../testdata/scad/experimental/tessellation-text-test.scad)
|
|
||||||
|
|
||||||
list(APPEND CGALPNGTEST_FILES ${CGALPNGTEST_2D_FILES} ${CGALPNGTEST_3D_FILES})
|
list(APPEND CGALPNGTEST_FILES ${CGALPNGTEST_2D_FILES} ${CGALPNGTEST_3D_FILES})
|
||||||
list(APPEND OPENCSGTEST_FILES ${CGALPNGTEST_FILES})
|
list(APPEND OPENCSGTEST_FILES ${CGALPNGTEST_FILES})
|
||||||
|
@ -1095,7 +1094,6 @@ list(APPEND THROWNTOGETHERTEST_FILES ${OPENCSGTEST_FILES})
|
||||||
|
|
||||||
list(APPEND CGALSTLSANITYTEST_FILES ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/normal-nan.scad)
|
list(APPEND CGALSTLSANITYTEST_FILES ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/normal-nan.scad)
|
||||||
|
|
||||||
file(GLOB EXPERIMENTAL_TEXT_FILES ${CMAKE_SOURCE_DIR}/../testdata/scad/experimental/text-*.scad)
|
|
||||||
# Issue #899
|
# Issue #899
|
||||||
set_test_config(Bugs dxfpngtest_text-font-direction-tests
|
set_test_config(Bugs dxfpngtest_text-font-direction-tests
|
||||||
cgalpngtest_text-font-direction-tests
|
cgalpngtest_text-font-direction-tests
|
||||||
|
@ -1140,7 +1138,7 @@ disable_tests(
|
||||||
)
|
)
|
||||||
|
|
||||||
# 2D tests
|
# 2D tests
|
||||||
list(APPEND FILES_2D ${FEATURES_2D_FILES} ${SCAD_DXF_FILES} ${EXAMPLE_2D_FILES} ${EXPERIMENTAL_TEXT_FILES})
|
list(APPEND FILES_2D ${FEATURES_2D_FILES} ${SCAD_DXF_FILES} ${EXAMPLE_2D_FILES})
|
||||||
list(APPEND ALL_2D_FILES ${FILES_2D})
|
list(APPEND ALL_2D_FILES ${FILES_2D})
|
||||||
|
|
||||||
# FIXME: This test illustrates a weakness in child() combined with modifiers.
|
# FIXME: This test illustrates a weakness in child() combined with modifiers.
|
||||||
|
@ -1342,8 +1340,8 @@ add_cmdline_test(csgtermtest EXE ${OPENSCAD_BINPATH} ARGS -o SUFFIX term FILES
|
||||||
add_cmdline_test(echotest EXE ${OPENSCAD_BINPATH} ARGS -o SUFFIX echo FILES ${ECHO_FILES})
|
add_cmdline_test(echotest EXE ${OPENSCAD_BINPATH} ARGS -o SUFFIX echo FILES ${ECHO_FILES})
|
||||||
add_cmdline_test(dumptest EXE ${OPENSCAD_BINPATH} ARGS -o SUFFIX csg FILES ${DUMPTEST_FILES})
|
add_cmdline_test(dumptest EXE ${OPENSCAD_BINPATH} ARGS -o SUFFIX csg FILES ${DUMPTEST_FILES})
|
||||||
add_cmdline_test(dumptest-examples EXE ${OPENSCAD_BINPATH} ARGS -o SUFFIX csg FILES ${EXAMPLE_FILES})
|
add_cmdline_test(dumptest-examples EXE ${OPENSCAD_BINPATH} ARGS -o SUFFIX csg FILES ${EXAMPLE_FILES})
|
||||||
add_cmdline_test(cgalpngtest EXE ${OPENSCAD_BINPATH} ARGS --enable=text --render -o SUFFIX png FILES ${CGALPNGTEST_FILES})
|
add_cmdline_test(cgalpngtest EXE ${OPENSCAD_BINPATH} ARGS --render -o SUFFIX png FILES ${CGALPNGTEST_FILES})
|
||||||
add_cmdline_test(opencsgtest EXE ${OPENSCAD_BINPATH} ARGS --enable=text -o SUFFIX png FILES ${OPENCSGTEST_FILES})
|
add_cmdline_test(opencsgtest EXE ${OPENSCAD_BINPATH} ARGS -o SUFFIX png FILES ${OPENCSGTEST_FILES})
|
||||||
add_cmdline_test(csgpngtest EXE ${PYTHON_EXECUTABLE} SCRIPT ${CMAKE_SOURCE_DIR}/export_import_pngtest.py ARGS --openscad=${OPENSCAD_BINPATH} --format=csg --render EXPECTEDDIR cgalpngtest SUFFIX png FILES ${CGALPNGTEST_FILES})
|
add_cmdline_test(csgpngtest EXE ${PYTHON_EXECUTABLE} SCRIPT ${CMAKE_SOURCE_DIR}/export_import_pngtest.py ARGS --openscad=${OPENSCAD_BINPATH} --format=csg --render EXPECTEDDIR cgalpngtest SUFFIX png FILES ${CGALPNGTEST_FILES})
|
||||||
add_cmdline_test(throwntogethertest EXE ${OPENSCAD_BINPATH} ARGS --preview=throwntogether -o SUFFIX png FILES ${THROWNTOGETHERTEST_FILES})
|
add_cmdline_test(throwntogethertest EXE ${OPENSCAD_BINPATH} ARGS --preview=throwntogether -o SUFFIX png FILES ${THROWNTOGETHERTEST_FILES})
|
||||||
# FIXME: We don't actually need to compare the output of cgalstlsanitytest
|
# FIXME: We don't actually need to compare the output of cgalstlsanitytest
|
||||||
|
@ -1364,7 +1362,7 @@ set_test_config(Bugs offpngtest_polyhedron-tests
|
||||||
# No issue - this was introduced when fixing #1033
|
# No issue - this was introduced when fixing #1033
|
||||||
set_test_config(Bugs stlpngtest_bad-stl-wing)
|
set_test_config(Bugs stlpngtest_bad-stl-wing)
|
||||||
|
|
||||||
add_cmdline_test(monotonepngtest EXE ${OPENSCAD_BINPATH} ARGS --colorscheme=Monotone --enable=text --render -o SUFFIX png FILES ${EXPORT3D_TEST_FILES})
|
add_cmdline_test(monotonepngtest EXE ${OPENSCAD_BINPATH} ARGS --colorscheme=Monotone --render -o SUFFIX png FILES ${EXPORT3D_TEST_FILES})
|
||||||
add_cmdline_test(stlpngtest EXE ${PYTHON_EXECUTABLE} SCRIPT ${CMAKE_SOURCE_DIR}/export_import_pngtest.py ARGS --openscad=${OPENSCAD_BINPATH} --format=STL --render=cgal EXPECTEDDIR monotonepngtest SUFFIX png FILES ${EXPORT3D_TEST_FILES})
|
add_cmdline_test(stlpngtest EXE ${PYTHON_EXECUTABLE} SCRIPT ${CMAKE_SOURCE_DIR}/export_import_pngtest.py ARGS --openscad=${OPENSCAD_BINPATH} --format=STL --render=cgal EXPECTEDDIR monotonepngtest SUFFIX png FILES ${EXPORT3D_TEST_FILES})
|
||||||
add_cmdline_test(offpngtest EXE ${PYTHON_EXECUTABLE} SCRIPT ${CMAKE_SOURCE_DIR}/export_import_pngtest.py ARGS --openscad=${OPENSCAD_BINPATH} --format=OFF --render=cgal EXPECTEDDIR monotonepngtest SUFFIX png FILES ${EXPORT3D_TEST_FILES})
|
add_cmdline_test(offpngtest EXE ${PYTHON_EXECUTABLE} SCRIPT ${CMAKE_SOURCE_DIR}/export_import_pngtest.py ARGS --openscad=${OPENSCAD_BINPATH} --format=OFF --render=cgal EXPECTEDDIR monotonepngtest SUFFIX png FILES ${EXPORT3D_TEST_FILES})
|
||||||
add_cmdline_test(dxfpngtest EXE ${PYTHON_EXECUTABLE} SCRIPT ${CMAKE_SOURCE_DIR}/export_import_pngtest.py ARGS --openscad=${OPENSCAD_BINPATH} --format=DXF --render=cgal EXPECTEDDIR cgalpngtest SUFFIX png FILES ${FILES_2D})
|
add_cmdline_test(dxfpngtest EXE ${PYTHON_EXECUTABLE} SCRIPT ${CMAKE_SOURCE_DIR}/export_import_pngtest.py ARGS --openscad=${OPENSCAD_BINPATH} --format=DXF --render=cgal EXPECTEDDIR cgalpngtest SUFFIX png FILES ${FILES_2D})
|
||||||
|
@ -1380,11 +1378,6 @@ add_failing_test(offfailedtest EXE ${PYTHON_EXECUTABLE} SCRIPT ${CMAKE_SOURCE_DI
|
||||||
#
|
#
|
||||||
# Add experimental tests
|
# Add experimental tests
|
||||||
#
|
#
|
||||||
add_cmdline_test(dumptest EXE ${OPENSCAD_BINPATH} ARGS --enable=text -o SUFFIX csg FILES ${EXPERIMENTAL_TEXT_FILES})
|
|
||||||
add_cmdline_test(cgalpngtest EXE ${OPENSCAD_BINPATH} ARGS --render --enable=text -o SUFFIX png FILES ${EXPERIMENTAL_TEXT_FILES})
|
|
||||||
add_cmdline_test(opencsgtest EXE ${OPENSCAD_BINPATH} ARGS --enable=text -o SUFFIX png FILES ${EXPERIMENTAL_TEXT_FILES})
|
|
||||||
add_cmdline_test(csgpngtest EXE ${PYTHON_EXECUTABLE} SCRIPT ${CMAKE_SOURCE_DIR}/export_import_pngtest.py ARGS --openscad=${OPENSCAD_BINPATH} --format=csg --render EXPECTEDDIR cgalpngtest SUFFIX png FILES ${EXPERIMENTAL_TEXT_FILES})
|
|
||||||
add_cmdline_test(throwntogethertest EXE ${OPENSCAD_BINPATH} ARGS --preview=throwntogether --enable=text -o SUFFIX png FILES ${EXPERIMENTAL_TEXT_FILES})
|
|
||||||
|
|
||||||
# Tests using the actual OpenSCAD binary
|
# Tests using the actual OpenSCAD binary
|
||||||
|
|
||||||
|
|
|
@ -83,7 +83,7 @@ if inputsuffix != '.scad' and inputsuffix != '.csg':
|
||||||
#
|
#
|
||||||
# First run: Just export the given filetype
|
# First run: Just export the given filetype
|
||||||
#
|
#
|
||||||
export_cmd = [args.openscad, inputfile, '--enable=text', '-o', exportfile] + remaining_args
|
export_cmd = [args.openscad, inputfile, '-o', exportfile] + remaining_args
|
||||||
print('Running OpenSCAD #1:')
|
print('Running OpenSCAD #1:')
|
||||||
print(' '.join(export_cmd))
|
print(' '.join(export_cmd))
|
||||||
result = subprocess.call(export_cmd)
|
result = subprocess.call(export_cmd)
|
||||||
|
@ -100,7 +100,7 @@ if args.format != 'csg':
|
||||||
newscadfile += '.scad'
|
newscadfile += '.scad'
|
||||||
createImport(exportfile, newscadfile)
|
createImport(exportfile, newscadfile)
|
||||||
|
|
||||||
create_png_cmd = [args.openscad, newscadfile, '--enable=text', '-o', pngfile] + remaining_args
|
create_png_cmd = [args.openscad, newscadfile, '-o', pngfile] + remaining_args
|
||||||
print('Running OpenSCAD #2:')
|
print('Running OpenSCAD #2:')
|
||||||
print(' '.join(create_png_cmd))
|
print(' '.join(create_png_cmd))
|
||||||
fontdir = os.path.join(os.path.dirname(args.openscad), "..", "testdata");
|
fontdir = os.path.join(os.path.dirname(args.openscad), "..", "testdata");
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
group1(minkowski2+glide3+subdiv4+hull5+resize6+group7+group7+group7+intersection10+group11(sphere)+union13+difference14+intersection10+linear_extrude+linear_extrude+rotate_extrude+rotate_extrude+import+import+import+import+group7+cube+sphere+cylinder+polyhedron+square+circle+polygon+projection+render33+surface+transform35+transform35+transform37+transform35+transform35+color40+offset)
|
group1(minkowski2+glide3+subdiv4+hull5+resize6+group7+group7+group7+intersection10+group11(sphere)+union13+difference14+intersection10+linear_extrude+linear_extrude+rotate_extrude+rotate_extrude+import+import+import+import+group7+cube+sphere+cylinder+polyhedron+square+circle+polygon+projection+render33+surface+transform35+transform35+transform37+transform35+transform35+color40+offset+text)
|
||||||
|
|
|
@ -29,7 +29,9 @@ group() {
|
||||||
group() {
|
group() {
|
||||||
group() {
|
group() {
|
||||||
multmatrix([[1, 0, 0, 0], [0, 0, -1, 0], [0, 1, 0, 0], [0, 0, 0, 1]]) {
|
multmatrix([[1, 0, 0, 0], [0, 0, -1, 0], [0, 1, 0, 0], [0, 0, 0, 1]]) {
|
||||||
linear_extrude(height = 1, center = false, convexity = 1, scale = [1, 1], $fn = 0, $fa = 12, $fs = 2);
|
linear_extrude(height = 1, center = false, convexity = 1, scale = [1, 1], $fn = 0, $fa = 12, $fs = 2) {
|
||||||
|
text(text = "Open", size = 42, spacing = 1, font = "Liberation Serif:style=Bold", direction = "ltr", language = "en", script = "latin", halign = "left", valign = "baseline", $fn = 16, $fa = 12, $fs = 2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -42,7 +44,9 @@ group() {
|
||||||
group() {
|
group() {
|
||||||
group() {
|
group() {
|
||||||
multmatrix([[1, 0, 0, 0], [0, 0, -1, 0], [0, 1, 0, 0], [0, 0, 0, 1]]) {
|
multmatrix([[1, 0, 0, 0], [0, 0, -1, 0], [0, 1, 0, 0], [0, 0, 0, 1]]) {
|
||||||
linear_extrude(height = 1, center = false, convexity = 1, scale = [1, 1], $fn = 0, $fa = 12, $fs = 2);
|
linear_extrude(height = 1, center = false, convexity = 1, scale = [1, 1], $fn = 0, $fa = 12, $fs = 2) {
|
||||||
|
text(text = "SCAD", size = 42, spacing = 1, font = "Liberation Serif:style=Bold", direction = "ltr", language = "en", script = "latin", halign = "left", valign = "baseline", $fn = 16, $fa = 12, $fs = 2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -55,7 +59,9 @@ group() {
|
||||||
group() {
|
group() {
|
||||||
group() {
|
group() {
|
||||||
multmatrix([[1, 0, 0, 0], [0, 0, -1, 0], [0, 1, 0, 0], [0, 0, 0, 1]]) {
|
multmatrix([[1, 0, 0, 0], [0, 0, -1, 0], [0, 1, 0, 0], [0, 0, 0, 1]]) {
|
||||||
linear_extrude(height = 1, center = false, convexity = 1, scale = [1, 1], $fn = 0, $fa = 12, $fs = 2);
|
linear_extrude(height = 1, center = false, convexity = 1, scale = [1, 1], $fn = 0, $fa = 12, $fs = 2) {
|
||||||
|
text(text = "The Programmers", size = 18, spacing = 1, font = "Liberation Serif", direction = "ltr", language = "en", script = "latin", halign = "left", valign = "baseline", $fn = 16, $fa = 12, $fs = 2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -68,7 +74,9 @@ group() {
|
||||||
group() {
|
group() {
|
||||||
group() {
|
group() {
|
||||||
multmatrix([[1, 0, 0, 0], [0, 0, -1, 0], [0, 1, 0, 0], [0, 0, 0, 1]]) {
|
multmatrix([[1, 0, 0, 0], [0, 0, -1, 0], [0, 1, 0, 0], [0, 0, 0, 1]]) {
|
||||||
linear_extrude(height = 1, center = false, convexity = 1, scale = [1, 1], $fn = 0, $fa = 12, $fs = 2);
|
linear_extrude(height = 1, center = false, convexity = 1, scale = [1, 1], $fn = 0, $fa = 12, $fs = 2) {
|
||||||
|
text(text = "Solid 3D CAD Modeller", size = 18, spacing = 1, font = "Liberation Serif", direction = "ltr", language = "en", script = "latin", halign = "left", valign = "baseline", $fn = 16, $fa = 12, $fs = 2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,40 +8,52 @@ group() {
|
||||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, -27.5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
multmatrix([[1, 0, 0, 0], [0, 1, 0, -27.5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||||
multmatrix([[1, 0, 0, 0], [0, 0, -1, 0], [0, 1, 0, 0], [0, 0, 0, 1]]) {
|
multmatrix([[1, 0, 0, 0], [0, 0, -1, 0], [0, 1, 0, 0], [0, 0, 0, 1]]) {
|
||||||
group() {
|
group() {
|
||||||
linear_extrude(height = 5, center = false, convexity = 1, scale = [1, 1], $fn = 0, $fa = 12, $fs = 2);
|
linear_extrude(height = 5, center = false, convexity = 1, scale = [1, 1], $fn = 0, $fa = 12, $fs = 2) {
|
||||||
|
text(text = "C", size = 50, spacing = 1, font = "Liberation Sans", direction = "ltr", language = "en", script = "latin", halign = "center", valign = "center", $fn = 16, $fa = 12, $fs = 2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
multmatrix([[1, 0, 0, 27.5], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
multmatrix([[1, 0, 0, 27.5], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||||
multmatrix([[0, 0, 1, 0], [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 0, 1]]) {
|
multmatrix([[0, 0, 1, 0], [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 0, 1]]) {
|
||||||
group() {
|
group() {
|
||||||
linear_extrude(height = 5, center = false, convexity = 1, scale = [1, 1], $fn = 0, $fa = 12, $fs = 2);
|
linear_extrude(height = 5, center = false, convexity = 1, scale = [1, 1], $fn = 0, $fa = 12, $fs = 2) {
|
||||||
|
text(text = "U", size = 50, spacing = 1, font = "Liberation Sans", direction = "ltr", language = "en", script = "latin", halign = "center", valign = "center", $fn = 16, $fa = 12, $fs = 2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 27.5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
multmatrix([[1, 0, 0, 0], [0, 1, 0, 27.5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||||
multmatrix([[-1, 0, 0, 0], [0, 0, 1, 0], [0, 1, 0, 0], [0, 0, 0, 1]]) {
|
multmatrix([[-1, 0, 0, 0], [0, 0, 1, 0], [0, 1, 0, 0], [0, 0, 0, 1]]) {
|
||||||
group() {
|
group() {
|
||||||
linear_extrude(height = 5, center = false, convexity = 1, scale = [1, 1], $fn = 0, $fa = 12, $fs = 2);
|
linear_extrude(height = 5, center = false, convexity = 1, scale = [1, 1], $fn = 0, $fa = 12, $fs = 2) {
|
||||||
|
text(text = "B", size = 50, spacing = 1, font = "Liberation Sans", direction = "ltr", language = "en", script = "latin", halign = "center", valign = "center", $fn = 16, $fa = 12, $fs = 2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
multmatrix([[1, 0, 0, -27.5], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
multmatrix([[1, 0, 0, -27.5], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||||
multmatrix([[0, 0, -1, 0], [-1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 0, 1]]) {
|
multmatrix([[0, 0, -1, 0], [-1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 0, 1]]) {
|
||||||
group() {
|
group() {
|
||||||
linear_extrude(height = 5, center = false, convexity = 1, scale = [1, 1], $fn = 0, $fa = 12, $fs = 2);
|
linear_extrude(height = 5, center = false, convexity = 1, scale = [1, 1], $fn = 0, $fa = 12, $fs = 2) {
|
||||||
|
text(text = "E", size = 50, spacing = 1, font = "Liberation Sans", direction = "ltr", language = "en", script = "latin", halign = "center", valign = "center", $fn = 16, $fa = 12, $fs = 2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 27.5], [0, 0, 0, 1]]) {
|
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 27.5], [0, 0, 0, 1]]) {
|
||||||
group() {
|
group() {
|
||||||
linear_extrude(height = 5, center = false, convexity = 1, scale = [1, 1], $fn = 0, $fa = 12, $fs = 2);
|
linear_extrude(height = 5, center = false, convexity = 1, scale = [1, 1], $fn = 0, $fa = 12, $fs = 2) {
|
||||||
|
text(text = "☺", size = 50, spacing = 1, font = "Liberation Sans", direction = "ltr", language = "en", script = "latin", halign = "center", valign = "center", $fn = 16, $fa = 12, $fs = 2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, -32.5], [0, 0, 0, 1]]) {
|
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, -32.5], [0, 0, 0, 1]]) {
|
||||||
group() {
|
group() {
|
||||||
linear_extrude(height = 5, center = false, convexity = 1, scale = [1, 1], $fn = 0, $fa = 12, $fs = 2);
|
linear_extrude(height = 5, center = false, convexity = 1, scale = [1, 1], $fn = 0, $fa = 12, $fs = 2) {
|
||||||
|
text(text = "☼", size = 50, spacing = 1, font = "Liberation Sans", direction = "ltr", language = "en", script = "latin", halign = "center", valign = "center", $fn = 16, $fa = 12, $fs = 2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,4 +40,5 @@ group() {
|
||||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]);
|
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]);
|
||||||
color([-1, -1, -1, 1]);
|
color([-1, -1, -1, 1]);
|
||||||
offset(delta = 1, join_type = "miter", miter_limit = 2, $fn = 0, $fa = 12, $fs = 2);
|
offset(delta = 1, join_type = "miter", miter_limit = 2, $fn = 0, $fa = 12, $fs = 2);
|
||||||
|
text(text = "", size = 10, spacing = 1, font = "", direction = "ltr", language = "en", script = "latin", halign = "left", valign = "baseline", $fn = 0, $fa = 12, $fs = 2);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue