mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-11 16:57:53 -06:00
Fixed race condition when no pad is generated. Progress indication for SLA is broken.
This commit is contained in:
parent
c5438d8bc3
commit
5c141d9f10
2 changed files with 16 additions and 8 deletions
|
@ -503,7 +503,7 @@ struct Pad {
|
||||||
// Contour3D mesh;
|
// Contour3D mesh;
|
||||||
TriangleMesh tmesh;
|
TriangleMesh tmesh;
|
||||||
PoolConfig cfg;
|
PoolConfig cfg;
|
||||||
double zlevel;
|
double zlevel = 0;
|
||||||
|
|
||||||
Pad() {}
|
Pad() {}
|
||||||
|
|
||||||
|
|
|
@ -230,11 +230,12 @@ void SLAPrint::process()
|
||||||
// and before the supports had been sliced. (or the slicing has to be
|
// and before the supports had been sliced. (or the slicing has to be
|
||||||
// repeated)
|
// repeated)
|
||||||
|
|
||||||
if(po.is_step_done(slaposSupportTree) &&
|
if(/*po.is_step_done(slaposSupportTree) &&*/
|
||||||
po.m_config.pad_enable.getBool() &&
|
po.m_config.pad_enable.getBool() &&
|
||||||
po.m_supportdata &&
|
po.m_supportdata &&
|
||||||
po.m_supportdata->support_tree_ptr)
|
po.m_supportdata->support_tree_ptr)
|
||||||
{
|
{
|
||||||
|
std::cout << "Generating base pool for real" << std::endl;
|
||||||
double wt = po.m_config.pad_wall_thickness.getFloat();
|
double wt = po.m_config.pad_wall_thickness.getFloat();
|
||||||
double h = po.m_config.pad_wall_height.getFloat();
|
double h = po.m_config.pad_wall_height.getFloat();
|
||||||
double md = po.m_config.pad_max_merge_distance.getFloat();
|
double md = po.m_config.pad_max_merge_distance.getFloat();
|
||||||
|
@ -445,15 +446,12 @@ void SLAPrint::process()
|
||||||
const size_t objcount = m_objects.size();
|
const size_t objcount = m_objects.size();
|
||||||
const double ostepd = (max_objstatus - min_objstatus) / (objcount * 100.0);
|
const double ostepd = (max_objstatus - min_objstatus) / (objcount * 100.0);
|
||||||
|
|
||||||
|
static const auto RELOAD_SCENE = SlicingStatus::RELOAD_SCENE;
|
||||||
|
|
||||||
for(SLAPrintObject * po : m_objects) {
|
for(SLAPrintObject * po : m_objects) {
|
||||||
for(size_t s = 0; s < objectsteps.size(); ++s) {
|
for(size_t s = 0; s < objectsteps.size(); ++s) {
|
||||||
auto currentstep = objectsteps[s];
|
auto currentstep = objectsteps[s];
|
||||||
|
|
||||||
// if the base pool (which means also the support tree) is done,
|
|
||||||
// do a refresh when indicating progress
|
|
||||||
auto flg = currentstep == slaposObjectSlice ?
|
|
||||||
SlicingStatus::RELOAD_SCENE : SlicingStatus::DEFAULT;
|
|
||||||
|
|
||||||
// Cancellation checking. Each step will check for cancellation
|
// Cancellation checking. Each step will check for cancellation
|
||||||
// on its own and return earlier gracefully. Just after it returns
|
// on its own and return earlier gracefully. Just after it returns
|
||||||
// execution gets to this point and throws the canceled signal.
|
// execution gets to this point and throws the canceled signal.
|
||||||
|
@ -464,10 +462,20 @@ void SLAPrint::process()
|
||||||
|
|
||||||
unsigned st = OBJ_STEP_LEVELS[currentstep];
|
unsigned st = OBJ_STEP_LEVELS[currentstep];
|
||||||
st = unsigned(min_objstatus + st * ostepd);
|
st = unsigned(min_objstatus + st * ostepd);
|
||||||
set_status(st, OBJ_STEP_LABELS[currentstep], flg);
|
set_status(st, OBJ_STEP_LABELS[currentstep]);
|
||||||
|
|
||||||
pobj_program[currentstep](*po);
|
pobj_program[currentstep](*po);
|
||||||
po->set_done(currentstep);
|
po->set_done(currentstep);
|
||||||
|
|
||||||
|
if(currentstep == slaposBasePool) {
|
||||||
|
// if the base pool (which means also the support tree) is
|
||||||
|
// done, do a refresh when indicating progress. Now the
|
||||||
|
// geometries for the supports and the optional base pad are
|
||||||
|
// ready. We can grant access for the control thread to read
|
||||||
|
// the geometries, but first we have to update the caches:
|
||||||
|
po->support_mesh(); /*po->pad_mesh();*/
|
||||||
|
set_status(st, L("Visualizing supports"), RELOAD_SCENE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue