Support copying subelements

This commit is contained in:
Dion Moult
2019-02-24 22:09:44 +11:00
committed by Yorik van Havre
parent 131dc3720f
commit 6bfdd4e2f5
2 changed files with 35 additions and 1 deletions

View File

@@ -1500,6 +1500,20 @@ def moveEdge(object, edge_index, vector):
else:
moveVertex(object, edge_index+1, object.Placement.multVec(object.Points[edge_index+1]), vector)
def copyEdges(copy_edge_arguments):
copied_edges = []
for argument in copy_edge_arguments:
copied_edges.append(copyEdge(argument[0], argument[1], argument[2]))
joinWires(copied_edges)
def copyEdge(object, edge_index, vector):
vertex1 = object.Placement.multVec(object.Points[edge_index]).add(vector)
if isClosedEdge(edge_index, object):
vertex2 = object.Placement.multVec(object.Points[0]).add(vector)
else:
vertex2 = object.Placement.multVec(object.Points[edge_index+1]).add(vector)
return makeLine(vertex1, vertex2)
def isClosedEdge(edge_index, object):
return edge_index + 1 >= len(object.Points)

View File

@@ -2667,10 +2667,30 @@ class Move(Modifier):
def move_subelements(self):
try:
self.commit(translate("draft", "Move"), self.build_move_subelements_command())
if self.ui.isCopy.isChecked():
self.commit(translate("draft", "Copy"), self.build_copy_subelements_command())
else:
self.commit(translate("draft", "Move"), self.build_move_subelements_command())
except:
FreeCAD.Console.PrintError(translate("draft", "Some subelements could not be moved."))
def build_copy_subelements_command(self):
import Part
command = []
copy_edge_arguments = []
for object in self.selected_subelements:
for index, subelement in enumerate(object.SubObjects):
if not isinstance(subelement, Part.Edge):
continue
copy_edge_arguments.append('[FreeCAD.ActiveDocument.{}, {}, {}]'.format(
object.ObjectName,
int(object.SubElementNames[index][len("Edge"):])-1,
DraftVecUtils.toString(self.vector)
))
command.append('Draft.copyEdges([{}])'.format(','.join(copy_edge_arguments)))
command.append('FreeCAD.ActiveDocument.recompute()')
return command
def build_move_subelements_command(self):
import Part
command = []