V3DPrinting
-
Posts
228 -
Joined
-
Last visited
Content Type
Forums
Events
3D Prints
Posts posted by V3DPrinting
-
-
17 hours ago, Slashee_the_Cow said:
; {material_brand}
in the startup gcode just to see what output is to make sure you don't need to casefold() either it or your values?
the replacement pattern provides the exact brand name as defined in the material definition.
Regarding the conditional replacement pattern in the code, I'll have another look to be sure, but when I've tried it was not successful.
I'll keep you posted on that new try
-
On 2/17/2024 at 6:45 PM, ahoeben said:
I am sorry to be thick, but I don't understand what IDEX printing has to do with the brand of the material.
What is the (potential) problem using the {material_brand} replacement pattern with IDEX printers?
To make it short :
Replacement pattern cannot been made conditional in the start gcode.
IDEX printers have 5 different modes : dual extrusion, single left extruder, single right extruder, duplication and miror.
If you want to have the material configuration, given the start gcode is not conditional, you need to have 5 different start gcode based on the IDEX mode used.
So 5 different printers defined in your Cura instance: IDEX dual, IDEX single left, IDEX single right, IDEX Duplication and IDEX miror.
It's what I've got at the moment in order to have the configuration in the start goode.
Additionally, when you switch from one mode to another, you need to change printer, and re parameter your whole project.
That's why I have created functions with conditional statements so I can have only one start gcode (and only one printer defined in Cura). Therefore I don't need to rebuild an whole project when switching mode.
The only issue I still have is for the material brand.
I hope it helps clarify my issue and goal.
-
1 hour ago, ahoeben said:
And can you expand on this? Why would that require a specific machine instance per extruder configuration?
Because it's an IDEX printer, so it has 5 different modes therefore 5 different material configuration
1 hour ago, ahoeben said:Do you want your users to look in the gcode or do you want your printer firmware to look up the material information and present it to the user?
I just want my users to look at the gcode and retrieve the material information.
I already have the material type, nozzle size and IDEX mode in my gcode header.
Only the material brand is missing to be able to set up with no doubts the printer.
-
3 hours ago, ahoeben said:
Perhaps you could explain what you want to achieve in the first place. Why do you want to have a slice setting to reflect the brand of material selected?
The idea is to be able to reprint without having to load the project. Opening the gcode would provide sufficient information to setup the printer and reprint.
The reason why is that loading an old project file into Cura might alter the current configuration (profiles and materials) if you're not super cautious.
-
15 hours ago, ahoeben said:
Yes, but I don't think there's a way to do this from inside a printer definition.
@ahoeben Thanks for the piece of information.
I think I need to create a function and include it into cura app and register it in CuraApplication.py, initializeSettingFunctions.
I am not sure I will do it as it implies to tweak the app at each release.
The replacement pattern in the start gcode is easier as it is not release dependent.
But that may require a specific machine instance per extruders configuration. Which is against my initial goal to have only one machine instance whatever the extruders configuration is.
Except if conditional statements are properly supported in the start gcode, which is not the case to my knowledge.
-
@Slashee_the_Cow Thanks for the search.
1 hour ago, ahoeben said:All settings have a replacement token, but not all replacement tokens represent a setting.
`material_brand` is metadata of the used material in an extruder, not a setting of that extruder. So you cannot access `material_brand` with the extruderValue function.
@ahoeben Thanks for the clarification. So I need to evaluate the metadata
material_brand = extruder.material.getMetaDataEntry("brand", default = "generic")
-
@Slashee_the_Cow Thanks for the feedback.
9 hours ago, Slashee_the_Cow said:You can't use functions when writing these things, just statements. I don't have the joy of having a multi-extruder printer so I don't know if you're accessing the value the correct way, but IIRC not every variable in the application stack has the same name as its replacement pattern.
I am 100% sure of the statement, addressing the correct extruder, the only thing that is questionable is the key used. It might not be the right one. That's what I'm looking for
For example str(extruderValue(0, 'material_type')).upper() returns properly the material type value, for example PLA.
But with material_brand, it returns 'None', though the replacement pattern returns the right value.
9 hours ago, Slashee_the_Cow said:If it helps, with 5.6 (I think) or above you can use Python statements in your startup gcode, which should include using a conditional. It'd also be entirely possible to do it with a post-processing script (but that's getting into the "more hassle than it's worth, unless you're as crazy as I am" department).
I know we already had that exchange together with @ahoeben a couple on month ago. This works fine.
I agree the post processing script is far too complex for what it solves in the particular case.
-
Dear community
I'm working on building a custom printer definition in Cura and I would like to comment my gcode header with the material brand used per extruder.
I use the ExtruderValue function which returns the value of a specific extruder for a specific key in my printer definition
"used_material_brand":
{
"comments": "V3DP setting",
"default_value": "",
"description": "Comment with the brand used.",
"enabled": false,
"label": "Used material brands",
"settable_per_extruder": true,
"type": "str",
"value": "str(extruderValue(0, 'material_brand'))"
},
The issue is the function is returning 'None' though the material is defined for that extruder and the brand too.
The key 'material_brand' should exists as the replacement pattern {material_brand} is defined.
Any clue ?
I know the replacement pattern could be used directly in the gcode header, but I would like to use a function with a conditional value, my printer can have multiple extruders configurations, like an IDEX printer.
Thanks in advance for your valuable help
-
@ahoeben Thanks for the piece of information. I'll have a look.
-
@Slashee_the_Cow Thanks for the input works fine !
I was looking for the string function, but I haven't found it in my googling. I need to improve my Python knowledge ....
@ahoeben Thanks for your valuable help
-
Thanks for the feedback. I was a bit quick in my post.
I am using the function extruderValue(0,'material_type') in the setting I have defined.
The setting is the following
"used_material":
{
"comments": "V3DP setting",
"default_value": "",
"description": "Comment with the materials used.",
"enabled": false,
"label": "Used materials",
"settable_per_extruder": true,
"type": "str",
"value": "'T0 '+ extruderValue(0,'material_type') if print_mode == \"singleT0\" else 'T1 ' + extruderValue(1,'material_type') if print_mode == \"singleT1\" else 'T0 ' + extruderValue(0,'material_type') + ' T1 ' + extruderValue(1,'material_type') if print_mode == \"dual\" else 'T0 ' + extruderValue(0,'material_type') + 'T1 ' + extruderValue(0,'material_type')"
},
I know there is a replacement pattern for that, but it is not conditional, so I would like to have a dedicated setting. That would allow only one machine instance for all the print modes of my printer.
-
Dear community
I am currently making a custom machine definition and would like to return the material used in a specific extruder in my gcode
I have created a setting in my printer definition, children of blackmagic, using the extruder value extruderValue(extruder_nr,'material_type').
It returns the material used , but the problem is the value returned is a lowercase string and I need an uppercase string.
What would be the function to transform the string into uppercase ?
Thanks in advance
-
Hi to all
I have made some more testing and enquiries on that issue.
First I have checked the print core switch and it's fine.
I remembered that the 3d Solex hardcore were having heat shrink sleeves around the thermistor and heater cartridge wires. And sometimes it creates issues when moving the nozzle, due to the stiffness of the wires.
The print core used was still having the sleeves, so I've removed them.
This have improved a bit the print. The first layer have printed fine on both printcores, except the XY calibration is off....
But it hasn't solved the issue when printing the infill with the right print core.
I've had a closer look at the print core and the bracket in the printhead.
The bracket in the printhead was fine, but the part of the print core that rests in it was having some scratches, so I've sanded them a bit to ensure a good fit.
I've done a manual bed leveling and a XY calibration, but the latter failed with a wrong Z height for the left print core.
Then I've been into a series of errors : differences between nozzles ....
I have a clue, as the printhead silicon socks looks a bit stretched when the right print core is down, maybe it prevents it to be properly seated in the exact same position.
I am using a ruby nozzle with that print core, as it's copperfill filament, which is slightly different in shape (and maybe length) from standard 3d Solex nozzle.
Usually it's in the left slot. Maybe the socks is not exactly the same.
I will do some more testing tomorrow without the socks and if it's not successful try with another print core.
Any clue welcome.
-
Hi to all
I have a weird issue with my old S5 who was a no brainer regarding dual extrusion prints.
I have the following issue in a true dual extrusion print :
- right nozzle is too low when printing, by approx two layers height. As a consequence the nozzle hits the part and is so squished on the print that nothing extrudes.
- same thing for the first layer, but first layer from the left print core is perfect.
- right extruder is used only for the infill.
Here's the project.
The printer prints well in single extrusion mode (left print core)
The S5 R1 was exhibiting that behavior with FW 7.0, so I have upgraded it to 8.2.0 - no change
It prints with 3d Solex hardcores on both slots, but it has nothing to do with the issue. It's my usual setup.
The bed leveling procedure goes well.
The print core switch seems to work fine, but not checked thoroughly by tearing apart the printhead.
I've checked both printcores, to ensure the springs tension is the same and approx 1000g before moving the radiator from the frame.
I've checked the large faces of the heatbreak for any flaw, but it's fine. Same for the seats in the printhead, no residues.
Manual bed leveling was performed when having the issue with special care for the Z height of the right print core.
Project have been sliced with Cura 5.4
I have sliced the project with the infill every layer and it doesn't solve the issue.
I have checked the gcode at the layer where the infill starts and the Z height is the same for T0 and T1. Did also the same when slicing the project with Cura 5.3.1.
Currently I haven't found any clue on the issue. Except a faulty FW for the S5 R1 ....
Urgent help needed as I have a customer order pending due to that issue !
Thanks in advance.
-
@Slashee_the_Cow I saw that the issue is related to the bridge settings, and the trigger is the max resolution.
Thanks for the valuable tip.
-
6 hours ago, Slashee_the_Cow said:
Sometimes the problem can be mitigated by going into the print settings, Mesh Fixes > Maximum Resolution. 0.5mm is a good place to start and if that doesn't work try going down in 0.1mm increments, but this workaround can't be relied upon to work.
@Slashee_the_Cow Thanks for the tip. I'll have a try on my current project.
As I'm running a business, for day to day work, I need to rely on a slicer which doesn't have these flaws.
I will have a look at the issue on Github.
-
@ Ulitmaker Support Team
I am digging out that topic which hasn't been answered by the community as I have again the issue with different projects with Cura 5.4
I would emphasis on the fact that the meshes don't have any reported issues from Cura or Fusion360 or Meshmixer.
Fixing them (wrapping or rebuilding) does not change any of the results below.
Here's the first project file.
Sliced with Cura 5.4, there are some tool path issues (same issue on each part)
Same project sliced with Cura 5.3.1, no issues at all.
Here's the second project file
EW50_2-25x-deksel-original.3mf
The tool path issues with Cura 5.4
And the correct slicing with Cura 5.3.1 ....
This issue is critical as Cura 5.4 can no longer be trusted with some basic issues, though tree supports are a major advantage.
Can you please have an urgent look at this issue ?
-
Hi again
I have also some slicing errors on another model. Mesh is also fine (STL has been created from Fusion 360 / Solid modeling and then rebuilt with Meshmixer to be sure there is no errors).
The model is a continuous extrusion of a profile in these areas, so it shouldn't have any shifting.
There is some sort of layer shifting, but in Cura. It happens with Cura 5.3 and 5.4.
Here's the project file
EW50_Support_Tablette_10_in_V3_Fixed.3mf
Thanks for your help
Best
-
Hi to all
I have some issues placing the seam at the back of the part in the following project. Mainly it's placed at the back. Except some on the top front.......
As the part is aesthetical and it is very visible with that filament, it is an issue.
Here's the project file
EW50_Support_Tablette_10_in_V3 x2.3mf
Any clue on how to solve it ?
Thanks for your help
Best
-
Hi to all
I have some strange behavior with Cura 5.4 when slicing a model : some tool paths are not correct.
Model has no flaws (being wrapped under Fusion 360 to be sure)
Model have some sub meshes due to custom supports created as a part + modifier.
Preview and printed parts exhibit some deviations from the 3D model in some layers
No way to get rid of these flaws, that are not present in the model.
Here's the project file
Slicing the same model with the same parameters (when applicable) under Cura 5.1.1 is fine. But Tree supports are huge and lower quality.
Looks like a bug ?
Thanks for your feedback.
-
@GregValiant Thanks for the post and link.
Since that post Cura has evolved a bit and some settings are now obsolète in 5.3.
But I have understood the principles.
I will play with the minimum line width in order to match the desired number of perimeters and get back to "normal" extrusion conditions.
-
Hi to all
I am printing a water tank in PETG, but getting issues with some sort of stringing, in fact same issue as combing in the walls with PETG, though combing is set to within infill.
In fact there is an over extrusion due to the line width used by Arachne engine : 1,08 mm for a 0.6 mm nozzle with PETG !
The tank's walls are 2.4 mm thick, in order to have 4 perimeters of 0,6mm line width. Line settings for walls are also set to 0.6mm. But instead I have 3 perimeters when sliced....
As a result, print is a bit messy giving some leakages of the tank.
Currently extrusion has been well calibrated (100% flow, filament diameter checked, ...)
Is there a way to have 4 perimeters printed ?
Thanks for your help
-
1 hour ago, GregValiant said:
You can report it on GitHub. It won't be the only bug found with tree supports (although they seem to be getting better).
I will !
Thanks for your inputs that helped me find out the issue.
-
1 minute ago, GregValiant said:
It's gone. My understanding is that it was causing more problems than it solved.
OK we're on the same page. But that should mean that travel between support structures is behaving as standard travel.
I am pretty sure that there is no retraction when traveling between two support interface structures though it should (tree supports, different interface extruder or same interface extruder)
Even combing set to not in skin for both extruders, the move is done without any retraction, traveling around the printed part and also over printed parts (though it should avoid printed parts)
I'm fine with removing the feature and keeping the retraction between supports, but it fear it's not the case at least for tree supports with or without different interface extruder.
No problems with normal supports though.
So there's a bug with the tree supports. But the 'limit support retractions' seems to have properly been removed.
Issue retrieving a value in the extruder stack
in UltiMaker Cura
Posted
@Slashee_the_Cow Sorry for the very late reply. I was very busy these weeks.
I finally sorted out my issue with the material brand used, creating ternaries in my startup gcode.
It was a syntax issue on my first attempts, a semi colon is necessary to separate the conditional statement from the reste of the code.
Here's the beginning of my startup gcode, defined in the printer definition
"value": "';Machine Model: {machine_name}\\n;Materials used: {used_material}\\n;Materials brand: '+ (\"T0 {material_brand,0}\" if print_mode == \"singleT0\" else (\"T1 {material_brand,1}\" if print_mode == \"singleT1\" else (\"T0 {material_brand,0} T1 {material_brand,1}\" if print_mode == \"dual\" else \"T0 {material_brand,0} T1 {material_brand,0}\"))) + '\\n;Extruders used: {used_nozzle_size} \\n;Print mode: {print_mode} ......
I use some custom functions, defined in the printer definition in that startup gcode, but the material brand used ternary relies only on replacement patterns.
Thanks again for your valuable help. !