Best practice for printing logo in first layer (2 colors)

I’d like to print our logo, embedded in the first layer, using a different color. The rest of the model is printed in a single other color (e.g. logo in white, rest in black). What is the best practice to make a printable model with this property? Having the second color in more layers than just the first will waste filament for the color-changes. Could anybody point me to a step-by-step tutorial how to achieve this? Either from within Bambu Studio, or with external software. Thank you!

I think the slicer’s painting feature is frustrating to use with good precision. Instead, I do it in CAD. I make the logo 2D and flush with the face of my printed object. Then I loft the text to make it 3D. I set it to a depth that is 3x what I’m going to use as my layer height. Then I use CSG to subtract the lofted text from my print, which leaves a recessed version of the logo in the print. The lofted text is on another layer, but perfectly aligned with the recessed area of the print. I export the print and the lofted text as two separate STLs. Then I CTRL-Click the two files to import them to the slicer at the same time. The slicer asks if they should be separate objects or a common object with separate parts. I choose the latter and the two sets of geometry load together with the correct alignment. Then I select the lofted text and change its color.

The slicer prints 3 layers of the logo text before it starts over-printing with the body color filament. No bleed through.

This was my first attempt at color printing using this technique. Had I actually taken the time to calibrate the filament before I’d printed it, it would have come out perfect.

3 Likes

Thank you, @RocketSled! Does that mean you print with options “Print order: by object” rather than “by layer”? If one does that, can one choose which of the 2 objects are printed first? Do the three layers of the Logo, that are already in the print bed, not interfere with the nozzle when you print the body? Or is the printer smart enough to recess sufficiently far when the nozzle moves across the already printed logo (e.g., when it goes into the hole of the “R”, or when it goes to print the flash symbol)

Here is how I do it in CAD:

Put a sketch with the text on the face you want the text to be. Then make two extrusions with the text-shapes with 0.6 mm (3 layers) : the first is to cut out the main object. the second is to create new bodys (or parts in onshape) for the letters. The letter-body are now flush with the main object.

Now export the object with the text-bodys as one single export-item. In Onshape this is done while selecting all the parts and the export it at once.

You have now created an object with embedded parts, now import it into bambu studio. The objects within the parts are frozen in the part. If you move or turn the part, the object inside follows the movement. (If you would use the feature “split into objects”, the part would fall down to the print-surface. Don’t do this!)

Then make sure, that the count of filaments is set, as you will need. Now select the “object” tab (beside the “global”). Here you can see all the the objects inside the part. Now you can select the filament per object by slowly clicking twice on the color-button of the object. Or select the wanted objects and the right-click to change the filament. It is a bit fiddly, but it works absolute reliable.

I’ve now tested the workflow with Fusion 360, here it needs one step more…

Make sure, that the body of the main-object is in the same component, as the bodys of the letters. Then export the component with “save as mesh”. You will get one single item, all the bodys are embeddet in one single STL.

After importing the STL in Bambu Studio, you must use the feature “Split into Parts”. After then you see all the contained parts in the “object” tab. But the parts are still connected to each other and you can move them around as one single item.

Remember: Don’t use the feature “Split into Objects”, this will destroy the binding-structure of the contained parts.

1 Like

For those of you using the workflow with Fusion360 I suggest the following:

  • have all the ‘bodies’ (e.g. Text/Logo and the general object) within one component.
  • Instead of export it as STL, export it as 3MF and selecting the component instead of individual bodies

So you have only one file containing all information (and a lot smaller compared to the STL as well).

Most likely Orca/Bambu still ask you if you want to import as geometry only and if it should be imported as combined (=assembly).

2 Likes

No. You’re not printing the colors as separate objects. The main body of the print, and the text, are a single object consisting of separate parts. The slicer prints each element as needed on each layer, switching filament as necessary. Everything gets printed at the same time, not separately.

2 Likes

To achieve a printable model with your desired logo embedded in the first layer using a different color, you can follow these steps:

Prepare your logo: Ensure that your logo is in a digital format that can be easily incorporated into a 3D model. Formats like SVG or high-resolution PNG with transparency work well.

Choose the right software: While Bambu Studio might have specific features for this, you can also achieve the desired result using other 3D modeling software such as Blender or Fusion 360.

Import your logo: Import your logo into the chosen software and position it appropriately on the first layer of the model. Make sure it is aligned correctly and sized appropriately for your desired print.

Assign colors: In the software, assign the color white to the logo and black to the rest of the model. This step may vary depending on the software you are using, but typically there is a material or color assignment tool available.

Export the model: Once you have positioned and colored your model accordingly, export it as an STL or other compatible file format that is suitable for 3D printing.

Slice the model: Import the exported model file into your preferred slicing software. This software allows you to configure settings specific to your 3D printer, such as layer height and filament color changes.

Configure color changes: In the slicing software, specify that you want the color change to occur only at the start of the second layer. This ensures that the logo is printed in a different color in the first layer, and the rest of the model is printed in a single color.

Hi all, @RocketSled, @Zwurli,

you seem to have worked out a solution for a challenge I’m currently facing. However, I am still struggling with the way the printer behaves after setting everything up in Bambu Studio. I configured my model in the way described above (in onshape, but that shouldn’t make a difference). The result in Bambu Studio is an object consisting of two parts which I have assigned different filament colours to. The only difference to the examples above is that the second filament is not to be used in the first layer but in third and fourth layers. I can’t see how this would affect the general process, though. After slicing the colours are correctly represented in the ‘Preview’ tab and filament changes are correctly summarized in the ‘Color scheme’ overview.

When printing, however, the printer just ignores the filament changes and prints everything using the first filament. As a second variant I have already tried painting the relevant parts of the model in Bambu studio and then printing - all to the same result, however.

I am printing on a P1P without AMS. Can anybody point me to a possible solution for this?

Thanks a lot!

Post some screen grabs from Studio to help illustrate what you’re doing? Having trouble following along…

3 Likes

Hi @RocketSled,

thanks for your reply!

Here’s the two test objects in Bambu Studio, both from above and below:

The left object consists of two parts (which have not been split). Part 2 has been assigned the second filament via object-based configuration (see highlighted part in the configuration tab on the left). Part 2 is two layers thick.
The object on the right consists of one part only. The letter is recessed by two layers, the ‘letter layer’ itself is only one layer thick and visible from above and below. I coloured this layer from above and below via the painting tool in Bambu Studio.

After slicing both filaments are being shown in the Preview tab and filament changes are shown correctly:

My expectation would be for the printer to pause when reaching those areas and ask for manual filament change (as is the case when using layer-based filament changes). The pause does not occur, however, the whole model is being printed in one go with a single filament.

Am I doing something wrong? Are there additional settings required to achieve the desired behaviour?

Thanks a lot for your help!

I don‘t think, that a filament change within one layer is possible without the AMS

Yes, it’s possible. I have done that already for a 2 color print.

But it was a little bit complicated, because you have manipulate the gcode to insert a pause within the layer. This is not supported yet from Bambu Studio. At the time I made this print, Orca Slicer even didn’t had a gcode viewer. So I sliced the model in Bambu Studio and exported the gcode. This gcode file I load into the Gcode viewer of Prusa Slicer and in a text editior. In Gcode viewer searched the line, where the color change should start. Now I searched this gcode line in text editior and insert a pause command before the line. And so on with all color changes. Luckily the model had only 3 color changes, because the slicer started with the red parts, then switched to black and on the next layer again to red and back to black. It was a lot of handwork for this simple model. :slight_smile:

Thanks for this description! I‘m willing to take the effort but know almost nothing about gcode. Could you provide me with the code pieces you inserted to effect the pause?

You can use this gcode

M400 U1
G28 X Y

