diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index e5b6da0a12..4a4d9535ad 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -905,46 +905,47 @@ public: ConfigOptionFloat layer_height; // Radius in mm of the pointing side of the head. - ConfigOptionFloat support_head_front_radius /*= 0.2*/; + ConfigOptionFloat support_head_front_radius = 0.2; // How much the pinhead has to penetrate the model surface - ConfigOptionFloat support_head_penetraiton /*= 0.2*/; + ConfigOptionFloat support_head_penetraiton = 0.2; - // Radius of the back side of the 3d arrow. - ConfigOptionFloat support_head_back_radius /*= 0.5*/; + // Radius of the back side of the 3d arrow. TODO: consider renaming this + // to actual pillar radius, because that's what it boils down to. + ConfigOptionFloat support_head_back_radius = 0.5; // Width in mm from the back sphere center to the front sphere center. - ConfigOptionFloat support_head_width /*= 1.0*/; + ConfigOptionFloat support_head_width = 1.0; // Radius in mm of the support pillars. - // TODO: This parameter is invalid. The pillar radius will be dynamic in + // TODO: This parameter is questionable. The pillar radius will be dynamic in // nature. Merged pillars will have an increased thickness. This parameter // may serve as the maximum radius, or maybe an increase when two are merged // The default radius will be derived from head_back_radius_mm - ConfigOptionFloat support_pillar_radius /*= 0.8*/; + ConfigOptionFloat support_pillar_radius = 0.8; // Radius in mm of the pillar base. - ConfigOptionFloat support_base_radius /*= 2.0*/; + ConfigOptionFloat support_base_radius = 2.0; // The height of the pillar base cone in mm. - ConfigOptionFloat support_base_height /*= 1.0*/; + ConfigOptionFloat support_base_height = 1.0; // The default angle for connecting support sticks and junctions. - ConfigOptionFloat support_critical_angle /*= M_PI/4*/; + ConfigOptionFloat support_critical_angle = 45; // The max length of a bridge in mm - ConfigOptionFloat support_max_bridge_length /*= 15.0*/; + ConfigOptionFloat support_max_bridge_length = 15.0; // The elevation in Z direction upwards. This is the space between the pad - // and the model object's bounding box bottom. - ConfigOptionFloat support_object_elevation; + // and the model object's bounding box bottom. Units in mm. + ConfigOptionFloat support_object_elevation = 5.0; - // Now for the base pool (plate) /////////////////////////////////////////// + // Now for the base pool (pad) ///////////////////////////////////////////// - ConfigOptionFloat pad_wall_thickness /*= 2*/; - ConfigOptionFloat pad_wall_height /*= 5*/; - ConfigOptionFloat pad_max_merge_distance /*= 50*/; - ConfigOptionFloat pad_edge_radius /*= 1*/; + ConfigOptionFloat pad_wall_thickness= 2; + ConfigOptionFloat pad_wall_height = 5; + ConfigOptionFloat pad_max_merge_distance = 50; + ConfigOptionFloat pad_edge_radius = 1; protected: void initialize(StaticCacheBase &cache, const char *base_ptr) diff --git a/src/libslic3r/SLA/SLASupportTree.hpp b/src/libslic3r/SLA/SLASupportTree.hpp index f0605a356f..5cf59571a1 100644 --- a/src/libslic3r/SLA/SLASupportTree.hpp +++ b/src/libslic3r/SLA/SLASupportTree.hpp @@ -33,7 +33,7 @@ struct SupportConfig { double head_front_radius_mm = 0.2; // How much the pinhead has to penetrate the model surface - double head_penetraiton = 0.2; + double head_penetraiton_mm = 0.2; // Radius of the back side of the 3d arrow. double head_back_radius_mm = 0.5; diff --git a/src/libslic3r/SLAPrint.cpp b/src/libslic3r/SLAPrint.cpp index e209720a0a..f93187cf9a 100644 --- a/src/libslic3r/SLAPrint.cpp +++ b/src/libslic3r/SLAPrint.cpp @@ -169,7 +169,17 @@ void SLAPrint::process() auto& emesh = po.m_supportdata->emesh; auto& pts = po.m_supportdata->support_points; // nowhere filled yet try { - SupportConfig scfg; // TODO fill or replace with po.m_config + sla::SupportConfig scfg; + SLAPrintObjectConfig& c = po.m_config; + + scfg.head_front_radius_mm = c.support_head_front_radius.getFloat(); + scfg.head_back_radius_mm = c.support_head_back_radius.getFloat(); + scfg.head_penetraiton_mm = c.support_head_penetraiton.getFloat(); + scfg.head_width_mm = c.support_head_width.getFloat(); + scfg.object_elevation_mm = c.support_object_elevation.getFloat(); + scfg.tilt = c.support_critical_angle.getFloat() * 180.0 / PI; + scfg.max_bridge_length_mm = c.support_max_bridge_length.getFloat(); + scfg.pillar_radius_mm = c.support_pillar_radius.getFloat(); sla::Controller ctl; ctl.statuscb = [this](unsigned st, const std::string& msg) { @@ -445,8 +455,10 @@ double SLAPrintObject::get_elevation() const { const std::vector &SLAPrintObject::get_support_slices() const { - if(!m_supportdata) return {}; + // I don't want to return a copy but the points may not exist, so ... + static const std::vector dummy_empty; + if(!m_supportdata) return dummy_empty; return m_supportdata->support_slices; }