OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
GCode.cpp File Reference
#include "ArcFitter.hpp"
#include <tuple>
#include "BoundingBox.hpp"
#include "Circle.hpp"
#include "Config.hpp"
#include "GCode/GCodeProcessor.hpp"
#include "Flow.hpp"
#include "GCode/ThumbnailData.hpp"
#include "GCode/ToolOrdering.hpp"
#include "GCode/SpiralVase.hpp"
#include "GCode/PressureEqualizer.hpp"
#include "GCode/SmallAreaInfillFlowCompensator.hpp"
#include "GCode/CoolingBuffer.hpp"
#include "GCode/AdaptivePAProcessor.hpp"
#include "CustomGCode.hpp"
#include "GCode/TimelapsePosPicker.hpp"
#include "ExPolygon.hpp"
#include "GCode/WipePathHelpers.hpp"
#include "GCodeReader.hpp"
#include "GCodeWriter.hpp"
#include "Point.hpp"
#include "Line.hpp"
#include "ObjectID.hpp"
#include "Layer.hpp"
#include "Polygon.hpp"
#include "Polyline.hpp"
#include "PrintBase.hpp"
#include "ConnectedBodies.hpp"
#include "PrintConfig.hpp"
#include "enum_bitmask.hpp"
#include "libslic3r.h"
#include "I18N.hpp"
#include "IMEXHelpers.hpp"
#include "GCode.hpp"
#include <cstdio>
#include "Exception.hpp"
#include "LifecycleEvents.hpp"
#include "ExtrusionEntity.hpp"
#include "EdgeGrid.hpp"
#include "BeltTransform.hpp"
#include "Geometry.hpp"
#include "Geometry/ConvexHull.hpp"
#include "GCode/PrintExtents.hpp"
#include "GCode/Thumbnails.hpp"
#include "GCode/WipeTower.hpp"
#include "GCode/WipeTower2.hpp"
#include "ShortestPath.hpp"
#include "GCode/OrderingStrategies.hpp"
#include "Print.hpp"
#include "Utils.hpp"
#include "ClipperUtils.hpp"
#include "LocalesUtils.hpp"
#include "libslic3r/format.hpp"
#include "Time.hpp"
#include "GCode/ExtrusionProcessor.hpp"
#include <Eigen/Geometry>
#include <Shiny/ShinyMacros.h>
#include <algorithm>
#include <cctype>
#include <boost/algorithm/string/predicate.hpp>
#include <boost/filesystem/operations.hpp>
#include <boost/filesystem/path.hpp>
#include <cfloat>
#include <climits>
#include <cmath>
#include <cstdint>
#include <cstdarg>
#include <cstdlib>
#include <chrono>
#include <iomanip>
#include <cstring>
#include <exception>
#include <functional>
#include <iostream>
#include <iterator>
#include <limits>
#include <map>
#include <math.h>
#include <memory>
#include <sstream>
#include <stdexcept>
#include <set>
#include <optional>
#include <stdlib.h>
#include <string>
#include <system_error>
#include <unordered_set>
#include <type_traits>
#include <utility>
#include <string_view>
#include <regex>
#include <boost/algorithm/string.hpp>
#include <boost/algorithm/string/find.hpp>
#include <boost/foreach.hpp>
#include <boost/filesystem.hpp>
#include <boost/log/trivial.hpp>
#include <boost/beast/core/detail/base64.hpp>
#include <boost/nowide/iostream.hpp>
#include <boost/nowide/cstdio.hpp>
#include <boost/nowide/cstdlib.hpp>
#include "SVG.hpp"
#include <tbb/parallel_for.h>
#include <vector>
#include "calib.hpp"
#include "libslic3r_version.h"
#include "GCode/BeltKinematics.hpp"
#include <tbb/version.h>
#include <tbb/pipeline.h>
#include <Shiny/Shiny.h>
#include <stdio.h>
#include <assert.h>
#include "AABBTreeLines.hpp"
#include "Extruder.hpp"
#include "ExtrusionEntityCollection.hpp"
#include "FilamentMixer.hpp"
#include "Format/STEP.hpp"
#include "Model.hpp"
#include "MultiNozzleUtils.hpp"
#include "Slicing.hpp"

Go to the source code of this file.

Classes

struct  Slic3r::CustomGCodeMotionStateChanges
struct  Slic3r::anonymous_namespace{GCode.cpp}::PrecomputedLayer

Namespaces

namespace  Slic3r
 |/ Copyright (c) Prusa Research 2020 - 2023 Enrico Turri @enricoturri1966 |/ |/ PrusaSlicer is released under the terms of the AGPLv3 or higher |/
namespace  Slic3r::anonymous_namespace{GCode.cpp}
namespace  Slic3r::DoExport
namespace  Slic3r::ProcessLayer
namespace  Slic3r::Skirt

Macros

#define L(s)
 macro used to mark string used at localization, return same string
