diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 3f0a5b9cb2..4513d7edff 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -1599,10 +1599,12 @@ class CuraApplication(QtApplication): def _readMeshFinished(self, job): nodes = job.getResult() - filename = job.getFileName() - self._currently_loading_files.remove(filename) + file_name = job.getFileName() + file_name_lower = file_name.lower() + file_extension = file_name_lower.split(".")[-1] + self._currently_loading_files.remove(file_name) - self.fileLoaded.emit(filename) + self.fileLoaded.emit(file_name) arrange_objects_on_load = not self.getPreferences().getValue("cura/use_multi_build_plate") target_build_plate = self.getMultiBuildPlateModel().activeBuildPlate if arrange_objects_on_load else -1 @@ -1635,15 +1637,14 @@ class CuraApplication(QtApplication): node.scale(original_node.getScale()) node.setSelectable(True) - node.setName(os.path.basename(filename)) + node.setName(os.path.basename(file_name)) self.getBuildVolume().checkBoundsAndUpdate(node) is_non_sliceable = False - filename_lower = filename.lower() - for extension in self._non_sliceable_extensions: - if filename_lower.endswith(extension): - is_non_sliceable = True - break + + if file_extension in self._non_sliceable_extensions: + is_non_sliceable = True + if is_non_sliceable: self.callLater(lambda: self.getController().setActiveView("SimulationView")) @@ -1662,7 +1663,7 @@ class CuraApplication(QtApplication): if not child.getDecorator(ConvexHullDecorator): child.addDecorator(ConvexHullDecorator()) - if arrange_objects_on_load: + if file_extension != "3mf" and arrange_objects_on_load: if node.callDecoration("isSliceable"): # Only check position if it's not already blatantly obvious that it won't fit. if node.getBoundingBox() is None or self._volume.getBoundingBox() is None or node.getBoundingBox().width < self._volume.getBoundingBox().width or node.getBoundingBox().depth < self._volume.getBoundingBox().depth: @@ -1696,7 +1697,7 @@ class CuraApplication(QtApplication): if select_models_on_load: Selection.add(node) - self.fileCompleted.emit(filename) + self.fileCompleted.emit(file_name) def addNonSliceableExtension(self, extension): self._non_sliceable_extensions.append(extension) diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index 0280600834..9ba82364e8 100755 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -59,7 +59,7 @@ class ThreeMFReader(MeshReader): if transformation == "": return Matrix() - splitted_transformation = transformation.split() + split_transformation = transformation.split() ## Transformation is saved as: ## M00 M01 M02 0.0 ## M10 M11 M12 0.0 @@ -68,20 +68,20 @@ class ThreeMFReader(MeshReader): ## We switch the row & cols as that is how everyone else uses matrices! temp_mat = Matrix() # Rotation & Scale - temp_mat._data[0, 0] = splitted_transformation[0] - temp_mat._data[1, 0] = splitted_transformation[1] - temp_mat._data[2, 0] = splitted_transformation[2] - temp_mat._data[0, 1] = splitted_transformation[3] - temp_mat._data[1, 1] = splitted_transformation[4] - temp_mat._data[2, 1] = splitted_transformation[5] - temp_mat._data[0, 2] = splitted_transformation[6] - temp_mat._data[1, 2] = splitted_transformation[7] - temp_mat._data[2, 2] = splitted_transformation[8] + temp_mat._data[0, 0] = split_transformation[0] + temp_mat._data[1, 0] = split_transformation[1] + temp_mat._data[2, 0] = split_transformation[2] + temp_mat._data[0, 1] = split_transformation[3] + temp_mat._data[1, 1] = split_transformation[4] + temp_mat._data[2, 1] = split_transformation[5] + temp_mat._data[0, 2] = split_transformation[6] + temp_mat._data[1, 2] = split_transformation[7] + temp_mat._data[2, 2] = split_transformation[8] # Translation - temp_mat._data[0, 3] = splitted_transformation[9] - temp_mat._data[1, 3] = splitted_transformation[10] - temp_mat._data[2, 3] = splitted_transformation[11] + temp_mat._data[0, 3] = split_transformation[9] + temp_mat._data[1, 3] = split_transformation[10] + temp_mat._data[2, 3] = split_transformation[11] return temp_mat