Support copying subelements
This commit is contained in:
committed by
Yorik van Havre
parent
131dc3720f
commit
6bfdd4e2f5
@@ -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)
|
||||
|
||||
|
||||
@@ -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 = []
|
||||
|
||||
Reference in New Issue
Block a user