#define _(s)
#define EXTRUDER_CONFIG(OPT)
#define FILAMENT_CONFIG(OPT)
#define NOZZLE_CONFIG(OPT)
#define MAX_LIMIT(OPT)

Typedefs

using slic3r_tbb_filtermode = tbb::filter

Enumerations

enum  Slic3r::BambuBedType {
  Slic3r::bbtUnknown = 0 , Slic3r::bbtCoolPlate = 1 , Slic3r::bbtEngineeringPlate = 2 , Slic3r::bbtHighTemperaturePlate = 3 ,
  Slic3r::bbtTexturedPEIPlate = 4 , Slic3r::bbtSuperTackPlate = 5
}

Functions

std::optional< Vec2d > Slic3r::anonymous_namespace{GCode.cpp}::emitted_xy_after_gcode (const std::string &gcode, const Vec2d &initial_xy)
static bool Slic3r::is_multi_nozzle_printer (const FullPrintConfig &config)
static int Slic3r::hotend_id_for_gcode_placeholder (const std::shared_ptr< MultiNozzleUtils::LayeredNozzleGroupResult > &group_result, bool is_bbl_printer, int filament_id, int extruder_id, int layer_id=-1)
static int Slic3r::nozzle_id_for_gcode_placeholder (const std::shared_ptr< MultiNozzleUtils::LayeredNozzleGroupResult > &group_result, int filament_id, int extruder_id, int layer_id=-1)
static int Slic3r::first_hotend_id_for_gcode_placeholder (const std::shared_ptr< MultiNozzleUtils::LayeredNozzleGroupResult > &group_result, bool is_bbl_printer, int filament_id, int extruder_id)
static int Slic3r::first_nozzle_id_for_gcode_placeholder (const std::shared_ptr< MultiNozzleUtils::LayeredNozzleGroupResult > &group_result, int filament_id, int extruder_id)
static std::vector< double > Slic3r::get_nozzle_diameters_by_nozzle_id (const MultiNozzleUtils::NozzleGroupResultBase *group_result)
static std::vector< std::string > Slic3r::get_nozzle_volume_types_by_nozzle_id (const MultiNozzleUtils::NozzleGroupResultBase *group_result)
static std::vector< Vec2d > Slic3r::get_path_of_change_filament (const Print &print)
static void Slic3r::check_add_eol (std::string &gcode)
static bool Slic3r::custom_gcode_changes_tool (const std::string &custom_gcode, const std::string &tch_prefix, unsigned next_extruder)
std::string Slic3r::transform_gcode (const std::string &gcode, Vec2f pos, const Vec2f &translation, float angle)
float Slic3r::get_wipe_avoid_pos_x (const Vec2f &wt_min, const Vec2f &wt_max, float offset)
static Point Slic3r::wipe_tower_point_to_object_point (GCode &gcodegen, const Vec2f &wipe_tower_pt)
static float Slic3r::get_outer_wall_volumetric_speed (const FullPrintConfig &config, const Print &print, int filament_id, int filament_variant_idx, int extruder_id)
static bool Slic3r::custom_gcode_sets_temperature (const std::string &gcode, const int mcode_set_temp_dont_wait, const int mcode_set_temp_and_wait, const bool include_g10, int &temp_out)
static bool Slic3r::custom_gcode_line_has_xy_parameter (const std::string &raw)
static CustomGCodeMotionStateChanges Slic3r::custom_gcode_motion_state_changes (const std::string &gcode)
static std::string Slic3r::wrap_custom_gcode_for_fan_mover (const FullPrintConfig &config, const std::string &gcode)
static bool Slic3r::belt_object_layer_prints_something (const PrintObject &object, const Layer &layer)
static void Slic3r::DoExport::update_print_estimated_stats (const GCodeProcessor &processor, const std::vector< Extruder > &extruders, PrintStatistics &print_statistics, const PrintConfig &config)
static std::vector< std::pair< std::string, std::string > > Slic3r::DoExport::validate_custom_gcode (const Print &print)
static void Slic3r::set_mass_locator (GCodeProcessor &processor, const Print &print)
static void Slic3r::DoExport::init_gcode_processor (const PrintConfig &config, GCodeProcessor &processor, const std::shared_ptr< MultiNozzleUtils::NozzleGroupResultBase > &nozzle_group_result=nullptr)
static void Slic3r::DoExport::init_ooze_prevention (const Print &print, OozePrevention &ooze_prevention)
static int Slic3r::DoExport::total_toolchanges_from_ordering (const ToolOrdering &tool_ordering)
static int Slic3r::DoExport::resolve_total_toolchanges (const WipeTowerData &wipe_tower_data, const ToolOrdering &tool_ordering)
static std::string Slic3r::DoExport::update_print_stats_and_format_filament_stats (const bool has_wipe_tower, const WipeTowerData &wipe_tower_data, const std::vector< Extruder > &extruders, PrintStatistics &print_statistics, const ToolOrdering &tool_ordering)
std::vector< const PrintInstance * > Slic3r::sort_object_instances_by_model_order (const Print &print, bool init_order)
static BambuBedType Slic3r::to_bambu_bed_type (BedType type)
static std::vector< int > Slic3r::get_imex_active_tools (const Print &print)
template<typename OverhangSpeed>
static bool Slic3r::prepares_overhang_estimator (const Layer &layer, bool overhang_fan, OverhangSpeed overhang_speed)
std::vector< PrecomputedOverhangLayer > Slic3r::precompute_overhang_layers (const std::vector< GCode::LayerToPrint > &layers, bool overhang_fan)
template<typename LayersAt>
static auto Slic3r::precomputed_layers_source (size_t &next_index, size_t layer_count, bool nop_layer, bool overhang_fan, LayersAt layers_at)
static bool Slic3r::overhang_fan_enabled (const PrintConfig &config, bool cooling_markers)
GCode::ObjectByExtruder & Slic3r::object_by_extruder (std::map< unsigned int, std::vector< GCode::ObjectByExtruder > > &by_extruder, unsigned int extruder_id, size_t object_idx, size_t num_objects)
std::vector< GCode::ObjectByExtruder::Island > & Slic3r::object_islands_by_extruder (std::map< unsigned int, std::vector< GCode::ObjectByExtruder > > &by_extruder, unsigned int extruder_id, size_t object_idx, size_t num_objects, size_t num_islands)
static std::string Slic3r::ProcessLayer::emit_custom_gcode_per_print_z (GCode &gcodegen, const CustomGCode::Item *custom_gcode, unsigned int current_extruder_id, unsigned int first_extruder_id, const PrintConfig &config)
static void Slic3r::Skirt::skirt_loops_per_extruder_all_printing (const Print &print, const ExtrusionEntityCollection &skirt, const LayerTools &layer_tools, std::map< unsigned int, std::pair< size_t, size_t > > &skirt_loops_per_extruder_out)
static std::map< unsigned int, std::pair< size_t, size_t > > Slic3r::Skirt::make_skirt_loops_per_extruder_1st_layer (const Print &print, const ExtrusionEntityCollection &skirt, const LayerTools &layer_tools, std::vector< coordf_t > &skirt_done)
static std::map< unsigned int, std::pair< size_t, size_t > > Slic3r::Skirt::make_skirt_loops_per_extruder_other_layers (const Print &print, const ExtrusionEntityCollection &skirt, const LayerTools &layer_tools, std::vector< coordf_t > &skirt_done)
static Point Slic3r::Skirt::find_start_point (ExtrusionLoop &loop, float start_angle)
std::string Slic3r::sanitize_instance_name (const std::string &name)
std::string Slic3r::get_instance_name (const PrintObject *object, size_t inst_id)
static size_t Slic3r::find_skirt_brim_group_idx (const Print &print, ObjectID object_id, size_t instance_id)
static std::unique_ptr< EdgeGrid::Grid > Slic3r::calculate_layer_edge_grid (const Layer &layer)
static float Slic3r::overhang_fan_overlap_threshold (int overhang_fan_threshold)
static bool Slic3r::overhang_fan_active (float overlap, int overhang_fan_threshold, ExtrusionRole role)
std::string Slic3r::encodeBase64 (uint64_t value)
std::string Slic3r::polygon_to_string (const Polygon &polygon, Print *print, bool is_print_space=false)

