public KinematicPolar(ToolHead toolhead, ConfigWrapper config) { // Setup axis steppers var stepper_bed = new PrinterStepper(config.getsection("stepper_bed")); var rail_arm = new PrinterRail(config.getsection("stepper_arm")); var rail_z = PrinterRail.LookupMultiRail(config.getsection("stepper_z")); stepper_bed.setup_itersolve(KinematicType.polar, new object[] { "a" }); rail_arm.setup_itersolve(KinematicType.polar, "r"); rail_z.setup_itersolve(KinematicType.cartesian, "z"); this.rails = new PrinterRail[] { rail_arm, rail_z }; this.steppers.Add(stepper_bed); this.steppers.AddRange(rail_arm.get_steppers()); this.steppers.AddRange(rail_z.get_steppers()); // Setup boundary checks var _tup_1 = toolhead.get_max_velocity(); var max_velocity = _tup_1.Item1; var max_accel = _tup_1.Item2; this.max_z_velocity = config.getfloat("max_z_velocity", max_velocity, above: 0.0, maxval: max_velocity); this.max_z_accel = config.getfloat("max_z_accel", max_accel, above: 0.0, maxval: max_accel); this.need_motor_enable = true; this.limit_z = new Vector2d(1, -1); this.limit_xy2 = -1.0; // Setup stepper max halt velocity var max_halt_velocity = toolhead.get_max_axis_halt(); stepper_bed.set_max_jerk(max_halt_velocity, max_accel); rail_arm.set_max_jerk(max_halt_velocity, max_accel); rail_z.set_max_jerk(max_halt_velocity, max_accel); }
public KinematicCoreXY(ToolHead toolhead, ConfigWrapper config) { // Setup axis rails this.rails = new PrinterRail[] { new PrinterRail(config.getsection("stepper_x")), new PrinterRail(config.getsection("stepper_y")), PrinterRail.LookupMultiRail(config.getsection("stepper_z")) }; this.rails[0].add_to_endstop(this.rails[1].get_endstops()[0].endstop); this.rails[1].add_to_endstop(this.rails[0].get_endstops()[0].endstop); this.rails[0].setup_itersolve(KinematicType.corexy, "+"); this.rails[1].setup_itersolve(KinematicType.corexy, "-"); this.rails[2].setup_itersolve(KinematicType.cartesian, "z"); // Setup boundary checks var _tup_1 = toolhead.get_max_velocity(); var max_velocity = _tup_1.Item1; var max_accel = _tup_1.Item2; this.max_z_velocity = config.getfloat("max_z_velocity", max_velocity, above: 0.0, maxval: max_velocity); this.max_z_accel = config.getfloat("max_z_accel", max_accel, above: 0.0, maxval: max_accel); this.need_motor_enable = true; this.limits = new Vector2d[] { new Vector2d(1, -1), new Vector2d(1, -1), new Vector2d(1, -1) }; // Setup stepper max halt velocity var max_halt_velocity = toolhead.get_max_axis_halt(); var max_xy_halt_velocity = max_halt_velocity * Math.Sqrt(2.0); this.rails[0].set_max_jerk(max_xy_halt_velocity, max_accel); this.rails[1].set_max_jerk(max_xy_halt_velocity, max_accel); this.rails[2].set_max_jerk(Math.Min(max_halt_velocity, this.max_z_velocity), this.max_z_accel); }
public KinematicCartesian(ToolHead toolhead, ConfigWrapper config) { this.printer = config.get_printer(); // Setup axis rails rails = new PrinterRail[3]; rails[0] = PrinterRail.LookupMultiRail(config.getsection("stepper_x")); rails[0].setup_itersolve(KinematicType.cartesian, "x"); rails[1] = PrinterRail.LookupMultiRail(config.getsection("stepper_y")); rails[1].setup_itersolve(KinematicType.cartesian, "y"); rails[2] = PrinterRail.LookupMultiRail(config.getsection("stepper_z")); rails[2].setup_itersolve(KinematicType.cartesian, "z"); // Setup boundary checks var _tup_2 = toolhead.get_max_velocity(); var max_velocity = _tup_2.Item1; var max_accel = _tup_2.Item2; this.max_z_velocity = config.getfloat("max_z_velocity", max_velocity, above: 0.0, maxval: max_velocity); this.max_z_accel = config.getfloat("max_z_accel", max_accel, above: 0.0, maxval: max_accel); this.need_motor_enable = true; // Setup stepper max halt velocity var max_halt_velocity = toolhead.get_max_axis_halt(); this.rails[0].set_max_jerk(max_halt_velocity, max_accel); this.rails[1].set_max_jerk(max_halt_velocity, max_accel); this.rails[2].set_max_jerk(Math.Min(max_halt_velocity, this.max_z_velocity), max_accel); // Check for dual carriage support this.dual_carriage_axis = -1; this.dual_carriage_rails = new List <PrinterRail>(); if (config.has_section("dual_carriage")) { var dc_config = config.getsection("dual_carriage"); var dc_axis = dc_config.getchoice("axis", new Dictionary <string, string> { { "x", "x" }, { "y", "y" } }); this.dual_carriage_axis = dc_axis == "x" ? 0 : 1; var dc_rail = PrinterRail.LookupMultiRail(dc_config); dc_rail.setup_itersolve(KinematicType.cartesian, dc_axis); dc_rail.set_max_jerk(max_halt_velocity, max_accel); this.dual_carriage_rails.Add(this.rails[this.dual_carriage_axis]); this.dual_carriage_rails.Add(dc_rail); this.printer.lookup_object <GCodeParser>("gcode") .register_command("SET_DUAL_CARRIAGE", cmd_SET_DUAL_CARRIAGE, desc: cmd_SET_DUAL_CARRIAGE_help); } }