Draft: split sub_object_move from Draft.py

This commit is contained in:
carlopav
2020-05-09 09:52:22 +02:00
committed by Yorik van Havre
parent cb1b0fd3c2
commit 10efbcb207
2 changed files with 50 additions and 27 deletions

View File

@@ -191,6 +191,10 @@ from draftfunctions.fuse import fuse
from draftfunctions.heal import heal
from draftfunctions.move import move
from draftfunctions.move import move_vertex, moveVertex
from draftfunctions.move import move_edge, moveEdge
from draftfunctions.move import copy_moved_edges, copyMovedEdges
from draftfunctions.rotate import rotate
from draftfunctions.scale import scale
@@ -510,32 +514,6 @@ def makePointArray(base, ptlst):
return obj
def moveVertex(object, vertex_index, vector):
points = object.Points
points[vertex_index] = points[vertex_index].add(vector)
object.Points = points
def moveEdge(object, edge_index, vector):
moveVertex(object, edge_index, vector)
if isClosedEdge(edge_index, object):
moveVertex(object, 0, vector)
else:
moveVertex(object, edge_index+1, vector)
def copyMovedEdges(arguments):
copied_edges = []
for argument in arguments:
copied_edges.append(copyMovedEdge(argument[0], argument[1], argument[2]))
joinWires(copied_edges)
def copyMovedEdge(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 copyRotatedEdges(arguments):
copied_edges = []
for argument in arguments:

View File

@@ -32,6 +32,8 @@ import draftutils.gui_utils as gui_utils
import draftutils.utils as utils
from draftmake.make_copy import make_copy
from draftmake.make_line import make_line
from draftfunctions.join import join_wires
from draftobjects.dimension import LinearDimension
from draftobjects.text import Text
@@ -63,7 +65,7 @@ def move(objectslist, vector, copy=False):
The objects (or their copies) are returned.
"""
utils.type_check([(vector, App.Vector), (copy,bool)], "move")
if not isinstance(objectslist,list): objectslist = [objectslist]
if not isinstance(objectslist, list): objectslist = [objectslist]
objectslist.extend(utils.get_movable_children(objectslist))
newobjlist = []
newgroups = {}
@@ -160,3 +162,46 @@ def move(objectslist, vector, copy=False):
gui_utils.select(newobjlist)
if len(newobjlist) == 1: return newobjlist[0]
return newobjlist
# Following functions are needed for SubObjects modifiers
# implemented by Dion Moult during 0.19 dev cycle (works only with Draft Wire)
def move_vertex(object, vertex_index, vector):
points = object.Points
points[vertex_index] = points[vertex_index].add(vector)
object.Points = points
moveVertex = move_vertex
def move_edge(object, edge_index, vector):
moveVertex(object, edge_index, vector)
if utils.isClosedEdge(edge_index, object):
moveVertex(object, 0, vector)
else:
moveVertex(object, edge_index+1, vector)
moveEdge = move_edge
def copy_moved_edges(arguments):
copied_edges = []
for argument in arguments:
copied_edges.append(copy_moved_edge(argument[0], argument[1], argument[2]))
join_wires(copied_edges)
copyMovedEdges = copy_moved_edges
def copy_moved_edge(object, edge_index, vector):
vertex1 = object.Placement.multVec(object.Points[edge_index]).add(vector)
if utils.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 make_line(vertex1, vertex2)