Cube3 File Editing

Edit: 7-25-19 - Just wanted to put some credit buddybu's way for his efforts on a comprehensive toolkit for our Cubify printers, primarily Cube3. Please visit the thread and participate in code testing. See more here: http://www.print3dforum.com/showthre...e3-File-Editor

We have all these links pointing to all those links pointing at even more links.

The ability to modify the Cube3/Ekocycle files has become an essential part of making our little obsolete printers live a bit longer.

I realized I had forgotten where the encoder for the cube3 even came from, so this is an attempt to put access to these two files in a post of its own.

Don't forget to thank the people who have done the legwork to give us these advantages.

Decoder
swwinterry posted the currently functioning decoder that works for me. This is a drag-n-drop utility that is straight forward. Put a valid .cube3 file on the executable icon and a new *.bfb file will appear. I use the desktop, so the file comes from and is placed on my desktop. I've been using it on Windows 7 and Windows 10 with great success.

There you will find the Cube3 version of the Encoder. I'm having trouble with all the other decoders. There is a message that flashes in windows but I cannot read it.

Just a quick note: The encoder and decoder may be looking for a DLL. Have a look on Microsoft's site for solution link in the link below.http://www.print3dforum.com/showthre...ll=1#post44868
^ this link is the post where this was finally solved for me. Credit to JohnTee there as well for unlocking the final mystery box.

Note: I keep a shortcut on the corner of the Desktop for the decoder and encoder programs. When I drag a .cube3 file from ANY folder onto the Desktop shortcut, the new .bfb file is created back in the folder where the .cube3 file is. Same for the decoder. No need to move files back and forth to the Desktop.

So, with some thinking about the changes needed, I have begin mucking about with the beginnings of a simple, very simple editor for the CUBE3 files. Here is the beginning image:editor - early stage.png
This is currently decrypting a CUBE3 file that was previously modified to print on the CUBE3. I haven't gotten very far, as you can see, but the features that I am planning:

Setting the Firmware Version, Minfirmware Version, Printer Model, Left (MaterialCodeE1) and Right (MaterialCodeE2) type and color. In the side boxes, I plan on having a list of each left and right temperature in the file (M104/M204) and allowing each one to be changed individually, or to mass change them all. I also plan on stripping out the image from the end of the file.

Other features I was thinking about:
Able to display the raw BFB file before encrypting with possible editing.
Able to configure and save default values for fields.
Able to Drag and Drop a cube3 file and to apply default values.

You might have to do some scripting on the temperature part.
I didn't elaborate the shared heater block temperature values in detail.
Each time the nozzle changes sides, the M204 call changes as does the M104.
This is to maintain a bias temperature at all times.
It could turn out to be a toggle not having examined it thoroughly.

Also, there are some startup routines that have wildly varying temps that extend into layer 1. Having that option for layer 1 and 2 would be cool.
Stronger bonds for prints that have excellent bond to the build plate.

This is the one unique part of the Cube3 that nobody touches but taking the hint from 3DS in their slicer outputs (bfb files) as to properly manage early layers and shared heater blocks lesson plan.

Those are valid points, and something I was thinking about -- how best to set the initial temperatures (startup routines). I didn't think about the dual color printing and the need to keep a bias on the two extruders.

So maybe instead of a list of temperatures for left and right, maybe something like

And the same for the right temperature. Then if I allow the editing of the raw BFB, let the user go in a manipulate anything manually. I would need to get a variety of BFB files to try and determine startup routines to determine the best pattern to look for when trying to set the temperatures for Layer 1, Layer 2 and then the remaining layers. Of course, for the remaining layers, I would need to detect any swaps from Left Cart to Right Cart and vice versa. Do you have any thoughts on patterns I might look for in the BFB code for each of these?

I do. I take the decoded files into Excel and filter the data for M104 and M204 calls.
I suspect you will see a toggle once the init and first layer are done.
There is also a end-of-file temperature setting going on which is part of purging both nozzles prior to parking.

What you could do, if you parse the values, is set an -offset- temperature either by adding or subtracting, or percentages.

If it was my 'druthers', I'd opt for a list of unique temps found and an entry field next to them as to what to change them to.
You can optionally enter a field that allows a percentage entry which will show the values that will be assigned. Pre-loading fields that can be changed, basically.
The same is true of a separate field that can have a hard offset of plus or minus a value. Again, once entered, all the replace-with-this-fields will be calculated and populated with the entered offset.
Do add the safeguard where values over 265*C or under 200*C are defaulted to the min/max so things don't go stupid.
You can even protect PLA settings at lower limits as you already have that information in material codes making sure PLA will never reach more than 235*C... but it needs an overwrite button in case people use PLA chips to run ABS or PETG filament.

Retraction settings is where your tool can really help someone like me that always tweaks the retraction settings. What I'd like to dearly try, and simply haven't got to it, is to tweak an offset between the retract and resume values to see if this helps blobbing and stringing (M227 first two modifiers which are assocated with M228).

I also suspect that changing the machine type, material type and removing the image is a huge step on its own. That is all that is needed to convert Ekocycle prints to Cube3 prints or visa versa. Basically, I am saying that generating default profiles may be helpful too. This one would be "Eko2C3".

And while programming, don't forget that you are 2/3 of the way to CubePro in this. One more extruder/material and v1.87 CubePro.

A long reach desire? Changing extrusion rates (M108?) by a percentage! This is one what will really impact prints but is a hard one to manage. If you mater the "change temp by percentage", you can do this for all the extrusion rate values. It is special in that each extrusion type; sidewalk, support, wall, infill, quick layer (whatever that is) and so on can be managed individually based on the #vector values for that section. CubePro and Cube3 could share the core gcode and have much greater control of the resulting prints. This is one way you can get walls to fuse (better) by over-extruding.

Okay, that pretty much follows exactly what I've been thinking for some time now. I know the challenge this presents but I take it you do this for fun as many of do. So there you go... my thoughts of where this could go.

Interesting. I did not realize that one of your use cases was to print ABS through a PLA cartridge and just modify the temps to suit the ABS in the BFB file.

So, what you'd really like to see if a list of unique temps in the file and a way to either specify
1. A new fixed value to replace that set of unique temperatures.
2. A % change value from the original.
3. An offset change value from the original.
4. A preview field that would show the resulting temperatures.
5. An override checkbox to allow for temperatures that exceed PLA/ABS

Please tell me more about the retraction settings and the codes M227/M228 (I presume that M127 and M128 apply to the Left Cartridge and M227/M228 apply to the Right Cartridge?)
Please tell me more about the Extrusion rates (M108). is M208 for the Right Cartridge?

======
Update: Here is another image with some temperature processing. The order of the temperatures are as they are found in the file.

M227 and M228 are codes with 4 modifiers. They are an ON and OFF pair. The M227 has 4 modifiers. The first two control retraction. There is no M127/M128 equivalent.
The M228 has an equivalent value as the first two modifiers of M227. This is also where the "blob" at the start/stop points are managed.

M108 is the pressure, or feed rate applied to the filament. This controls just how "wet" the extrusion is. Basically managing under and over extrusion whether wall, infill, sidewalks or supports. I'm still trying to figure out what a "quick layer" is. But there is a special mode that slows the velocity down to meet minimum layer time parameters.