Aller au contenu

GO Print

script dans cura


Messages recommandés

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
Lien vers le commentaire
Partager sur d’autres sites

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
Lien vers le commentaire
Partager sur d’autres sites

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?

Lien vers le commentaire
Partager sur d’autres sites

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
Lien vers le commentaire
Partager sur d’autres sites

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:

Lien vers le commentaire
Partager sur d’autres sites

\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
Lien vers le commentaire
Partager sur d’autres sites

@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....

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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
Lien vers le commentaire
Partager sur d’autres sites

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
Lien vers le commentaire
Partager sur d’autres sites

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...