# 3d solid text cnc

**URL:** <https://discourse.mcneel.com/t/3d-solid-text-cnc/214355>\
**Category:** Grasshopper\
**Tags:** windows\
**Created:** [January 9, 2026, 9:52am UTC](https://discourse.mcneel.com/t/3d-solid-text-cnc/214355 "2026-01-09T09:52:01Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![Filippo\_Rossi1](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/filippo_rossi1/32/771373_2.png) [@Filippo\_Rossi1](https://discourse.mcneel.com/u/Filippo_Rossi1)\
**Post date:** [January 9, 2026, 9:52am UTC](https://discourse.mcneel.com/t/3d-solid-text-cnc/214355/1 "2026-01-09T09:52:01Z")

</div>

Hi , I need to create a solid of a text starting from a single curve text.

i need to reproduce the subtraction solid that i would obtain if i cnc engrave the single curve text by using a cnc engraver and a round head tool of a given diameter.

the problem is that when i use the single curve generated in rhino with ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/9/5/e/95eec4c6d477d27549a5fda99e9bfa0ea46ac958.png) font

 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/3/4/c/34c46551198dc57a5cf444a61d4e69167fbffa75.png)

and then pipe it i get sharp edges and the solid text layout is messed up.and not resembling the cnc engraved text

 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/2/9/f/29ff9b6ff5bdb35e4db0876377a3cb64cc59f6a4.png)

i made some search but i could not find relevant thread on this .

if anyone can help i appreciate

---

<div class="post-metadata">

