Show warning when a layout allowance is smaller than main piece path. This is

usually idicates issue with seam allowance. ref #782.

--HG--
branch : develop
This commit is contained in:
Roman Telezhynskyi 2017-12-11 17:46:13 +02:00
parent 15c93854d8
commit 850bb88c6b
3 changed files with 24 additions and 1 deletions

View File

@ -742,7 +742,13 @@ QVector<VLayoutPiece> MainWindowsNoGUI::PrepareDetailsForLayout(const QHash<quin
{
VAbstractTool *tool = qobject_cast<VAbstractTool*>(VAbstractPattern::getTool(i.key()));
SCASSERT(tool != nullptr)
listDetails.append(VLayoutPiece::Create(i.value(), tool->getData()));
const VLayoutPiece piece = VLayoutPiece::Create(i.value(), tool->getData());
if (not piece.IsLayoutAllowanceValid())
{
qWarning()<< tr("Piece '%1' may broke a layout. Please, check seam allowance to check how seam "
"allowance behave.").arg(piece.GetName());
}
listDetails.append(piece);
++i;
}
}

View File

@ -1055,6 +1055,21 @@ QGraphicsItem *VLayoutPiece::GetItem(bool textAsPaths) const
return item;
}
//---------------------------------------------------------------------------------------------------------------------
bool VLayoutPiece::IsLayoutAllowanceValid() const
{
QVector<QPointF> piecePath;
if (IsSeamAllowance() && not IsSeamAllowanceBuiltIn())
{
piecePath = d->seamAllowance;
}
else
{
piecePath = d->contour;
}
return qFloor(qAbs(SumTrapezoids(d->layoutAllowance)/2.0)) >= qFloor(qAbs(SumTrapezoids(piecePath)/2.0));
}
//---------------------------------------------------------------------------------------------------------------------
void VLayoutPiece::CreateLabelStrings(QGraphicsItem *parent, const QVector<QPointF> &labelShape,
const VTextManager &tm, bool textAsPaths) const

View File

@ -138,6 +138,8 @@ public:
QPainterPath LayoutAllowancePath() const;
Q_REQUIRED_RESULT QGraphicsItem *GetItem(bool textAsPaths) const;
bool IsLayoutAllowanceValid() const;
private:
QSharedDataPointer<VLayoutPieceData> d;