Search models, users, collections, and posts

Ambigram generator (fully customizable) v2.2

IP Report
GIF
GIF
GIF
GIF
GIF

Print Profile(6)

All
X1 Carbon
X1
H2C
H2D Pro
A1
A1 mini
P2S
P1S
H2S
X1E
H2D
P1P
X2D
A2L

I love NY - 0.2mm layer, 2 walls, 15% infill
I love NY - 0.2mm layer, 2 walls, 15% infill
Designer
2.2 h
1 plate
5.0(12)

Mom/Dad heart shaped - 0.2mm layer, 2 walls, 15% infill
Mom/Dad heart shaped - 0.2mm layer, 2 walls, 15% infill
Designer
1.2 h
1 plate
5.0(1)

NSFW HAWK-TUAH 0.2mm layer, 2 walls, 15% infill
NSFW HAWK-TUAH 0.2mm layer, 2 walls, 15% infill
Designer
40 min
1 plate
5.0(1)

I Love You Mom - 0.2mm layer, 2 walls, 15% infill
I Love You Mom - 0.2mm layer, 2 walls, 15% infill
Designer
41 min
1 plate
3.0(2)
Click to see more

Open in Bambu Studio
Boost
2387
4632
244
306
10.6 k
3.4 k
Released 

Description

Membership

Like my models? Please consider subscribing. This will help me dedicate more time to create new interesting designs. As a subscriber, you'll get my direct email for priority support, and you can gain access to high-res model files (STEP), original project files (F3D) and source code of my scripts (SCAD) and optionally a commercial license.

Join

 

This is an OpenSCAD script to generate two-sided 3D texts that merge, each text is visible from a different point of view.

2026-02-09: new version 2.2

A new version has arrived, here are the new features and modifications introduced:

  • After hearing many request for a more robust heart shape, I've introduced a new parameter called heart_base_width which allows you to set up a custom width of the heart shape in the lower point.
  • I removed the old legacy engine and traces of it in the new algorithm which is growing in direction of the new upcoming 3.0 version. This removes the font_custom, running_at, disable_warning parameters and a lot of internal code, making this faster and lighter to execute.
  • All fonts available on MakerWorld can now be used, I also removed the font_style parameter because you can choose the font style in the Parametric Model Maker's font selection dialog.

A guide through the parameters

Here's an detailed explanation of every possible setting. Feel free to explore the endless possibilities of combining these values.

Texts

In this tab you can set the basic parameters about displayed texts.

ParameterDescriptionunitminmaxdefault
text_1

This is the text which is visible:

  • from left if text_mode is Left-Right;
  • from the top in other modes.
text  “SUSANNA”
text_2

This is the text which is visible:

  • from right if text_mode is Left-Right;
  • from front in other modes.
text  “CHRISTIAN”
text_mode

This defines the mode of rendering of texts, this value can be:

  • Left-Right - one text is visible from an angled left point of view, the other one is visible from an angled right point of view;
  • Front-Top - one text is visible from the top of the object, the other one from the front;
  • 45° front-Top - one text is visible from the top of the object, the other one from a 45 degrees angled position between the top and the front.
   Left-Right
text_angleThis value, which is valid only in the Left-Right mode, allows you to set the angle from which the texts will be visible.degrees018045
text_shape

This value can change the shape of the object, possible values are:

  • Rectangle - the same as in original released version, seen from above the object is a rectangle or a rectangle with arrows;
  • Circle - seen from above the object is a circle;
  • Heart - seen from above the object is an heart;
  • Rounded rectangle - a rectangle with rounded corners (only available when using new rendering engine).

This parameter applies only in Left-Right text_mode.

   Rounded rectangle
text_roundnessIf 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.

WARNING: time consuming setting, could cause Parametric Model Maker failure to generate model.
%010050
text_heart_direction

Specifies where the pointing end of the heart is directed, this value can be:

  • Left - the heart points in the same direction of the left text;
  • Right - the heart points in the same direction of the right text;
  • Middle - the heart points in the middle between the two texts.
   Left
text_padding

Selects the character to be used when padding texts to match lengths, this can be:

  • Space - a white space is inserted, meaning a small object will be created;
  • Heart - a heart shape will be inserted;
   Space
