Nomar记录一段历史
有谁知道 Slic3r 如何确定其填充相邻股间距,而不是使用填充密度?

我正在研究将填充密度更改为气隙宽度、相邻股线间距等,而不是使用填充密度,因为它会给我更精确的控制。

问题 1:

我只能从 Slic3r 的源代码中~/Slic3r/xs/src/libslic3r/Flow.cpp

链接到 Flow.cpp 源代码

/* This method returns the centerline spacing between an extrusion using this flow and another one using another flow. this->spacing(other) shall return the same value as 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; //Line A } return this->spacing()/2 + other.spacing()/2; //Line B }

如果我是对的,更改Line ALine B是否是更改其填充相邻股线间距的正确方法?

问题 2:

既然我们在讨论这个话题,那么bridge变量代表什么?

1个回答

这个答案应该是一个评论,除了我已经包含了相关的代码。

要回答问题 2,猜测一下, bridge只是一个布尔值 ( bool ),用于指定是否存在桥接。

来自Flow.hpp 第 32 行

/// Represents material flow; provides methods to predict material spacing. 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); /// Calculate a relatively sane extrusion width, based on height and nozzle diameter. /// Algorithm used does not play nice with layer heights < 0.1mm.  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);

但是,要获得这两个问题的准确答案,最好的办法是联系Alessandro Ranellucci - alexrj并询问他 - 因为他是 Slic3r 代码的设计者。当您收到回复时,也许您想在此处发布答案……它可能对其他人有用。

随机文章