@@ -220,13 +220,14 @@ void PatternPieceTool::insertNodes(const QVector<VPieceNode> &nodes, quint32 pie
220220 return ;
221221 }
222222
223- VPiece newPiece = oldPiece;
223+ QVector<VPieceNode> newNodes = removeDuplicateNodePoints ( oldPiece, nodes, data) ;
224224
225- for (auto node : nodes)
225+ VPiece newPiece = oldPiece;
226+ for (auto node : newNodes)
226227 {
227228 const quint32 id = PrepareNode (node, scene, doc, data);
228- if (id == NULL_ID)
229- {
229+ if (id == NULL_ID)
230+ {
230231 return ;
231232 }
232233
@@ -1961,6 +1962,41 @@ void PatternPieceTool::initializeNode(const VPieceNode &node, VMainGraphicsScene
19611962 }
19621963}
19631964
1965+ // / @brief removeDuplicateNodePoints remove duplcate node points
1966+ // /
1967+ // / This method creates a list of nodes that removes duplicate point nodes from a list of selected modes.
1968+ // / Curve nodes are not removed.
1969+ // /
1970+ // / @param piece Pattern piece that selected nodes are to be inserted into.
1971+ // / @param nodes List of selected nodes.
1972+ // / @param data Pointer to data container.
1973+ // / @return uniqueNodes Vector of nodes with unique point nodes.
1974+ QVector<VPieceNode> PatternPieceTool::removeDuplicateNodePoints (const VPiece &piece, const QVector<VPieceNode> &nodes,
1975+ VContainer *data)
1976+ {
1977+ QVector<quint32> pieceNodeObjIds;
1978+ const QVector<VPieceNode> pieceNodes = piece.GetPath ().GetNodes ();
1979+ for (auto node : pieceNodes)
1980+ {
1981+ quint32 id = node.GetId ();
1982+ QSharedPointer<VGObject> object = data->GetGObject (id);
1983+ const quint32 objectId = object->getIdObject ();
1984+ pieceNodeObjIds.append (objectId);
1985+ }
1986+
1987+ QVector<VPieceNode> uniqueNodes;
1988+ for (auto node : nodes)
1989+ {
1990+ quint32 id = node.GetId ();
1991+ if (node.GetTypeTool () != Tool::NodePoint ||
1992+ (!pieceNodeObjIds.contains (id) && node.GetTypeTool () == Tool::NodePoint))
1993+ {
1994+ uniqueNodes.append (node);
1995+ }
1996+ }
1997+ return uniqueNodes;
1998+ }
1999+
19642000// ---------------------------------------------------------------------------------------------------------------------
19652001void PatternPieceTool::InitCSAPaths (const VPiece &piece)
19662002{
0 commit comments