Beispiel #1
0
    def g11_retract_recover(self, line, values):
        # print "g11_retract_recover", values

        if self.retracted:
            current_position = self.getRealPos()
            values = {
                    "F": PrinterProfile.getRetractFeedrate(),
                    "A": current_position[A_AXIS] + PrinterProfile.getRetractLength(),
                    }
            self.g0("G11", values)
            self.retracted = False
Beispiel #2
0
    def g10_retract(self, line, values):
        # print "g10_retract", values

        # Compute retract 
        if not self.retracted:
            current_position = self.getRealPos()
            values = {
                    "F": PrinterProfile.getRetractFeedrate(),
                    "A": current_position[A_AXIS] - PrinterProfile.getRetractLength(),
                    }
            self.g0("G10", values)
            self.retracted = True
Beispiel #3
0
    def g11_retract_recover(self, line, values):
        # print "g11_retract_recover", values

        current_position = self.getPos()

        rl = PrinterProfile.getRetractLength()

        current_position[A_AXIS] += rl

        self.planner.addMove(
            TravelMove(line,
                       displacement_vector=Vector([0.0, 0.0, 0.0, rl, 0.0]),
                       displacement_vector_steps=[
                           0.0, 0.0, 0.0, rl * self.steps_per_mm[A_AXIS], 0.0
                       ],
                       feedrate=min(PrinterProfile.getRetractFeedrate(),
                                    PrinterProfile.getMaxFeedrate(3))))

        self.setPos(current_position)
Beispiel #4
0
def removeFilament(args, parser):

    planner = parser.planner
    printer = planner.printer

    printer.commandInit(args)

    ddhome.home(parser, args.fakeendstop)

    printer.sendPrinterInit()

    # Move to mid-position
    # MAX_POS = (X_MAX_POS, Y_MAX_POS, Z_MAX_POS)
    # feedrate = PrinterProfile.getMaxFeedrate(Z_AXIS)
    # parser.execute_line("G0 F%d Z%f" % (feedrate*60, MAX_POS[Z_AXIS]))

    feedrate = PrinterProfile.getMaxFeedrate(X_AXIS)
    parser.execute_line("G0 F%d X%f Y%f" % (feedrate*60, planner.MAX_POS[X_AXIS]/2, planner.MAX_POS[Y_AXIS]/2))

    planner.finishMoves()

    printer.sendCommandParamV(CmdMove, [MoveTypeNormal])
    printer.sendCommand(CmdEOT)

    printer.waitForState(StateIdle)

    t1 = MatProfile.getHotendBaseTemp()
    printer.heatUp(HeaterEx1, t1, wait=t1)

    # Etwas vorwärts um den retract-pfropfen einzuschmelzen
    manualMove(parser, A_AXIS, PrinterProfile.getRetractLength() + 5, 5)

    manualMove(parser, A_AXIS, -1.3*FILAMENT_REVERSAL_LENGTH)

    if not args.noCoolDown:
        printer.coolDown(HeaterEx1,wait=150)