Draft: split sub_object_move from Draft.py
This commit is contained in:
committed by
Yorik van Havre
parent
10efbcb207
commit
920512692b
@@ -196,6 +196,9 @@ from draftfunctions.move import move_edge, moveEdge
|
||||
from draftfunctions.move import copy_moved_edges, copyMovedEdges
|
||||
|
||||
from draftfunctions.rotate import rotate
|
||||
from draftfunctions.rotate import rotate_vertex, rotateVertex
|
||||
from draftfunctions.rotate import rotate_edge, rotateEdge
|
||||
from draftfunctions.rotate import copy_rotated_edges, copyRotatedEdges
|
||||
|
||||
from draftfunctions.scale import scale
|
||||
from draftfunctions.scale import scale_vertex, scaleVertex
|
||||
@@ -514,28 +517,6 @@ def makePointArray(base, ptlst):
|
||||
return obj
|
||||
|
||||
|
||||
def copyRotatedEdges(arguments):
|
||||
copied_edges = []
|
||||
for argument in arguments:
|
||||
copied_edges.append(copyRotatedEdge(argument[0], argument[1],
|
||||
argument[2], argument[3], argument[4]))
|
||||
joinWires(copied_edges)
|
||||
|
||||
def copyRotatedEdge(object, edge_index, angle, center, axis):
|
||||
vertex1 = rotateVectorFromCenter(
|
||||
object.Placement.multVec(object.Points[edge_index]),
|
||||
angle, axis, center)
|
||||
if isClosedEdge(edge_index, object):
|
||||
vertex2 = rotateVectorFromCenter(
|
||||
object.Placement.multVec(object.Points[0]),
|
||||
angle, axis, center)
|
||||
else:
|
||||
vertex2 = rotateVectorFromCenter(
|
||||
object.Placement.multVec(object.Points[edge_index+1]),
|
||||
angle, axis, center)
|
||||
return makeLine(vertex1, vertex2)
|
||||
|
||||
|
||||
def array(objectslist,arg1,arg2,arg3,arg4=None,arg5=None,arg6=None):
|
||||
"""array(objectslist,xvector,yvector,xnum,ynum) for rectangular array,
|
||||
array(objectslist,xvector,yvector,zvector,xnum,ynum,znum) for rectangular array,
|
||||
@@ -593,27 +574,6 @@ def array(objectslist,arg1,arg2,arg3,arg4=None,arg5=None,arg6=None):
|
||||
polarArray(objectslist,arg1,arg2,arg3)
|
||||
|
||||
|
||||
def rotateVertex(object, vertex_index, angle, center, axis):
|
||||
points = object.Points
|
||||
points[vertex_index] = object.Placement.inverse().multVec(
|
||||
rotateVectorFromCenter(
|
||||
object.Placement.multVec(points[vertex_index]),
|
||||
angle, axis, center))
|
||||
object.Points = points
|
||||
|
||||
def rotateVectorFromCenter(vector, angle, axis, center):
|
||||
rv = vector.sub(center)
|
||||
rv = DraftVecUtils.rotate(rv, math.radians(angle), axis)
|
||||
return center.add(rv)
|
||||
|
||||
def rotateEdge(object, edge_index, angle, center, axis):
|
||||
rotateVertex(object, edge_index, angle, center, axis)
|
||||
if isClosedEdge(edge_index, object):
|
||||
rotateVertex(object, 0, angle, center, axis)
|
||||
else:
|
||||
rotateVertex(object, edge_index+1, angle, center, axis)
|
||||
|
||||
|
||||
def getDXF(obj,direction=None):
|
||||
"""getDXF(object,[direction]): returns a DXF entity from the given
|
||||
object. If direction is given, the object is projected in 2D."""
|
||||
|
||||
@@ -35,6 +35,9 @@ import DraftVecUtils
|
||||
import draftutils.gui_utils as gui_utils
|
||||
import draftutils.utils as utils
|
||||
|
||||
from draftmake.make_line import make_line
|
||||
from draftfunctions.join import join_wires
|
||||
|
||||
from draftmake.make_copy import make_copy
|
||||
|
||||
|
||||
@@ -144,3 +147,65 @@ def rotate(objectslist, angle, center=App.Vector(0,0,0),
|
||||
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 rotate_vertex(object, vertex_index, angle, center, axis):
|
||||
points = object.Points
|
||||
points[vertex_index] = object.Placement.inverse().multVec(
|
||||
rotate_vector_from_center(
|
||||
object.Placement.multVec(points[vertex_index]),
|
||||
angle, axis, center))
|
||||
object.Points = points
|
||||
|
||||
|
||||
rotateVertex = rotate_vertex
|
||||
|
||||
|
||||
def rotate_vector_from_center(vector, angle, axis, center):
|
||||
rv = vector.sub(center)
|
||||
rv = DraftVecUtils.rotate(rv, math.radians(angle), axis)
|
||||
return center.add(rv)
|
||||
|
||||
|
||||
rotateVectorFromCenter = rotate_vector_from_center
|
||||
|
||||
|
||||
def rotate_edge(object, edge_index, angle, center, axis):
|
||||
rotateVertex(object, edge_index, angle, center, axis)
|
||||
if utils.isClosedEdge(edge_index, object):
|
||||
rotateVertex(object, 0, angle, center, axis)
|
||||
else:
|
||||
rotateVertex(object, edge_index+1, angle, center, axis)
|
||||
|
||||
|
||||
rotateEdge = rotate_edge
|
||||
|
||||
|
||||
def copy_rotated_edges(arguments):
|
||||
copied_edges = []
|
||||
for argument in arguments:
|
||||
copied_edges.append(copy_rotated_edge(argument[0], argument[1],
|
||||
argument[2], argument[3], argument[4]))
|
||||
join_wires(copied_edges)
|
||||
|
||||
|
||||
copyRotatedEdges = copy_rotated_edges
|
||||
|
||||
|
||||
def copy_rotated_edge(object, edge_index, angle, center, axis):
|
||||
vertex1 = rotate_vector_from_center(
|
||||
object.Placement.multVec(object.Points[edge_index]),
|
||||
angle, axis, center)
|
||||
if utils.isClosedEdge(edge_index, object):
|
||||
vertex2 = rotate_vector_from_center(
|
||||
object.Placement.multVec(object.Points[0]),
|
||||
angle, axis, center)
|
||||
else:
|
||||
vertex2 = rotate_vector_from_center(
|
||||
object.Placement.multVec(object.Points[edge_index+1]),
|
||||
angle, axis, center)
|
||||
return make_line(vertex1, vertex2)
|
||||
Reference in New Issue
Block a user