Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 52 additions & 12 deletions src/ansys/motorcad/core/geometry_drawing.py
Original file line number Diff line number Diff line change
Expand Up @@ -482,6 +482,11 @@ def _draw_entity(self, entity, colour, draw_points=False):

return drawn_entity

def _draw_coordinate(self, coordinate, colour):
"""Draw coordinate onto plot."""
drawn_coordinate = plt.plot(coordinate.x, coordinate.y, "x", color=colour)
return drawn_coordinate


def draw_objects_debug(objects):
"""Draw regions on plot if not being run in Motor-CAD.
Expand Down Expand Up @@ -641,28 +646,44 @@ def draw_objects(

# Draw a list of entities or nodes
elif isinstance(objects, list):
if all(isinstance(object, Region) for object in objects):
if draw_points is None:
draw_points = False
for region in objects:
legend_key = region.name
# mix of regions and entities
if draw_points is None:
draw_points = False
for i, object in enumerate(objects):
if isinstance(object, Region):
legend_key = object.name
region_drawing.legend_objects[legend_key] = []
region_drawing.object_states[legend_key] = True
region_drawing.keys_and_labels.insert(legend_key, region_drawing.get_label(region))
region_drawing.keys_and_labels.insert(legend_key, region_drawing.get_label(object))
region_drawing._draw_region(
region, region.colour, label_regions, draw_points=draw_points
object, object.colour, label_regions, draw_points=draw_points
)

elif isinstance(object, Entity):
legend_key = str(object.__class__).split(".")[-1][0:-2] + str(i)
region_drawing.legend_objects[legend_key] = []
region_drawing.object_states[legend_key] = True
region_drawing.keys_and_labels.insert(legend_key, legend_key)
region_drawing.legend_objects[legend_key].append(
region_drawing._draw_entity(object, "black", draw_points)
)
region_drawing.bounds[legend_key] = object.get_bounds()

if all(isinstance(object, Entity) for object in objects):
for i, entity in enumerate(objects):
legend_key = str(entity.__class__).split(".")[-1][0:-2] + str(i)
elif isinstance(object, Coordinate):
legend_key = str(object.__class__).split(".")[-1][0:-2] + str(i)
region_drawing.legend_objects[legend_key] = []
region_drawing.object_states[legend_key] = True
region_drawing.keys_and_labels.insert(legend_key, legend_key)
region_drawing.legend_objects[legend_key].append(
region_drawing._draw_entity(entity, "black", draw_points)
region_drawing._draw_coordinate(object, "black")
)
region_drawing.bounds[legend_key] = (
Coordinate.get_polar_coords_deg(object)[0],
object.x,
object.x,
object.y,
object.y,
)
region_drawing.bounds[legend_key] = entity.get_bounds()

# Draw a sole region/node
if isinstance(objects, Region) or isinstance(objects, GeometryNode):
Expand Down Expand Up @@ -690,6 +711,25 @@ def draw_objects(
)
region_drawing.bounds[legend_key] = objects.get_bounds()

# Draw a sole coordinate
if isinstance(objects, Coordinate):
if draw_points is None:
draw_points = True
legend_key = str(objects.__class__).split(".")[-1][0:-2]
region_drawing.legend_objects[legend_key] = []
region_drawing.object_states[legend_key] = True
region_drawing.keys_and_labels.insert(legend_key, legend_key)
region_drawing.legend_objects[legend_key].append(
region_drawing._draw_coordinate(object, "black")
)
region_drawing.bounds[legend_key] = (
Coordinate.get_polar_coords_deg(object)[0],
object.x,
object.x,
object.y,
object.y,
)

# Create an interactable legend to label and change displayed regions
if legend:
region_drawing.enable_legend()
Expand Down
Loading