mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-06 22:47:29 -06:00
3mf reader now sets names of nodes
This makes debugging a whole lot easier. CURA-382
This commit is contained in:
parent
e1ebd3e225
commit
0d9fd3b410
1 changed files with 6 additions and 5 deletions
|
@ -11,9 +11,8 @@ from UM.Scene.GroupDecorator import GroupDecorator
|
||||||
import UM.Application
|
import UM.Application
|
||||||
from UM.Job import Job
|
from UM.Job import Job
|
||||||
|
|
||||||
from UM.Math.Quaternion import Quaternion
|
|
||||||
|
|
||||||
import math
|
import os.path
|
||||||
import zipfile
|
import zipfile
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -31,9 +30,11 @@ class ThreeMFReader(MeshReader):
|
||||||
"3mf": "http://schemas.microsoft.com/3dmanufacturing/core/2015/02",
|
"3mf": "http://schemas.microsoft.com/3dmanufacturing/core/2015/02",
|
||||||
"cura": "http://software.ultimaker.com/xml/cura/3mf/2015/10"
|
"cura": "http://software.ultimaker.com/xml/cura/3mf/2015/10"
|
||||||
}
|
}
|
||||||
|
self._base_name = ""
|
||||||
|
|
||||||
def _createNodeFromObject(self, object, name = ""):
|
def _createNodeFromObject(self, object, name = ""):
|
||||||
node = SceneNode()
|
node = SceneNode()
|
||||||
|
node.setName(name)
|
||||||
mesh_builder = MeshBuilder()
|
mesh_builder = MeshBuilder()
|
||||||
vertex_list = []
|
vertex_list = []
|
||||||
|
|
||||||
|
@ -42,8 +43,7 @@ class ThreeMFReader(MeshReader):
|
||||||
for component in components:
|
for component in components:
|
||||||
id = component.get("objectid")
|
id = component.get("objectid")
|
||||||
new_object = self._root.find("./3mf:resources/3mf:object[@id='{0}']".format(id), self._namespaces)
|
new_object = self._root.find("./3mf:resources/3mf:object[@id='{0}']".format(id), self._namespaces)
|
||||||
|
new_node = self._createNodeFromObject(new_object, self._base_name + "_" + str(id))
|
||||||
new_node = self._createNodeFromObject(new_object)
|
|
||||||
node.addChild(new_node)
|
node.addChild(new_node)
|
||||||
transform = component.get("transform")
|
transform = component.get("transform")
|
||||||
if transform is not None:
|
if transform is not None:
|
||||||
|
@ -114,6 +114,7 @@ class ThreeMFReader(MeshReader):
|
||||||
result = SceneNode()
|
result = SceneNode()
|
||||||
# The base object of 3mf is a zipped archive.
|
# The base object of 3mf is a zipped archive.
|
||||||
archive = zipfile.ZipFile(file_name, "r")
|
archive = zipfile.ZipFile(file_name, "r")
|
||||||
|
self._base_name = os.path.basename(file_name)
|
||||||
try:
|
try:
|
||||||
self._root = ET.parse(archive.open("3D/3dmodel.model"))
|
self._root = ET.parse(archive.open("3D/3dmodel.model"))
|
||||||
|
|
||||||
|
@ -122,7 +123,7 @@ class ThreeMFReader(MeshReader):
|
||||||
for build_item in build_items:
|
for build_item in build_items:
|
||||||
id = build_item.get("objectid")
|
id = build_item.get("objectid")
|
||||||
object = self._root.find("./3mf:resources/3mf:object[@id='{0}']".format(id), self._namespaces)
|
object = self._root.find("./3mf:resources/3mf:object[@id='{0}']".format(id), self._namespaces)
|
||||||
build_item_node = self._createNodeFromObject(object)
|
build_item_node = self._createNodeFromObject(object, self._base_name + "_" + str(id))
|
||||||
transform = build_item.get("transform")
|
transform = build_item.get("transform")
|
||||||
if transform is not None:
|
if transform is not None:
|
||||||
build_item_node.setTransformation(self._createMatrixFromTransformationString(transform))
|
build_item_node.setTransformation(self._createMatrixFromTransformationString(transform))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue