2024-06-24 UPDATE
2024-06-16 UPDATE
2024-06-13 EMERGENCY UPDATE
2024-06-11 UPDATE
This is an OpenSCAD script to generate two-sided 3D texts that merge, each text is visible from a different point of view.
Source of every file can be found on GitHub at this page.
For priority support, you can now report every problem of this script on the GitHub page or by compiling this Google Form.
Thanks to @Stephanos for the complete list of fonts and styles supported by MakerWorld he gave me access with his script Parametric Model Maker ALL TEXT FONTS TEMPLATE you can find here.
Please be sure to check my other great OpenSCAD scripts here on MakerWorld:
Here's an detailed explanation of every possible setting. Feel free to explore the endless possibilities of combining these values.
In this tab you can set the basic parameters about displayed texts.
Parameter | Description | unit | min | max | default |
---|---|---|---|---|---|
text_1 | This is the text which is visible:
| text | “SUSANNA” | ||
text_2 | This is the text which is visible:
| text | “CHRISTIAN” | ||
text_mode | This defines the mode of rendering of texts, this value can be:
| Left-Right | |||
render_engine | This enables user to choose which rendering engine to use with this script, providing some sort or retro-compatibility. This value can be:
| v2.0 | |||
text_angle | This value, which is valid only in the Left-Right mode, allows you to set the angle from which the texts will be visible. | degrees | 0 | 180 | 45 |
text_shape | This value can change the shape of the object, possible values are:
This parameter applies only in Left-Right text_mode. | Rounded rectangle | |||
text_roundness | If text_shape is set as Rounded rectangle, this is the percentage of roundness to give to corners. A value of zero will create a pure rectangle with squared edges, a value of 100% will have a completely round end. | % | 0 | 100 | 50 |
text_heart_direction | Specifies where the pointing end of the heart is directed, this value can be:
| Left | |||
text_padding | Selects the character to be used when padding texts to match lengths, this can be:
| Space |
In this tab you can set all parameters about the font to be used for the texts.
Parameter | Description | unit | min | max | default |
---|---|---|---|---|---|
font_name | Choose one of the supported fonts from the list to apply it to the text on this side.
Be warned! Complex fonts and fonts with serifs tend to generate floating objects which will result in waste of material and time. Consider using sans serif fonts and/or check my guide on how to easily get rid of floating objects using Fusion 360 down below. | Merriweather Sans | |||
font_custom | Here you can override the above setting by putting the name of a font installed in the system where this script is executed. Please keep in mind that when you use Parametric Model Maker, the system the script is running on is MakerWorld's server, not your computer. | empty | |||
font_style | Choose the style of the text. This can also be set to *None*, which will use font's default style. Note: not all fonts support all styles. | Bold | |||
font_size | The size of the text, which will result in being also the depth of the object and his height (excluding base and top plate). | mm | 1 | 72 | 20 |
font_spacing | Spacing between letters, the greater the number, the far the letters are. Better results are achieved when the letters touch one another, if they don't, a solid base will be required to keep them together. | 0.1 | 5 | 1 |
To keep the letters united, you need to generate a base plate, these parameters allows you to personalize it's creation.
Parameter | Description | unit | min | max | default |
---|---|---|---|---|---|
base_type | The type of base to be created, this value can be:
| Text | |||
base_height | The height of the base. | mm | 0.2 | 25 | 3 |
base_x_correction | Since OpenSCAD does not provide functionalities to compute texts' widths and heights, calculus about the base are approximated, with this parameter you can offset the base position on the X-axis to correct those calculus. | mm | -100 | 100 | 0 |
base_y_correction | Same as base_x_correction, but for the Y-axis. | mm | -100 | 100 | 0 |
base_z_correction | Same as base_x_correction, but for the Z-axis. | mm | -100 | 100 | 0.4 |
base_size_correction | Same reason as for base_x_correction, this parameter allows you to shrink on enlarge the base size. | mm | -100 | 100 | 0 |
base_heart_size | The correction of the size of the heart when it's being created. | mm | -100 | 100 | 0 |
base_heart_x | Heart X-axis correction. | mm | -100 | 100 | 0 |
base_heart_y | Heart Y-axis correction. | mm | -100 | 100 | 0 |
Parameters that will create a top plate over the texts.
Parameter | Description | unit | min | max | default |
---|---|---|---|---|---|
top_type | The type of plate to be created, this value can be:
| None | |||
top_height | The height of the top plate. | mm | 0.2 | 25 | 3 |
top_x_correction | Since OpenSCAD does not provide functionalities to compute texts' widths and heights, calculus about the top plate are approximated, with this parameter you can offset the plate position on the X-axis to correct those calculus. | mm | -100 | 100 | 0 |
top_y_correction | Same as top_x_correction, but for the Y-axis. | mm | -100 | 100 | 0 |
top_z_correction | Same as top_x_correction, but for the Z-axis. | mm | -100 | 100 | 0.4 |
top_size_correction | Same reason as for top_x_correction, this parameter allows you to shrink on enlarge the top plate size. | mm | -100 | 100 | 0 |
top_heart_size | The correction of the size of the heart when it's being created. | mm | -100 | 100 | 0 |
top_heart_x | Heart X-axis correction. | mm | -100 | 100 | 0 |
top_heart_y | Heart Y-axis correction. | mm | -100 | 100 | 0 |
Some parameters that can help you fix things that come out weird.
Parameter | Desccription | min | max | default |
---|---|---|---|---|
curves_quality | Selects the quality of curves to be used when generating the model, the lowest the quality, the faster generation will take. You can work in Draft all the time for fast refresh, but you need to remember to switch back to Normal or something higher before exporting the model to be printed.
Possible values:
Be warned: Parametric Model Maker has a short timeout for script execution to avoid DDoS attacks, for this reason setting a quality too high could create a timeout error | Normal | ||
font_ratio | Since OpenSCAD does not provide functionalities to compute texts' widths and heights, calculus are approximated, with this parameter, which represents the ratio between the height and the width of a single letter of the font used, you can correct those calculations. | 0.1 | 3 | 1.33 |
small_characters | This is the list of the characters that will be considered small and will have a smaller depth (see small_characters_ratio). | "!()1I[]fijlt{" | ||
small_characters_ratio | This is the ratio between the depth of a normal character and the depth of a character considered small. | 0.01 | 3 | 0.3 |
space_ratio | This is the ratio between the depth of a normal character and the depth of a rectangle created in place of a white space. | 0.01 | 3 | 0.1 |
disable_warnings | Check this option to disable showing warning and proceed with object generation anyway. | |||
running_at | This parameter defines where the script is being executed:
| MakerWorld |
As said before, complex texts and fonts with serifs tend to generate floating objects which will result in waste of material and time. This step by step guide will teach anyone, also with no experience of using AutoDesk Fusion 360 at all, to remove them from the resulting object.
First of all generate the desired design, you will notice some floating objects that are not connected to other object and not supported by material in any way.
Save the design as STL.
If using MakerWorld's Parametric Model Maker, click on the button to have the last modifications to the parameters be reflected on your model, then click on the button.
When this popup shows up
Click on the button to download the STL version.
If your computer offers the possibility to save the file to a desired location, select a folder where you want to save it and choose a proper name, e. g. “floating_objects”, which fill create “floating_objects.stl”.
If your browser is configured to automatically save files, you will find the file named “Ambigram generator.stl” in the location you usually receive downloaded file, usually called the “Downloads” folder.
Now open a new Fusion 360 project, and from the top toolbar, in SOLID tab, choose INSERT → Insert Mesh
When this popup window will appear, click on Select from my computer… button.
A file selection dialog will be shown, locate the freshly downloaded file and click on Open.
The object will be placed in the center of the scene, just click on OK.
Now we need to conver this to an object body.
With the object selected, follow these steps:
Depending on the object complexity and your computer computational power, this could take some time.
Once finish, we need to disable the design history to be able to work on this freely.
Expand the Bodies group in the object browser by clicking on the left-pointing triangle on group name's left side.
In the object browser, right click on the top nome e. g. (Unsaved), and from the popup menu that appears choose Do not capture Design History.
A confirmation dialog will appear, select Continue to stop capturing design history.
Now start selecting one by one the bodies, in the object browser's Bodies trunk.
The corresponding object will be blue highlighted on the screen, it this is a floating object, right click on his name in the object browser and select Delete from the popup menu that appeared.
Important: once you deleted all unwanted bodies (you should only have one object left), left click on the Bodies trunk in the object browser.
Now that we cleaned the object, we need to export the file back to STL.
Follow these steps:
When in Make mode, the object will be light-blue highlighted, please ensure to select the STL format (binary is preferred, but not mandatory), then click on OK.
A dialog will popup, please be sure to check the Save to my computer option and select a valid folder, enter a name like cleaned_text, which will create cleaned_text.stl file, and finally click on Save.
Open Bambu Studio or your preferred slicer, start a new project and drag the file onto it.
You will almost surely need to enable supports for printing this, so please be sure to be in the Global section, then go to the Support tab, activate Enable support and select tree(auto) as Type - I've got the most efficient and beautiful results using this.
If you want to use symbols in texts, you can with certain restrictions.
Since not all fonts include the glyph of an heart and those who sometimes do have different codes, I created a special escape characters sequence to insert an heart. In the position where you want to insert a heart glyph, just insert \h in place.
From the start menu, open Characters Map.
Select from the combobox the font you're using in your design, then scroll through characters to find the glyph you want to use, click on it, and press the Select button, then use the Copy button to copy it to the clipboard, go to the Parametric Model Maker, focus the input field and paste from the clipboard.
Optionally you can copy the character code in the lower left corner and insert its hexadecimal value in the text field pre-pending the "\u" escape character sequence, e. g. : U+2665 becomes \u2665
Alternatively you can use Character Map UWP
Select the font you're using from the left list, scroll through the glyphs to search the one you like most, then click it to focus it. Use the Copy button in the lower-right corner to copy it to the clipboard.
Optionally you can copy the character code in the lower right corner and insert its hexadecimal value in the text field pre-pending the "\u" escape character sequence, e. g. : U+263B becomes \u263B
On the Apple system you have a similar tool which is Font Book, open it from the Applications folder.
On startup you will be presented the full list of fonts installed on your system, search for the font you're using in the script and double click on it's icon to open up the font details.
Scroll through the glyphs to search the one you like most, then click it to open it up and use the Copy button in the lower-right corner to copy it to the clipboard. Paste it into the script's input field.
Optionally you can copy the character code in the lower left corner and insert its hexadecimal value in the text field pre-pending the "\u" escape character sequence, e. g. : U+263C becomes \u263C.
I made some cheat sheets, due to limitations of upload size and count to MakerWorld I only uploaded the index here, you will find all the font-specific files on my GitHub repository in the Fonts cheat sheet folder.
Open up the Fonts cheat sheet.pdf file and click the font you're using, you will be brought to the PDF file containing the cheat sheet for that font.
Scroll through the pages and search the glyph you're looking for, copy the code below it and paste it into the input fields.
Comment & Rating (117)