mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-06 22:47:29 -06:00
3MF reader now correctly supports unit
CURA-382
This commit is contained in:
parent
c240f42b64
commit
273b996cc1
1 changed files with 32 additions and 0 deletions
|
@ -31,6 +31,7 @@ class ThreeMFReader(MeshReader):
|
|||
"cura": "http://software.ultimaker.com/xml/cura/3mf/2015/10"
|
||||
}
|
||||
self._base_name = ""
|
||||
self._unit = None
|
||||
|
||||
def _createNodeFromObject(self, object, name = ""):
|
||||
node = SceneNode()
|
||||
|
@ -117,6 +118,7 @@ class ThreeMFReader(MeshReader):
|
|||
self._base_name = os.path.basename(file_name)
|
||||
try:
|
||||
self._root = ET.parse(archive.open("3D/3dmodel.model"))
|
||||
self._unit = self._root.getroot().get("unit")
|
||||
|
||||
build_items = self._root.findall("./3mf:build/3mf:item", self._namespaces)
|
||||
|
||||
|
@ -148,5 +150,35 @@ class ThreeMFReader(MeshReader):
|
|||
translation = Vector(x=-global_container_stack.getProperty("machine_width", "value") / 2, z=0,
|
||||
y=-global_container_stack.getProperty("machine_depth", "value") / 2)
|
||||
result.translate(translation)
|
||||
result.scale(self._getScaleFromUnit(self._unit))
|
||||
result.setEnabled(False) # The result should not be moved in any way, so disable it.
|
||||
return result
|
||||
|
||||
## Create a scale vector based on a unit string.
|
||||
# The core spec defines the following:
|
||||
# * micron
|
||||
# * millimeter (default)
|
||||
# * centimeter
|
||||
# * inch
|
||||
# * foot
|
||||
# * meter
|
||||
def _getScaleFromUnit(self, unit):
|
||||
if unit is None:
|
||||
unit = "millimeter"
|
||||
if unit == "micron":
|
||||
scale = 0.001
|
||||
elif unit == "millimeter":
|
||||
scale = 1
|
||||
elif unit == "centimeter":
|
||||
scale = 10
|
||||
elif unit == "inch":
|
||||
scale = 25.4
|
||||
elif unit == "foot":
|
||||
scale = 304.8
|
||||
elif unit == "meter":
|
||||
scale = 1000
|
||||
else:
|
||||
Logger.log("w", "Unrecognised unit %s used. Assuming mm instead", unit)
|
||||
scale = 1
|
||||
|
||||
return Vector(scale, scale, scale)
|
Loading…
Add table
Add a link
Reference in a new issue