Как Slic3r определяет расстояние между соседними прядями вместо использования плотности заполнения?
Я занимаюсь исследованиями по изменению плотности заполнения на ширину воздушного зазора, расстояние между соседними прядями или что-то еще, вместо того чтобы использовать плотность заполнения, так как это даст мне более точный контроль.
Вопрос 1:
Все, что я могу понять, - это исходный код Slic3r в ~/Slic3r/xs/src/libslic3r/Flow.cpp
,
Ссылка на Flow.cpp исходный код
/* Этот метод возвращает межосевое расстояние между экструзией, использующей этот
поток, и другой экструзией, использующей другой поток.
this->spacing(other) возвращает то же значение, что и other.spacing(*this). */
float Flow::spacing(const Flow &other) const {
assert(this->height == other.height);
assert(this->bridge == other.bridge);
if (this->bridge) {
return this->width/2 + other.width/2 + BRIDGE_EXTRA_SPACING; //Строка A
}
return this->spacing()/2 + other.spacing()/2; //Строка B
}
Если я прав, будет ли изменение линии A
или Линии B
правильным способом изменить расстояние между соседними прядями?
Вопрос 2:
И раз уж мы затронули эту тему, что представляет собой переменная моста?
@Jiong Le, 👍2
1 ответ
Этот ответ должен был быть комментарием, за исключением того, что я включил соответствующий код.
Чтобы ответить на вопрос 2, предположим, что bridge
- это просто логическое значение (bool
), которое указывает, есть ли мост или нет.
/// Представляет материальный поток; предоставляет методы прогнозирования расстояния между материалами.
class Flow
{
public:
float width, height, nozzle_diameter;
bool bridge;
Flow(float _w, float _h, float _nd, bool _bridge = false)
: width(_w), height(_h), nozzle_diameter(_nd), bridge(_bridge) {};
Кроме того, строки 68-73также могут представлять интерес:
private:
static float _bridge_width(float nozzle_diameter, float bridge_flow_ratio);
/// Рассчитать относительно нормальную ширину экструзии, исходя из высоты и диаметра сопла.
/// Используемый алгоритм плохо работает при высоте слоя <0,1 мм.
static float _auto_width(FlowRole role, float nozzle_diameter, float height);
static float _width_from_spacing(float spacing, float nozzle_diameter, float height, bool bridge);
Однако лучше всего, чтобы получить точный ответ на оба ваших вопроса, связаться с Алессандро Ранеллуччи - alexrjи спросить его, поскольку он является разработчиком кода Slic3r. Когда вы получите ответ, возможно, вы захотите опубликовать его здесь... это может быть полезно для кого-то еще.
- Slic3r: Можно ли варьировать процент заполнения для разных высот модели?
- Первый слой - даже не заливка
- Slic3r - как добавить новые шаблоны заполнения?
- Как повторить слои Slic3r для каждых 3 слоев заполнения с разными углами?
- Разная заливка в одной и той же части
- В чем преимущества заполнения гироида?
- Эндер 3 тяжелая недоэкструзия
- Печатное сопло: Перетаскивание и размазывание нити филамента во время печати