The first line is the pause command. The second line homes X and Y axis after resume. Depending on the firmware version this is need to prevent a layer shift after loading filament.

What you also can try is to use this gcode as gcode for color change in printer settings. But I haven‘t tried it yet by myself.

Great, thanks a lot! I have just browsed through gcode export but am not sure where to exactly put the new code. I am able to pin it down to the following lines by visual comparison in Bambu Studio:

G1 X100 F5000
G1 X120 F15000

G1 X20 Y50 F21000
G1 Y-3

; get travel path for change filament
M620.1 X255 Y0 F21000 P0
M620.1 X255 Y0 F21000 P1
M620.1 X255 Y245 F21000 P2

M620.1 E F523 T240
T1
M620.1 E F523 T240


M400

G92 E0

; FLUSH_START
; always use highest temperature to flush
M400
M109 S240

G1 E23.7 F523 ; do not need pulsatile flushing for start part
G1 E0.690105 F50
G1 E7.9362 F523
G1 E0.690105 F50
G1 E7.9362 F523
G1 E0.690105 F50
G1 E7.9362 F523
G1 E0.690105 F50
G1 E7.9362 F523

; FLUSH_END
G1 E-2 F1800
G1 E2 F300



; FLUSH_START
G1 E10.4769 F523
G1 E1.1641 F50
G1 E10.4769 F523
G1 E1.1641 F50
G1 E10.4769 F523
G1 E1.1641 F50
G1 E10.4769 F523
G1 E1.1641 F50
G1 E10.4769 F523
G1 E1.1641 F50
; FLUSH_END
G1 E-2 F1800
G1 E2 F300





; FLUSH_START
M400
M109 S220
G1 E2 F523 ;Compensate for filament spillage during waiting temperature
; FLUSH_END
M400
G92 E0
G1 E-2 F1800
M106 P1 S255
M400 S3
G1 X80 F15000
G1 X60
G1 X80
G1 X60; shake to put down garbage

G1 X70 F5000
G1 X90 F3000
G1 Y255 F4000
G1 X100 F5000
G1 Y265
G1 X70 F10000
G1 X100 F5000
G1 X70 F10000
G1 X100 F5000
G1 X165 F15000; wipe and shake
G1 Y256 ; move Y to aside, prevent collision
M400
G1 Z4.2 F3000

M204 S10000


M621 S1A
M106 S127.5
M106 P2 S178
M104 S220 ; set nozzle temperature
; filament start gcode
M106 P3 S255
G1 X120.33 Y208.525 F30000
G1 Z4.6
G1 Z1.2
G1 E2 F1800
M204 S5000
; FEATURE: Outer wall
; LINE_WIDTH: 0.42
G1 F16707.347
G1 X120.33 Y216.105 E.23291
G1 X109.75 Y216.105 E.32509

Where exactly would that new code have to go? I am a little bit afraid of breaking something by just inserting it on trial-and-error basis.
Also, how about Z height? Would that have to be retracted a bit prior to homing X and Y?

To insert the gcode, slice the model and export the gcode. Load it in editor - VSCodium / Visual Studio Code can highlight gcode.

Now limit the layer with the vertical slider on the right side to the layer with the color change. Then move the horizontal slider on the bottom to bring up the gcode viewer and move until you find the position where the new color should start.

Now search for the gcode (here G1 X123.833) in the editor and insert the gcode for pause:

Please take care about the position. I used to insert the pause before the G1 X... Y... Z... command, because G1 means move to position X… Y… Z…, which is a good point to start after the pause.

Do this with every position, where the color should be changed.

Thanks for those details! I will give that a try tomorrow and report back.

go to the gear nect to the build plate and set ‘first layer filament sequence to customize’ then you can drag it to the order you want.

Hello, I also did a similar project, but I couldn’t decide which filament to start with first. It only changes for the single-layer logo color three times. Actually, I want it to start with yellow and finish with red. How was it done in the model you printed?