heart_base_widthSets the width of the base at the bottom point of hearts.millimeters0204

Font

In this tab you can set all parameters about the font to be used for the texts.

ParameterDescriptionunitminmaxdefault
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_sizeThe size of the text, which will result in being also the depth of the object and his height (excluding base and top plate).mm17220
font_spacingSpacing 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.151

Base

To keep the letters united, you need to generate a base plate, these parameters allows you to personalize it's creation.

ParameterDescriptionunitminmaxdefault
base_type

The type of base to be created, this value can be:

  • None - no base is created at all;
  • Solid - a solid base is created at bottom of object;
  • Text - a top-text shaped base is being created at bottom of object, please note that this is mode not supported in Left-Right mode and Solid will be used instead.
   Text
base_heightThe height of the base.mm0.2253
base_x_correctionSince 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-1001000
base_y_correctionSame as base_x_correction, but for the Y-axis.mm-1001000
base_z_correctionSame as base_x_correction, but for the Z-axis.mm-1001000.4
base_size_correctionSame reason as for base_x_correction, this parameter allows you to shrink on enlarge the base size.mm-1001000
base_heart_sizeThe correction of the size of the heart when it's being created.mm-1001000
base_heart_xHeart X-axis correction.mm-1001000
base_heart_yHeart Y-axis correction.mm-1001000

Top

Parameters that will create a top plate over the texts.

ParameterDescriptionunitminmaxdefault
top_type

The type of plate to be created, this value can be:

  • None - no top plate is created at all;
  • Solid - a solid plate is created at top of object;
  • Text - a top-text shaped plate is being created at top of object, please note that this is mode not supported in Left-Right model mode and Solid will be used instead.
   None
top_heightThe height of the top plate.mm0.2253
top_x_correctionSince 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-1001000
top_y_correctionSame as top_x_correction, but for the Y-axis.mm-1001000
top_z_correctionSame as top_x_correction, but for the Z-axis.mm-1001000.4
top_size_correctionSame reason as for top_x_correction, this parameter allows you to shrink on enlarge the top plate size.mm-1001000
top_heart_sizeThe correction of the size of the heart when it's being created.mm-1001000
top_heart_xHeart X-axis correction.mm-1001000
top_heart_yHeart Y-axis correction.mm-1001000

Tweaks (fix things up)

Some parameters that can help you fix things that come out weird.

ParameterDesccriptionminmaxdefault
render_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:

  • Draft - low quality, not suitable for printing;
  • Printable draft - not for production, yet printable;
  • Normal: normal quality, ready to print;
  • Good quality: good quality for printing;
  • High quality: very good quality for printing;
  • Very high quality: good quality for high resolution printers.
  Normal
font_ratioSince 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.131.33
small_charactersThis 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_ratioThis is the ratio between the depth of a normal character and the depth of a character considered small.0.0130.3
space_ratioThis is the ratio between the depth of a normal character and the depth of a rectangle created in place of a white space.0.0130.1

How to use symbols in texts

If you want to use symbols in texts, you can with certain restrictions.

How to insert a heart

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.

On Windows

From the start menu, open Characters Map.

Select from the combo box 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

On macOS

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.

 

Boost Me (for free)

Want to show your appreciation for my work? Consider sending me a boost. This encourages me to keep creating beautiful, useful models and scripts, and to share them with full documentation as I always have.

 

 

Show me your appreciation: buy me a coffee.

https://buymeacoffee.com/zizzo81

 

 

 

All my models are proudly created in Italy with .

 


Documentation (1)

Other Files (1)
OpenSCAD guide.pdf

Comment & Rating (244)

(0/1000)

License

If you want to use this model commercially, please join my membership.
Join Now
This user content is licensed under the MakerWorld Exclusive License.

You may create derivative works based on this object, provided that all such derivative works are published exclusively on the MakerWorld platform and include proper attribution to the original creator. You may not share, upload, host, distribute, or publish this object—or any derivative work of this object—on any other digital platform, marketplace, or distribution channel. Commercial use of this object and any derivative works is strictly prohibited. This includes, but is not limited to, selling, renting, sublicensing, or using the object in any context in which you receive monetary compensation or other financial benefits.