Я дам вам некоторый полностью непроверенный код, написанный без рассмотрения спецификации SVG DOM. Затем вы можете проверить и настроить его, чтобы он заработал.
Сначала получите ограничительную рамку элемента:
var box = mypath.getBBox();
Затем дважды клонируйте путь (или создайте элементы):
var rightCopy = mypath.cloneNode(true);
var bottomCopy = mypath.cloneNode(true);
Затем преобразуйте каждую копию:
rightCopy.setAttribute("transform", "translate(" + box.width + ",0) " + rightCopy.getAttribute("transform"));
bottomCopy.setAttribute("transform", "translate(0," + box.height + ") " + bottomCopy.getAttribute("transform"));
Причина, по которой это выглядит грязно, заключается в том, что в исходном пути уже может быть преобразование.
Затем добавьте эти узлы обратно в DOM:
mypath.parentNode.insertBefore(rightCopy, mypath);
mypath.parentNode.insertBefore(bottomCopy, mypath);