**Author:** ![martinsiegrist](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/martinsiegrist/32/498369_2.png) [@martinsiegrist](https://discourse.mcneel.com/u/martinsiegrist)\
**Post date:** [January 9, 2026, 9:57am UTC](https://discourse.mcneel.com/t/3d-solid-text-cnc/214355/2 "2026-01-09T09:57:16Z")

</div>

Seen this?

> [@How to Simulate Gcode](https://discourse.mcneel.com/t/how-to-simulate-gcode/146589/8):
>
> OK So this is for the first of the two Anemone loops: set the toggle on the Loop End component to False and then click the Button on the LLoop start to reset and start the loop. This is how the result should look like: This worm is also internalised in the definition, so is the intersection curve input for the second loop This is what happens in the second loop:

[https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/c/4/6/c46e9572691d944a320f6a4ee12d5e91ccd269c6.mp4](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/c/4/6/c46e9572691d944a320f6a4ee12d5e91ccd269c6.mp4)

---

<div class="post-metadata">

**Author:** ![Filippo\_Rossi1](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/filippo_rossi1/32/771373_2.png) [@Filippo\_Rossi1](https://discourse.mcneel.com/u/Filippo_Rossi1)\
**Post date:** [January 9, 2026, 10:15am UTC](https://discourse.mcneel.com/t/3d-solid-text-cnc/214355/3 "2026-01-09T10:15:31Z")

</div>

Awsome @martinsiegrist , meanwhile i made some attempt and i will post it below but your solution is definitely better .

can i ask you one favour : 1 i never used anemone / 2 i am not used to icons , can you post the defition on this thread ? [How to Simulate Gcode - #8 by martinsiegrist](https://discourse.mcneel.com/t/how-to-simulate-gcode/146589/8)

thanks

---

<div class="post-metadata">

**Author:** ![martinsiegrist](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/martinsiegrist/32/498369_2.png) [@martinsiegrist](https://discourse.mcneel.com/u/martinsiegrist)\
**Post date:** [January 9, 2026, 10:16am UTC](https://discourse.mcneel.com/t/3d-solid-text-cnc/214355/4 "2026-01-09T10:16:46Z")

</div>

Thanks. The file is there:

> [@Check pocket selection for tool clearance?](https://discourse.mcneel.com/t/check-pocket-selection-for-tool-clearance/113810/7):
>
> It’s slow but you could simulate the cnc milling with a loop. My definition requires Anemone. [20\_12\_04\_worm.gh](https://discourse.mcneel.com/uploads/short-url/oPgYBCCD3s0UGpHZDSo8BfwBufj.gh) (1.9 MB)

---

<div class="post-metadata">

**Author:** ![laurent\_delrieu](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/laurent_delrieu/32/601605_2.png) [@laurent\_delrieu](https://discourse.mcneel.com/u/laurent_delrieu)\
**Post date:** [January 9, 2026, 10:19am UTC](https://discourse.mcneel.com/t/3d-solid-text-cnc/214355/5 "2026-01-09T10:19:30Z")

</div>

Hello

You can explode curves and used rounded ends.

 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/b/b/6/bb6e906bcf6b0f1149ea52899a784b7f0d952f85.jpeg)

Or use offset from Clipper.

 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/f/b/5/fb597b984c1d8ecbdcd2bc092932bb8d3f09839d.jpeg)

---

<div class="post-metadata">

**Author:** ![Filippo\_Rossi1](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/filippo_rossi1/32/771373_2.png) [@Filippo\_Rossi1](https://discourse.mcneel.com/u/Filippo_Rossi1)\
**Post date:** [January 9, 2026, 10:56am UTC](https://discourse.mcneel.com/t/3d-solid-text-cnc/214355/6 "2026-01-09T10:56:16Z")

</div>

great but now the single letters overlap

 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/8/3/6/836fca0291588674020aab0301adabc1d869a173.png)

the text was referenced as multiple curves directly from rhino, id like to be able to control the space between letter.

I tried (1) to flow along a curve to increase the space between letters but this works pretty much like scale1D thus scaling also the letters.

 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/9/2/0/9206dc7521de03c482034e6e2c82d53a4308f9fb.png) ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/4/4/b/44bd900c0429ec14002adc3aff4780c6a9d7215c.png)

i also tried (2) to sort along X and then move the letter created with pipe but for some reason i am not able to get it to work since the trasformation is messed up

 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/1/a/c/1aca7192d76bcf2c7b794988061764eb8d748c63.png)

[20260109 engraved text.gh](https://discourse.mcneel.com/uploads/short-url/jh1el8HIumtmqP9SRc7YiY0k80X.gh) (15.3 KB)

---

<div class="post-metadata">

**Author:** ![laurent\_delrieu](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/laurent_delrieu/32/601605_2.png) [@laurent\_delrieu](https://discourse.mcneel.com/u/laurent_delrieu)\
**Post date:** [January 9, 2026, 11:09am UTC](https://discourse.mcneel.com/t/3d-solid-text-cnc/214355/7 "2026-01-09T11:09:27Z")

</div>

For text generation there a spacing parameter. It is a problem that you should take care at the beginning.

Here an example in Nautilus plugin, but must be there on all tools.

 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/d/6/2/d626fc955678430b51aad7b2e4d1cc1ac096661d.jpeg)

 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/3/9/9/399e7299b12e374cad42175ec72750b709197a05.jpeg)

I have a tool to pack like you want but I think it is not the solution to your problem

 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/3/7/e/37e10504cf2b1570c3489882a66cc9bde0423fa6.jpeg)

---

<div class="post-metadata">

**Author:** ![martinsiegrist](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/martinsiegrist/32/498369_2.png) [@martinsiegrist](https://discourse.mcneel.com/u/martinsiegrist)\
**Post date:** [January 9, 2026, 11:13am UTC](https://discourse.mcneel.com/t/3d-solid-text-cnc/214355/8 "2026-01-09T11:13:28Z")

</div>

> [@laurent\_delrieu](#):
>
> I have a tool

@laurent_delrieu has a tool for everything 🙂

---

<div class="post-metadata">

**Author:** ![laurent\_delrieu](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/laurent_delrieu/32/601605_2.png) [@laurent\_delrieu](https://discourse.mcneel.com/u/laurent_delrieu)\
**Post date:** [January 9, 2026, 11:28am UTC](https://discourse.mcneel.com/t/3d-solid-text-cnc/214355/9 "2026-01-09T11:28:19Z")

</div>

> [@martinsiegrist](#):
>
> has a tool for everything

Indeed not, this tool here will just work on a group of letters no on a whole lettering problem.

I use this one a lot in order to inspect objects before nesting. I will more an more do laser cutting (I bought C02 and fiber machine) so I will surely have to make some new tools 🙂

---

<div class="post-metadata">

**Author:** ![Filippo\_Rossi1](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/filippo_rossi1/32/771373_2.png) [@Filippo\_Rossi1](https://discourse.mcneel.com/u/Filippo_Rossi1)\
**Post date:** [January 9, 2026, 12:18pm UTC](https://discourse.mcneel.com/t/3d-solid-text-cnc/214355/10 "2026-01-09T12:18:05Z")

</div>

> [@laurent\_delrieu](#):
>
> For text generation there a spacing parameter. It is a problem that you should take care at the beginning.
> 
> Here an example in Nautilus plugin, but must be there on all tools.

thanks @laurent_delrieu , yes , i used Nautilus component to create the text and to adjust the spacing and and its very useful and practical

I also tried your ‘Pack Geometry…’, it’s amazing, but I still face some problems. Since the ‘8’ is composed of two closed curves, I agree that adjusting the text parameters is the best option though

 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/7/e/9/7e93300afa6078793824f4fe4a6f038593c417d5.png)

---

<div class="post-metadata">

**Author:** ![Filippo\_Rossi1](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/filippo_rossi1/32/771373_2.png) [@Filippo\_Rossi1](https://discourse.mcneel.com/u/Filippo_Rossi1)\
**Post date:** [January 9, 2026, 12:21pm UTC](https://discourse.mcneel.com/t/3d-solid-text-cnc/214355/11 "2026-01-09T12:21:07Z")

</div>

> [@martinsiegrist](#):
>
> @laurent_delrieu has a tool for everything 🙂

@martinsiegrist : Laurent and You are both impressive , Your helpfulness and expertise are incredible

many thanks

---

<div class="post-metadata">

**Author:** ![Filippo\_Rossi1](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/filippo_rossi1/32/771373_2.png) [@Filippo\_Rossi1](https://discourse.mcneel.com/u/Filippo_Rossi1)\
**Post date:** [January 9, 2026, 12:49pm UTC](https://discourse.mcneel.com/t/3d-solid-text-cnc/214355/12 "2026-01-09T12:49:15Z")

</div>

@laurent_delrieu by using your useful suggestion i nearly reached my goal but now i am stuck in the solid difference , some of the subvolumes are not subtracted

 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/a/3/3/a3329607766caa98562cf0e9466f93cd7cd3f2e9.png)

beside this to work with solids is quite computanionally expensive…i wonder if the solution could be using meshes but i realized the Gh does not have a component for mesh solid difference

[ENGRAVED LABEL SIMULATION.gh](https://discourse.mcneel.com/uploads/short-url/1c6liEHUM2noTd7lGj9KSiIqYrZ.gh) (22.9 KB)

---

<div class="post-metadata">

**Author:** ![Filippo\_Rossi1](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/filippo_rossi1/32/771373_2.png) [@Filippo\_Rossi1](https://discourse.mcneel.com/u/Filippo_Rossi1)\
**Post date:** [January 9, 2026, 1:12pm UTC](https://discourse.mcneel.com/t/3d-solid-text-cnc/214355/13 "2026-01-09T13:12:09Z")

</div>

i found this solution , it seems to work but @laurent_delrieu@martinsiegrist i wonder if you have any better suggestion

 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/2/3/d/23d6f7c391467559762cc73bf0b3508c6b400c05.png)

> [@Filippo\_Rossi1](#):
>
> i realized the Gh does not have a component for mesh solid difference

sorry i realized i was wrong , i used shrinkwrap to approximate the engraved text and then mesh solid difference and it seams to work reasonably ( i forgot to mention that my goal was to create a 3D printable label so working with meshes is fine for my purposes)

[ENGRAVED LABEL SIMULATION 2.gh](https://discourse.mcneel.com/uploads/short-url/5Zf2DPWhRnFhjxZRpS39lHfpW0B.gh) (20.3 KB)
