Aller au contenu

Messages recommandés

Posté(e) (modifié)

bonjour

savez vous comment on peut crée un script dans cura pour que a chaque couche imprimé il y est une pause de 1s a la position 0 sur l axe X et reprise de l’impression a la fin de la second ?

Modifié (le) par pascal_lb
Posté(e)

Modération : @fenixdragon j'ai déplacé ton post pour une meilleure visibilité

Posté(e) (modifié)

Ce qu'il te faut c'est rajouter à chaque fin de couche ceci:

G28 X
G4 S1 ;S[temps en secondes]

Ce n'est pas aussi joli qu'avec un plugin mais c'est réalisable avec notepad++ et la fonction rechercher/replacer. Activer le mode étendu (\n,\r,...), chercher "\n;LAYER:" et remplacer par "\nG28 X\nG4 S1\n;LAYER:"

modifgcode.png.09976ee882c1bf91684d922d4e86fdd8.png

Il faudra l'enlever manuellement avant la première couche et le rajouter après la dernière si souhaité (dans ce cas on pourra le mettre dans le End G-Code).

 

Comme toujours, la première fois, reste à coté de l'imprimante le doigt sur le bouton off au cas ou... 😛

Modifié (le) par Tircown
Posté(e)

dans le script de bas il n y a pas \n;LAYER:

