Merge branch 'feature_mesh_names' of https://github.com/paukstelis/Cura into paukstelis-feature_mesh_names

This commit is contained in:
Ghostkeeper 2018-09-28 13:26:15 +02:00
commit bfc3c5d8d8
No known key found for this signature in database
GPG key ID: 5252B696FB5E7C7A
3 changed files with 15 additions and 1 deletions

View file

@ -9,6 +9,7 @@ from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator
from UM.Scene.SceneNode import SceneNode from UM.Scene.SceneNode import SceneNode
from UM.Scene.Selection import Selection from UM.Scene.Selection import Selection
from UM.i18n import i18nCatalog from UM.i18n import i18nCatalog
from collections import defaultdict
catalog = i18nCatalog("cura") catalog = i18nCatalog("cura")
@ -40,6 +41,8 @@ class ObjectsModel(ListModel):
filter_current_build_plate = Application.getInstance().getPreferences().getValue("view/filter_current_build_plate") filter_current_build_plate = Application.getInstance().getPreferences().getValue("view/filter_current_build_plate")
active_build_plate_number = self._build_plate_number active_build_plate_number = self._build_plate_number
group_nr = 1 group_nr = 1
name_count_dict = defaultdict(int)
for node in DepthFirstIterator(Application.getInstance().getController().getScene().getRoot()): for node in DepthFirstIterator(Application.getInstance().getController().getScene().getRoot()):
if not isinstance(node, SceneNode): if not isinstance(node, SceneNode):
continue continue
@ -55,6 +58,7 @@ class ObjectsModel(ListModel):
if not node.callDecoration("isGroup"): if not node.callDecoration("isGroup"):
name = node.getName() name = node.getName()
else: else:
name = catalog.i18nc("@label", "Group #{group_nr}").format(group_nr = str(group_nr)) name = catalog.i18nc("@label", "Group #{group_nr}").format(group_nr = str(group_nr))
group_nr += 1 group_nr += 1
@ -63,6 +67,14 @@ class ObjectsModel(ListModel):
is_outside_build_area = node.isOutsideBuildArea() is_outside_build_area = node.isOutsideBuildArea()
else: else:
is_outside_build_area = False is_outside_build_area = False
#check if we already have an instance of the object based on name
name_count_dict[name] += 1
name_count = name_count_dict[name]
if name_count > 1:
name = "{0}({1})".format(name, name_count-1)
node.setName(name)
nodes.append({ nodes.append({
"name": name, "name": name,
@ -71,6 +83,7 @@ class ObjectsModel(ListModel):
"buildPlateNumber": node_build_plate_number, "buildPlateNumber": node_build_plate_number,
"node": node "node": node
}) })
nodes = sorted(nodes, key=lambda n: n["name"]) nodes = sorted(nodes, key=lambda n: n["name"])
self.setItems(nodes) self.setItems(nodes)

View file

@ -29,6 +29,7 @@ message Object
bytes normals = 3; //An array of 3 floats. bytes normals = 3; //An array of 3 floats.
bytes indices = 4; //An array of ints. bytes indices = 4; //An array of ints.
repeated Setting settings = 5; // Setting override per object, overruling the global settings. repeated Setting settings = 5; // Setting override per object, overruling the global settings.
string name = 6;
} }
message Progress message Progress

View file

@ -270,7 +270,7 @@ class StartSliceJob(Job):
obj = group_message.addRepeatedMessage("objects") obj = group_message.addRepeatedMessage("objects")
obj.id = id(object) obj.id = id(object)
obj.name = object.getName()
indices = mesh_data.getIndices() indices = mesh_data.getIndices()
if indices is not None: if indices is not None:
flat_verts = numpy.take(verts, indices.flatten(), axis=0) flat_verts = numpy.take(verts, indices.flatten(), axis=0)