Draft: subelement mode ignored nesting (#8319)

This commit is contained in:
Roy-043
2023-02-02 11:49:55 +01:00
committed by GitHub
parent 802a220d2d
commit 693ec401f7
6 changed files with 47 additions and 43 deletions

View File

@@ -169,6 +169,7 @@ def move_vertex(object, vertex_index, vector):
Needed for SubObjects modifiers.
Implemented by Dion Moult during 0.19 dev cycle (works only with Draft Wire).
"""
vector = object.getGlobalPlacement().inverse().Rotation.multVec(vector)
points = object.Points
points[vertex_index] = points[vertex_index].add(vector)
object.Points = points
@@ -182,11 +183,11 @@ def move_edge(object, edge_index, vector):
Needed for SubObjects modifiers.
Implemented by Dion Moult during 0.19 dev cycle (works only with Draft Wire).
"""
moveVertex(object, edge_index, vector)
move_vertex(object, edge_index, vector)
if utils.isClosedEdge(edge_index, object):
moveVertex(object, 0, vector)
move_vertex(object, 0, vector)
else:
moveVertex(object, edge_index+1, vector)
move_vertex(object, edge_index+1, vector)
moveEdge = move_edge
@@ -211,11 +212,11 @@ def copy_moved_edge(object, edge_index, vector):
Needed for SubObjects modifiers.
Implemented by Dion Moult during 0.19 dev cycle (works only with Draft Wire).
"""
vertex1 = object.Placement.multVec(object.Points[edge_index]).add(vector)
vertex1 = object.getGlobalPlacement().multVec(object.Points[edge_index]).add(vector)
if utils.isClosedEdge(edge_index, object):
vertex2 = object.Placement.multVec(object.Points[0]).add(vector)
vertex2 = object.getGlobalPlacement().multVec(object.Points[0]).add(vector)
else:
vertex2 = object.Placement.multVec(object.Points[edge_index+1]).add(vector)
vertex2 = object.getGlobalPlacement().multVec(object.Points[edge_index+1]).add(vector)
return make_line.make_line(vertex1, vertex2)
## @}

View File

@@ -174,9 +174,9 @@ def rotate_vertex(object, vertex_index, angle, center, axis):
Implemented by Dion Moult during 0.19 dev cycle (works only with Draft Wire).
"""
points = object.Points
points[vertex_index] = object.Placement.inverse().multVec(
points[vertex_index] = object.getGlobalPlacement().inverse().multVec(
rotate_vector_from_center(
object.Placement.multVec(points[vertex_index]),
object.getGlobalPlacement().multVec(points[vertex_index]),
angle, axis, center))
object.Points = points
@@ -202,11 +202,11 @@ def rotate_edge(object, edge_index, angle, center, axis):
Needed for SubObjects modifiers.
Implemented by Dion Moult during 0.19 dev cycle (works only with Draft Wire).
"""
rotateVertex(object, edge_index, angle, center, axis)
rotate_vertex(object, edge_index, angle, center, axis)
if utils.isClosedEdge(edge_index, object):
rotateVertex(object, 0, angle, center, axis)
rotate_vertex(object, 0, angle, center, axis)
else:
rotateVertex(object, edge_index+1, angle, center, axis)
rotate_vertex(object, edge_index+1, angle, center, axis)
rotateEdge = rotate_edge
@@ -233,15 +233,15 @@ def copy_rotated_edge(object, edge_index, angle, center, axis):
Implemented by Dion Moult during 0.19 dev cycle (works only with Draft Wire).
"""
vertex1 = rotate_vector_from_center(
object.Placement.multVec(object.Points[edge_index]),
object.getGlobalPlacement().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]),
object.getGlobalPlacement().multVec(object.Points[0]),
angle, axis, center)
else:
vertex2 = rotate_vector_from_center(
object.Placement.multVec(object.Points[edge_index+1]),
object.getGlobalPlacement().multVec(object.Points[edge_index+1]),
angle, axis, center)
return make_line.make_line(vertex1, vertex2)

View File

@@ -147,9 +147,9 @@ def scale_vertex(obj, vertex_index, scale, center):
Implemented by Dion Moult during 0.19 dev cycle (works only with Draft Wire).
"""
points = obj.Points
points[vertex_index] = obj.Placement.inverse().multVec(
points[vertex_index] = obj.getGlobalPlacement().inverse().multVec(
scale_vector_from_center(
obj.Placement.multVec(points[vertex_index]),
obj.getGlobalPlacement().multVec(points[vertex_index]),
scale, center))
obj.Points = points
@@ -189,15 +189,15 @@ def copy_scaled_edge(obj, edge_index, scale, center):
Implemented by Dion Moult during 0.19 dev cycle (works only with Draft Wire).
"""
vertex1 = scale_vector_from_center(
obj.Placement.multVec(obj.Points[edge_index]),
obj.getGlobalPlacement().multVec(obj.Points[edge_index]),
scale, center)
if utils.is_closed_edge(edge_index, obj):
vertex2 = scale_vector_from_center(
obj.Placement.multVec(obj.Points[0]),
obj.getGlobalPlacement().multVec(obj.Points[0]),
scale, center)
else:
vertex2 = scale_vector_from_center(
obj.Placement.multVec(obj.Points[edge_index+1]),
obj.getGlobalPlacement().multVec(obj.Points[edge_index+1]),
scale, center)
return make_line.make_line(vertex1, vertex2)