from ..Script import Script
class PauseAtHeightforRepetier(Script):
    def __init__(self):
        super().__init__()

    def getSettingDataString(self):
        return """{
            "name":"Pause at height for repetier",
            "key": "PauseAtHeightforRepetier",
            "metadata": {},
            "version": 2,
            "settings":
            {
                "pause_height":
                {
                    "label": "Pause height",
                    "description": "At what height should the pause occur",
                    "unit": "mm",
                    "type": "float",
                    "default_value": 5.0
                },
                "head_park_x":
                {
                    "label": "Park print head X",
                    "description": "What x location does the head move to when pausing.",
                    "unit": "mm",
                    "type": "float",
                    "default_value": 5.0
                },
                "head_park_y":
                {
                    "label": "Park print head Y",
                    "description": "What y location does the head move to when pausing.",
                    "unit": "mm",
                    "type": "float",
                    "default_value": 5.0
                },
                "head_move_Z":
                {
                    "label": "Head move Z",
                    "description": "The Hieght of Z-axis retraction before parking.",
                    "unit": "mm",
                    "type": "float",
                    "default_value": 15.0
                },
                "retraction_amount":
                {
                    "label": "Retraction",
                    "description": "How much fillament must be retracted at pause.",
                    "unit": "mm",
                    "type": "float",
                    "default_value": 5.0
                },
                "extrude_amount":
                {
                    "label": "Extrude amount",
                    "description": "How much filament should be extruded after pause. This is needed when doing a material change on Ultimaker2's to compensate for the retraction after the change. In that case 128+ is recommended.",
                    "unit": "mm",
                    "type": "float",
                    "default_value": 90.0
                },
                "redo_layers":
                {
                    "label": "Redo layers",
                    "description": "Redo a number of previous layers after a pause to increases adhesion.",
                    "unit": "layers",
                    "type": "int",
                    "default_value": 0
                }
            }
        }"""

    def execute(self, data):
        x = 0.
        y = 0.
        current_z = 0.
        pause_z = self.getSettingValueByKey("pause_height")
        retraction_amount = self.getSettingValueByKey("retraction_amount")
        extrude_amount = self.getSettingValueByKey("extrude_amount")
        park_x = self.getSettingValueByKey("head_park_x")
        park_y = self.getSettingValueByKey("head_park_y")
        move_Z = self.getSettingValueByKey("head_move_Z")
        layers_started = False
        redo_layers = self.getSettingValueByKey("redo_layers")
        for layer in data:
            lines = layer.split("\n")
            for line in lines:
                if ";LAYER:0" in line:
                    layers_started = True
                    continue

                if not layers_started:
                    continue

                if self.getValue(line, 'G') == 1 or self.getValue(line, 'G') == 0:
                    current_z = self.getValue(line, 'Z')
                    x = self.getValue(line, 'X', x)
                    y = self.getValue(line, 'Y', y)
                    if current_z != None:
                        if current_z >= pause_z:

                            index = data.index(layer)
                            prevLayer = data[index-1]
                            prevLines = prevLayer.split("\n")
                            current_e = 0.
                            for prevLine in reversed(prevLines):
                                current_e = self.getValue(prevLine, 'E', -1)
                                if current_e >= 0:
                                    break

                            prepend_gcode = ";TYPE:CUSTOM\n"
                            prepend_gcode += ";added code by post processing\n"
                            prepend_gcode += ";script: PauseAtHeightforRepetier.py\n"
                            prepend_gcode += ";current z: %f \n" % (current_z)
                            prepend_gcode += ";current X: %f \n" % (x)
                            prepend_gcode += ";current Y: %f \n" % (y)

                            #Retraction
                            prepend_gcode += "M83\n"
                            if retraction_amount != 0:
                                prepend_gcode += "G1 E-%f F6000\n" % (retraction_amount)

                            #Move the head away
                            prepend_gcode += "G1 Z%f F300\n" % (1 + current_z)
                            prepend_gcode += "G1 X%f Y%f F9000\n" % (park_x, park_y)
                            if current_z < move_Z:
                                prepend_gcode += "G1 Z%f F300\n" % (current_z + move_Z)

                            #Disable the E steppers
                            prepend_gcode += "M84 E0\n"
                            #Wait till the user continues printing
                            prepend_gcode += "@pause now change filament and press continue printing ;Do the actual pause\n"

                            #Push the filament back,
                            if retraction_amount != 0:
                                prepend_gcode += "G1 E%f F6000\n" % (retraction_amount)

                            # Optionally extrude material
                            if extrude_amount != 0:
                                prepend_gcode += "G1 E%f F200\n" % (extrude_amount)
                                prepend_gcode += "@info wait for cleaning nozzle from previous filament\n"
                                prepend_gcode += "@pause  remove the waste filament from parking area and press continue printing\n"

                            # and retract again, the properly primes the nozzle when changing filament.
                            if retraction_amount != 0:
                                prepend_gcode += "G1 E-%f F6000\n" % (retraction_amount)

                            #Move the head back
                            prepend_gcode += "G1 Z%f F300\n" % (1 + current_z)
                            prepend_gcode +="G1 X%f Y%f F9000\n" % (x, y)
                            if retraction_amount != 0:
                                prepend_gcode +="G1 E%f F6000\n" % (retraction_amount)
                            prepend_gcode +="G1 F9000\n"
                            prepend_gcode +="M82\n"

                            # reset extrude value to pre pause value
                            prepend_gcode +="G92 E%f\n" % (current_e)

                            layer = prepend_gcode + layer

                            # include a number of previous layers
                            for i in range(1, redo_layers + 1):
                                prevLayer = data[index-i]
                                layer = prevLayer + layer

                            data[index] = layer #Override the data of this layer with the modified data
                            return data
                        break
        return data
Posté(e)

C'est là que ça ce passe:

maxresdefault.jpg

La méthode que je te propose n'utilise aucun script.

 

D'ailleurs, je n'ai pas demandé, mais quel est le but de cette pause? faire un timelapse?

Posté(e) (modifié)

se que tu me montre cest gcode démarrage et fin on peut ajouté un code a ce niveau ? j ai mit le code apres home je sais pas si cela et bon je suis perdu

1916483720_Sanstitre-2.jpg.4393f74076d8a6d0a68a0410f4e1b341.jpg

Modifié (le) par fenixdragon
Posté(e)

Non c'est pas là qu'il faut le mettre. D'ailleurs c'est G28 X sinon tu vas faire un homing complet et ça a toutes les chances d'être catastrophique avec le Z.

Notepad++ avec la manip expliqué c'est pour le faire à chaque couches avant la suivante. Seulement ça va en rajouter un avant la première couche et ne va pas en mettre à la dernière. C'est donc à corriger manuellement.

