mirror of
https://git.mirrors.martin98.com/https://github.com/SoftFever/OrcaSlicer.git
synced 2025-08-06 06:06:14 +08:00
Fix issue that z
is not properly set in some cases when clipping polygon (#6955)
Fix issue that `z` is not properly set in some cases when clipping the polygon (SoftFever/OrcaSlicer#6933) Apply the patch from https://sourceforge.net/p/polyclipping/bugs/160/
This commit is contained in:
parent
5bb42bc0d5
commit
53b08f213b
@ -2290,7 +2290,11 @@ void Clipper::ProcessHorizontal(TEdge *horzEdge)
|
||||
|
||||
if (horzEdge->OutIdx >= 0 && !IsOpen) //note: may be done multiple times
|
||||
{
|
||||
op1 = AddOutPt(horzEdge, e->Curr);
|
||||
#ifdef CLIPPERLIB_USE_XYZ
|
||||
if (dir == dLeftToRight) SetZ(e->Curr, *horzEdge, *e);
|
||||
else SetZ(e->Curr, *e, *horzEdge);
|
||||
#endif
|
||||
op1 = AddOutPt(horzEdge, e->Curr);
|
||||
TEdge* eNextHorz = m_SortedEdges;
|
||||
while (eNextHorz)
|
||||
{
|
||||
@ -2614,7 +2618,10 @@ void Clipper::ProcessEdgesAtTopOfScanbeam(const cInt topY)
|
||||
{
|
||||
e->Curr.x() = TopX( *e, topY );
|
||||
e->Curr.y() = topY;
|
||||
}
|
||||
#ifdef CLIPPERLIB_USE_XYZ
|
||||
e->Curr.z() = topY == e->Top.y() ? e->Top.z() : (topY == e->Bot.y() ? e->Bot.z() : 0);
|
||||
#endif
|
||||
}
|
||||
|
||||
//When StrictlySimple and 'e' is being touched by another edge, then
|
||||
//make sure both edges have a vertex here ...
|
||||
|
Loading…
x
Reference in New Issue
Block a user