Variables

static const float Slic3r::g_min_purge_volume = 100.f
static const float Slic3r::g_purge_volume_one_time = 135.f
static const int Slic3r::g_max_flush_count = 4
static const size_t Slic3r::g_max_label_object = 64
Vec2d Slic3r::travel_point_1
Vec2d Slic3r::travel_point_2
Vec2d Slic3r::travel_point_3
static constexpr float Slic3r::wipe_tower_routing_clearance = 2.f

Class Documentation

◆ Slic3r::CustomGCodeMotionStateChanges

struct Slic3r::CustomGCodeMotionStateChanges
Class Members
bool acceleration = false
bool jerk = false

◆ Slic3r::anonymous_namespace{GCode.cpp}::PrecomputedLayer

struct Slic3r::anonymous_namespace{GCode.cpp}::PrecomputedLayer
Collaboration diagram for Slic3r::anonymous_namespace{GCode.cpp}::PrecomputedLayer:
Class Members
size_t index {size_t(-1)}
vector< PrecomputedOverhangLayer > overhang_layers

Macro Definition Documentation

◆ _

#define _ ( s)
Value:
std::string translate(const std::string &s)
Definition I18N.hpp:18

◆ EXTRUDER_CONFIG

◆ FILAMENT_CONFIG

◆ L

#define L ( s)
Value:
(s)

macro used to mark string used at localization, return same string

◆ MAX_LIMIT

#define MAX_LIMIT ( OPT)
Value:
get_max_value(#OPT, print.config().OPT)

Referenced by Slic3r::GCode::print_machine_envelope().

◆ NOZZLE_CONFIG

Typedef Documentation

◆ slic3r_tbb_filtermode

using slic3r_tbb_filtermode = tbb::filter