Si tu fais ton timelapse avec octoprint, regarde voir du coté de ce plugins pour octoprint: https://plugins.octoprint.org/plugins/octolapse/ Il gère tout ça très bien sans ce casser la tête à modifier le GCODE

  • J'aime 1
Posté(e)

je commence a comprendre faut généré le gcode et apres le modifier dans notepad lol desoler

et donc avent chaque "LAYER"

il faut placer nG28 X\nG4 S1\n

je suis obliger de metre les \ a quoi correspond  ng28 ng24 s1 et n

et dans mon code cest plus ça : " ;LAYER:8"

je nais pas \n;LAYER:

Posté(e) (modifié)

\n signifie nouvelle ligne. (il faut activer le mode étendu de n++ sinon ça ne marche pas, voir ma première réponse)

; marque le début d'un commentaire en GCODE. Ce qui suit ne sera pas interprété et sert uniquement à faciliter la lecture.

"\nG28 X\nG4 S1\n;LAYER:"  revient à dire [saut de ligne]G28 X[saut de ligne]G4 S1[saut de ligne];LAYER:

Avec notepad++ tu ne vas pas le faire manuellement sur chaque ligne, ça se fera tout seul si tu suis mes instructions de ma première réponse. Et oui il faut générer le GCODE, puis le modifier. Si tu n'es pas sûr de toi post ton fichier GCODE ici pour relecture.

Modifié (le) par Tircown
Posté(e)

@mikebzh44, merci de lire les précédentes réponses 😉

@fenixdragon, ça me semble bon par contre tu as du oublier le \n avant ;LAYER: dans le champs rechercher car ça a rajouter un saut de ligne. Ça ne devrait pas poser de problème. Tu auras une photo inutile au début avant le print mais je ne pense pas que ça soit gênant. Le code de fin a déjà un homing XY donc inutile de le rajouter comme je te l'avais suggéré car la photo sera faite. Bref go... avec le doigt sur le bouton off au cas ou....

Posté(e)
Il y a 10 heures, mikebzh44 a dit :

Si tu tournes avec OctoPrint, tu peux installer ce plugin :

https://plugins.octoprint.org/plugins/octolapse/

Et là, tu pourras, tout gérer, même la position de la tête et du bed pour faire des timelapse de toute beauté 😛 

oui @Tircown

ma déja parler de octoprint mais je ne l ais pas et pas de web cam ou même de raspebery je lance le test et je dit ci cest good

Posté(e)

alors ça fonctionne par contre es que l on peut  rajouter  une rétraction a 5.0  une extrude amount 90.0 et  une position plateau centré juste avent la position X ?

car la ça me fait du filament a chaque couche pas top ^^

Posté(e)

Fait gaffe à l'orthographe, j'arrive même pas à comprendre ce que tu veux.

Posté(e)

en fait à la fin de chaque couche la tête va bien au point 0 .

mais vu qu il n'y a pas de rétraction il y a un petit file qui se créé .

je voulais donc savoir si on pouvait rajouter

-une rétraction de ( 5.0 )

-la position y a 50% je sais pas où est le milieu.

Posté(e) (modifié)

Avec cette méthode ce n'est pas possible :

  • La position de l'extrudeur change à chaque couche, donc la valeur à renseignée également
  • Le milieu dépend du modèle de ton imprimante, donc c'est gérable à condition de connaitre la dimension de l'axe X. En fait j'ai du mal à comprendre l'utilité sur ce point.

Pour être exact, ce n'est pas possible avec n++ sauf avec une regex vraiment très complexe et pour laquelle je ne suis pas partant.

Modifié (le) par Tircown
Posté(e)

Ce n'est pas parce que c'est dommage que ça le rend possible...

Posté(e) (modifié)

Bonjour,

@fenixdragon

En imprimant en même temps un deuxième objet, une petite tour cylindrique, par exemple, située dans un coin du plateau, pour actionner la télécommande avec le déplacement de la tête sur l'axe X ou du plateau sur l'axe Y.

Modifié (le) par trotro

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
  • Sur cette page :   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
  • YouTube / Les Imprimantes 3D .fr

×
×
  • Créer...