Jump to content

r_moeller

Member
  • Posts

    19
  • Joined

  • Last visited

  • Days Won

    1

r_moeller last won the day on June 13 2020

r_moeller had the most liked content!

Personal Information

  • 3D printer
    Ultimaker S3

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

r_moeller's Achievements

6

Reputation

  1. Hello Torgeir thank you for the link to the video. It's a bit frightening but as the filament won't move at all inside the tube I don't see how to get it out otherwise. Meantime I will have a look in my wallet, maybe I have to buy a new core. BTW: The red PVA is Formfutura Atlas (PVA based). I feel that Ultimaker PVA became more and more brittle over time as I mostly print only the support interface with PVA. So a 1 kg spool lasts to long. And also it seems to stick better on PETG that I use most time. Rainer
  2. Hello, I have an issue quite similar to the one mentioned here. https://community.ultimaker.com/topic/36621-please-help-pla-filament-stuck-in-brand-new-aa04-print-core/?tab=comments#comment-286978 Although my print head fan was not working due to filament debris caugth in the fan, the filament wasn't melted between print core and print head enclosure. Instead it was kind of bent between print core and the lifting mechanism above print core 2 in a way that I wasn't able to pull it out or push it through the core. By disassembling the print head I was able to pull the print core out but unfortunately I am still not able to pull the filament out of the core. Maybe it's baked higher up from the nozzle? I am afraid if I use greater force I will rip it apart close to the inlet of the print core and I woludn't be able to do a hot or cold pull on the core. I am thankful for a suggestion how to proceed on that. Rainer
  3. Sorry for the delayed reply. I was busy by wrestling with the desing of a part to print. If I disable "Prime tower brim" I won't get any brim which may lead to an instable tower. That's why I would prefer to have a brim for the tower. And the size of the brim itself isn't the problem. It's the area blocked for placing a part before slicing. It's simply much biffer then needed. Even the skirt around the part and the brim tower is way inside the blocked area (screenshot). I still believe that the calculation of that are isn't correct when skirt is selected for adhesion type.
  4. Sorry, wrong screenshot, for Brim the scrrenshot is here
  5. Hello, does anybody know how the blocking area for the prime tower in cura is calculated? What settings in the profile are used for it? I am struggling with a huge area blocked by the prime tower. It's much bigger then the prime tower after slicing is. Just while writing I have checked with a built in profile which has Brim as standard Build Plate Adhesion Type and found that the area is small with Brim but gets huge by just switching to Skirt. That don't make much sense to me.
  6. Hello I am printing some parts on a dual extruder printer with two colors. I believe that the print will benefit from changing the printing order of the colors. Do I have to switch the spools or is possible to tell Cura to start priniting with extruder 2?
  7. Hellol Enigma_M4 Thanks for the reply, I've found it. That is the place. If anybody else missed it: In the Material/Print Core menu select the material In the Material menu select the context menu by the dots in the upper right corner In the context menu use the "Move" button to open the Move Material menu
  8. Hello I am working with an Ultimaker S3 and I wonder whether there is a way to force the extrusion of some material via the LCD menus, same as with the load material procedure? I am working with different print core diameters (0.4 and 0.25) and the procedure for switching print cores will pull back the filament just an inch or so and after changing the core the filament is only moved forward to reach the core without any extrusion. If I have used a different material with the newly inserted core there is enough material remaining in the core to print a few layers with the old material if the print job is only printing a skirt. That's why I think it's necessary to first extruder some material and stop the extrusion by confirmation. Unfortunately I have tried to get this extrusion by selecting the "Load Material" procedure with the already loaded filament, expecting that the feeder would not try to transport the filament for the length of the bowden tube. The effect was that the material was ground in the feeder and kind of jammed in the print core in way that it could not be pulled out without heating the core (by the cleaning procedure)
  9. It's just easier to make an automated comparision from pure lists: I am quite happy with it. BTW: In my code I have kept the pulling of the settings from the extruder stack. It seems the stack is requesting the values from the right place. The benefit is that for the Machine settings it gives the correct Nozzle ID and Diameter for both extruders. Maybe it's possible to get this values in the same way as the material from the global stack extruders values: # Material # M_Name = extruder.material.getMetaData().get("material", "") extruders = list(global_stack.extruders.values()) M_Name = extruders[extruder_stack.getProperty("extruder_nr","value")].material.getMetaData().get("material", "") But I don't know how to do that.
  10. Thanks for completing the changes and building the package. If you like to maintain it, I think it is better to format numerical values like this: if str(GetType)=='float': GelValStr="{:.5f}".format(GetVal).rstrip("0").rstrip(".") else: GelValStr=str(GetVal) it is better mimicking the GUI. The original code will give rounded values with 2 decimal places even when the GUI shows more decimals. For myself I have changed the plugin to make an CSV file because my main purpose is to compare different profiles and I can feed that directly into Excel to show the differences.
  11. Based on the wiki explanation about profiles and settings here: https://github.com/Ultimaker/Cura/wiki/Profiles-&-Settings i have just made minor changes to the code (marked with ->). At the moment just enough to test on one extruder stack. Copyright (c) 2020 5axes # Initiale Source from Johnny Matthews # The SnapShot plugin is released under the terms of the AGPLv3 or higher. from UM.Application import Application from cura.CuraVersion import CuraVersion # type: ignore from UM.Preferences import Preferences from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Workspace.WorkspaceWriter import WorkspaceWriter -> from cura.Settings.ExtruderManager import ExtruderManager import UM.Settings.SettingRelation class CuraSettingsWriter(WorkspaceWriter): def write(self, stream, nodes, mode): stream.write("<style>") stream.write(" .category { font-size:1.5em; } ") stream.write(" .off { background-color:grey; } ") stream.write(" .valueCol { width:200px;text-align:right }") stream.write("</style>") application = Application.getInstance() machine_manager = application.getMachineManager() stack = application.getGlobalContainerStack() -> extruder_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() global_stack = machine_manager.activeMachine #jquery = open("plugins/plugins/CuraSettingsWriter/jquery-3.3.1.min.js","r", encoding="utf-8") stream.write("<script src='https://code.jquery.com/jquery-3.3.1.slim.min.js'></script>\n") stream.write("""<script> $(document).ready(function(){ $("#enabled").on("click",toggleDisabled); }); function toggleDisabled(){ $("tr.disabled").toggle(); } </script> <h1>Cura Settings Export</h1> <button id='enabled'>Toggle Disabled</button><P>""") stream.write("<table width=50% border=1 cellpadding=3>") # Version stream.write("<tr>") stream.write("<td class='ok' style='width:50%;padding-left:25'>Cura Version</td>") stream.write("<td class='ok' colspan=2>" + str(CuraVersion) + "</td>") stream.write("</tr>\n") # Job J_Name = Application.getInstance().getPrintInformation().jobName stream.write("<tr>") stream.write("<td class='ok' style='width:50%;padding-left:25'>Job Name</td>") stream.write("<td class='ok' colspan=2>" + str(J_Name) + "</td>") stream.write("</tr>\n") # Snapshot #stream.write("<tr>") #stream.write("<td class='ok' colspan=3>" + str(F_Name) + "</td>") #stream.write("</tr>\n") # Profile P_Name = global_stack.qualityChanges.getMetaData().get("name", "") stream.write("<tr>") stream.write("<td class='ok' style='width:50%;padding-left:25'>Profile</td>") stream.write("<td class='ok' colspan=2>" + str(P_Name) + "</td>") stream.write("</tr>\n") # Quality Q_Name = global_stack.quality.getMetaData().get("name", "") stream.write("<tr>") stream.write("<td class='ok' style='width:50%;padding-left:25'>Quality</td>") stream.write("<td class='ok' colspan=2>" + str(Q_Name) + "</td>") stream.write("</tr>\n") # Material # M_Name = extruder.material.getMetaData().get("material", "") extruders = list(global_stack.extruders.values()) M_Name = extruders[0].material.getMetaData().get("material", "") stream.write("<tr>") stream.write("<td class='ok' style='width:50%;padding-left:25'>Material</td>") stream.write("<td class='ok' colspan=2>" + str(M_Name) + "</td>") stream.write("</tr>\n") # Define every section to get the same order as in the Cura Interface -> self._doTree(global_stack,extruder_stacks[0],"resolution",stream,0) -> self._doTree(global_stack,extruder_stacks[0],"shell",stream,0) -> self._doTree(global_stack,extruder_stacks[0],"infill",stream,0) -> self._doTree(global_stack,extruder_stacks[0],"material",stream,0) -> self._doTree(global_stack,extruder_stacks[0],"speed",stream,0) -> self._doTree(global_stack,extruder_stacks[0],"travel",stream,0) # If single extruder doesn't export the data extruder_count=stack.getProperty("machine_extruder_count", "value") if extruder_count>1 : -> self._doTree(global_stack,extruder_stacks[0],"dual",stream,0) -> self._doTree(global_stack,extruder_stacks[0],"cooling",stream,0) -> self._doTree(global_stack,extruder_stacks[0],"support",stream,0) -> self._doTree(global_stack,extruder_stacks[0],"platform_adhesion",stream,0) -> self._doTree(global_stack,extruder_stacks[0],"meshfix",stream,0) -> self._doTree(global_stack,extruder_stacks[0],"blackmagic",stream,0) -> self._doTree(global_stack,extruder_stacks[0],"experimental",stream,0) -> self._doTree(global_stack,extruder_stacks[0],"machine_settings",stream,0) # This Method is smarter but unfortunatly settings are not in the same ordrer as the Cura interface # for key in global_stack.getAllKeys(): # if global_stack.getProperty(key,"enabled") == True: # if global_stack.getProperty(key,"type") == "category": # self._doTree(global_stack,key,stream,0) stream.write("</table>") return True -> def _doTree(self,stack,extruder_stack,key,stream,depth): #output node if stack.getProperty(key,"type") == "category": stream.write("<tr>") stream.write("<td class=category colspan=3>" + str(stack.getProperty(key,"label")) + "</td>") #stream.write("<td class=category>" + str(key) + "</td>") stream.write("</tr>\n") else: style = "ok" if stack.getProperty(key,"enabled") == False: style = "off" stream.write("<tr class=disabled>") else: stream.write("<tr>") -> stream.write("<td class="+style+" style='width:50%;padding-left:"+str(depth*25)+"'>" + str(extruder_stack.getProperty(key,"label")) + "</td>") -> GetType=extruder_stack.getProperty(key,"type") -> GetVal=extruder_stack.getProperty(key,"value") if str(GetType)=='float': GelValStr="{:.2f}".format(GetVal).replace(".00", "") # Formatage else: GelValStr=str(GetVal) stream.write("<td class='"+style+" valueCol'>" + GelValStr + "</td>") -> stream.write("<td class="+style+" >" + str(extruder_stack.getProperty(key,"unit")) + "</td>") stream.write("</tr>\n") #look for children if len(stack.getSettingDefinition(key).children) > 0: for i in stack.getSettingDefinition(key).children: self._doTree(stack,extruder_stack,i.key,stream,depth+1) The comment in the original code is correct, you can't use getAllKeys() on a stack if you wan't to have the same sequence that you see in the GUI. The original idea of getting the categories (Infill, Speed etc.) and pulling the children recursively seems to work. But I have made a lot of assumptions: 1. The extruder stack (or all stacks) won't list settings as children if there is no direct value for them in the stack. That would explain why I don't get some settings if I simply replace the global stack by the extruder stack. So I kept the code to and get the complete settings from the global stack. 2. According to the above mentioned doc about profiles and settings: "The extruder stack will then ask each of the profiles that it has (in sequence) if they have a value for the requested setting" I take every setting from the global stack and ask the extruder stack for the value and hope the result is the same as given in the GUI 3. The next part of the wiki doc about formulas to calculate values for settings: "When we ask for the value of "foo", we expect to get 25 as a result. The following calls will be made in order: ..." Could be a bit more clear - who makes the calls in order?. I hope that the extruder stack will do it for me and will deliver the correct value so I don't have to do the calls in the plugin code. With all these assumptions I am not really sure about my results.
  12. My joy was a bit premature. When looking at the values from the HTML output of the plugin some of the settings would differ from the values given in the Cura GUI. I have hesitate for some days to look into the code of the plugin as I have never coded Python nor have I found many informations about the internal objects structure of Cura. Cause i'd really like to have a readable export of settings I have now tried. It seems that in the plugin all settings values are pulled from global stack machine_manager = application.getMachineManager() global_stack = machine_manager.activeMachine But for a dual extruder machine where settings can be different for extruder 1 + 2 for some settings a single value can't be all. I found this information here: https://community.ultimaker.com/topic/22507-how-can-i-get-settings-in-postprocessing-plugin-script/ "Cura has multiple "stacks" containing settings; a global stack that has all the settings that are properties of the printer (such as machine_start_gcode, build plate dimensions, but also those settings in the sidebar that have a "link" icon), and one or more extruder stacks for settings that can be different for each extruder. " So I tried to simply use the extruder stack instead of the global stack in the plugin code but I got less settings in the machine category (somehow understandable and the category isn't visible in the settings pane of the GUI anyways) but also none of the settings in the material category. So a really important part (temperatures) where missing. I have now tried to get the setting names from the global stack and request the corresponding values from the extruder stack. Can anybody confirm that this is a valid approach?
  13. That's great. I can easily pull it from the HTML to do kind of automated comparision.
  14. Has anyone ever made a feature request about this here: https://github.com/Ultimaker/Cura/issues ? I have imported some materials from marketplace which are lacking profiles (only Fast and Fine are existing). For technical stuff I love Engineering Intent Profiles. But I can't simply copy them as custom profiles because they are relying on other profiles that won't exist for the imported materials. A good explanation about deriving settings from the different profile layers is here (thanks to nallath): https://github.com/Ultimaker/Cura/wiki/Profiles-&-Settings It would be great to have a way to export the settings to a text file. That way it would be much easier to build a similar profiles for different materials. It would be even better if there were an information given in the exported file from where the setting is originated (user/material/quality profile/intent profile/machine). Although that might be more difficult because there are also settings calculated by a formula.
  15. Great information how the settings are derived from the different (profile)layers. Thanky sou so much.
×
×
  • Create New...